Skip to content

Interleaved Thinking 支持

Interleaved Thinking(交错思考)是一种先进的AI推理模式,允许模型在生成回答的过程中展示其思考过程,提供更透明、更可靠的推理链条。

概述

Interleaved Thinking 的特点:

  • 展示推理过程
  • 提高回答透明度
  • 增强可解释性
  • 改善推理质量
  • 支持复杂问题解决

工作原理

思考链模式

  1. 问题分析:分解和理解问题
  2. 逐步推理:展示每一步的思考过程
  3. 知识检索:调用相关知识
  4. 逻辑验证:检查推理的合理性
  5. 结论生成:基于推理得出答案

交错输出

  • 思考内容与回答内容交替出现
  • 用户可以实时看到推理过程
  • 支持中断和引导思考方向

基本用法

启用 Interleaved Thinking

python
import openai

client = openai.OpenAI(
    api_key="your_api_key",
    base_url="https://realmrouter.cn/v1"
)

# 基本的 Interleaved Thinking 调用
response = client.chat.completions.create(
    model="gpt-4-thinking",  # 支持思考的模型
    messages=[
        {
            "role": "user",
            "content": "一个经典的逻辑推理题:有三个盒子,其中一个有奖品。你选择A盒子,主持人打开空的B盒子,问你是否要换到C盒子。应该换吗?为什么?"
        }
    ],
    temperature=0.1,
    max_tokens=2000,
    # 启用思考模式
    thinking_mode="interleaved"
)

# 解析响应
content = response.choices[0].message.content
print(content)

流式思考输出

python
def stream_thinking_response(client, question):
    """流式获取思考响应"""
    stream = client.chat.completions.create(
        model="gpt-4-thinking",
        messages=[
            {
                "role": "system",
                "content": "你是一个逻辑推理专家,请详细展示你的思考过程。"
            },
            {
                "role": "user",
                "content": question
            }
        ],
        temperature=0.1,
        max_tokens=2000,
        thinking_mode="interleaved",
        stream=True
    )
    
    thinking_content = ""
    answer_content = ""
    current_mode = "thinking"  # thinking 或 answer
    
    print("=== 思考过程 ===")
    
    for chunk in stream:
        delta = chunk.choices[0].delta
        
        if hasattr(delta, 'thinking_mode'):
            current_mode = delta.thinking_mode
            if current_mode == "answer":
                print("\n=== 最终回答 ===")
        
        if hasattr(delta, 'content'):
            content = delta.content
            
            if current_mode == "thinking":
                thinking_content += content
                print(content, end="", flush=True)
            else:
                answer_content += content
                print(content, end="", flush=True)
    
    print("\n")
    return thinking_content, answer_content

# 使用示例
question = "设计一个算法,找出数组中第k大的元素"
thinking, answer = stream_thinking_response(client, question)

高级功能

引导式思考

python
def guided_thinking(client, problem, guidance_steps):
    """引导式思考过程"""
    messages = [
        {
            "role": "system",
            "content": f"""
            你是一个专业的AI助手,请按照以下步骤进行思考:
            {chr(10).join(f"{i+1}. {step}" for i, step in enumerate(guidance_steps))}
            
            每完成一步,请明确标注当前步骤。
            """
        },
        {
            "role": "user",
            "content": problem
        }
    ]
    
    response = client.chat.completions.create(
        model="gpt-4-thinking",
        messages=messages,
        temperature=0.1,
        max_tokens=3000,
        thinking_mode="interleaved"
    )
    
    return response.choices[0].message.content

# 使用示例
problem = "如何优化一个慢查询的数据库?"
guidance_steps = [
    "分析问题的根本原因",
    "考虑可能的解决方案",
    "评估每种方案的优缺点",
    "选择最佳解决方案",
    "制定实施计划"
]

result = guided_thinking(client, problem, guidance_steps)
print(result)

多角度思考

python
def multi_perspective_thinking(client, question, perspectives):
    """多角度思考分析"""
    messages = [
        {
            "role": "system",
            "content": f"""
            请从以下多个角度分析问题:
            {chr(10).join(f"• {perspective}" for perspective in perspectives)}
            
            对每个角度,请:
            1. 展示该角度的思考过程
            2. 给出该角度的结论
            3. 综合所有角度给出最终建议
            """
        },
        {
            "role": "user",
            "content": question
        }
    ]
    
    response = client.chat.completions.create(
        model="gpt-4-thinking",
        messages=messages,
        temperature=0.2,
        max_tokens=4000,
        thinking_mode="interleaved"
    )
    
    return response.choices[0].message.content

# 使用示例
question = "是否应该远程工作?"
perspectives = [
    "员工角度:工作生活平衡",
    "企业角度:效率和成本",
    "管理角度:团队协作",
    "技术角度:工具和基础设施"
]

analysis = multi_perspective_thinking(client, question, perspectives)
print(analysis)

交互式思考

python
class InteractiveThinking:
    """交互式思考会话"""
    
    def __init__(self, client):
        self.client = client
        self.conversation_history = []
        self.thinking_history = []
    
    def start_session(self, problem):
        """开始思考会话"""
        self.conversation_history = [
            {
                "role": "system",
                "content": """
                你是一个AI思考助手。对于每个问题,请:
                1. 详细展示思考过程
                2. 在关键步骤暂停,等待用户确认或指导
                3. 根据用户反馈调整思考方向
                
                使用 [THINKING] 标记思考开始,[ANSWER] 标记回答开始。
                """
            },
            {
                "role": "user",
                "content": f"请开始思考这个问题:{problem}"
            }
        ]
        
        return self._get_response()
    
    def continue_thinking(self, user_input):
        """继续思考过程"""
        self.conversation_history.append({
            "role": "user",
            "content": user_input
        })
        
        return self._get_response()
    
    def _get_response(self):
        """获取响应"""
        response = self.client.chat.completions.create(
            model="gpt-4-thinking",
            messages=self.conversation_history,
            temperature=0.1,
            max_tokens=2000,
            thinking_mode="interleaved"
        )
        
        content = response.choices[0].message.content
        self.conversation_history.append({
            "role": "assistant",
            "content": content
        })
        
        return content
    
    def extract_thinking_steps(self, content):
        """提取思考步骤"""
        import re
        
        # 提取思考部分
        thinking_match = re.search(r'\[THINKING\](.*?)\[ANSWER\]', content, re.DOTALL)
        thinking = thinking_match.group(1).strip() if thinking_match else ""
        
        # 提取回答部分
        answer_match = re.search(r'\[ANSWER\](.*)', content, re.DOTALL)
        answer = answer_match.group(1).strip() if answer_match else content
        
        return thinking, answer

# 使用示例
interactive = InteractiveThinking(client)

# 开始会话
response = interactive.start_session("如何设计一个可扩展的微服务架构?")
thinking, answer = interactive.extract_thinking_steps(response)

print("思考过程:")
print(thinking)
print("\n当前回答:")
print(answer)

# 用户交互
user_input = input("\n请输入你的反馈或继续指令: ")
if user_input:
    new_response = interactive.continue_thinking(user_input)
    new_thinking, new_answer = interactive.extract_thinking_steps(new_response)
    print("\n更新后的思考:")
    print(new_thinking)
    print("\n更新后的回答:")
    print(new_answer)

实际应用场景

1. 教育辅导

python
def educational_tutoring(client, subject, difficulty_level):
    """教育辅导应用"""
    messages = [
        {
            "role": "system",
            "content": f"""
            你是一个专业的{subject}老师。请按照以下方式进行教学:
            1. 分析学生的理解水平({difficulty_level}
            2. 逐步展示解题思路
            3. 在关键步骤解释原理
            4. 提供练习建议
            
            确保思考过程清晰易懂,适合学生理解。
            """
        }
    ]
    
    def explain_concept(concept):
        messages.append({
            "role": "user",
            "content": f"请详细解释:{concept}"
        })
        
        response = client.chat.completions.create(
            model="gpt-4-thinking",
            messages=messages,
            temperature=0.1,
            max_tokens=2000,
            thinking_mode="interleaved"
        )
        
        messages.append({
            "role": "assistant",
            "content": response.choices[0].message.content
        })
        
        return response.choices[0].message.content
    
    return explain_concept

# 使用示例
tutor = educational_tutoring(client, "数学", "高中")
explanation = tutor("二次函数的图像和性质")
print(explanation)

2. 代码审查

python
def code_review_thinking(client, code, review_criteria):
    """代码审查思考"""
    messages = [
        {
            "role": "system",
            "content": f"""
            你是一个高级代码审查工程师。请按照以下标准审查代码:
            {chr(10).join(f"• {criteria}" for criteria in review_criteria)}
            
            审查过程:
            1. 理解代码目的和逻辑
            2. 逐部分分析代码质量
            3. 识别潜在问题
            4. 提供改进建议
            
            请详细展示每个审查步骤的思考过程。
            """
        },
        {
            "role": "user",
            "content": f"请审查以下代码:\n\n{code}"
        }
    ]
    
    response = client.chat.completions.create(
        model="gpt-4-thinking",
        messages=messages,
        temperature=0.1,
        max_tokens=3000,
        thinking_mode="interleaved"
    )
    
    return response.choices[0].message.content

# 使用示例
code_snippet = """
def calculate_total(items):
    total = 0
    for item in items:
        total += item['price'] * item['quantity']
    return total
"""

criteria = [
    "代码可读性",
    "性能优化",
    "错误处理",
    "安全性",
    "最佳实践"
]

review = code_review_thinking(client, code_snippet, criteria)
print(review)

3. 决策支持

python
def decision_support_thinking(client, decision_context, options):
    """决策支持思考"""
    messages = [
        {
            "role": "system",
            "content": """
            你是一个专业的决策分析师。请按照以下框架进行分析:
            
            1. 问题定义和目标明确
            2. 选项分析和评估
            3. 风险评估和缓解策略
            4. 推荐方案和实施计划
            
            对每个步骤,请展示详细的思考过程和评估依据。
            """
        },
        {
            "role": "user",
            "content": f"""
            决策背景:{decision_context}
            
            可选方案:
            {chr(10).join(f"{i+1}. {option}" for i, option in enumerate(options))}
            
            请提供详细的决策分析。
            """
        }
    ]
    
    response = client.chat.completions.create(
        model="gpt-4-thinking",
        messages=messages,
        temperature=0.1,
        max_tokens=4000,
        thinking_mode="interleaved"
    )
    
    return response.choices[0].message.content

# 使用示例
context = "公司需要选择新的项目管理工具"
options = [
    "Jira - 功能强大但成本较高",
    "Trello - 简单易用但功能有限",
    "Asana - 平衡功能和易用性",
    "自研工具 - 完全定制但开发周期长"
]

analysis = decision_support_thinking(client, context, options)
print(analysis)

性能优化

思考缓存

python
import hashlib
import json
from typing import Dict, Optional

class ThinkingCache:
    """思考过程缓存"""
    
    def __init__(self):
        self.cache: Dict[str, Dict] = {}
    
    def _generate_key(self, question: str, context: str = "") -> str:
        """生成缓存键"""
        content = f"{question}:{context}"
        return hashlib.md5(content.encode()).hexdigest()
    
    def get_cached_thinking(self, question: str, context: str = "") -> Optional[str]:
        """获取缓存的思考过程"""
        key = self._generate_key(question, context)
        
        if key in self.cache:
            cached_data = self.cache[key]
            return cached_data["thinking"]
        
        return None
    
    def cache_thinking(self, question: str, thinking: str, context: str = ""):
        """缓存思考过程"""
        key = self._generate_key(question, context)
        
        self.cache[key] = {
            "question": question,
            "context": context,
            "thinking": thinking,
            "timestamp": time.time()
        }
    
    def clear_cache(self):
        """清空缓存"""
        self.cache.clear()

# 使用缓存
thinking_cache = ThinkingCache()

def cached_thinking_response(client, question, context=""):
    """带缓存的思考响应"""
    # 尝试从缓存获取
    cached_thinking = thinking_cache.get_cached_thinking(question, context)
    if cached_thinking:
        print("从缓存获取思考过程")
        return cached_thinking
    
    # 生成新的思考过程
    response = client.chat.completions.create(
        model="gpt-4-thinking",
        messages=[
            {
                "role": "system",
                "content": "请详细展示你的思考过程。"
            },
            {
                "role": "user",
                "content": f"上下文:{context}\n问题:{question}"
            }
        ],
        temperature=0.1,
        max_tokens=2000,
        thinking_mode="interleaved"
    )
    
    thinking = response.choices[0].message.content
    
    # 缓存结果
    thinking_cache.cache_thinking(question, thinking, context)
    
    return thinking

最佳实践

1. 提示词设计

  • 明确指定思考模式
  • 提供思考框架
  • 设置合理的温度参数
  • 限制输出长度

2. 思考过程优化

  • 结构化思考步骤
  • 提供上下文信息
  • 引导关键思考点
  • 验证推理逻辑

3. 用户体验

  • 清晰标记思考内容
  • 提供进度指示
  • 支持交互中断
  • 优化响应速度

4. 质量控制

  • 验证思考完整性
  • 检查逻辑一致性
  • 评估推理质量
  • 收集用户反馈

限制和注意事项

  1. 响应时间:思考模式可能增加响应时间
  2. 令牌消耗:思考过程会消耗更多令牌
  3. 复杂性:实现交互功能增加系统复杂性
  4. 质量差异:不同模型的思考质量可能有差异
  5. 用户习惯:需要用户适应新的交互方式

监控和评估

思考质量评估

python
def evaluate_thinking_quality(thinking_content, answer_content):
    """评估思考质量"""
    evaluation_criteria = {
        "completeness": 0,  # 完整性
        "logical_flow": 0,  # 逻辑流畅性
        "depth": 0,        # 深度
        "relevance": 0,    # 相关性
        "clarity": 0       # 清晰度
    }
    
    # 这里可以实现具体的评估逻辑
    # 例如:检查思考步骤数量、逻辑连接词使用等
    
    return evaluation_criteria

def monitor_thinking_performance(client, test_questions):
    """监控思考性能"""
    results = []
    
    for question in test_questions:
        start_time = time.time()
        
        response = client.chat.completions.create(
            model="gpt-4-thinking",
            messages=[
                {
                    "role": "user",
                    "content": question
                }
            ],
            temperature=0.1,
            max_tokens=2000,
            thinking_mode="interleaved"
        )
        
        response_time = time.time() - start_time
        content = response.choices[0].message.content
        
        # 评估质量
        quality_score = evaluate_thinking_quality(content, content)
        
        results.append({
            "question": question,
            "response_time": response_time,
            "token_usage": response.usage.total_tokens,
            "quality_score": quality_score
        })
    
    return results

通过 Interleaved Thinking 功能,开发者可以构建更透明、更可靠的AI应用,为用户提供更好的理解和信任体验。

基于 MIT 许可发布 厦门界云聚算网络科技有限公司