LangChain中的提示词模板 - PromptTemplate


前言

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

一、基本概念

  提示词模板的输入是一个字典,其中每个键表示要填充的提示词模板中的变量。提示词模板输出一个 PromptValue。此 PromptValue 可以传递给 LLMChatModel,也可以转换为字符串或消息列表。 这个 PromptValue 的存在是为了方便在字符串和消息之间切换。

1. 模板消息

   LangChain 为不同角色提供了不同的消息类:

  • 人类消息(HumanMessage:这表示角色为“用户(user)”的消息。
  • AI消息(AIMessage:这表示角色为“助手(assistant)”的消息。
  • 系统消息(SystemMessage:这表示一个角色为 “system” 的消息,告诉模型如何行为。并不是每个大模型供应商都支持这个。
  • 工具消息(ToolMessage:这表示一个角色为 “tool” 的消息,包含调用工具的结果。

   所有消息都有 rolecontentresponse_metadata 属性。

  • role 描述了谁在说这条消息。标准角色是 ‘user’、‘assistant’、‘system’ 和 ‘tool’。
  • content 属性描述了消息的内容。 这可以是几种不同的东西:
    • 一个字符串(大多数模型处理这种类型的内容)
    • 一个字典列表(用于多模态输入,其中字典包含关于该输入类型和输入位置的信息)
  • response_metadata属性包含有关响应的附加元数据。这里的数据通常是特定于每个大模型供应商的。 这里可能存储诸如日志概率和令牌使用等信息。

   可选地,消息可以有一个 name 属性,用于区分具有相同角色的多个发言者。 例如,如果聊天历史中有两个用户,区分它们可能会很有用。并不是所有模型都支持这一点。

二、使用方法

1. 字符串提示词模板

  这类提示词模板用于格式化单个字符串,通常用于更简单的输入。

from langchain_core.prompts import PromptTemplate

template = PromptTemplate.from_template("请给我讲个关于{topic}的笑话。")
result = template.invoke({
   
   "topic": "猫"})
print(f"输出=>: {
     
     result}")
# 输出=>: text='给我讲个关于猫的笑话。'

2. 聊天提示词模板

  这类提示词模板用于格式化消息列表。这些“模板”本身由一系列模板组成。

2.1、单变量提示词模板

from langchain_core.prompts import ChatPromptTemplate

template = ChatPromptTemplate.from_messages([
    ("system", "你是一个有用的助手。"),
    ("user", 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值