Baidu AI Cloud Qianfan Platform 使用LangChain进行聊天模型集成
概述
百度智能云的千帆平台是一个一站式的大模型开发和服务运营平台,为企业开发者提供了包括文心一言(ERNIE-Bot)和第三方开源模型在内的多种模型。主要分为三类模型:
- Embedding
- Chat
- Completion
本文介绍如何使用LangChain与千帆平台的聊天模型进行集成,具体对应LangChain的langchain/chat_models
包。
API 初始化
在使用百度千帆平台的大模型服务前,需要初始化相关参数,可以通过环境变量或者直接传参进行初始化:
sh
export QIANFAN_AK=XXX
export QIANFAN_SK=XXX
支持的模型
- ERNIE-Bot-turbo(默认)
- ERNIE-Bot
- ERNIE-Speed-128K
- BLOOMZ-7B
- Llama-2-7b-chat
- Llama-2-13b-chat
- Llama-2-70b-chat
- Qianfan-BLOOMZ-7B-compressed
- Qianfan-Chinese-Llama-2-7B
- ChatGLM2-6B-32K
- AquilaChat-7B
基本设置和调用
使用示例代码初始化并调用聊天模型:
python
import os
from langchain_community.chat_models import QianfanChatEndpoint
from langchain_core.language_models.chat_models import HumanMessage
os.environ["QIANFAN_AK"] = "Your_api_key"
os.environ["QIANFAN_SK"] = "Your_secret_Key"
chat = QianfanChatEndpoint(streaming=True)
messages = [HumanMessage(content="Hello")]
response = chat.invoke(messages)
print(response.content)
异步调用
可以使用异步方法进行调用:
python
await chat.ainvoke(messages)
批量调用
支持批量处理消息:
python
responses = chat.batch([messages])
print(responses[0].content)
流式处理
支持流式处理消息输出:
python
try:
for chunk in chat.stream(messages):
print(chunk.content, end="", flush=True)
except TypeError as e:
print(e)
使用不同模型
默认使用ERNIE-Bot-turbo,如果需要使用其他模型,可以在初始化时指定:
python
chatBot = QianfanChatEndpoint(
streaming=True,
model="ERNIE-Bot",
)
messages = [HumanMessage(content="Hello")]
response = chatBot.invoke(messages)
print(response.content)
模型参数
目前只有ERNIE-Bot和ERNIE-Bot-turbo支持以下参数,可以在调用时指定:
- temperature
- top_p
- penalty_score
示例代码:
python
response = chat.invoke(
[HumanMessage(content="Hello")],
**{"top_p": 0.4, "temperature": 0.1, "penalty_score": 1}
)
print(response.content)