Anthropic Cookbook项目:评估-优化工作流模式详解

Anthropic Cookbook项目:评估-优化工作流模式详解

【免费下载链接】anthropic-cookbook A collection of notebooks/recipes showcasing some fun and effective ways of using Claude. 【免费下载链接】anthropic-cookbook 项目地址: https://gitcode.com/GitHub_Trending/an/anthropic-cookbook

工作流概述

评估-优化工作流是一种创新的LLM应用模式,通过两个LLM调用的协同工作实现持续改进。该模式的核心思想是:一个LLM负责生成内容(优化器),另一个LLM负责评估并提供反馈(评估器),两者形成闭环迭代。

适用场景

这种工作流特别适合以下情况:

  1. 有明确评估标准:当任务有清晰的评价维度时(如代码正确性、时间复杂度、风格规范等)
  2. 迭代改进有价值:当初始结果通常需要多次调整才能达到理想状态
  3. LLM能提供有效反馈:当LLM自身能够识别改进空间并提供建设性意见

典型应用场景包括:

  • 代码生成与优化
  • 技术文档撰写
  • 算法设计
  • 内容创作与润色

核心实现解析

1. 生成阶段

def generate(prompt: str, task: str, context: str = "") -> tuple[str, str]:
    """生成并基于反馈改进解决方案"""
    full_prompt = f"{prompt}\n{context}\nTask: {task}" if context else f"{prompt}\nTask: {task}"
    response = llm_call(full_prompt)
    thoughts = extract_xml(response, "thoughts")
    result = extract_xml(response, "response")
    return thoughts, result

关键点:

  • 接收任务描述和可选上下文(包含历史尝试和反馈)
  • 使用结构化输出(XML格式)分离"思考过程"和"实际响应"
  • 保留完整的思维链(Chain-of-Thought)便于调试和优化

2. 评估阶段

def evaluate(prompt: str, content: str, task: str) -> tuple[str, str]:
    """评估解决方案是否满足要求"""
    full_prompt = f"{prompt}\nOriginal task: {task}\nContent to evaluate: {content}"
    response = llm_call(full_prompt)
    evaluation = extract_xml(response, "evaluation")
    feedback = extract_xml(response, "feedback")
    return evaluation, feedback

评估器设计要点:

  • 明确评估标准(如代码正确性、时间复杂度、风格规范)
  • 提供二元评估结果(PASS/NEEDS_IMPROVEMENT)
  • 反馈需具体、可操作,指明改进方向

3. 循环机制

def loop(task: str, evaluator_prompt: str, generator_prompt: str) -> tuple[str, list[dict]]:
    """持续生成和评估直到满足要求"""
    memory = []
    chain_of_thought = []
    
    while True:
        # 生成阶段
        thoughts, result = generate(generator_prompt, task, context)
        memory.append(result)
        chain_of_thought.append({"thoughts": thoughts, "result": result})
        
        # 评估阶段
        evaluation, feedback = evaluate(evaluator_prompt, result, task)
        if evaluation == "PASS":
            return result, chain_of_thought
            
        # 构建下一轮上下文
        context = "\n".join([
            "Previous attempts:",
            *[f"- {m}" for m in memory],
            f"\nFeedback: {feedback}"
        ])

循环控制逻辑:

  1. 记录所有历史尝试和思维过程
  2. 将失败尝试和反馈作为上下文传递给下一轮
  3. 直到评估结果为PASS才终止循环
  4. 返回最终结果和完整的决策过程

实战案例:最小栈实现

我们以"实现O(1)时间复杂度操作的最小栈"为例,展示工作流的实际效果。

初始实现问题

第一版代码虽然算法正确,但存在:

  • 缺乏错误处理(空栈时静默返回)
  • 缺少类型提示和文档字符串
  • 没有输入验证

改进过程

  1. 第一轮反馈

    • 建议添加异常处理
    • 补充类型提示和文档
    • 增加输入验证
  2. 优化后实现

    from typing import List
    
    class MinStack:
        """A stack that supports push, pop, and getting minimum element in O(1) time."""
    
        def __init__(self):
            """Initialize empty stack with two internal lists."""
            self.stack: List[int] = []
            self.minStack: List[int] = []
    
        def push(self, x: int) -> None:
            """
            Push element onto stack and update minimum stack.
    
            Args:
                x: Integer to push onto stack
    
            Raises:
                TypeError: If x is not an integer
            """
            if not isinstance(x, int):
                raise TypeError("Input must be an integer")
    
            self.stack.append(x)
            if not self.minStack or x <= self.minStack[-1]:
                self.minStack.append(x)
    

关键改进:

  • 完整的类型注解
  • 详细的文档字符串
  • 严格的输入验证
  • 明确的异常处理

模式优势与局限

优势

  1. 自动化质量保证:通过严格评估确保输出质量
  2. 持续改进:每次迭代都基于具体反馈进行优化
  3. 透明决策:保留完整的思维链便于理解LLM决策过程

局限

  1. 计算成本:需要多次LLM调用
  2. 评估标准依赖:需要精心设计评估提示词
  3. 可能陷入局部最优:需要设计合理的终止条件

最佳实践建议

  1. 评估提示设计

    • 明确列出所有评估维度
    • 提供具体的评价标准
    • 要求结构化输出
  2. 生成提示优化

    • 鼓励自我反思
    • 要求解释改进策略
    • 保留思维过程
  3. 循环控制

    • 设置最大迭代次数防止无限循环
    • 记录完整历史便于分析
    • 可引入人工审核环节

这种评估-优化工作流代表了LLM应用的高级模式,通过将生成与评估分离,实现了类似人类"写作-审阅-修改"的创作过程,能够显著提升复杂任务的输出质量。

【免费下载链接】anthropic-cookbook A collection of notebooks/recipes showcasing some fun and effective ways of using Claude. 【免费下载链接】anthropic-cookbook 项目地址: https://gitcode.com/GitHub_Trending/an/anthropic-cookbook

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值