langchain系列:Model I/O模块之-Prompts

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


  langchain是基于大语言模型而开发的一个框架,既然是基于大语言模型,自然最重要的就是先要介绍Model I/O模块。

Model I/O简介

  Model I/O模块其实就是提供了语言模型的基础构建接口,那既然是提供构建的接口,我们首先要知道,构建一个模型到底需要哪一些部分。官方给出了一个图例如下:
langchain系列:Model I/O模块之-Prompts,langchain,深度学习,langchain,人工智能
  从上面可以看出,在整个工作的流程中,数据通过一定的格式(Format)组织起来,送入到模型中进行预测(Predict),最后将预测结果进行解析(Parse)输出。
从上面可以总结出,整个模型的构建包括了:

  • 输入部分
  • 语言模型构建部分
  • 输出部分

输入部分(Prompts)

  在LLM领域,我们把模型的输入称作Prompts,因为对于大语言模型来说,你如果要用好他,通常不会简单的抛出一个问题给他,而是会给他一些前提设定,甚至还会给他看一些案例,诸如你问chatgpt:“能不能帮我翻译一下下面的英文”,此时最好是不要直接发问,而是应该先和模型说:你是一个中英翻译专家,这样它才能回答得更好。所以我们可以大致拆解一下一个prompt大致有哪些东西组成

  • 对语言模型的身份设定描述(可选)
  • 一些回答案例,帮助回答得更好(可选)
  • 具体要问的问题(必选)

langchain针对以上的prompts的三个组成部分,提供了一些组件和接口来实现。

PromptTemplate

  PromptTemplate提供了语言模型输入的构建方式,下面我先抛出代码,然后进行解释

from langchain import PromptTemplate

prompt = PromptTemplate(
    input_variables=['product'],
    template="""
        what is a good name for a company that makes {product}?
    """
)

print(prompt.format(product="colorful socks"))
what is a good name for a company that makes colorful socks?

  在PromptTemplate中,需要指定两个东西:

template:我们要发问的问题,但是当我们用户在发问的时候,并不需要每一次都输入完整的这句话,而只需要输入一小部分,这一小部分就是用中括号括起来的变量,这个变量需要在input_variables变量中指定;
input_variables:指定template中实际需要用户输入的变量;

  从上面的解释可以看出,我们在对话的过程中,实际只需要输入input_variables的部分,其他的不需要重复输入,这也是PromptTemplate中有一个Template的原因,它是一个固定模板。同时也可以理解为什么最开始官方给的图中Format那里就像一个插槽一样,我们只需要讲用户输入的少部分数据插入到模板中,组成完整的prompt,然后送给模型就可以了。

改进一:设定模型角色
  为了让模型回答得更好,可以设定模型的角色,其实也就是添加了一句说明

from langchain import PromptTemplate

prompt = PromptTemplate(
    input_variables=['product'],
    template="""
        You are a naming consultant for new companies.
        what is a good name for a company that makes {product}?
    """
)

print(prompt.format(product="colorful socks"))
from_template

  当然以上的初始化需要显示的在input_variables中指定我们需要输入的变量,如果你角色这很麻烦,PromptTemplate还提供了一个from_template方法,让langchain自动识别出需要输入的变量。

from langchain import PromptTemplate
template1 = """
    You are a naming consultant for new companies.
    what is a good name for a company that makes {product}?
"""
prompt = PromptTemplate.from_template(template1)
print(prompt.format(product="colorful socks"))

ChatPromptTemplate

 在langchain中,对话模型(Chat Model)和大语言模型(LLMs)是稍有区分的,对话模型可以理解为是LLMs高级封装,它有更规范的输入和输出,而规范的输出就是通过ChatPromptTemplate来实现的。
  在上面一小节中,是针对LLMs的,可以看出,我们关于模型的身份设定,人类提问是不做区分的,就在一个字符串中一起描述就行,但是在Chat Model是严格区分的。分别用SystemMessagePromptTemplate和SystemMessagePromptTemplate来指定。

下面对上一小节的内容进行改造

from langchain.prompts import (
    ChatPromptTemplate,
    PromptTemplate,
    SystemMessagePromptTemplate,
    AIMessagePromptTemplate,
    HumanMessagePromptTemplate,
)

system_prompt = PromptTemplate(
    input_variables=['test'],
    template="""
        You are a naming consultant for new {test}.
    """
)
system_message_prompt = SystemMessagePromptTemplate(prompt=system_prompt)
human_prompt = PromptTemplate(
    input_variables=['product'],
    template="""
        what is a good name for a company that makes {product}?
    """
)
human_message_prompt = HumanMessagePromptTemplate(prompt=human_prompt)

chat_prompt = ChatPromptTemplate.from_messages([system_message_prompt,human_message_prompt])
print(chat_prompt.format_prompt(test='compies',product='colorful socks'))

 可以看出,在这里对于模型身份的设定,会用SystemMessagePromptTemplate进行包装,而我们的提问,会用HumanMessagePromptTemplate进行包装。文章来源地址https://www.toymoban.com/news/detail-569534.html

到了这里,关于langchain系列:Model I/O模块之-Prompts的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

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

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

    2024年02月13日
    浏览(24)
  • 【LangChain】Prompts之Prompt templates

    【LangChain】向量存储(Vector stores) 【LangChain】向量存储之FAISS 【LangChain】Prompts之Prompt templates 编程模型的新方法是通过提示( prompts )。 prompts 是指模型的输入。该输入通常由多个组件构成。 LangChain 提供了多个类和函数,使构建和使用 prompts 变得容易。 Prompt templates(提示模板)

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

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

    2024年02月13日
    浏览(33)
  • 【AI大模型应用开发】【LangChain系列】5. 实战LangChain的智能体Agents模块

    大家好,我是【同学小张】。持续学习,持续干货输出,关注我,跟我一起学AI大模型技能。 在我前面的MetaGPT系列文章中,已经对智能体有了一个认知,重温一下: 智能体 = LLM+观察+思考+行动+记忆 将大语言模型作为一个推理引擎。给定一个任务,智能体自动生成完成任务所

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

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

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

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

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

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

    2024年02月15日
    浏览(27)
  • 自然语言处理从入门到应用——LangChain:提示(Prompts)-[示例选择器(Example Selectors)]

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

    2024年02月14日
    浏览(30)
  • LangChain大型语言模型(LLM)应用开发(一):Models, Prompts and Output Parsers

    LangChain是一个基于大语言模型(如ChatGPT)用于构建端到端语言模型应用的 Python 框架。它提供了一套工具、组件和接口,可简化创建由大型语言模型 (LLM) 和聊天模型提供支持的应用程序的过程。LangChain 可以轻松管理与语言模型的交互,将多个组件链接在一起,以便在不同的

    2024年02月16日
    浏览(35)
  • 【深度学习】扩散模型(Diffusion Model)详解

    扩散模型有两个过程: 扩散过程:如上图所示,扩散过程为从右到左 X 0 → X T X_0 rightarrow X_T X 0 ​ → X T ​ 的过程,表示对图片逐渐加噪,且 X t + 1 X_{t+1} X t + 1 ​ 是在 X t X_{t} X t ​ 上加躁得到的,其只受 X t X_{t} X t ​ 的影响。 因此扩散过程是一个马尔科夫过程 。 X 0 X

    2024年01月19日
    浏览(38)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包