LangChain与大型语言模型(LLMs)应用基础教程:Prompt模板

这篇具有很好参考价值的文章主要介绍了LangChain与大型语言模型(LLMs)应用基础教程:Prompt模板。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

LangChain与大型语言模型(LLMs)应用基础教程:Prompt模板

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

而LangChain是LLM的接口框架,通过使用LangChain可以开发出更为强大和高效的LLM的各种应用。LangChain可以直接与 OpenAI 的 text-davinci-003、gpt-3.5-turbo 模型以及 Hugging Face 的各种开源语言模如 Google 的 flan-t5等模型集成。

今天我们主要讲解LangChain的基础知识包括如何和OpenAI、Google的LLM集成,以及如何设计高效的Prompt模板。

LangChain集成LLMs

我们通过两个简单例子来演示LangChain如何与Openai的 "text-davinci-003"模型以及谷歌的“flan-t5-xl”模型进行集成。下面我们首先安装openai和huggingface_hub这两个包

pip -q install openai langchain huggingface_hub

 下面我们让langchain集成openai的 text-davinci-003模型,并对它提出一个简单的问题: 老鼠生病了能吃老鼠药吗? 看看openai的LLM怎么回答

from langchain.llms import OpenAI
import os

os.environ['OPENAI_API_KEY'] = 'your_openai_api_key'
os.environ['HUGGINGFACEHUB_API_TOKEN'] = 'your_hunggingface_api_key'

llm = OpenAI(model_name='text-davinci-003', 
             temperature=0.9, 
             max_tokens = 1024)

text = "老鼠生病了能吃老鼠药吗?"

print(llm(text))

LangChain与大型语言模型(LLMs)应用基础教程:Prompt模板

 接下来我们让langchain集成谷歌的 flan-t5-xl 模型,由于flan-t5-xl目前暂时不支持中文,所以我们智能用英语对它提出一个简单的小问题:Who are you ? 看看谷歌的LLM怎么回答:

from langchain.llms import HuggingFaceHub

llm_hf = HuggingFaceHub(
    repo_id="google/flan-t5-xl",
    model_kwargs={"temperature":0.9}
)

text = "Who are you ?"
print(llm_hf(text))

 LangChain与大型语言模型(LLMs)应用基础教程:Prompt模板

 LangChain的Prompt 模板

 当用户和大型语言模型(LLM)对话时,用户所说的内容就是prompt,即提示语,如果用户每次需要输入很多内容相似的prompt时,我们可以考虑生成一个prompt模板,这样可以节省用户很多时间不必去输入很多内容相似的prompt,下面我们要演示一个prompt模板的例子,我们让LLM成为一个给新开餐馆命名的顾问,用户只要把新开餐馆的主要特点告诉LLM,它就会返回10个新开餐馆的名字。

from langchain import PromptTemplate

restaurant_template = """
我想让你成为一个给新开餐馆命名的顾问。

给我返回一个餐馆名字的名单. 每个餐馆名字要简单, 朗朗上口且容易记住. 它应该和你命名的餐馆类型有关.

关于{restaurant_desription} 这家餐馆好听名字有哪些?
"""

#创建一个prompt模板
prompt_template=PromptTemplate(
               input_variables=["restaurant_desription"], 
               template=restaurant_template
               )

 下面我们查看通过这个prompt模板生成的内容:

description = "一家以婚纱摄影为主题的汉堡店"
description_02 = "一家拉面店,营业员都穿着汉服"
description_03 = "一家能看到海景的烤肉店"

# 查看模板生成的生成的内容。
print(prompt_template.format(restaurant_desription=description_03))

LangChain与大型语言模型(LLMs)应用基础教程:Prompt模板

 下面我们在langchain集成LLM时应用prompt模板,看看它的效果如何:

## 在LLM中应用prompt模板
from langchain.chains import LLMChain
chain = LLMChain(llm=llm, prompt=prompt_template)
print(chain.run("一家以婚纱摄影为主题的汉堡店"))

LangChain与大型语言模型(LLMs)应用基础教程:Prompt模板

print(chain.run("一家拉面店,营业员都穿着汉服"))

LangChain与大型语言模型(LLMs)应用基础教程:Prompt模板

print(chain.run("一家能看到海景的烤肉店"))

 LangChain与大型语言模型(LLMs)应用基础教程:Prompt模板

通过上面的示例,用户可以很方便的创建一个prompt的模板,将每次需要重复发送的内容定义在一个模板中,而将那些变化的内容定义在一个变量中,当用户在和LLM交互时只需要发送变化的内容就可以了,这样大大提高了用户和LLM交互的效率。 

小样本学习

有时候我们需要给LLM少量学习样本,让LLM学习这些样本以后能够更加准确的回答问题,这称之为微调LLM(fine-tune),为此可以使用prompt的小样本模板来训练LLM,下面我们来看一个简单的示例: 我们要求用户每输入一个短语,LLM输出一个对应的反义词。下面我们首先定义两组输入输出的例子:

from langchain import PromptTemplate, FewShotPromptTemplate

# 首先创建一个短语示例,该示例包含两组输入和输出,每输入一个词语,LLM就会输出一个对应的反义词
examples = [
    {"输入": "高兴", "输出": "悲伤"},
    {"输入": "高大", "输出": "低矮"},
]

接下来我们要创建一个模板对象:

#创建一个prompt模板,
example_prompt = PromptTemplate(
    input_variables=["输入", "输出"],
    template="\n输入: {输入}\n输出: {输出}\n",
)

 最后创建短语模板对象,在短语模板对象中有前缀和后缀变量:

  • 前缀变量:附加在prompt之前,它是对LLM发出的指令,即要求LLM做什么。
  • 后缀变量:附加在prompt之后的一些文本。通常,这是用户输入内容的地方

下面我们测试一下根据短语模板生成的内容:

# 最后我们创建一个短语prompt模板对象
few_shot_prompt = FewShotPromptTemplate(
    #这些是我们要插入到prompt中的示例
    examples=examples,
    #将示例插入prompt时,格式化示例的方式。
    example_prompt=example_prompt, 
    #输入变量是用户直接输入的变量    
    input_variables=["input"],
    #前缀变量
    prefix="给出每个输入词语的反义词",
    #后缀变量
    suffix="输入: {input}\n输出:", 
    #用来连接前缀、示例和后缀的字符串。  
    example_separator="\n",
)

#测试一下短语模板对象
print(few_shot_prompt.format(input="快乐"))

LangChain与大型语言模型(LLMs)应用基础教程:Prompt模板

 在LLM中应用小样本提示语模板

 下面我们要在langchain对接LLM时使用自定义的小样本提示语模板,这样LLM就可以根据小样本提示语模板的格式和要求来返回对应的内容:

from langchain.chains import LLMChain
chain = LLMChain(llm=llm, prompt=few_shot_prompt)

LangChain与大型语言模型(LLMs)应用基础教程:Prompt模板

 我们看到上面的LLM的回答基本上符合我们的短语模板的的要求,尽管我故意刁难了一下LLM,用成语“东窗事发”来询问反义词,LLM也立即和给我“瞎编”了一个四个字的“成语”,也算勉强通过吧,只不过我们的目的是要测试LLM对小样本的学习能力,在这方面应该算是成功的。

 总结

今天我们学习了LangChain和大型语言模型(LLM)如opeanai的 "text-davinci-003"模型以及谷歌的“flan-t5-xl”模型进行集成的方法,我们还学习了如何使用LangChain中prompt模板,和小样本模板。通过使用prompt模板可以让用户大大提高和LLM交互的效率。

参考资料

LangChain官方文档

LangChain Prompt Serialization文章来源地址https://www.toymoban.com/news/detail-416832.html

到了这里,关于LangChain与大型语言模型(LLMs)应用基础教程:Prompt模板的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 自然语言处理从入门到应用——LangChain:模型(Models)-[大型语言模型(LLMs):缓存LLM的调用结果]

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

    2024年02月16日
    浏览(39)
  • LangChain:大型语言模型(LLMs)-- ChatGLM

    1. 介绍 LangChain 是一个领先的框架,用于构建由大型语言模型(LLM)驱动的应用程序。在这个框架内,ChatGLM 作为一个重要的组件,为用户提供了强大的双语(中文-英文)对话功能。ChatGLM 基于通用的语言模型(GLM)框架,拥有数十亿级别的参数,确保了其对话的流畅性和准确

    2024年04月09日
    浏览(37)
  • 使用langchain打造自己的大型语言模型(LLMs)

    我们知道Openai的聊天机器人可以回答用户提出的绝大多数问题,它几乎无所不知,无所不能,但是由于有机器人所学习到的是截止到2021年9月以前的知识,所以当用户询问机器人关于2021年9月以后发送的事情时,它无法给出正确的答案,另外用户向机器人提问的字符串(prompt)长度

    2024年02月02日
    浏览(38)
  • LangChain大型语言模型(LLM)应用开发(五):评估

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

    2024年02月15日
    浏览(39)
  • LangChain大型语言模型(LLM)应用开发(六):Agents

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

    2024年02月16日
    浏览(34)
  • LangChain大型语言模型(LLM)应用开发(三):Chains

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

    2024年02月12日
    浏览(36)
  • LangChain大型语言模型(LLM)应用开发(四):Q&A over Documents

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

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

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

    2024年02月16日
    浏览(35)
  • Generative AI 新世界 | 大型语言模型(LLMs)概述

    在上一篇《Generative AI 新世界:文本生成领域论文解读》中,我带领大家一起梳理了文本生成领域(Text Generation)的主要几篇论文:InstructGPT,RLHF,PPO,GPT-3,以及 GPT-4。本期文章我将帮助大家一起梳理另一个目前炙手可热的话题: 大型语言模型 (Large Language Models,或简写为

    2024年02月07日
    浏览(31)
  • 照片相似性搜索引擎Embed-Photos;赋予大型语言模型(LLMs)视频和音频理解能力;OOTDiffusion的基础上可控制的服装驱动图像合成

    ✨ 1: Magic Clothing Magic Clothing是一个以可控制的服装驱动图像合成为核心的技术项目,建立在OOTDiffusion的基础上 Magic Clothing是一个以可控制的服装驱动图像合成为核心的技术项目,建立在OOTDiffusion的基础上。通过使用Magic Clothing,可以在不同的场景下达到根据服装设计或者需求

    2024年04月26日
    浏览(26)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包