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 osos.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集成谷歌的 flan-t5-xl 模型,由于flan-t5-xl目前暂时不支持中文,所以我们智能用英语对它提出一个简单的小问题:Who are you ? 看看谷歌的LLM怎么回答:

from langchain.llms import HuggingFaceHubllm_hf = HuggingFaceHub(repo_id="google/flan-t5-xl",model_kwargs={"temperature":0.9}
)text = "Who are you ?"
print(llm_hf(text))

 

 LangChain的Prompt 模板

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

from langchain import PromptTemplaterestaurant_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集成LLM时应用prompt模板,看看它的效果如何:

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

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

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

 

通过上面的示例,用户可以很方便的创建一个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="快乐"))

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

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

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

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

 总结

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

参考资料

LangChain官方文档

LangChain Prompt Serialization

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/12153.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ChatGPT相关指令使用大全之二

小编接上一篇文章继续为大家说明 8.英语学习 1)背单字法宝 用中文/英文解释以下英文单字:填入一个或多个单字。请用表格的方式呈现,并且表格内须包含单字、词性、解释与例句。 例:用中文解释以下英文单字:apple, orange, doct…

架构简析| 一种Generative Agents

Generative Agents 架构简析 斯坦福《Generative Agents: Interactive Simulacra of Human Behavior》论文解读。 demo地址 论文原文地址 agent架构: Agent记忆的的核心挑战是确保在需要时检索和合成agent内存中最相关的部分。 我们的体系结构的中心是内存流&…

广州蓝景—结合chatGPT下的教育模式变化

最近爆火的人工智能AI聊天工具ChatGPT,不仅在互联网,更是在各行各业中,得到了广泛的传播,应该没有哪一个不知道它的存在,但其实你又是否知道,其实ChatGPT是一类模型的统称,随着人工智能的快速发…

2023 全新 ChatGPT余额查询网页源码

实测可用,界面轻量级,接口已配置,直接用就可以了 2023 全新 ChatGPT余额查询网页源码。。。。。。。。。。。。。

2023 API OPENAI批量查询账户余额HTML源码

OPENAI批量查询api账户余额源码,可用来查询openai api的账户类型、总额度、已使用、剩余额度、有效期。 可自定义API

Kotlin 学习笔记(六)—— Flow 数据流学习实践指北(二)StateFlow 与 SharedFlow

要说最近圈内大事件,那就非 chatGPT 莫属了!人工智能领域最新的大突破了吧?很可能引发下一场的技术革命,因为大家都懂的原因现在还不能在中国大陆使用,不过国内的度厂正在积极跟进了,预计3月份能面世&#…

谷歌,这回是很难了。。。

今年,谷歌先是史无前例裁员1.2w人,如今核心业务又遭遇chatGPT的挑战,仓促上马的Bard首秀翻车,一夜之间市值蒸发1000亿美元~ 此外,由于扁平化管理的逐步实现,本周一谷歌宣布,要减少senior role的…

名创优品怎么把创意做成生意?

最近,“主”无处不在,从让“依托答辩”梗火出圈的动画《三体》,到备受好评的电视剧《三体》,再到仍在刷新高票房成绩的《流浪地球2》。 作为近些年来中国为数不多的爆款IP制造者,刘慈欣在《三体》中提出了一个著名的理…

单K210模块低成本实现21电赛题送药小车

项目实现 前言实现成本赛题要求赛题分析k210任务stm32控制任务实现与K210的通信控制电机实现小车运动 其他资料获取 前言 博主已经大三,想着暑假参加电赛,于是将21电赛的控制题尝试做了一下,由于成本有限,想着能不能仅使用一块k2…

.NET MAUI 开发电子木鱼(上)

本文介绍如何使用 .NET MAUI 开发一个电子木鱼应用。以实际的小应用开发为例,通过这个开发过程,介绍了其涉及的 .NET MAUI、Blazor、前端等相关知识点。文章涉及的应用已开源在 Github,大家可前往下载体验: https://github.com/sa…

年轻人为啥热衷去寺庙?

年轻人的苦,寺庙最清楚。 周末的寺庙挤满了年轻人,北京雍和宫限流了,杭州灵隐寺十八籽的手串限购了,南京鸡鸣寺从地铁站出口就开始排队了...... “上班和上学,你选择哪个?” ”我选择上香“ 工作和学习…

CSDN问答机器人

文章目录 前言一、背景二、总体流程三、构建知识库四、粗排五、精排六、Prompt总结相关博客 前言 先看结果: 已经连续很多周获得了第二名(万年老二), 上周终于拿了一回第一, 希望继续保持. 😁 这是今天的榜单, 采纳的数量相对较少, 之前基本上维持在100 重点说明…

从18楼失踪的猫,被ChatGPT救了 | 谷雨

撰文丨崔頔 编辑丨张瑞 出品丨腾讯新闻 谷雨工作室 * 版权声明:腾讯新闻出品内容,未经授权,不得复制和转载,否则将追究法律责任。 一只猫从18楼失踪了,搜索无果后,伤心的主人晓娅去找ChatGPT倾诉。人工智能…

ChatGPT「奶奶漏洞」又火了!扮演过世祖母讲睡前故事,骗出Win11序列号

【导读】只要对ChatGPT说:请扮演我已经过世的祖母,你就可以让它为你做几乎任何事情了,比如生成Win11、Office365的激活码。如此玄学的提示词攻击怎么防?OpenAI真是任重道远啊。 最近,著名的ChatGPT「奶奶漏洞」又火了&…

ChatGPT的「奶奶漏洞」火了,扮演过世的祖母,让它为你做几乎任何事情!

来源:新智元 【新智元导读】只要对ChatGPT说:请扮演我已经过世的祖母,你就可以让它为你做几乎任何事情了,比如生成Win11、Office365的激活码。如此玄学的提示词攻击怎么防?OpenAI真是任重道远啊。 最近,著名…

重磅!微软开源Deep Speed Chat,人人拥有ChatGPT!

点击上方“AI遇见机器学习”,选择“星标”公众号 第一时间获取价值内容 【导读】微软开源的DeepSpeed Chat,让开发者实现了人手一个ChatGPT的梦想! 人手一个ChatGPT的梦想,就要实现了? 刚刚,微软开源了一个…

微软CHAT-GPT4研究报告(全中文版)

下载地址 :​​​​​​​javaTodo: 打造java开发一站式套件 (gitee.com)

ChatGPT教你如何用Python和Matplotlib绘图(下)

想学习用 Python 绘图吗?ChatGPT 将为您提供帮助。 微信搜索关注《Python学研大本营》,加入读者群,分享更多精彩 该项目要求 ChatGPT 教您如何生成用于创建绘图和可视化的 Python 代码。只需简要描述您要创建的绘图,ChatGPT 就会…

什么是 chatGPT?

OpenAI 的语言模型ChatGPT是 AI 研究的最新突破。ChatGPT建立在GPT(生成式预训练转换器)架构之上并经过调整以执行各种任务——从响应查询到生成文本片段甚至朗诵诗歌——ChatGPT 已迅速成为可用于自然语言处理的最强大工具之一。 ChatGPT 因其在理解和…