AI开发-python-langchain框架(1-5 使用 Few-Shot Prompting 实现多跳推理问答:以历史人物寿命比较为例)
先我们直接问大模型看他如何回答
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
|
结果如下:
|
1 2 3 4 5 6 7 8 9 10 11 |
|
那么如何引导大模型按照我们期望的结果输出呢?代码如下:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 |
|
--------最终回答--------
这里是否需要跟进问题:是的。
追问:李白去世时几岁?
中间答案:李白去世时61岁。
追问:白居易去世时几岁?
中间答案:白居易去世时75岁。
所以最终答案是:白居易
一、核心目标
教会大语言模型(LLM)如何分步思考,解决需要多步推理(Multi-hop Reasoning)的复杂问题
二、关键技术点
1. 少样本提示(Few-Shot Prompting)
- 概念:在提示词中提供几个“输入-输出”示例,引导模型模仿回答格式和推理逻辑。
- 作用:无需微调模型,仅通过提示工程(Prompt Engineering)提升复杂任务表现。
- 实现工具:
langchain.prompts.few_shot.FewShotPromptTemplate
2. 结构化推理模板设计
- 每个示例包含清晰的推理链条:
- 判断是否需要追问(“这里是否需要跟进问题:是的。”)
- 分步提出子问题(“追问:...”)
- 给出中间答案(“中间答案:...”)
- 最终整合结论(“所以最终答案是:...”)
- 目的:让模型学会“先分解问题 → 再逐步求解 → 最后综合答案”的思维模式。
3. LangChain 提示模板组合
PromptTemplate:定义单个示例的格式(如"Question: {question}\n{answer}")FewShotPromptTemplate:自动拼接多个示例 + 用户问题,生成完整提示- 支持动态插入用户输入(通过
{input}占位符)
4. 大模型调用与安全配置
- 使用
ChatOpenAI调用兼容 OpenAI API 的第三方模型(如 DeepSeek) - 关键参数:
temperature=0.7:平衡创造性与稳定性max_tokens=1024:控制输出长度
- 安全实践:通过
os.getenv()从环境变量读取 API 密钥,避免硬编码
5. 链式处理(Chain)与输出解析
-
- 构建数据流管道:
输入 → 提示模板 → 大模型 → 字符串解析 → 最终结果 - 使用
|操作符连接组件(LangChain 的函数式风格) StrOutputParser():将模型返回的结构化消息(如 AIMessage)转为纯文本
- 构建数据流管道:
更多推荐




所有评论(0)