环境准备
确保你已经安装了以下库:
langchain
langchain_openai
langgraph
你可以使用以下命令进行安装:
bash
pip install langchain langchain_openai langgraph
代码实现
1. 初始化模型
首先,我们需要初始化智谱AI的聊天模型。
python
from langchain_openai import ChatOpenAI
model = ChatOpenAI(
temperature=0,
model="glm-4-plus",
openai_api_key="your_api_key",
openai_api_base="https://open.bigmodel.cn/api/paas/v4/"
)
2. 定义自定义工具
我们将使用一个自定义工具来返回纽约和旧金山的天气信息。
python
from typing import Literal
from langchain_core.tools import tool
@tool
def get_weather(city: Literal["nyc", "sf"]):
"""使用此工具获取天气信息."""
if city == "nyc":
return "It might be cloudy in nyc"
elif city == "sf":
return "It's always sunny in sf"
else:
raise AssertionError("Unknown city")
tools = [get_weather]
3. 添加系统提示
我们可以添加一个系统提示来指定响应的语言。
python
prompt = "Respond in Italian"
4. 定义执行图
使用langgraph
库创建一个React代理。
python
from langgraph.prebuilt import create_react_agent
graph = create_react_agent(model, tools=tools, state_modifier=prompt)
5. 定义输出流处理函数
定义一个函数来处理输出流。
python
def print_stream(stream):
for s in stream:
message = s["messages"][-1]
if isinstance(message, tuple):
print(message)
else:
message.pretty_print()
6. 运行并打印结果
输入一个用户消息并运行模型,打印输出结果。
python
inputs = {"messages": [("user", "What's the weather in NYC?")]}
print_stream(graph.stream(inputs, stream_mode="values"))
输出结果如下:
================================[1m Human Message [0m=================================
What's the weather in NYC?
================================[1m Ai Message [0m==================================
Tool Calls:
get_weather (call_9208187369440656653)
Call ID: call_9208187369440656653
Args:
city: nyc
================================[1m Tool Message [0m=================================
Name: get_weather
It might be cloudy in nyc
================================[1m Ai Message [0m==================================
Il tempo a New York potrebbe essere nuvoloso.
参考链接:https://langchain-ai.github.io/langgraph/how-tos/create-react-agent-system-prompt/