langchain介绍之-Prompt

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

  LangChain 是一个基于语言模型开发应用程序的框架。它使得应用程序具备以下特点:1.数据感知:将语言模型与其他数据源连接起来。2.代理性:允许语言模型与其环境进行交互
LangChain 的主要价值在于:组件:用于处理语言模型的抽象,以及每个抽象的多个实现集合。这些组件是模块化且易于使用的,无论您是否在使用 LangChain 框架的其他部分
现成的链式结构:由多个组件组成的结构化组合,用于完成特定的高级任务现成的链式结构使得入门变得轻松。对于更复杂的应用程序和微妙的用例,组件使得可以轻松定制现有链式结构或构建新的结构。此篇博客主要介绍Langchain的prompt相关内容。

  Langchain中提供了哪些Prompt呢?具体如下图所示,是截至目前Langchain提供的所有模版,对于base类模版,在通过langchain构建应用时,一般很少用到,开发者主要用的还是ChatPromptTemplate,PromptTemplate,以及各类MessagePromptTemplate。

langchain介绍之-Prompt,Langchain,langchain,prompt

  为什么Lanchain会提供不同类型的MessagePromptTemplate呢?因为Openai的原始接口中,对于chat completion这个接口,里面的user role就分为user,system,assistant三个角色,所以,这里的MessageTemplate也分为HumanMessagePromptTemplate,AIMessagePromptTemplate,SystemMessagePromptTemplate。

  openai官方提供的chat completion的接口如下图所示,可以看到原始调用openai的接口中,需要传入role的信息,所以上面的三种messagePromptTemplate对应三种不同的角色。

langchain介绍之-Prompt,Langchain,langchain,prompt

了解了前面的基础知识后,来看看如何使用PromptTemplate。下面的代码中调用from_template

(...)传入了一份带变量的字符串,调用format信息后,打印出来的message就是将变量值于原有字符串merge后的值。另外,从结果也可以看到,PromptTemplate是一个报刊input_variables和template变量的的class。

import openai
import os
from langchain.prompts import (PromptTemplate)

prompt_template = PromptTemplate.from_template(
    "Tell me a joke about {context}")
message = prompt_template.format(context="chidren")
print(prompt_template)
print(type(prompt_template))
print(message)

langchain介绍之-Prompt,Langchain,langchain,prompt

除了通过from_template()的方法初始化一个PromptTemplate的class外,还可以通过下面的方法初始化这个class

prompt_template_two = PromptTemplate(
    input_variables=['name'],
    template="what is your {name}"
)
print(prompt_template_two)

  接着来看看SystemMessagePromptTemplate的使用,在创建好一个PromptTemplate后,可以将prompt赋值给SystemMessagePromptTemplate。可以看到SystemMessagePromptTemplate除了prompt变量外,还有template_format,validate_template变量。

prompt = PromptTemplate(
    template="You are a helpful assistant that translates {input_language} to {output_language}.",
    input_variables=["input_language", "output_language"],
)
system_message_prompt = SystemMessagePromptTemplate(prompt=prompt)
print(system_message_prompt)
print(type(system_message_prompt))

langchain介绍之-Prompt,Langchain,langchain,prompt

  除了上面的方式初始化一个SystemMessageTemplate外,还可以通过调用from_template的方式进行初始化。可以看到初始化出来的对象是一样的。

prompt_string = """Translate the text \
that is delimited by triple backticks \
into a style that is {style}. \
text: ```{text}```
"""
system_message_prompt_two = SystemMessagePromptTemplate.from_template(
    prompt_string)
print(system_message_prompt_two)

langchain介绍之-Prompt,Langchain,langchain,prompt

接下来再看看ChatPromptTemplate,这里先创建了一个HumanMessagePromptTemplate,然后通过from_message,将创建了promptTemplate赋值给了ChatPromptTemplate

human_prompt_template = HumanMessagePromptTemplate.from_template(prompt_string)
print(human_prompt_template)
print('-------------------')
chat_prompt = ChatPromptTemplate.from_messages([human_prompt_template])
print(chat_prompt)

执行结果如下图所示,可以看到直接打印的话,HumanMessagePromptTemplate和前面的SystemMessagePromptTemplate无区别,class包含的字段都一样。组装出来的ChatPromptTemplate包含input_variables,output_parser,messages三个变量,messages的值就是生成的HumanMessagePromptTemplate.

langchain介绍之-Prompt,Langchain,langchain,prompt

  调用ChatPromptTemplate的format_messages()方法,可以将变量值和原有的prompt中的文字进行合并。结果如下图所示,返回的message是一个List,List只有一个值就是HumanMessage对象,HumanMessage对象又包含content,additional_kwargs={},example变量。

message = chat_prompt.format_messages(style="myStyle", text="mytext")
print(message)

langchain介绍之-Prompt,Langchain,langchain,prompt

  可以看到不同promptTemplate之间有一点绕,这可能也和AI技术不断在更新,langchain也在不断迭代有关吧。

  message对象生成好后,就可以调用model生成内容了,代码如下所示:

chat = ChatOpenAI(model_name="gpt-3.5-turbo", verbose=True)
response = chat(message)
print(response)
print(response.content)

  调用大模型生成的内容如下图所示:

langchain介绍之-Prompt,Langchain,langchain,prompt

  以上就是对Langchain中Prompt的使用介绍。文章来源地址https://www.toymoban.com/news/detail-692973.html

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

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

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

相关文章

  • LangChain(2)提示工程 Prompt Engineering

    提示一般包含如下部分: Instructions:整体结构,模型的人设 Instructions tell the model what to do, how to use external information if provided, what to do with the query, and how to construct the output. External information:额外提供给模型的信息 External information or context(s) act as an additional source of knowledge for t

    2024年02月15日
    浏览(32)
  • LangChain-10 Agents langchainhub 共享的提示词Prompt

    LangChainHub 的思路真的很好,通过Hub的方式将 Prompt 共享起来,大家可以通过很方便的手段,短短的几行代码就可以使用共享的 Prompt 。 我个人非常看好这个项目。 官方推荐使用LangChainHub,但是它在GitHub已经一年没有更新了, 倒是数据还在更新。 为了防止大家不能访问,我这

    2024年04月10日
    浏览(39)
  • LangChain与大型语言模型(LLMs)应用基础教程:Prompt模板

    大型语言模型 (LLM) 正在成为一种变革性技术,使开发人员能够构建他们以前无法构建的应用程序。 但是单独使用这些 LLM 往往不足以创建一个真正强大的应用程序,只有当LLM与其它各种资源介质如数据库,文档,知识库,pdf电子书等相结合时才能发挥它强大的力量。 而LangCh

    2023年04月18日
    浏览(32)
  • 在langchain中使用带简短知识内容的prompt template

    langchain中有个比较有意思的prompt template叫做FewShotPromptTemplate。 他是这句话的简写:“Prompt template that contains few shot examples.” 什么意思呢?就是说在Prompt template带了几个比较简单的例子。然后把这些例子发送给LLM,作为简单的上下文环境,从而为LLM提供额外的一些关键信息。

    2024年02月15日
    浏览(32)
  • 【Java-LangChain:使用 ChatGPT API 搭建系统-6】处理输入-链式 Prompt Chaining Prompts

    在本章中,我们将学习如何通过将复杂任务拆分为一系列简单的子任务来链接多个 Prompt。 您可能会想,为什么要将任务拆分为多个 Prompt,而不是像我们在上一个视频中学习的那样,使用思维链推理一次性完成呢?我们已经证明了语言模型非常擅长遵循复杂的指令,特别是像

    2024年02月07日
    浏览(39)
  • 【ChatGLM_02】LangChain知识库+Lora微调chatglm2-6b模型+提示词Prompt的使用原则

    运行langchain-ChatGLM-master下面的webui.py文件 (1) 配置知识库 新建知识库 向知识库当中添加文件 支持上传的数据格式:word、pdf、excel、csv、txt、文件夹等。但是此处我试了一下 (2) 文档数据测试 word文档测试: (3) 知识库测试模式 知识库测试只会返回输入内容在当前知识库当中的

    2024年02月14日
    浏览(30)
  • 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】向量存储(Vector stores) 【LangChain】向量存储之FAISS 【LangChain】Prompts之Prompt templates 【LangChain】Prompts之自定义提示模板 【LangChain】Prompts之示例选择器 如果您有大量示例,您可能需要选择要包含在提示中的哪个示例。示例选择器是负责执行此操作的类。 基本接口定义

    2024年02月13日
    浏览(23)
  • 【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)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包