
提示词模板案例代码案例1 列表参数格式是dict类型 dict 构成的列表格式为[{“role”:... , “content”:...}] chat_prompt ChatPromptTemplate( [ {role: system, content: 你是AI助手你的名字叫{name}。}, {role: user, content: 请问{question}} ] ) fromlangchain_core.promptsimportChatPromptTemplate# 创建聊天提示模板用于构建AI助手的对话上下文# 该模板包含两个消息AI助手的自我介绍和用户问题chat_promptChatPromptTemplate.from_messages([{role:system,content:你是AI助手你的名字叫{name}。},{role:user,content:请问{question}}])# 格式化聊天提示模板填充具体的助手名称和问题内容# 参数name: AI助手的名字# 参数question: 用户提出的问题# 返回值: 格式化后的消息列表messagechat_prompt.format_messages(name小问,question什么是LangChain)# 打印格式化后的消息内容print(message)案例2 message 类型 System/Human/AIMessage 是 langchain 中用于构建不同角色的一个类。 它通常用于创建聊天消息的一部分特别是当你构建一个多轮对话的 prompt 模板时区分系统、AI、和人类消息 fromlangchain_core.messagesimportSystemMessage,HumanMessagefromlangchain_core.promptsimportChatPromptTemplate# 创建聊天提示模板用于构建AI助手的对话上下文# 该模板包含两个消息AI助手的自我介绍和用户问题chat_promptChatPromptTemplate([SystemMessage(content你是AI助手你的名字叫{name}。),HumanMessage(content请问{question})])# 格式化聊天提示模板填充具体的助手名称和问题内容# 参数name: AI助手的名字# 参数question: 用户提出的问题# 返回值: 格式化后的消息列表messagechat_prompt.format_messages(name亮仔,question什么是LangChain)# 打印格式化后的消息内容print(message)案例3fromlangchain_core.promptsimportChatPromptTemplate chatPromptTemplateChatPromptTemplate([(system,你是一个AI开发工程师你的名字是{name}。),(human,你能帮我做什么?),(ai,我能开发很多{thing}。),(human,{user_input}),])promptchatPromptTemplate.format_messages(name小谷AI,thingAI,user_input7 5等于多少)print(prompt)案例4 如果我们不确定消息何时生成也不确定要插入几条消息比如在提示词中添加聊天历史记忆这种场景 可以在ChatPromptTemplate添加MessagesPlaceholder占位符在调用invoke时在占位符处插入消息。 显式使用MessagesPlaceholder fromlangchain_core.messagesimportSystemMessage,HumanMessage,AIMessagefromlangchain_core.promptsimportChatPromptTemplate,MessagesPlaceholder# 构建一个 ChatPromptTemplate包含多种消息类型promptChatPromptTemplate.from_messages([# 添加一条系统消息设定 AI 的角色或行为准则(system,你是一个资深的Python应用开发工程师请认真回答我提出的Python相关的问题),# 插入 memory 占位符用于填充历史对话记录如多轮对话上下文MessagesPlaceholder(memory),# 添加一条用户问题消息用变量 {question} 表示(human,{question})])# 调用 prompt.invoke 来格式化整个 Prompt 模板# 传入的参数中# - memory是一组历史消息表示之前的对话内容多轮上下文# - question是当前用户的问题prompt_valueprompt.invoke({memory:[# 用户第一轮说的话HumanMessage(我的名字叫亮仔是一名程序员111),# AI 第一轮的回应AIMessage(好的亮仔你好222)],# 当前问题结合上下文测试模型是否记住了用户名字question:请问我的名字叫什么})# 打印生成的完整 prompt 文本格式化后的聊天记录print(prompt_value.to_string())案例5 placeholder 是 (placeholder, {memory}) 的简写语法 等价于 MessagesPlaceholder(memory)。 隐式使用MessagesPlaceholder fromlangchain_core.messagesimportSystemMessage,HumanMessage,AIMessagefromlangchain_core.promptsimportChatPromptTemplate,MessagesPlaceholder# 使用 ChatPromptTemplate 构建一个多角色对话提示模板promptChatPromptTemplate.from_messages([# 占位符用于插入对话“记忆”内容即之前的聊天记录历史上下文(placeholder,{memory}),# 系统消息用于设定 AI 的角色 —— 是一个资深的 Python 应用开发工程师(system,你是一个资深的Python应用开发工程师请认真回答我提出的Python相关的问题),# 用户当前提问使用变量 {question} 进行动态填充(human,{question})])# 使用 invoke 方法传入上下文变量生成格式化后的对话 prompt 内容prompt_valueprompt.invoke({# memory是之前的对话上下文会被插入到 {memory} 的位置memory:[# 用户第一轮对话HumanMessage(我的名字叫亮仔是一名程序员),# AI 第一轮回答AIMessage(好的亮仔你好)],# 当前的问题将替换模板中的 {question}question:请问我的名字叫什么})# 使用 .to_string() 将格式化后的对话链转换成纯文本字符串方便查看输出print(prompt_value.to_string())案例6 使用ChatPromptTemplate构造方法直接实例化 实例化时需要传入messages: Sequence[MessageLikeRepresentation] messages 参数支持如下格式 tuple 构成的列表格式为[(role, content)] dict 构成的列表格式为[{“role”:... , “content”:...}] Message 类构成的列表 fromlangchain_core.promptsimportChatPromptTemplateimportosfromlangchain.chat_modelsimportinit_chat_model chatPromptTemplateChatPromptTemplate([(system,你是一个AI开发工程师你的名字是{name}。),(human,你能帮我做什么?),(ai,我能开发很多{thing}。),(human,{user_input}),])promptchatPromptTemplate.format_messages(name小谷AI,thingAI,user_input7 5等于多少)print(prompt)llminit_chat_model(modelqwen-plus,model_provideropenai,api_keyos.getenv(aliQwen-api),base_urlhttps://dashscope.aliyuncs.com/compatible-mode/v1)print()print()resultllm.invoke(prompt)print(result)print(result.content)案例7 from_messages 作用将模板变量替换后直接生成消息列表List[BaseMessage] 一般包含SystemMessageHumanMessageAIMessage 常用场景用于手动查看或调试 Prompt 的最终“消息结构”或者自己拼接进 Chain。 实例化时需要传入messages: Sequence[MessageLikeRepresentation] messages 参数支持如下格式 tuple 构成的列表格式为[(role, content)] template ChatPromptTemplate( [ (system, 你是一个AI开发工程师你的名字是{name}。), (human, 你能帮我做什么?), (ai, 我能开发很多{thing}。), (human, {user_input}), ] ) dict 构成的列表格式为[{“role”:... , “content”:...}] chat_prompt ChatPromptTemplate( [ {role: system, content: 你是AI助手你的名字叫{name}。}, {role: user, content: 请问{question}} ] ) Message 类构成的列表 importosfromlangchain.chat_modelsimportinit_chat_modelfromlangchain_core.promptsimportChatPromptTemplate# 创建聊天提示模板包含系统角色设定和用户问题格式# 系统消息定义了AI助手的角色人类消息定义了用户问题的格式chat_promptChatPromptTemplate.from_messages([(system,你是一个{role}请回答我提出的问题),(human,请回答:{question})])# 格式化聊天提示模板填充角色和问题参数# 参数role: 指定AI助手的角色身份# 参数question: 用户提出的具体问题# 返回值: 格式化后的消息列表#prompt_value chat_prompt.format_messages(rolepython开发工程师, question冒泡排序怎么写)prompt_valuechat_prompt.format_messages(**{role:python开发工程师,question:堆排序怎么写})# 打印格式化后的提示消息print(prompt_value)print()# 使用指定的角色和问题参数填充模板生成具体的提示内容# role: 指定AI扮演的角色# question: 用户提出的具体问题prompt_value2chat_prompt.invoke({role:python开发工程师,question:堆排序怎么写})# 输出生成的提示内容print(prompt_value2.to_string())prompt_value3chat_prompt.format(**{role:python开发工程师,question:快速排序怎么写})# 输出生成的提示内容print(prompt_value3)