LangChain 30 ChatGPT LLM将字符串作为输入并返回字符串Chat Model将消息列表作为输入并返回消息

LangChain系列文章

  1. LangChain 实现给动物取名字,
  2. LangChain 2模块化prompt template并用streamlit生成网站 实现给动物取名字
  3. LangChain 3使用Agent访问Wikipedia和llm-math计算狗的平均年龄
  4. LangChain 4用向量数据库Faiss存储,读取YouTube的视频文本搜索Indexes for information retrieve
  5. LangChain 5易速鲜花内部问答系统
  6. LangChain 6根据图片生成推广文案HuggingFace中的image-caption模型
  7. LangChain 7 文本模型TextLangChain和聊天模型ChatLangChain
  8. LangChain 8 模型Model I/O:输入提示、调用模型、解析输出
  9. LangChain 9 模型Model I/O 聊天提示词ChatPromptTemplate, 少量样本提示词FewShotPrompt
  10. LangChain 10思维链Chain of Thought一步一步的思考 think step by step
  11. LangChain 11实现思维树Implementing the Tree of Thoughts in LangChain’s Chain
  12. LangChain 12调用模型HuggingFace中的Llama2和Google Flan t5
  13. LangChain 13输出解析Output Parsers 自动修复解析器
  14. LangChain 14 SequencialChain链接不同的组件
  15. LangChain 15根据问题自动路由Router Chain确定用户的意图
  16. LangChain 16 通过Memory记住历史对话的内容
  17. LangChain 17 LangSmith调试、测试、评估和监视基于任何LLM框架构建的链和智能代理
  18. LangChain 18 LangSmith监控评估Agent并创建对应的数据库
  19. LangChain 19 Agents Reason+Action自定义agent处理OpenAI的计算缺陷
  20. LangChain 20 Agents调用google搜索API搜索市场价格 Reason Action:在语言模型中协同推理和行动
  21. LangChain 21 Agents自问自答与搜索 Self-ask with search
  22. LangChain 22 LangServe用于一键部署LangChain应用程序
  23. LangChain 23 Agents中的Tools用于增强和扩展智能代理agent的功能
  24. LangChain 24 对本地文档的搜索RAG检索增强生成Retrieval-augmented generation
  25. LangChain 25: SQL Agent通过自然语言查询数据库sqlite
  26. LangChain 26: 回调函数callbacks打印prompt verbose调用
  27. LangChain 27 AI Agents角色扮演多轮对话解决问题CAMEL
  28. LangChain 28 BabyAGI编写旧金山的天气预报
  29. LangChain 29 调试Debugging 详细信息verbose
    在这里插入图片描述

1. 动手用LangChain

LangChain提供许多模块,可用于构建语言模型应用程序。模块可以作为简单应用程序中的独立模块使用,并且它们可以组合用于更复杂的用例。组合由LangChain表达语言LangChain Expression Language(LCEL)提供支持,它定义了许多模块实现的统一可运行接口,从而使得能够无缝地链接组件成为可能。

最简单和最常见的链包含三个要素:

  • LLM/Chat Model:语言模型在这里是核心推理引擎。为了使用LangChain,您需要了解不同类型的语言模型以及如何与它们一起工作。
  • Prompt Template提示模板:这提供了对语言模型的指令。这控制着语言模型的输出,因此理解如何构建提示和不同的提示策略至关重要。
  • Output Parser输出解析器:这些将语言模型的原始响应转换为更易处理的格式,使得可以轻松地在下游使用输出。

在本指南中,我们将分别介绍这三个组件,然后讨论如何将它们组合在一起。了解这些概念将为您使用和定制LangChain应用程序奠定良好基础。大多数LangChain应用程序允许您配置模型和/或提示,因此知道如何利用这一点将是一个重要的促进因素。

2. LLM / Chat Model

有两种类型的语言模型:

  • LLM:基础模型将字符串作为输入并返回字符串
  • ChatModel:基础模型将消息列表作为输入并返回消息

字符串很简单,但是消息究竟是什么?基本消息接口由BaseMessage定义,其中有两个必需属性:

  • content:消息的内容。通常是字符串。
  • role:来自BaseMessage的实体。

LangChain提供了几个对象,以便轻松区分不同的角色:

  • HumanMessage:来自人类/用户的BaseMessage。
  • AIMessage:来自AI /助手的BaseMessage。
  • SystemMessage:来自系统的BaseMessage。
  • FunctionMessage / ToolMessage:包含函数或工具调用输出的BaseMessage。

如果没有这些角色中的任何一个听起来合适,还有一个ChatMessage类,您可以在其中手动指定角色。

LangChain提供了一个通用接口,被LLM和ChatModel共享。然而,要最有效地构建给定语言模型的提示,了解它们之间的区别是很有用的。

调用LLM或ChatModel的最简单方法是使用.invoke(),这是LangChain表达语言(LCEL)对象的通用同步调用方法:

  • LLM.invoke:接受一个字符串,返回一个字符串。
  • ChatModel.invoke:接受一个BaseMessage列表,返回一个BaseMessage。

这些方法的输入类型实际上比这更一般化,但为了简单起见,我们可以假设LLMs只接受字符串,而Chat模型只接受消息列表。请查看下面的“深入了解”部分,了解有关模型调用的更多信息。

让我们看看如何处理这些不同类型的模型和这些不同类型的输入。首先,让我们导入一个LLM和一个ChatModel。

from langchain.llms import OpenAI
from langchain.chat_models import ChatOpenAI

#llm = OpenAI()
#chat_model = ChatOpenAI()

llm = OpenAI(model_name="gpt-3.5-turbo", temperature=0)
chat_model = ChatOpenAI(model_name="gpt-3.5-turbo", temperature=0)

LLM和ChatModel对象实际上是配置对象。您可以使用温度等参数对它们进行初始化,并将它们传递给其他地方。

from langchain.schema import HumanMessage

text = "制造彩色袜子的公司取什么好名字呢?"
messages = [HumanMessage(content=text)]

response = llm.invoke(text)
print("string >>", response)
# >> Feetful of Fun

response =  chat_model.invoke(messages)
print("message >>", response)
# >> AIMessage(content="Socks O'Color")

输出

[zgpeace@zgpeaces-MacBook-Pro langchain-llm-app (develop ✗)]$ python Basic/chat_msg.py    
string >> 1. 彩虹袜子公司
2. 绚丽袜子制造厂
3. 艳丽袜业有限公司
4. 缤纷袜子制造商
5. 魅力袜业集团
6. 彩绘袜子制造厂
7. 七彩袜子有限公司
8. 色彩世界袜业
9. 炫彩袜子制造商
10. 色彩缤纷袜业公司

message >> content='1. 彩虹袜子公司\n2. 绚丽袜子制造厂\n3. 艳丽袜业有限公司\n4. 缤纷袜子制造商\n5. 魅力袜业集团\n6. 彩绘袜子制造厂\n7. 时尚彩袜有限公司\n8. 色彩世界袜业\n9. 炫彩袜子制造商\n10. 梦幻袜子公司'

LLM.invokeChatModel.invoke实际上都支持Union[str, List[BaseMessage], PromptValue]作为输入。PromptValue是一个定义了自己的返回输入的自定义逻辑的对象,可以将其输入作为字符串或消息。LLMs有逻辑将这些中的任何一个强制转换为字符串,而ChatModels有逻辑将这些中的任何一个强制转换为消息。LLM和ChatModel接受相同的输入意味着你可以在大多数链中直接交换它们,而不会破坏任何东西,尽管重要的是要考虑输入是如何被强制转换以及这可能会影响模型性能。要深入了解模型,请前往语言模型部分。

代码

https://github.com/zgpeace/pets-name-langchain/tree/develop

参考

https://python.langchain.com/docs/get_started/quickstart

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

docker笔记2-docker 容器

docker 容器的运行 docker run 镜像名:版本标签: 创建 启动容器 docker run 镜像名 ,如果镜像不存在,则会在线下载镜像。 注意事项: 容器内的进程必须处于前台运行状态,不能后台(守护进程运行…

单片机的RTC获取网络时间

理解网络同步校准RTC的原理需要考虑NTP、SNTP、RTC这三个关键组件的作用和交互。下面详细解释这个过程: 1. NTP(Network Time Protocol): 协议目的:NTP是用于同步计算机和设备时钟的协议。它通过在网络上与时间服务器通…

小白入门之安装Navicat

重生之我在大四学JAVA 第四章 安装Navicat (mysql可视化工具) 这里Navicat是15版本,不是最新版,有新版强迫症的自行百度 傻瓜式安装一直下一步就行 完成后切记不要打开,不要打开,不要打开 可以打开刚刚安装的navicat了 切…

【XML】TinyXML 详解(二):接口详解

【C】郭老二博文之&#xff1a;C目录 1、XML测试文件&#xff08;laoer.xml&#xff09; <?xml version"1.0" standalone"no" ?> <!-- Hello World !--> <root><child name"childName" id"1"><c_child…

Unity手机移动设备重力感应

Unity手机移动设备重力感应 一、引入二、介绍三、测试成果X Y轴Z轴横屏的手机&#xff0c;如下图竖屏的手机&#xff0c;如下图 一、引入 大家对重力感应应该都不陌生&#xff0c;之前玩过的王者荣耀的资源更新界面就是使用了重力感应的概念&#xff0c;根据手机的晃动来给实体…

无需改动现有网络,企业高速远程访问内网Linux服务器

某企业为数据治理工具盒厂商&#xff0c;帮助客户摆脱数据问题困扰、轻松使用数据&#xff0c;使得客户可以把更多精力投入至数据应用及业务赋能&#xff0c;让数据充分发挥其作为生产要素的作用。 目前&#xff0c;该企业在北京、南京、西安、武汉等地均设有产研中心&#xff…

体验一下 CodeGPT 插件

体验一下 CodeGPT 插件 0. 背景1. CodeGPT 插件安装2. CodeGPT 插件基本配置3. (可选)CodeGPT 插件预制提示词原始配置(英文)4. CodeGPT 插件预制提示词配置(中文)5. 简单验证一下 0. 背景 看到B站Up主 “wwwzhouhui” 一个关于 CodeGPT 的视频&#xff0c;感觉挺有意思&#…

DQL-基本查询

概念&#xff1a; 1&#xff0c;数据库管理系统一个重要功能就是数据查询&#xff0c;数据查询不应只是简单返回数据库中存储的数据&#xff0c;还应该根据需要对数据进行筛选以及确定数据以什么样的格式显示 2&#xff0c;MySQL提供了功能强大、灵活的语句来实现这些操作 3…

docker笔记1-安装与基础命令

docker的用途&#xff1a; 可以把应用程序代码及运行依赖环境打包成镜像&#xff0c;作为交付介质&#xff0c;在各种环境部署。可以将镜像&#xff08;image&#xff09;启动成容器&#xff08;container&#xff09;&#xff0c;并提供多容器的生命周期进行管理&#xff08;…

Dash中 callback 5

app.callback 在Dash中&#xff0c;app.callback 被用于创建交互性应用程序&#xff0c;它用于定义一个回调函数&#xff0c;该函数在应用程序中发生特定事件时被触发。回调函数可以修改应用程序的布局或更新图表等内容&#xff0c;从而实现动态交互。 下面是一个简单的 app.…

BUG记录 | 使用阿里云OSS实现文件上传后,得到的url无法在浏览器中打开

项目背景 SpringBoot的项目&#xff0c;使用阿里云对象存储OSS对项目中的文件进行存储&#xff0c;所需文件也会通过IDEA中由官方Demo改编而成的工具类作为接口&#xff0c;调用接口后上传 问题描述 使用阿里云OSS实现文件上传后&#xff0c;通过postman测试得到的url无法在…

Python量化投资——金融数据最佳实践: 使用qteasy+tushare搭建本地金融数据仓库并定期批量更新【附源码】

用qteasytushare实现金融数据本地化存储及访问 目的什么是qteasy什么是tushare为什么要本地化使用qteasy创建本地数据仓库qteasy支持的几种本地化仓库类型配置本地数据仓库配置tushare 的API token 配置本地数据源 —— 用MySQL数据库作为本地数据源下载金融历史数据 数据的定期…

SQL分类

SQL分类 DDL 查询库 查询表 创建表 修改表 DML 添加数据 修改数据 删除数据 DQL 基本查询 条件查询 聚合函数 分组查询 排序查询 分页查询 执行顺序 DCL 管理用户 管理权限 数据类型 数值类型 字符串类型 日期类型

Go自定义PriorityQueue优先队列使用Heap堆

题目 分析 每次找最大的&#xff0c;pop出来 然后折半&#xff0c;再丢进去 go写法 go如果想用heap&#xff0c;要实现less\len\swap\push\pop 但可以偷懒&#xff0c;用sort.IntSlice,已经实现了less\len\swap 但由于目前是大根堆&#xff0c;要重写一下less 因此&#xff…

讲座思考 | 周志华教授:新型机器学习神经元模型的探索

12月22日&#xff0c;有幸听了南京大学周志华教授题为“新型机器学习神经元模型的探索”的讲座。现场热闹非凡&#xff0c;大家像追星一样拿着“西瓜书”找周教授签名。周教授讲得依旧循循善诱&#xff0c;由浅入深&#xff0c;听得我很入迷&#xff0c;故作此记。 周教授首先就…

Python 运算符 算数运算符 关系运算符 赋值运算符 逻辑运算 (逻辑运算符的优先级) 位运算 成员运算符 身份运算符 运算符的优先级

1 运算符算数运算符关系运算符赋值运算符逻辑运算逻辑运算符的优先级 位运算布尔运算符移位运算符 成员运算符身份运算符运算符的优先级 运算符 算数运算符 四则运算 - * / a 8 b 9 print(ab)#与Java类似 也可以进行字符串的连接 注意:字符串数字字符串 不存在会抛出异常…

Featured Based知识蒸馏及代码(3): Focal and Global Knowledge (FGD)

文章目录 1. 摘要2. Focal and Global 蒸馏的原理2.1 常规的feature based蒸馏算法2.2 Focal Distillation2.3 Global Distillation2.4 total loss3. 实验完整代码论文: htt

实战经验分享:开发同城外卖跑腿小程序

下文&#xff0c;小编将与大家一同探究同城外卖跑腿小程序的开发实战&#xff0c;包括但不限于技术选型、开发流程、用户体验等多个方面。 1.技术选型 在同城外卖跑腿小程序的开发中&#xff0c;技术选型是至关重要的一环。对于前端&#xff0c;选择了使用Vue.js框架&#xff…

Python电能质量扰动信号分类(二)基于CNN模型的一维信号分类

目录 前言 1 电能质量数据集制作与加载 1.1 导入数据 1.2 制作数据集 2 CNN-2D分类模型和训练、评估 2.1 定义CNN-2d分类模型 2.2 定义模型参数 2.3 模型结构 2.4 模型训练 2.5 模型评估 3 CNN-1D分类模型和训练、评估 3.1 定义CNN-1d分类模型 3.2 定义模型参数 …

论文阅读——BLIP-2

BLIP-2: Bootstrapping Language-Image Pre-training with Frozen Image Encoders and Large Language Models 1 模型 在预训练视觉模型和预训练大语言模型中间架起了一座桥梁。两阶段训练&#xff0c;视觉文本表示和视觉到语言生成学习。 Q-Former由两个转换器子模块组成&am…