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

LangChain —— Prompt Templates

文章目录

  • 一、什么是 Prompt Templates
    • 1、String PromptTemplates
    • 2、ChatPromptTemplates
    • 3、MessagesPlaceholder 留言占位符
  • 二、如何使用 Prompt Templates


一、什么是 Prompt Templates

 提示模板有助于将用户输入和参数转换为语言模型的指令。这可用于指导模型的响应,帮助它理解上下文并生成相关和连贯的基于语言的输出。
 提示模板将字典作为输入,其中 每个键 表示提示模板中要填写的 变量

 提示模板输出提示 PromptValue 值。此 PromptValue 可以传递给 LLM 或 ChatModel,也可以转换为 字符串消息列表。此 PromptValue 存在的原因是便于在字符串和消息之间切换。

 有几种不同类型的提示模板:

1、String PromptTemplates

 这种提示模板用于 格式化单个字符串,通常用于更简单的输入。例如,构造和使用PromptTemplate的常见方法如下:

from langchain_core.prompts import PromptTemplateprompt_template = PromptTemplate.from_template("Tell me a joke about {topic}")prompt_template.invoke({"topic": "cats"})

2、ChatPromptTemplates

 这些提示模板用于格式化消息列表。这些“模板”由模板本身的列表组成。例如,构造和使用ChatPromptTemplate的常见方法如下:

from langchain_core.prompts import ChatPromptTemplateprompt_template = ChatPromptTemplate.from_messages([("system", "You are a helpful assistant"),("user", "Tell me a joke about {topic}")
])prompt_template.invoke({"topic": "cats"})

 在上面的示例中,此 ChatPromptTemplate 在调用时将构造两条消息。第一个是 SystemMessage,它没有要格式化的变量。第二个是 HumanMessage,将由用户传入的 topic 变量进行格式化。

3、MessagesPlaceholder 留言占位符

 此提示模板负责在特定位置添加消息列表。
 在上面的 ChatPromptTemplate 中,我们看到了如何格式化两条消息,每条消息都是字符串。但是,如果我们想让用户传入一个消息列表,并且要把它们放在一个特定的位置呢?这就需要使用 MessagesPlaceholder 的方法。

from langchain_core.prompts import ChatPromptTemplate, MessagesPlaceholder
from langchain_core.messages import HumanMessageprompt_template = ChatPromptTemplate.from_messages([("system", "You are a helpful assistant"),MessagesPlaceholder("msgs")
])prompt_template.invoke({"msgs": [HumanMessage(content="hi!")]})

 这将生成一个包含两条消息的列表,第一条是 SystemMessage,第二条是我们传入的 HumanMessage。如果我们传入了5条消息,那么它总共会产生6条消息 (系统消息加上传入的5条消息)。这对于将消息列表放入特定位置非常有用。

 在不显式使用 MessagesPalaceholder 类的情况下,完成相同任务的另一种方法是:

prompt_template = ChatPromptTemplate.from_messages([("system", "You are a helpful assistant"),("placeholder", "{msgs}") # <-- This is the changed part
])

二、如何使用 Prompt Templates

 Prompt Templates (提示模板),负责将用户输入格式化为可以传递给语言模型的格式。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • ArcGIS中国工具(ArcGISCTools)等插件使用体验
  • 多进程优化顶点小说爬虫:加速爬取速度的深度优化策略
  • 二进制部署k8s
  • 异步日志:性能优化的金钥匙
  • Vue封装Tooltip(提示工具)
  • 产业知识图谱:金融科技的创新引擎
  • MFC扩展库BCGControlBar Pro v35.0 - 可视化管理主题等全新升级
  • 在大型企业级应用中,如何优化 XML 数据的存储和检索效率,以满足高并发访问需求?
  • Python打开Excel文档并读取数据
  • Grafana
  • 光学传感器图像处理流程(一)
  • 怎么用PPT录制微课?详细步骤解析!
  • IMS架构中的注册与会话流程:RTPEngine集成及消息路由详解
  • sqlalchemy.orm中validates对两个字段进行联合校验
  • 浅析Kafka Streams中KTable.aggregate()方法的使用
  • Docker 笔记(1):介绍、镜像、容器及其基本操作
  • java架构面试锦集:开源框架+并发+数据结构+大企必备面试题
  • JS变量作用域
  • mysql innodb 索引使用指南
  • Zepto.js源码学习之二
  • 短视频宝贝=慢?阿里巴巴工程师这样秒开短视频
  • 可能是历史上最全的CC0版权可以免费商用的图片网站
  • 前端面试之CSS3新特性
  • 使用agvtool更改app version/build
  • 手机app有了短信验证码还有没必要有图片验证码?
  • 思否第一天
  •  一套莫尔斯电报听写、翻译系统
  • 如何正确理解,内页权重高于首页?
  • ​zookeeper集群配置与启动
  • ​二进制运算符:(与运算)、|(或运算)、~(取反运算)、^(异或运算)、位移运算符​
  • !!java web学习笔记(一到五)
  • # dbt source dbt source freshness命令详解
  • #100天计划# 2013年9月29日
  • #QT项目实战(天气预报)
  • (02)Cartographer源码无死角解析-(03) 新数据运行与地图保存、加载地图启动仅定位模式
  • (2)MFC+openGL单文档框架glFrame
  • (C++17) optional的使用
  • (Redis使用系列) Springboot 使用redis实现接口Api限流 十
  • (二)fiber的基本认识
  • (二十四)Flask之flask-session组件
  • (十)Flink Table API 和 SQL 基本概念
  • (十七)Flask之大型项目目录结构示例【二扣蓝图】
  • (四十一)大数据实战——spark的yarn模式生产环境部署
  • (学习日记)2024.03.12:UCOSIII第十四节:时基列表
  • (一)基于IDEA的JAVA基础1
  • (转)详解PHP处理密码的几种方式
  • (轉貼) 2008 Altera 亞洲創新大賽 台灣學生成果傲視全球 [照片花絮] (SOC) (News)
  • .NET Framework杂记
  • .net 调用php,php 调用.net com组件 --
  • .net 桌面开发 运行一阵子就自动关闭_聊城旋转门家用价格大约是多少,全自动旋转门,期待合作...
  • .NET8 动态添加定时任务(CRON Expression, Whatever)
  • .Net--CLS,CTS,CLI,BCL,FCL
  • .pub是什么文件_Rust 模块和文件 - 「译」
  • .ui文件相关
  • @Autowired @Resource @Qualifier的区别