
高级 Prompt 链式调用:构建复杂推理流水线
链式调用原理 单次 LLM 调用的能力是有限的。链式调用 (Prompt Chaining) 将复杂任务分解为多个步骤,每步的输出作为下一步的输入,形成流水线: [用户输入] → [Step 1: 理解意图] → [Step 2: 检索知识] → [Step 3: 生成答案] → [最终输出] 核心假设:分解后的子任务更简单、更可靠,错误隔离更容易。 链式架构模式 1. 顺序链 (Sequential Chain) 最简单的模式——线性传递: from typing import Dict, Any import openai def llm_call(prompt: str, model: str = "gpt-4") -> str: resp = openai.chat.completions.create( model=model, messages=[{"role": "user", "content": prompt}], temperature=0.3, ) return resp.choices[0].message.content class SequentialChain: def __init__(self): self.steps = [] def add_step(self, name: str, prompt_template: str): """prompt_template 中用 {prev_output} 引用上一步输出""" self.steps.append({"name": name, "template": prompt_template}) return self def run(self, initial_input: str) -> Dict[str, str]: results = {} current_output = initial_input for step in self.steps: prompt = step["template"].format(prev_output=current_output) current_output = llm_call(prompt) results[step["name"]] = current_output print(f"[{step['name']}] 完成") results["final"] = current_output return results # 示例:技术文档翻译流水线 chain = SequentialChain() chain.add_step("extract_keypoints", "分析以下技术文档,提取关键技术概念和术语(JSON数组格式):\n{prev_output}") chain.add_step("translate", "将以下内容翻译为中文,保持技术术语准确:\n{prev_output}") chain.add_step("review", "审校以下翻译,修正不准确之处,输出最终版本:\n{prev_output}") 2. 并行链 (Parallel Chain) 多个独立子任务并行执行后汇总: ...