如何为 LangSmith 中的图运行传递自定义运行 ID 或设置标签和元数据¶
在集成开发环境(IDE)或终端中调试图运行有时可能会很困难。LangSmith 允许你使用跟踪数据来调试、测试和监控使用 LangGraph 构建的大语言模型(LLM)应用程序 —— 请阅读 LangSmith 文档 以获取有关如何入门的更多信息。
为了更轻松地识别和分析图调用期间生成的跟踪信息,你可以在运行时设置额外的配置(请参阅 RunnableConfig):
字段 | 类型 | 描述 |
---|---|---|
run_name | str |
此调用的跟踪器运行名称。默认为类的名称。 |
run_id | UUID |
此调用的跟踪器运行的唯一标识符。如果未提供,将生成一个新的通用唯一识别码(UUID)。 |
tags | List[str] |
此调用以及任何子调用(例如,调用大语言模型的链)的标签。你可以使用这些标签来过滤调用。 |
metadata | Dict[str, Any] |
此调用以及任何子调用(例如,调用大语言模型的链)的元数据。键应为字符串,值应为可进行 JSON 序列化的对象。 |
LangGraph 图实现了 LangChain 可运行接口,并在 invoke
、ainvoke
、stream
等方法中接受第二个参数(RunnableConfig
)。
LangSmith 平台允许你根据 run_name
、run_id
、tags
和 metadata
搜索和过滤跟踪信息。
简而言之¶
import uuid
# 生成一个随机的 UUID -- 它必须是一个 UUID
config = {"run_id": uuid.uuid4(), "tags": ["my_tag1"], "metadata": {"a": 5}}
# 适用于所有标准的可运行方法
# 如 invoke、batch、ainvoke、astream_events 等
graph.stream(inputs, config, stream_mode="values")
本操作指南的其余部分将展示一个完整的智能体。
环境设置¶
首先,让我们安装所需的软件包并设置我们的 API 密钥
import getpass
import os
def _set_env(var: str):
if not os.environ.get(var):
os.environ[var] = getpass.getpass(f"{var}: ")
_set_env("OPENAI_API_KEY")
_set_env("LANGSMITH_API_KEY")
为 LangGraph 开发设置 LangSmith
注册 LangSmith 以快速发现问题并提升你的 LangGraph 项目的性能。LangSmith 允许你使用跟踪数据来调试、测试和监控使用 LangGraph 构建的大语言模型应用程序 — 点击 此处 了解更多关于如何开始使用的信息。
定义图¶
对于此示例,我们将使用预构建的 ReAct 代理。
from langchain_openai import ChatOpenAI
from typing import Literal
from langgraph.prebuilt import create_react_agent
from langchain_core.tools import tool
# First we initialize the model we want to use.
model = ChatOpenAI(model="gpt-4o", temperature=0)
# For this tutorial we will use custom tool that returns pre-defined values for weather in two cities (NYC & SF)
@tool
def get_weather(city: Literal["nyc", "sf"]):
"""Use this to get weather information."""
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]
# Define the graph
graph = create_react_agent(model, tools=tools)
API Reference: tool
运行你的图谱¶
既然我们已经定义了图谱,那就运行一次并在 LangSmith 中查看追踪信息。为了能在 LangSmith 中轻松访问追踪信息,我们将在配置中传入一个自定义的 run_id
。
这假设你已经设置了 LANGSMITH_API_KEY
环境变量。
请注意,你还可以通过设置 LANGCHAIN_PROJECT
环境变量来配置要追踪到哪个项目,默认情况下,运行信息将被追踪到 default
项目。
import uuid
def print_stream(stream):
for s in stream:
message = s["messages"][-1]
if isinstance(message, tuple):
print(message)
else:
message.pretty_print()
inputs = {"messages": [("user", "what is the weather in sf")]}
config = {"run_name": "agent_007", "tags": ["cats are awesome"]}
print_stream(graph.stream(inputs, config, stream_mode="values"))
================================[1m Human Message [0m=================================
what is the weather in sf
==================================[1m Ai Message [0m==================================
Tool Calls:
get_weather (call_9ZudXyMAdlUjptq9oMGtQo8o)
Call ID: call_9ZudXyMAdlUjptq9oMGtQo8o
Args:
city: sf
=================================[1m Tool Message [0m=================================
Name: get_weather
It's always sunny in sf
==================================[1m Ai Message [0m==================================
The weather in San Francisco is currently sunny.
在 LangSmith 中查看跟踪记录¶
既然我们已经运行了图表,那就让我们前往 LangSmith 查看跟踪记录。首先,点击你进行跟踪的项目(在我们的示例中是默认项目)。你应该会看到一个自定义运行名称为“agent_007”的运行记录。
此外,你将能够利用提供的标签或元数据事后过滤跟踪数据。例如,