在自然语言中我们的提示词通常需要给一下示例让ai立即自己的目的,例如:
prompt = """
任务:将用户输入的文本分类为"正面"、"负面"或"中性"。
示例1: 输入:"这款Python教程很清晰,学到了很多" 输出:正面
示例2: 输入:"教程内容杂乱,完全看不懂" 输出:负面
示例3: 输入:"教程时长30分钟" 输出:中性
现在请分类: 输入:"这个AI工具帮我节省了很多编程时间" 输出: """
那么在代码中程序员是如何实现提示词的呢?
方式一:最简单的变量占位提示词
from langchain.prompts import PromptTemplate
# 1. 定义模板(用 {变量名} 占位)
template = """
你是一名 {role},请针对 {topic} 提供 {length} 字的专业解读,
要求语言简洁,逻辑清晰。 """
# 2. 初始化 PromptTemplate
prompt_template = PromptTemplate.from_template(template)
# 3. 填充变量(两种方式:format 或 invoke)
prompt = prompt_template.format( role="数据分析师", topic="Python 数据分析中的 Pandas 库", length=150 )
方式二:少样本提示模板,就是本文开始讲到的那种
from langchain.prompts import PromptTemplate, FewShotPromptTemplate
# 1. 准备示例数据(对应你之前学的 Few-shot Prompting)
examples = [
{"input": "2+3", "output": "5"},
{"input": "5-1", "output": "4"},
{"input": "6×2", "output": "12"} ]
# 2. 定义示例模板
example_template = "输入:{input}\n输出:{output}"
example_prompt = PromptTemplate.from_template(example_template)
# 3. 初始化示例选择器(此处用简单列表选择器)
example_selector = ListExampleSelector( examples=examples, example_prompt=example_prompt )
# 4. 初始化少样本模板
few_shot_template = """
请按照以下示例的格式,计算数学题的结果: {examples}
现在计算: 输入:{new_input} 输出: """
few_shot_prompt = FewShotPromptTemplate(
example_selector=example_selector,
example_prompt=example_prompt,
prefix=few_shot_template.split("{examples}")[0],
suffix=few_shot_template.split("{examples}")[1],
input_variables=["new_input"],
# 仅需传入新输入变量
separator="\n"
)
# 5. 填充新输入 prompt = few_shot_prompt.format(new_input="9÷3")
方式三: 对话提示词模板
# 1. 初始化对话提示词模板(对应 ChatModel 的消息格式)
chat_prompt = ChatPromptTemplate.from_messages([
("system", "你是一名 {role},回答不超过 {word_limit} 字"),
("human", "请解释 {topic}")
])
# 2. 填充变量并生成对话消息
messages = chat_prompt.format_messages( role="Python 工程师", word_limit=100, topic="LangChain 的核心价值" )
# 3. 输出结果
print("\n=== ChatPromptTemplate 输出 ===")
for msg in messages: print(f"{msg.type.upper()}: {msg.content}")