Python—使用LangChain调用千帆大模型

 前言

1.langchain_core.messages.HumanMessage

 这个包在LangChain框架中扮演着重要的角色,主要用于表示和处理用户(人类)在对话或交互过程中发送的消息。LangChain是一个旨在简化大语言模型(LLMs)应用开发的框架,它提供了一系列组件化的工具,帮助开发者快速构建复杂的LLM应用。

具体来说,langchain_core.messages.HumanMessage 的作用包括:

  1. 消息封装:它封装了用户发送的消息内容,使得这些消息可以以一种结构化的方式被处理和传递。这种封装有助于保持代码的清晰性和可维护性,同时也便于在系统中跟踪和管理用户的输入。

  2. 角色区分:在对话或交互过程中,消息可能来自不同的角色,如用户(Human)、系统(System)或AI模型本身(AIMessage)HumanMessage 明确表示了这些消息是由用户发送的,从而有助于在系统中区分不同角色的消息,并据此进行相应的处理。

  3. 内容传递:通过HumanMessage,用户可以将其输入(如问题、指令或请求)传递给LLM或其他处理组件。这些输入随后会被转换为适当的格式,以便LLM能够理解和处理。

  4. 上下文管理:在对话系统中,用户的输入往往与之前的对话内容紧密相关。HumanMessage 可以作为上下文管理的一部分,帮助系统跟踪和记录用户的输入历史,以便在需要时能够回顾和引用之前的对话内容。

  5. 灵活性和可扩展性langchain_core.messages 模块中的不同消息类型(如HumanMessageAIMessageSystemMessage等)为开发者提供了灵活性和可扩展性。通过定义和使用这些消息类型,开发者可以轻松地构建复杂的对话逻辑和交互流程。

2.QianfanChatEndpoint 类

QianfanChatEndpointlangchain_community.chat_models模块中定义的一个类,它封装了与千帆大模型(或任何其他通过该接口支持的对话模型)进行交互所需的所有逻辑。这个类提供了发送请求、接收响应、处理错误等多种功能。

  1. 封装API调用:该类封装了与百度千帆大模型交互所需的HTTP API调用。用户不需要直接处理HTTP请求和响应的细节,而是可以通过这个类提供的方法以更高级别、更抽象的方式与模型进行交互。

  2. 处理请求和响应:当用户想要向模型发送一个问题或请求时,他们可以通过这个类的实例来构造(在本例中是chat)并发送请求。同样,当模型返回响应时,这个类也负责解析响应内容,并将其以用户友好的方式(如文本、字典、对象等)呈现给用户。

 通过初始化 QianfanChatEndpoint 对象,你的程序就获得了一个与千帆聊天服务进行交互的接口。你可以通过这个接口发送聊天消息,并接收来自服务的响应,而无需关心底层的网络通信细节。这使得与聊天服务的集成变得更加简单和直接。

打印chat的类型,结果如下:

<class 'langchain_community.chat_models.baidu_qianfan_endpoint.QianfanChatEndpoint'>

一、安装LangChain

pip install langchain
#安装qianfan
pip install qianfan

二、获取千帆API Key、Secret Key

  • 登录百度云搜索进入千帆大模型控制台
  • 没有应用则创建应用
  • 获取APIKey、SecretKey

 

三、简单对话案例实现 

import os  
  
from langchain_community.chat_models import QianfanChatEndpoint  
from langchain_core.messages import HumanMessage  
  
# 设置环境变量  #换成网页中的API_KEY和SECRET_KEY
os.environ["QIANFAN_AK"] = "API_KEY"   
os.environ["QIANFAN_SK"] = "SECRET_KEY"
  
# 初始化聊天端点  
chat = QianfanChatEndpoint(streaming=True)  
  
# 无限循环,直到用户输入 'exit'  
while True:  
    # 获取用户输入  
    user_input = input("请输入您的问题(输入'exit'退出): ")  
      
    # 检查是否输入了 'exit'  
    if user_input.lower() == 'exit':  
        print("退出程序...")  
        break  
      
    # 构造 HumanMessage 对象并发送请求  
    response = chat([HumanMessage(content=user_input)])  
      
    # 打印响应内容  
    print(response.content)  

当打印response的类型时,结果如下:

<class 'langchain_core.messages.ai.AIMessage'>

表面response是AIMessage对象(即AI信息对象,AI发出的信息) 

四.代码解读

import os

作用:这行代码导入了Python的os模块。os模块提供了许多与操作系统交互的功能,比如文件操作、环境变量管理等。在这里,它被用来设置环境变量,这些环境变量通常用于配置外部服务(如API)的访问权限

from langchain_community.chat_models import QianfanChatEndpoint
  • 作用:这行代码从langchain_community.chat_models这个包(或模块)中导入了QianfanChatEndpoint类。这表明QianfanChatEndpoint是一个与百度文心一言(或其他类似的大语言模型)进行交互的客户端类,它封装了与模型通信的逻辑。
from langchain_core.messages import HumanMessage
  • 作用:这行代码从langchain_core.messages这个包中导入了HumanMessage类。HumanMessage类用于表示用户发送给聊天模型的消息,它包含了消息的内容以及其他可能的元数据(尽管在这个简单的例子中我们只使用了内容)。

# 设置环境变量  #换成网页中的API_KEY和SECRET_KEY
os.environ["QIANFAN_AK"] = "API_KEY"   
os.environ["QIANFAN_SK"] = "SECRET_KEY"
  • 作用:这两行代码使用os.environ字典设置了两个环境变量QIANFAN_AKQIANFAN_SK。这些环境变量通常用于存储敏感信息,如API的访问密钥(Access Key, AK)和密钥(Secret Key, SK),它们用于验证用户的身份和权限,以便安全地访问外部服务(如百度文心一言的API)。

# 初始化聊天端点    
chat = QianfanChatEndpoint(streaming=True)
  • 作用:这行代码创建了一个QianfanChatEndpoint的实例,并将其赋值给变量chatstreaming=True参数指示该实例以某种形式的流式传输。这个实例将用于发送用户消息并接收聊天模型的响应。

# 构造 HumanMessage 对象并发送请求    
    response = chat([HumanMessage(content=user_input)])

作用:代码中使用了 chat([HumanMessage(content=user_input)]) 这样的调用方式),允许用户发送 HumanMessage 对象作为请求到聊天服务。这些 HumanMessage 对象包含了用户希望发送给聊天服务的消息内容。

        详解:

  • HumanMessage(content=user_input): 这里,HumanMessage类被实例化,传递了一个关键字参数content,其值为变量user_input。这个实例化的对象代表了一个包含用户输入内容的消息。

  • chat([HumanMessage(content=user_input)]): 这里,chat()方法被调用,并且传入了一个列表,列表中包含了一个HumanMessage的实例。虽然在这个例子中,列表只包含一个元素,但chat()方法的设计可能允许它接收多个消息,并批量处理它们。将HumanMessage实例放在列表中,是为了保持方法的灵活性,允许未来的扩展(比如一次性发送多个消息)。

  • response = ...chat()方法的返回值(在这个例子中是模型的响应)被赋值给变量response。然后,这个响应(另一个封装了模型输出的消息对象,即AIMessage)的content属性被打印出来,以便用户可以看到模型的回答。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值