📰 来源: 博客园
做 AI 应用开发的人应该都有过这种经历:明明在提示词里写了一大堆要求,大模型还是会输出不符合预期的内容,甚至一本正经地胡说八道。这时候,与其继续堆砌文字说明,不如试试 LangChain 里的 FewShotPromptTemplate—— 用几个简单的示例,就能让大模型瞬间明白你想要什么。视频在这里《17. LangChain FewShotPromptTemplate 少样本应用实战》。
这个工具的底层逻辑是少样本学习,说白了就是让大模型先看几个正确的示范,再去处理新的任务。不管是翻译、文本分类还是逻辑推理,只要给对了例子,它的输出准确率和一致性都会有明显提升。
它的核心思想特别朴素:与其给 AI 写几百字的任务说明,不如直接扔给它两三个具体的例子。大模型对示例的理解能力,远比我们想象的要强得多。
这里有个容易踩的坑:创建 FewShotPromptTemplate 的时候,examples 和 example_selector 这两个参数是互斥的,必须填其中一个,不然代码直接报错。绝大多数情况下,我们直接用 examples 参数把准备好的示例数据传进去就行。
example_selector
SemanticSimilarityExampleSelector
示例数据列表,每个是字典
[{"input": "Hi", "output": "你好"}]
example_prompt
PromptTemplate.from_template(...)
"请把英文翻译成中文:"
"Input: {new_input}\nOutput:"
input_variables
["new_input"]
example_separator
先来看最基础的用法,针对文本补全模型,我们可以这样写:
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(
🔗 原文链接: 点击阅读原文
文章评论