LangChain组件Chat models详解(3)——消息(Messages)


本章目录如下:

  1. 《Gradio全解13——LangChain组件Chat models详解(1)——功能介绍
  2. 《Gradio全解13——LangChain组件Chat models详解(2)——接口
  3. 《Gradio全解13——LangChain组件Chat models详解(3)——消息(Messages)
  4. 《Gradio全解13——LangChain组件Chat models详解(4)——结构化输出
  5. 《Gradio全解13——LangChain组件Chat models详解(5)——多模态
  6. 《Gradio全解13——LangChain组件Chat models详解(6)——高级主题

本篇摘要

本章介绍LangChain组件Chat Models。

13. LangChain组件Chat models详解

LangChain本身集成了大量供应商和组件,资料庞杂,理解起来颇有难度。Chat models作为LangChain的主要组件,涵盖了最常用的功能,也是各提供商集成的主要载体,所以本章将详细介绍Chat models。更详细资料请参阅官方LangChain Componets文档

本章主要内容包括Chat models介绍、接口、消息、结构化输出、多模态和高级主题,为后续使用Agent创建Gradio做铺垫。

13.3 消息(Messages)

LangChain提供了一种统一的消息格式Messages,可用于所有聊天模型,让用户能够使用不同的聊天模型而无需担心每个模型提供者使用的特定消息格式细节。本节主要讲述各种消息类型。

13.3.1 消息概述

本小节主要介绍角色、消息格式、内容content、附加消息及消息结构等。

1. 角色

上文已提到,消息格式一般包含role、content和additional metadata三部分,下面分别介绍。其中role的分类说明如下表:

Role Description
system 用于告诉聊天模型如何行为并提供额外的上下文,但并非所有聊天模型提供商都支持此角色。
user 代表与模型交互的用户的输入,通常以文本或其他交互输入的形式出现。
assistant 代表模型的响应,可以包括文本或调用工具的请求。
tool 在检索外部数据或处理后,用于将工具调用型结果传递回模型的消息类型,通常与支持工具调用的聊天模型一起使用。
function (legacy) 遗留角色,对应于OpenAI的旧版函数调用API,应使用tool角色替代。
2. 内容(Content)

消息的内容可以是文本,也可以是表示多模态数据(如图像、音频、视频)的字典列表。不同聊天模型提供商之间的内容格式可能有所不同,目前大多数聊天模型主要支持文本作为内容类型,部分模型也支持多模态数据,但大多数聊天模型提供商对多模态数据的支持仍然有限。

content可以包含多种消息格式,更多信息请参阅下文:

  • SystemMessage:用于传递指导对话的内容;
  • HumanMessage:用于表示用户输入的内容;
  • AIMessage:用于表示模型响应的内容;
  • Multimodality:参考多模态章节。
3. 附加数据

根据聊天模型提供商的不同,消息可能还包含附加数据Additional metadata,如下表所示:

other data Description
ID 消息的可选唯一标识符。
Name 可选的名称属性,用于区分具有相同角色的不同实体/发言者(并非所有模型都支持)。
Metadata 关于消息的附加信息,例如时间戳、令牌使
### 集成LangChain Chat至DeepSeek API 为了实现LangChain Chat与DeepSeek API之间的集成,需先理解两者的工作原理及其交互方式。通过构建一个中介层来处理来自DeepSeek API的请求并将其转发给LangChain Chat模型,可以完成这一过程。 #### 创建API接口 定义RESTful服务端点用于接收来自DeepSeek API的消息,并返回由LangChain Chat生成的回答: ```python from flask import Flask, request, jsonify import requests app = Flask(__name__) @app.route('/deepseek', methods=['POST']) def process_request(): data = request.json user_message = data.get('message') response_from_chat_model = invoke_langchain_chat(user_message) return jsonify({"response": response_from_chat_model}) if __name__ == '__main__': app.run(port=5000) ``` 此段代码创建了一个简单的Flask应用,它监听`/deepseek`路径上的HTTP POST请求[^1]。 #### 调用LangChain Chat Model 编写函数`invoke_langchain_chat()`以调用之前配置好的ChatOpenAI实例,传递用户消息作为参数获取响应: ```python def invoke_langchain_chat(message): chat_model = ChatOpenAI( openai_api_base="https://integrate.api.nvidia.com/v1", model_name="meta/llama3-70b-instruct", openai_api_key="your_api_key_here", streaming=True ) result = chat_model.invoke(message) return str(result) ``` 上述Python脚本展示了如何初始化ChatOpenAI对象以及发送查询到指定的语言模型中去。 #### 连接DeepSeek API 确保DeepSeek平台能够向新建立的服务发出请求。这通常涉及到更新DeepSeek设置中的回调URL指向本地服务器地址(例如 http://localhost:5000/deepseek),以便它可以将对话数据传输过来。 对于更复杂的场景,可能还需要考虑安全性措施如身份验证机制、错误处理逻辑等方面的内容。此外,利用LangChain特性链式运行组件可进一步增强系统的灵活性和功能性[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值