当前位置: 首页 > news >正文

langchain python版本 第二集 提示词模板案例

提示词模板案例代码

案例1:
""" 列表参数格式是dict类型  dict 构成的列表,格式为[{“role”:... , “content”:...}] chat_prompt = ChatPromptTemplate( [ {"role": "system", "content": "你是AI助手,你的名字叫{name}。"}, {"role": "user", "content": "请问:{question}"} ] ) """fromlangchain_core.promptsimportChatPromptTemplate# 创建聊天提示模板,用于构建AI助手的对话上下文# 该模板包含两个消息:AI助手的自我介绍和用户问题chat_prompt=ChatPromptTemplate.from_messages([{"role":"system","content":"你是AI助手,你的名字叫{name}。"},{"role":"user","content":"请问:{question}"}])# 格式化聊天提示模板,填充具体的助手名称和问题内容# 参数name: AI助手的名字# 参数question: 用户提出的问题# 返回值: 格式化后的消息列表message=chat_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_prompt=ChatPromptTemplate([SystemMessage(content="你是AI助手,你的名字叫{name}。"),HumanMessage(content="请问:{question}")])# 格式化聊天提示模板,填充具体的助手名称和问题内容# 参数name: AI助手的名字# 参数question: 用户提出的问题# 返回值: 格式化后的消息列表message=chat_prompt.format_messages(name="亮仔",question="什么是LangChain")# 打印格式化后的消息内容print(message)
案例3
fromlangchain_core.promptsimportChatPromptTemplate chatPromptTemplate=ChatPromptTemplate([("system","你是一个AI开发工程师,你的名字是{name}。"),("human","你能帮我做什么?"),("ai","我能开发很多{thing}。"),("human","{user_input}"),])prompt=chatPromptTemplate.format_messages(name="小谷AI",thing="AI",user_input="7 + 5等于多少")print(prompt)
案例4
""" 如果我们不确定消息何时生成,也不确定要插入几条消息,比如在提示词中添加聊天历史记忆这种场景, 可以在ChatPromptTemplate添加MessagesPlaceholder占位符,在调用invoke时,在占位符处插入消息。 显式使用MessagesPlaceholder """fromlangchain_core.messagesimportSystemMessage,HumanMessage,AIMessagefromlangchain_core.promptsimportChatPromptTemplate,MessagesPlaceholder# 构建一个 ChatPromptTemplate,包含多种消息类型:prompt=ChatPromptTemplate.from_messages([# 添加一条系统消息,设定 AI 的角色或行为准则("system","你是一个资深的Python应用开发工程师,请认真回答我提出的Python相关的问题"),# 插入 memory 占位符,用于填充历史对话记录(如多轮对话上下文)MessagesPlaceholder("memory"),# 添加一条用户问题消息,用变量 {question} 表示("human","{question}")])# 调用 prompt.invoke 来格式化整个 Prompt 模板# 传入的参数中:# - memory:是一组历史消息,表示之前的对话内容(多轮上下文)# - question:是当前用户的问题prompt_value=prompt.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 构建一个多角色对话提示模板prompt=ChatPromptTemplate.from_messages([# 占位符,用于插入对话“记忆”内容,即之前的聊天记录(历史上下文)("placeholder","{memory}"),# 系统消息,用于设定 AI 的角色 —— 是一个资深的 Python 应用开发工程师("system","你是一个资深的Python应用开发工程师,请认真回答我提出的Python相关的问题"),# 用户当前提问,使用变量 {question} 进行动态填充("human","{question}")])# 使用 invoke 方法传入上下文变量,生成格式化后的对话 prompt 内容prompt_value=prompt.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 chatPromptTemplate=ChatPromptTemplate([("system","你是一个AI开发工程师,你的名字是{name}。"),("human","你能帮我做什么?"),("ai","我能开发很多{thing}。"),("human","{user_input}"),])prompt=chatPromptTemplate.format_messages(name="小谷AI",thing="AI",user_input="7 + 5等于多少")print(prompt)llm=init_chat_model(model="qwen-plus",model_provider="openai",api_key=os.getenv("aliQwen-api"),base_url="https://dashscope.aliyuncs.com/compatible-mode/v1")print()print("======================")result=llm.invoke(prompt)print(result)print(result.content)
案例7
""" from_messages 作用:将模板变量替换后,直接生成消息列表(List[BaseMessage]), 一般包含:SystemMessage``HumanMessage``AIMessage 常用场景:用于手动查看或调试 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_prompt=ChatPromptTemplate.from_messages([("system","你是一个{role},请回答我提出的问题"),("human","请回答:{question}")])# 格式化聊天提示模板,填充角色和问题参数# 参数role: 指定AI助手的角色身份# 参数question: 用户提出的具体问题# 返回值: 格式化后的消息列表#prompt_value = chat_prompt.format_messages(role="python开发工程师", question="冒泡排序怎么写")prompt_value=chat_prompt.format_messages(**{"role":"python开发工程师","question":"堆排序怎么写"})# 打印格式化后的提示消息print(prompt_value)print()# 使用指定的角色和问题参数填充模板,生成具体的提示内容# role: 指定AI扮演的角色# question: 用户提出的具体问题prompt_value2=chat_prompt.invoke({"role":"python开发工程师","question":"堆排序怎么写"})# 输出生成的提示内容print(prompt_value2.to_string())prompt_value3=chat_prompt.format(**{"role":"python开发工程师","question":"快速排序怎么写"})# 输出生成的提示内容print(prompt_value3)
http://www.jsqmd.com/news/1151359/

相关文章:

  • 救命!2026年AI论文写作工具排行榜,选题卡壳的毕业生直接抄作业
  • 【大数据课程设计/毕业设计】基于大数据建模的淘宝电子产品营销分析系统的设计与实现 基于数据可视化的淘宝电子产品电商运营辅助系统【附源码、数据库、万字文档】
  • 2026佛山瓷砖十大品牌盘点,家装选材参考
  • 【Java实习面试算法冲刺】二叉树
  • 2026百度网盘下载还卡在几十KB?老用户分享真实提速经验
  • 大风天喷灌不均匀?2026年5招应对园林喷头飘移
  • 如何构建一个基于CNN+BiLSTM+Attention模型来处理滚动轴承的故障诊断和寿命预测问题 结合CNN(卷积神经网络)、BiLSTM(双向长短期记忆网络)以及注意力机制Attention
  • 【Claude Code MCP集成终极指南】:20年AI工程专家亲授5大避坑法则与3步高效落地实战
  • wvp-GB28181-pro深度解析:基于Java虚拟线程的高并发国标视频平台架构设计与性能优化
  • 基于大数据爬虫+Hadoop旅游公司线路数据分析系统的设计与实现开题报告
  • 学习通里面有测试功能-考试-里面可以导出成绩。-里面的考试离开次数和切屏次数是相同的-可以全程监控学生-还有切屏总时长-里面的识别次数和识别异常次数不知道是啥?
  • NCMDump终极指南:快速解锁网易云音乐ncm格式解密,实现本地音乐播放自由
  • 暗黑2存档编辑神器:3分钟学会角色属性精准调整与装备管理
  • 基于 STM32 的智能防走失腰带设计与实现
  • Codex额度为什么掉得这么快?5个最耗额度的操作
  • 硬核拆解ZLinear采集卡ADC数据包:从内存结构体到上位机波形解析的完整链路
  • 英飞凌AURIX™ TC4x vs 芯驰E3650:2款ZCU主控芯片方案选型与实测对比
  • 中国的银行简称
  • Momenta:物理AI的“资本锚点”
  • Docker-API路由架构详解
  • LangChain ModelCallLimitMiddleware与ToolCallLimitMiddleware:限制模型调用与防止Agent工具无限调用
  • SerpBase vs ScraperAPI:SERP 专家和通用爬虫的差别
  • 小卖部老板的纸条
  • 护照阅读器在景区内配套服务:从入住到游玩的体验升级 对于包含住宿的大型度假区或文旅综合体,护照阅读器也让酒店入住等环节变得高效。
  • AI 改了代码,你怎么验收?用 Git Diff 生成一份变更审查清单
  • 免费数字人平台推荐:哪些是真免费,哪些后续最贵
  • 3分钟搞定Mac微信防撤回:WeChatIntercept终极配置指南
  • 法国AI初创公司ZML发布免费推理软件,支持多种AI芯片
  • 百考通智能任务书贴合你的选题,拒绝空话套话
  • 03.01.01.ComfyUI Ubuntu:环境搭建篇(集成 调用ComfyUI的API 使用Pythin 中间件方式)