LangChain入门教程 - 基本问答

news/2024/10/21 5:51:40/

自己的学习记录,想到哪里写到哪里。下面用LC指代LangChain。更详细的内容请查看LangChain中文网。

LLM和ChatModel有什么区别?

这是使用LC首先会遇到的问题。

在 Langchain 中,ChatModel 和 LLM(Large Language Model)都是用于处理自然语言输入的模型,但它们之间存在一些区别。

  1. 训练数据:ChatModel 是基于聊天对话数据进行训练的,而 LLM 是基于大规模文本数据进行训练的。这意味着 ChatModel 更擅长处理聊天对话场景,而 LLM 则具有更广泛的知识和语言理解能力。

  2. 模型结构:ChatModel 通常采用 GRU、LSTM 或 Transformer 等结构,而 LLM 则采用更大型和复杂的 Transformer 结构。这使得 LLM 能够处理更长的文本序列,并具有更高的语言理解能力。

  3. 应用场景:ChatModel 适用于聊天机器人、对话系统等场景,而 LLM 可以应用于自然语言生成、文本分类、机器翻译等多个场景。

总之,ChatModel 是一种特定于聊天对话的模型,而 LLM 是一种更通用的大型语言模型。在实际应用中,可以根据具体需求选择合适的模型。

创建LLM和ChatModel对象

考虑到学习方便,我们使用百度的千帆大模型,也就是平时说的文心一言。以前百度单独提供了一个Python包,现在已经整合到langchain_community包里。安装以下包准备环境:

pip install langchain
pip install langchain-core
pip install langchain-community
pip install qianfan
# 试一下import qianfan,如果报错提示:cannot import name 'deprecated' from 'typing_extensions',升级typing_extensions包。
pip install --upgrade typing_extensions==4.7.1

如果获取千帆的key和secret自行去百度开发者平台查询,获取后设置环境变量:

export QIANFAN_AK="..."
export QIANFAN_SK="..."

创建LLM和ChatModel,后续的代码根据不同场景会调用这两个对象:

python">from langchain_community.chat_models import QianfanChatEndpoint
from langchain_community.llms import QianfanLLMEndpoint
from langchain_core.language_models.chat_models import HumanMessage# 创建LLM
llm = QianfanLLMEndpoint()# 创建ChatModel
chat = QianfanChatEndpoint(model='ERNIE-Bot',endpoint='completions'
)

下面来试一下简单的问答,给一个电动汽车品牌起名字:

python">text = '电动汽车的品牌起什么名字好?'
messages = [HumanMessage(content=text)]r = chat.predict_messages(messages)
print(r.content)'''输出
给电动汽车品牌起名字需要考虑到品牌定位、目标市场、品牌形象等多方面因素。以下是一些可能适合电动汽车品牌的中文名字,供参考:1. **启明电驱**:这个名字寓意着品牌的电动汽车像启明星一样,引领着电动汽车行业的发展,同时“电驱”直接体现了电动汽车的驱动方式。
2. **智驭未来**:结合了“智能”和“驾驭”的概念,强调了品牌在电动汽车领域的智能技术和创新能力,同时“未来”代表着品牌对未来出行的展望。
3. **环行天下**:这个名字强调了品牌对于环保的承诺,同时也寓意着品牌的电动汽车可以环行全球,为全球的出行方式带来变革。
4. **电能翼行**:结合了“电能”和“翼行”的概念,强调了电动汽车的高效能源利用和“飞翔”的出行体验。
5. **悦动光年**:这个名字既表达了电动汽车带来的愉悦驾驶体验,又强调了品牌对于未来科技和时间概念的追求。这些名字都试图在简洁易记的同时,传达出品牌的核心价值和愿景。但请注意,最终的品牌名字选择需要考虑到品牌定位、市场调研、商标注册等多方面因素,以上仅为建议,具体选择需由品牌方根据实际情况进行决策。
'''

问题来了,如果我们想做得更通用一点,想给不同的产品换名字,用户只要输入产品类型就可以,那怎么办?这时我们就需要使用提示模板了。提示模板会根据参数进行内容替换。

python">from langchain.prompts import PromptTemplateprompt = PromptTemplate.from_template('{product}的品牌起什么名字好?')
prompt.format(product="高端冰激凌")'''输出
'高端冰激凌的品牌起什么名字好?'
'''

LLM链

有了prompt后,我们可以用LLMChain链组件将接收变量,根据模板创建提示,传递给大模型整体串在一起开始工作。

python">from langchain.prompts.chat import (ChatPromptTemplate,SystemMessagePromptTemplate,HumanMessagePromptTemplate,
)
from langchain.chains import LLMChaintemplate = '你是一名市场专家,提供品牌起名专家咨询服务。每次提供3个方案并给出分析。'
system_message_prompt = SystemMessagePromptTemplate.from_template(template)human_template = '{product}的品牌起什么名字好?'
human_message_prompt = HumanMessagePromptTemplate.from_template(human_template)chat_prompt = ChatPromptTemplate.from_messages([system_message_prompt, human_message_prompt])
chain = LLMChain(llm=chat,prompt=chat_prompt,
)r = chain.run("高级冰激凌")
print(r)'''输出
以下是三个高级冰激凌品牌的名字建议:**1. 冰川凝香**
**理由**:“冰川”象征着冰激凌的纯净和天然,给人以清凉、高贵的感觉。“凝香”则强调了冰激凌的香醇口感,给人一种精致、优雅的印象。整个名字将产品的质感与美好的自然意象相结合,易于记忆。**2. 雪韵珍馐**
**理由**:“雪韵”将“雪”的纯净与“韵”的诗意融为一体,为冰激凌品牌增添了一种艺术气息。“珍馐”一词古雅,代表着美味珍奇的食物,突显产品的珍贵与高品质。**3. 御品冰心**
**理由**:“御品”象征着尊贵与专享,暗示这是一个专为尊贵人士打造的高级品牌。“冰心”则指冰激凌的冰爽口感和纯净的内心,给人一种清新脱俗的感觉。整个名字既有文化底蕴,又不失现代感。请注意,这些名字建议仅供参考,您应确保所选名称不与其他品牌重复,并且符合您的品牌定位和目标市场。
'''

另外可以通过继承BaseOutputParser定制输出,比如上面的输出是markdown格式,在应用中我们可以根据需要进行处理。具体参考快速入门 | 🦜️🔗 Langchain。


http://www.ppmy.cn/news/1435851.html

相关文章

Vue+OpenLayers7入门到实战:OpenLayers加载GeoJson格式数据并解析成多边形、线段、点和区域范围等要素叠加到地图矢量图层上

返回《Vue+OpenLayers7》专栏目录:Vue+OpenLayers7入门到实战 前言 本章介绍如何使用OpenLayers7在地图上加载GeoJson格式数据并解析成多边形、线段、点和区域范围等要素叠加到地图矢量图层上的功能。 前面两章也是可以支持多边形、线段、点和区域范围灯数据加载的,只是没…

C语言编程题_3D接雨水

接雨水的题目描述如下。 (1) 2D接雨水: 字节员工是不是个个都会接雨水 ; (2) 3D接雨水: 407. 接雨水 II ; (3) 3D接雨水: 字节人都会的 3D接雨水 。 问题描述 难度:困难 给你一个 m x n 的矩阵&#xff…

科研工作学习中常用的录制动图软件——screenToGif

一、前言 俗话说,字不如表,表不如图,静图不如动图。 动图给人的直观感受,还是很不错的。在曾经的学生期间,进行组会汇报;还是如今工作中,给领导汇报。我经常使用screenToGif这款软件&#xff…

安装多个MySQL版本时如何连接到不同的数据库

当安装多个版本的数据库时,不同版本的端口名不一样,可以使用以下命令进行连接 mysql -uroot -p数据库密码 -h主机名 -P端口号 数据库主机名默认是localhost,端口号默认是3306,当安装多个版本数据库时,需要记住数据库的…

AI智能应用初探索

伴随着大模型的飞速发展,大量的AI应用也出现了,这篇文章里,作者就对比分析了市场上的多款AI智能应用,并给出自己的结论,与关于AI智能应用发展突破点的思考,不妨来看一下。 AI(Artificial Intelligence)即人工智能,是一门研究、开发用于模拟、延伸和扩展人类智能的理论…

人工智能边缘超融合网关技术释放边缘连接潜力

人工智能边缘超融合网关技术深度分析 一、超融合网关技术 (一)超融合网关定义 超融合网关是一款创新网关,融合多种硬件,满足各类应用需求。它结合了传统网络功能和虚拟化、并行处理、异构资源优化等前沿技术,实现网…

密码学系列7-变幻多端的安全性证明

安全性模型并不是一尘不变的。前几篇文章给出的安全性证明基本沿用了系列2中的安全性模型。但安全性模型会随着方案的不同而发生变化。 本章给出两个安全性证明的例子,让读者感受如何定义安全需求并设计安全性证明。 一、基于身份的加密(IBE) IBE是传统公钥加密的变体。IBE…

【linux】Linux第一个小程序-进度条

1. 预备知识:回车和换行 回车(Carriage Return,CR): 在早期的机械打字机中,回车指的是将打字机的打印头移回到行首的操作,这样打印头就可以开始新的一行的打印。在ASCII编码中,回车用…