LangChain FewShotPromptTemplate少样本应用实战

发布时间:2026/6/28 3:28:44
LangChain FewShotPromptTemplate少样本应用实战 这个工具的底层逻辑是少样本学习说白了就是让大模型先看几个正确的示范再去处理新的任务。不管是翻译、文本分类还是逻辑推理只要给对了例子它的输出准确率和一致性都会有明显提升。它的核心思想特别朴素与其给 AI 写几百字的任务说明不如直接扔给它两三个具体的例子。大模型对示例的理解能力远比我们想象的要强得多。这里有个容易踩的坑创建 FewShotPromptTemplate 的时候examples 和 example_selector 这两个参数是互斥的必须填其中一个不然代码直接报错。绝大多数情况下我们直接用 examples 参数把准备好的示例数据传进去就行。组件说明必填性示例example_selector动态选择示例的选择器二选一SemanticSimilarityExampleSelectorexamples示例数据列表每个是字典二选一[{input: Hi, output: 你好}]example_prompt单个示例的格式化模板必填PromptTemplate.from_template(...)prefix示例前的引导文本可选默认请把英文翻译成中文suffix示例后的用户输入提示必填Input: {new_input}\nOutput:input_variables用户输入变量列表必填[new_input]example_separator示例之间的分隔符默认\n\n\n先来看最基础的用法针对文本补全模型我们可以这样写from langchain_core.prompts import PromptTemplate, FewShotPromptTemplate # 准备示例数据 examples [ {input: Hello, output: 你好}, {input: Thank you, output: 谢谢}, {input: Good morning, output: 早上好}, ] # 定义示例的格式化模板 example_prompt PromptTemplate.from_template( {input} - {output} ) # 创建 FewShotPromptTemplate few_shot_prompt FewShotPromptTemplate( examplesexamples, example_promptexample_prompt, prefix请把以下英文翻译成中文, suffix{new_input} - , input_variables[new_input], example_separator\n, ) prompt_value few_shot_prompt.invoke( { new_input: Good bye } ) print(prompt_value.to_string()) res llm.invoke(prompt_value, configconfig) print(res.content)如果用的是聊天模型就要用专门的 FewShotChatMessagePromptTemplate用法也差不多from langchain_core.prompts import ChatPromptTemplate, FewShotChatMessagePromptTemplate # 准备示例数据 examples [ {input: Hello, output: 你好}, {input: Thank you, output: 谢谢}, {input: Good morning, output: 早上好}, ] # 定义示例的格式化模板 example_prompt ChatPromptTemplate.from_messages( [ {role: user, content: {input}}, {role: ai, content: {output}} ] ) # 创建示例提示词模版 few_shot_prompt FewShotChatMessagePromptTemplate( examplesexamples, example_promptexample_prompt ) # 构建最终的聊天提示模板 chat_prompt ChatPromptTemplate.from_messages( [ {role: system, content: 请把以下英文翻译成中文}, few_shot_prompt, {role: user, content: {new_input}} ] ) # 输入内容 prompt_value chat_prompt.invoke( { new_input: Where are you from?, } ) print(prompt_value.to_string()) res llm.invoke(prompt_value, configconfig) print(res.content)