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

常用提示词模板总结

提示词模板有助于将用户输入和参数转换为语言模型的指令。 这可以用于指导模型的响应,帮助其理解上下文并生成相关且连贯的基于语言的输出。

提示词模板的输入是一个字典,其中每个键表示要填充的提示词模板中的变量。

①.from_template--变量占位符

作用:通过单个字符串模板(支持变量占位符,比如{question})来构建对话提示。
适用场景:简单的单轮提示(比如只需要给大模型发一条指令)。

prompt_template=ChatPromptTemplate.from_template( "请回答这个问题{question}" ) chain=prompt_template | llm resp=chain.invoke({"question":"什么是深度学习?"}) print(resp.content)

②.from_messages--变量占位符

作用:通过消息列表(每个消息包含role(角色,比如user/assistant/system)和content(内容))来构建对话提示。
适用场景:多轮对话、需要明确角色(比如设置system指令 + user问题)的复杂提示。

prompt_template=ChatPromptTemplate.from_messages([ ("system", '你是个百科小助手'), ("human", "请用{language}简要回答这个问题{question}") ]) chain=prompt_template | llm resp=chain.invoke({"language":"英语","question":"什么是深度学习?"}) print(resp.content)

③.消息占位符

如果我们希望用户传入一个消息列表(历史消息),并将其插入到特定位置呢? 这就是需要使用 MessagesPlaceholder。

prompt_template=ChatPromptTemplate.from_messages([ ("system", '你是个百科小助手'), MessagesPlaceholder('msg') ]) chain=prompt_template | llm #resp=chain.invoke({"msg":[HumanMessage(content="请简要回答什么是深度学习")]}) resp=chain.invoke({"msg":["human","请简要回答什么是深度学习"]}) print(resp.content)

④.少量样本提示词模板

是通过 Few-Shot(少样本)学习,给大模型提供 3 个「复杂问题→分步推理→最终答案」的示例,让模型学会 “先拆解问题→提后续子问题→查中间答案→汇总最终答案” 的推理范式,最终让模型用同样的逻辑回答 “唐朝和宋朝哪个持续时间更长” 的问题。

#步骤一:提供实例 examples=[ { 'question':'穆罕默德·阿里和艾伦·图灵谁活得更久?', 'answer':''' 是否需要后续问题:是 后续问题:穆罕默德·阿里去世时多大? 中间答案:穆罕默德·阿里去世时74岁。 后续问题:艾伦·图灵去世时多大? 中间答案:艾伦·图灵去世时74岁。 所以最终答案是:穆罕默德·阿里 ''', }, { 'question':'乔治·华盛顿的外祖父是谁?', 'answer':''' 是否需要后续问题:是 后续问题:乔治·华盛顿的母亲是谁? 中间答案:乔治·华盛顿的母亲是玛丽·鲍尔·华盛顿。 后续问题:玛丽·鲍尔·华盛顿的父亲是谁? 中间答案:玛丽·鲍尔·华盛顿的父亲是约瑟夫·鲍尔。 所以最终答案是:约瑟夫·鲍尔 ''', }, { 'question': '《大白鲨》和《007:大战皇家赌场》的导演是否来自同一个国家?', 'answer': ''' 是否需要后续问题:是 后续问题:《大白鲨》的导演是谁? 中间答案:《大白鲨》的导演是史蒂文·斯皮尔伯格。 后续问题:史蒂文·斯皮尔伯格来自哪里? 中间答案:美国。 后续问题:《007:大战皇家赌场》的导演是谁? 中间答案:《007:大战皇家赌场》的导演是马丁·坎贝尔。 后续问题:马丁·坎贝尔来自哪里? 中间答案:新西兰。 所以最终答案是:否 ''', }, ] base_template=PromptTemplate.from_template("问题:{question}\n{answer}") prompt_template=FewShotPromptTemplate( examples=examples, example_prompt=base_template, suffix='问题:{input}', # 示例后拼接“待回答的问题”(input是最终要传的参数) input_variables=['input'], # 指定最终要传入的变量名(对应后续invoke的input参数) ) chain=prompt_template | llm resp=chain.invoke({"input":"中国历史上,唐朝和宋朝哪个朝代持续时间更长?"}) print(resp.content) 运行结果: 我们需要先查询两个朝代的具体起止年份,然后计算持续时间进行比较。 **是否需要后续问题:是** **后续问题:唐朝的起止年份是什么?** **中间答案:唐朝(618年—907年),持续289年。** **后续问题:宋朝的起止年份是什么?** **中间答案:宋朝(960年—1279年),持续319年。** **所以最终答案是:宋朝**

⑤.少量对话样本提示词模板

跟第四种类似

examples=[ {"input":"2@3","output":"6"}, {"input":"2@2","output":"4"}, {"input":"3@3","output":"9"}, ] base_prompt=ChatPromptTemplate.from_messages( [ ('human','{input}'), ('ai','{output}'), ] ) few_shot_template=FewShotChatMessagePromptTemplate( examples=examples, example_prompt=base_prompt, ) final_template=ChatPromptTemplate.from_messages([ ("system","你是智能机器人AI助手!"), few_shot_template, MessagesPlaceholder("msgs") ] ) chain=final_template | llm resp=chain.invoke({"msgs":[HumanMessage(content="2@5的结果是多少")]}) print(resp.content) 输出结果: 你使用的 `@` 符号看起来像是一个自定义运算符。 根据前面的例子: - 2@3 = 6 - 2@2 = 4 - 3@3 = 9 可以推测 `a@b` 表示 **a × b**(乘法)。 所以: 2@5 = 2 × 5 = **10**
http://www.gsyq.cn/news/155312.html

相关文章:

  • 线代第三章向量第一节:n维向量及其运算
  • 【C++】详解形参和实参:别再傻傻分不清
  • 线代第三章向量第二节:向量间的线性关系一
  • 线代第二章矩阵第九、十节:初等变换、矩阵的标准形、阶梯形与行最简阶梯形、初等矩阵
  • Dify平台的版权侵权风险规避措施
  • Dify在信创生态中的定位与发展机遇
  • 有源蜂鸣器和无源区分:驱动信号波形对比分析
  • 全面讲解如何判断电脑无法识别usb设备根源
  • Multisim示波器在模拟电子课程中的角色:通俗解释
  • Proteus 8.16下载安装教程:适用于64位系统的实践指南
  • Dify平台的数据可视化描述生成效果展示
  • 理想二极管反向截止特性分析:系统学习基础原理
  • Dify在房地产房源描述自动生成中的实践
  • 超详细版USB3.0引脚定义在工业相机中的应用
  • 【C语言】函数递归为什么那么受欢迎?
  • Dify平台的隐私保护机制符合GDPR吗?
  • AXI DMA在Zynq嵌入式视觉系统中的应用详解
  • 一文说清交叉编译原理与基本工作流程
  • Dify平台的备份与恢复策略建议
  • Linux中部署Chrome Driver的实战案例
  • 《二刷Linux:这一次,我终于“理解”了进程》
  • 【每天一个AI小知识】:什么是自注意力?
  • 12.25 - 重排链表 NULL与nullptr的区别
  • Dify如何支持多Agent协作机制?
  • 正弦波生成新思路:DDS技术波形发生器设计详解
  • 17、构建学生成绩报告系统:从 Rails 应用到 Access 数据导入
  • 【教学类-100-01】20251225交通工具《主题:小司机》确保透明背景
  • 14、PHP SPL 功能在文件操作与数组重载中的应用
  • Dify在旅游路线智能推荐中的应用探索
  • Dify平台的会话上下文保持技术实现揭秘