前言
智谱 AI 推出了新一代 LLM-GLM4,随之发布了新版本 API SDK v4。在构建智能摘要平台时,除了接入 OpenAI,接入国产大模型 GLM 也是降低 Token 成本的重要方案。目前大模型应用开发框架中,LangChain 是最热门的选择之一。LangChain 经过一年多的开发,已划分为 LangChain、LangChain-Community 和 LangChain-Core 三个部分。第三方实现主要集中在 LangChain-Community 库中。
一、问题分析
根据文档编写测试代码操作:
from langchain_community.chat_models import ChatZhipuAI
model = ChatZhipuAI(
model="chatglm_turbo",
api_key="xxxx",
)
print(model.invoke("hello, what today is today?"))
测试发现报错,提示缺少 model_api 参数。联想到 Zhipu AI 发布了新的 API v4 版本新 SDK,猜测应该是 LangChain-Community 上面的 ChatZhipuAI 适配的是 v3 版本的 SDK。
查看 LangChain 源码:
# file: langchain_community/chat_models/zhipuai.py
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
try:
import zhipuai
self.zhipuai = zhipuai
self.zhipuai.api_key = self.zhipuai_api_key
except ImportError:
raise RuntimeError(
"Could not import zhipuai package. "
"Please install it via 'pip install zhipuai'"
)
这里发现导入 zhipuai 这个库,查看 PyPi 文档,新版本 zhipuai 最新是 2.0.1 版本,调用方法已经发生了变化,明显是 2.0 版本不再兼容之前的 1.0 版本了。所以 LangChain 上的 ChatZhipuAI 不能用了,要想使用只能自己动手适配。
二、适配实现
LangChain 框架对底层的 LLM 已经封装好了,我们自定义的 ChatModel 只要继承 BaseChatModel,实现相关抽象方法即可。
class BaseChatModel(BaseLanguageModel[BaseMessage], ABC):
@abstractmethod
def () -> ChatResult:
() -> :


