【LangChain】Prompts之Prompt templates

这篇具有很好参考价值的文章主要介绍了【LangChain】Prompts之Prompt templates。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

LangChain学习文档

  • 【LangChain】向量存储(Vector stores)
  • 【LangChain】向量存储之FAISS
  • 【LangChain】Prompts之Prompt templates

Prompts

编程模型的新方法是通过提示(prompts)。
prompts是指模型的输入。该输入通常由多个组件构成。 LangChain 提供了多个类和函数,使构建和使用prompts变得容易。

  • Prompt templates(提示模板): 参数化模型输入
  • Example selectors(选择器示例): 动态选择要包含在提示中的示例

prompt 翻译:提示

Prompt templates

语言模型将文本作为输入 - 该文本通常称为prompt

通常,这不仅仅是一个硬编码字符串,而是模板、一些示例和用户输入的组合
LangChain 提供了多个类和函数,使构建和使用prompts变得容易。

什么是提示模板?(What is a prompt template?)

prompt template是指生成提示的可重复的方式。它包含一个文本字符串(“模板”),可以接收来自最终用户的一组参数并生成提示。

提示模板包含:

  • 对语言模型的指令,
  • 一组几个镜头示例来帮助语言模型生成更好的响应,
  • 对语言模型的一个问题。

这是最简单的例子:

from langchain import PromptTemplate


template = """\
您是新公司的命名顾问。
生产{product}的公司起什么好名字?
"""

prompt = PromptTemplate.from_template(template)
prompt.format(product="彩色袜子")

结果:

您是新公司的命名顾问。
一家生产彩色袜子的公司起什么名字好呢?

创建提示模板(Create a prompt template)

您可以使用 PromptTemplate 类创建简单的硬编码提示。提示模板可以采用任意数量的输入变量,并且可以格式化以生成提示。

from langchain import PromptTemplate

# 没有输入变量的示例提示
no_input_prompt = PromptTemplate(input_variables=[], template="给我讲个笑话。")
no_input_prompt.format()
# -> "给我讲个笑话。"

# 带有一个输入变量的示例提示
one_input_prompt = PromptTemplate(input_variables=["adjective"], template="给我讲一个{adjective}笑话。")
one_input_prompt.format(adjective="有趣")
# -> "给我讲一个有趣的笑话。"

# 具有多个输入变量的示例提示
multiple_input_prompt = PromptTemplate(
    input_variables=["adjective", "content"], 
    template="给我讲一个关于{content}的{adjective}笑话。"
)
multiple_input_prompt.format(adjective="funny", content="chickens")
# -> "给我讲一个关于鸡的有趣笑话。"

如果您不想手动指定 input_variables,您还可以使用 from_template 类方法创建 PromptTemplate。 langchain 将根据传递的模板自动推断 input_variables

template = "给我讲一个关于{content}的{adjective}笑话。"

prompt_template = PromptTemplate.from_template(template)
prompt_template.input_variables
# -> ['adjective', 'content']
prompt_template.format(adjective="funny", content="chickens")
# -> 给我讲一个关于鸡的有趣笑话。

您可以创建自定义提示模板,以您想要的任何方式格式化提示。有关更多信息,请参阅自定义提示模板。

聊天提示模板(Chat prompt template)

聊天模型将聊天消息列表作为输入 - 该列表通常称为提示(prompt)。这些聊天消息与原始字符串(您将传递到 LLM 模型中)不同,因为每条消息都与一个角色关联。

例如,在 OpenAI 的Chat Completion API中,聊天消息可以与 AI、人类或系统角色相关联。该模型会更紧密地遵循系统聊天消息的指令。

LangChain 提供了多种提示模板,可以轻松构建和使用提示。官方鼓励在查询聊天模型时使用这些聊天相关的提示模板而不是 PromptTemplate,以充分利用底层聊天模型的潜力。

from langchain.prompts import (
    ChatPromptTemplate,
    PromptTemplate,
    SystemMessagePromptTemplate,
    AIMessagePromptTemplate,
    HumanMessagePromptTemplate,
)
from langchain.schema import (
    AIMessage,
    HumanMessage,
    SystemMessage
)

要创建与角色关联的消息模板,请使用 MessagePromptTemplate

为了方便起见,模板上公开了一个 from_template 方法。如果您要使用此模板,它将如下所示:

template="您是将 {input_language} 翻译成 {output_language} 的得力助手。"
# 创建角色:系统的模板
system_message_prompt = SystemMessagePromptTemplate.from_template(template)
human_template="{text}"
# 创建角色:人类的模板
human_message_prompt = HumanMessagePromptTemplate.from_template(human_template)

如果你想更直接地构造MessagePromptTemplate,你也可以在外部创建一个PromptTemplate,然后将其传入,例如:

# 创建一个常规的模板
prompt=PromptTemplate(
    template="您是将 {input_language} 翻译成 {output_language} 的得力助手。",
    input_variables=["input_language", "output_language"],
)
# 再创建一个角色:系统 的模板
system_message_prompt_2 = SystemMessagePromptTemplate(prompt=prompt)
# 判断和之前创建的是否一样
assert system_message_prompt == system_message_prompt_2

之后,您可以从一个或多个 MessagePromptTemplate 构建 ChatPromptTemplate

我们可以使用 ChatPromptTemplateformat_prompt ——这会返回一个 PromptValue,您可以将其转换为字符串或 Message 对象,具体取决于您是否想要使用格式化值作为 llm 或聊天模型的输入。

chat_prompt = ChatPromptTemplate.from_messages([system_message_prompt, human_message_prompt])

# 从格式化消息中获取聊天完成信息
chat_prompt.format_prompt(input_language="English", output_language="French", text="I love programming.").to_messages()

结果:

    [SystemMessage(content='You are a helpful assistant that translates English to French.', additional_kwargs={}),
     HumanMessage(content='I love programming.', additional_kwargs={})]

总结

本篇主要讲述:

  1. 如何创建模板提示

方式一:PromptTemplate(input_variables=[], template="Tell me a joke.")

方式二:template = "Tell me a {adjective} joke about {content}." prompt_template = PromptTemplate.from_template(template),这种不用写input_variables

  1. 如何创建messageTemplate,我们常常需要与角色相关联:

角色有:

  • AI(AIMessagePromptTemplate)、
  • 人类(HumanMessagePromptTemplate)、
  • 系统(SystemMessagePromptTemplate)。

最后利用ChatPromptTemplate.from_messages(xxx)方法,整合这些角色,就构造出了,聊天机器人。

总结

https://python.langchain.com/docs/modules/model_io/prompts/prompt_templates/文章来源地址https://www.toymoban.com/news/detail-625019.html

到了这里,关于【LangChain】Prompts之Prompt templates的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【LangChain】Prompts之自定义提示模板

    【LangChain】向量存储(Vector stores) 【LangChain】向量存储之FAISS 【LangChain】Prompts之Prompt templates 【LangChain】Prompts之自定义提示模板 假设我们希望 LLM 生成给定函数名称的英语解释。为了实现此任务,我们将创建一个自定义提示模板,该模板将函数名称作为输入,并格式化提示模

    2024年02月13日
    浏览(24)
  • [LangChain核心模块]模型的输入和输出->Prompts

    ⭐作者介绍:大二本科网络工程专业在读,持续学习Java,努力输出优质文章 ⭐作者主页:@逐梦苍穹 ⭐所属专栏:人工智能。 任何语言模型应用的核心元素是 模型的输入和输出 。LangChain提供了与任何语言模型进行接口交互的基本组件。 ● 提示 prompts: 将模型输入模板化、动

    2024年02月16日
    浏览(28)
  • LangChain手记 Models,Prompts and Parsers

    整理并翻译自DeepLearning.AI×LangChain的官方课程:Models,Prompts and Parsers(源码可见) 模型:大语言模型 提示词:构建传递给模型的输入的方式 解析器:获取模型输入,转换为更为结构化的形式以在下游任务中使用 为什么使用提示词模板 提示词会非常长且具体 在可以的时候能直

    2024年02月13日
    浏览(33)
  • langchain系列:Model I/O模块之-Prompts

      langchain是基于大语言模型而开发的一个框架,既然是基于大语言模型,自然最重要的就是先要介绍Model I/O模块。   Model I/O模块其实就是提供了语言模型的基础构建接口,那既然是提供构建的接口,我们首先要知道,构建一个模型到底需要哪一些部分。官方给出了一个图例

    2024年02月16日
    浏览(29)
  • 自然语言处理从入门到应用——LangChain:提示(Prompts)-[基础知识]

    分类目录:《大模型从入门到应用》总目录 LangChain系列文章: 基础知识 快速入门 安装与环境配置 链(Chains)、代理(Agent:)和记忆(Memory) 快速开发聊天模型 模型(Models) 基础知识 大型语言模型(LLMs) 基础知识 LLM的异步API、自定义LLM包装器、虚假LLM和人类输入LLM(

    2024年02月15日
    浏览(38)
  • AI大模型预先学习笔记二:prompt提问大模型、langchain使用大模型框架、fine tune微调大模型

    1)环境准备 ①安装OpenAI库 附加 安装来源 ②生成API key ③设定本地的环境变量 ④代码的准备工作 ⑤在代码运用prompt(简单提问和返回) 2)交互代码的参数备注 temperature:随机性(从0到2可以调节,回答天马行空变化大可以选2) model:跟什么类型的model互动 role:(定义交互

    2024年01月17日
    浏览(37)
  • 自然语言处理从入门到应用——LangChain:提示(Prompts)-[提示模板:基础知识]

    分类目录:《大模型从入门到应用》总目录 LangChain系列文章: 基础知识 快速入门 安装与环境配置 链(Chains)、代理(Agent:)和记忆(Memory) 快速开发聊天模型 模型(Models) 基础知识 大型语言模型(LLMs) 基础知识 LLM的异步API、自定义LLM包装器、虚假LLM和人类输入LLM(

    2024年02月15日
    浏览(56)
  • ChatGPT | 使用自己Prompt替换LangChain默认Prompt

    某些场景会要求ChatGPT重复处理同一个操作,要么在问题里面加入Prompt,要么用自己Prompt替换LangChain默认Prompt。 直接看看前后对比结果 LangChain默认的Prompt template=\\\"Use the following pieces of context to answer the users question. nIf you don\\\'t know the answer, just say that you don\\\'t know, don\\\'t try to make up

    2024年02月16日
    浏览(29)
  • 自然语言处理从入门到应用——LangChain:提示(Prompts)-[提示模板:连接到特征存储]

    分类目录:《大模型从入门到应用》总目录 LangChain系列文章: 基础知识 快速入门 安装与环境配置 链(Chains)、代理(Agent:)和记忆(Memory) 快速开发聊天模型 模型(Models) 基础知识 大型语言模型(LLMs) 基础知识 LLM的异步API、自定义LLM包装器、虚假LLM和人类输入LLM(

    2024年02月15日
    浏览(27)
  • langchain介绍之-Prompt

      LangChain 是一个基于语言模型开发应用程序的框架。它使得应用程序具备以下特点:1.数据感知:将语言模型与其他数据源连接起来。2.代理性:允许语言模型与其环境进行交互 LangChain 的主要价值在于: 组件: 用于处理语言模型的抽象,以及每个抽象的多个实现集合。这些

    2024年02月10日
    浏览(24)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包