LangChain入门教程 - 基本问答

自己的学习记录,想到哪里写到哪里。下面用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,后续的代码根据不同场景会调用这两个对象:

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'
)

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

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

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

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

LLM链

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

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.mzph.cn/bicheng/4452.shtml

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

相关文章

鸿蒙原生应用元服务开发-Web管理位置权限

Web组件提供位置权限管理能力。开发者可以通过onGeolocationShow()接口对某个网站进行位置权限管理。Web组件根据接口响应结果,决定是否赋予前端页面权限。获取设备位置,需要开发者配置ohos.permission.LOCATION权限。 在下面的示例中,用户点…

BKP备份寄存器RTC实时时钟

文章目录 BKP简介相关引脚BKP基本结构 RTC简介RTC框图三种时钟源RTC基本结构 硬件电路RTC操作注意事项 BKP简介 BKP(Backup Registers)备份寄存器BKP可用于存储用户应用程序数据。当VDD(2.0~ 3.6V)电源被切断,他们仍然…

【数学题】俄罗斯竞赛题笔算开平方√446224

这里写目录标题 一级目录二级目录三级目录 一、题目二、解题方式1:设元配方三、解题方式2:逐位逼近①因式分解②数字范围分析③求十位③求个位④整理 四、解题方式3:逐位逼近2①因式分解②数字范围分析③假设个位是3,设十位m,则③…

学生管理系统代码

学生管理系统代码 好好看&#xff0c;好好学&#xff0c;知识点的部分看不懂就多查。 内容很多&#xff0c;仔细看。 #include <stdio.h> #include <stdlib.h> #define M 100 #define N 10//定义学生相关信息结构体 typedef struct stu {char sn[13];char name[9…

【QT】ROS2 Humble联合使用QT教程

【QT】ROS2 Humble联合使用QT教程 文章目录 【QT】ROS2 Humble联合使用QT教程1. 安装ROSProjectManager插件2. 创建ROS项目3.一个快速体验的demoReference 环境的具体信息如下&#xff1a; ubunt 22.04ros2 humbleQt Creator 13.0.0ROS ProjectManager 13.0.0 本文建立在已经…

3D头模加载

目录 psbody加载 psbody示例 trimesh加载 openmesh psbody加载 codetalker from psbody.mesh import Meshif cfg.dataset "BIWI":template_file os.path.join(cfg.data_root, "BIWI.ply")elif cfg.dataset "vocaset":template_file os…

git bash上传本地文件报错debug

报错信息 remote: error: Trace: 9621c90b124fcb8e353c79fc4011b62f684d0850872e2a5a9ee4bdf1e8092198 remote: error: See https://gh.io/lfs for more information. remote: error: File res_checkpoint/3_17_heart.pth is 357.69 MB; this exceeds GitHubs file size limit…

MT3030 天梯赛

跟MT3029战神小码哥类似&#xff0c;都是贪心堆。注意开long long 这里的堆顶为战斗力最小的&#xff0c;便于贪心的反悔操作。先按容忍度从大到小排序&#xff08;q中总容忍度取决于最小的容忍度&#xff09;&#xff0c;再向q中存数&#xff0c;存到不能容忍之后再把堆顶踢出…

深度学习-线性回归+基础优化算法

目录 线性模型衡量预估质量训练数据参数学习训练损失最小化损失来学习参数显式解 总结基础优化梯度下降选择学习率 小批量随机梯度下降选择批量大小 总结线性回归的从零开始实现实现一个函数读取小批量效果展示这里可视化看一下 线性回归从零开始实现线性回归的简洁实现效果展示…

MATLAB初学者入门(12)—— 模拟退火算法

模拟退火&#xff08;Simulated Annealing, SA&#xff09;是一种概率性搜索技术&#xff0c;用于寻找给定函数的全局最优解。该算法受到物理学中固体退火过程的启发&#xff0c;通过模拟物质冷却过程中粒子的随机运动&#xff0c;来逐步寻找优化解。它允许在搜索过程中偶尔接受…

【Java那些事】@TableField对字段的自动填充

问题&#xff1a;当你有个对象User时&#xff0c;这个User对象的属性还有类似createTime &#xff0c;updateTime的属性&#xff0c;每次创建这个对象都要设置createTime &#xff0c;updateTime&#xff0c;对这个对象User进行操作又要来更新它的updateTime&#xff0c;是不是…

静态住宅IP代理VS动态住宅IP代理,该如何选择?

在网络安全和数据采集领域&#xff0c;代理服务已经成为一个必不可少的工具。在IP代理服务中&#xff0c;静态住宅代理和动态住宅代理是两种常见的代理类型。今天就为大家详细介绍静态住宅代理与动态住宅代理的差异。 首先我们来看什么是静态住宅IP&#xff0c;这种IP地址可以被…

硅酸盐玻璃反应离子刻蚀在光学微系统的应用前景

引言 微光学元件和复杂光学微系统需要超精密制造工艺。最大容许粗糙度由所用波长λ的分数定义&#xff0c;例如λ或更好&#xff0c;而元件的整体尺寸和形状可以容易地达到毫米或厘米范围。在RIE过程中&#xff0c;材料传输是通过离子和反应气体与等离子体反应器表面的物理和化…

Spring Boot项目中的ASCII艺术字

佛祖保佑&#xff1a; ${spring-boot.formatted-version} ———————————————————————————————————————————————————————————————————— // _ooOoo_ …

贪心算法-活动选择问题背包问题

目录 活动选择问题 无重叠区间-Leetcode 435 分数背包问题--贪心解法 贪心法 0-1 背包问题 贪心法 贪心算法的局限 Set cover problem 活动选择问题 分析: /* 要在一个会议室举办n个活动 - 每个活动有它们各自的起始和结束时间 - 找出在时间上互不冲突的活动组合,能…

分享爱,分享精彩瞬间,分享5款实用软件

分享爱&#xff0c;分享时光&#xff0c;分享精彩瞬间&#xff0c;大家好&#xff0c;我是互联网的搬运工&#xff0c;今天继续给大家带来几款好用的软件。 1. 数据分析——Chartistic ​ Chartistic是一款功能强大的数据分析可视化工具&#xff0c;它提供了丰富的图表类型和…

C语言操作符和关键字

文章目录 操作符单目操作符sizeof&#xff08;类型&#xff09;强制类型转换 关系操作符、逻辑操作符、条件操作符逗号表达式 常见关键字typedefstaticstatic修饰局部变量static修饰全局变量static修饰函数 register寄存器关键词define定义常量和宏 操作符 单目操作符 C语言中…

Vue入门到关门之指令系统

一、引入 在 Vue.js 中&#xff0c;指令&#xff08;Directives&#xff09;是一种特殊的标记&#xff0c;用于向 Vue 实例提供特殊的行为。指令以 v- 开头&#xff0c;例如 v-if、v-for 等。 指令的本质就是语法糖&#xff0c;标志位。在编译阶段 render 函数里&#xff0c;…

R-Tree原理及实现代码

目录 一.引言 二.R-Tree的基本原理 插入操作 查询操作 删除操作 平衡操作 三. 节点分裂 线性分裂 二次分裂 增量分裂 四.查询 范围查询 最近邻查询 五.最新研究进展 六.C语言实现示例 七. 实际案例分析 八.总结 一.引言 在计算机科学领域&#xff0c;R-Tree是…

基于 Spring Boot 博客系统开发(一)

基于 Spring Boot 博客系统开发&#xff08;一&#xff09; 本系统是简易的个人博客系统开发&#xff0c;为了更加熟练地掌握SprIng Boot 框架及相关技术的使用。&#x1f913;&#x1f913;&#x1f913; 基于 Spring Boot 博客系统开发&#xff08;二&#xff09;&#x1f4…