news 2026/4/25 12:11:30

LangChain提示词

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
LangChain提示词

提示词模板Prompt

当需要重复使用固定格式的提示词(仅动态内容变化)时,可通过 PromptTemplate 标准化提示词结构,避免重复编写模板内容,提升开发效率。适用于批量生成问题、标准化指令场景(如批量生成产品描述、统一格式的客服回复)。

from langchain_core.prompts import PromptTemplate from langchain_ollama import ChatOllama # 定义提示词模板({变量名}为动态参数) template = "请为{product}写一句宣传语,风格{style}" prompt = PromptTemplate.from_template(template) # 填充动态参数 formatted_prompt = prompt.format(product="无线耳机", style="科技感") # 初始化大模型 llm =ChatOllama( model="qwen3:4b", base_url = "http://127.0.0.1:11434", temperature=0.7, ) print(llm.invoke(formatted_prompt).content)
  • 模板变量需用 {} 包裹,且名称需与 format 方法传入的参数名一致;
  • LangChain 1.0 中 PromptTemplate 仅处理文本模板,多轮对话场景需结合 ChatPromptTemplate 使用;
  • 模板内容中若包含{或}特殊字符,需用{{或}}转义(如{{name}})会被解析为文本{name})。

提示词模板Placeholder

from langchain_core.prompts import ChatPromptTemplate, MessagesPlaceholder from langchain_core.messages import HumanMessage, AIMessage from langchain_ollama import ChatOllama # 定义包含占位符的模板 template = [ ("system", "基于历史对话回答用户新问题"), MessagesPlaceholder(variable_name="history"), # 动态插入历史消息 ("human", "{question}") ] chat_prompt = ChatPromptTemplate.from_messages(template) # 准备历史消息 history = [ HumanMessage(content="推荐一部科幻电影"), AIMessage(content="《星际穿越》很经典") ] # 填充参数(替换占位符) formatted_prompt = chat_prompt.format_messages( history=history, question="再推荐一部类似的" ) # 初始化大模型 llm =ChatOllama( model="qwen3:4b", base_url = "http://127.0.0.1:11434", temperature=0.7, ) print(llm.invoke(formatted_prompt).content)

  • 需通过 variable_name 指定占位符名称,填充时传入对应的消息列表(Message 对象组成的列表);
  • 占位符插入的消息会严格遵循原有的角色顺序,无需手动维护对话逻辑;
  • 适用于动态上下文场景,避免手动拼接长消息列表,简化多轮对话模板维护。

提示词模板FewShot

通过提供少量示例(Few-Shot)引导大模型学习特定格式或逻辑,适用于需要标准化输出(如固定格式的分类、翻译、摘要)的场景,帮助模型快速理解任务要求。

from langchain_core.prompts import FewShotPromptTemplate, PromptTemplate from langchain_ollama import ChatOllama # 定义示例 examples = [ {"input": "苹果", "output": "水果"}, {"input": "菠萝", "output": "水果"} ] # 示例模板 example_template = "输入: {input}\n输出: {output}" example_prompt = PromptTemplate.from_template(example_template) # 构建FewShot提示 few_shot_prompt = FewShotPromptTemplate( examples=examples, example_prompt=example_prompt, prefix="请按照示例格式分类:", suffix="输入: {input}\n输出:", input_variables=["input"] ) # 生成提示并调用 prompt = few_shot_prompt.format(input="香蕉") # 初始化大模型 llm =ChatOllama( model="qwen3:4b", base_url = "http://127.0.0.1:11434", temperature=0.7, ) print(llm.invoke(prompt).content) # 预期输出:水果

  • 示例需简洁明确,与目标任务格式一致,避免误导模型;
  • prefix 用于说明任务规则,suffix 用于触发当前输入的处理,两者需配合示例形成完整逻辑;
  • 输入变量需在 suffix 中显式引用,确保动态参数正确替换。

提示词模板FewShotChat

from langchain_core.prompts import FewShotChatMessagePromptTemplate from langchain_core.messages import HumanMessage, AIMessage from langchain_core.prompts import ChatPromptTemplate from langchain_ollama import ChatOllama # 示例(多轮消息对) examples = [ { "messages": [ HumanMessage(content="推荐一首中文歌"), AIMessage(content="周杰伦的《晴天》很经典") ] }, { "messages": [ HumanMessage(content="再推荐一首"), AIMessage(content="林俊杰的《江南》") ] } ] # 构建FewShot对话模板 few_shot_prompt = FewShotChatMessagePromptTemplate( examples=examples, example_messages_key="messages" # 指定示例中消息列表的键名 ) # 组装最终对话模板 final_prompt = ChatPromptTemplate.from_messages([ ("system", "你需要根据示例推荐中文歌曲"), few_shot_prompt, # 插入示例 ("human", "{question}") # 用户当前问题 ]) # 生成提示并调用 formatted = final_prompt.format_messages(question="再求一首") # 初始化大模型 llm =ChatOllama( model="qwen3:4b", base_url = "http://127.0.0.1:11434", temperature=0.7, ) print(llm.invoke(formatted).content)
  • 示例需包含完整的角色消息对(HumanMessage + AIMessage),模拟真实对话流程;
  • 通过example/messages_key指定示例中消息列表的键(需与examples中字典的键一致);
  • 适用于需要维持对话风格、格式连贯性的场景,示例数量不宜过多(避免 token 浪费)。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/18 4:58:34

全网热议!2026年签到二维码推荐榜单,助你提升考勤管理效率

在2026年,签到二维码正成为提升考勤管理效率的重要工具。这类二维码不仅便捷,还可以实现快速记录出席信息。通过简单的扫码操作,无论是在学校课堂还是企业会议,参与者都能轻松签到。使用这些二维码,可以避免手动填写带…

作者头像 李华
网站建设 2026/4/25 5:57:53

Wi-Fi 7 走向轻量化应用:智能家居与物联网迎来真正的“可落地时代”

长期以来,Wi-Fi 技术的演进往往围绕高吞吐、高带宽展开,服务对象主要集中在手机、PC、路由器等高性能终端。然而,随着智能家居与物联网设备数量持续增长,这一路径正逐渐暴露出局限性——大量低功耗、小体积设备,并不需…

作者头像 李华
网站建设 2026/4/18 11:50:23

下拉菜单操作流程测试:全面指南

在Web应用开发中,下拉菜单(Dropdown Menu)是常见的交互元素,用于简化用户选择(如筛选选项或导航)。作为软件测试从业者,确保其功能正确性至关重要。本文提供一套标准化的测试流程,涵…

作者头像 李华