如何在 LangSmith 中传递自定义运行 ID 或设置图运行的标签和元数据¶
在 IDE 或终端中调试图运行有时可能很困难。 LangSmith 允许您使用跟踪数据来调试、测试和监控使用 LangGraph 构建的 LLM 应用程序 - 阅读 LangSmith 文档 以获取有关如何入门的更多信息。
为了更轻松地识别和分析在图调用期间生成的跟踪,您可以在运行时设置其他配置(请参阅 RunnableConfig)
字段 | 类型 | 描述 |
---|---|---|
run_name | str |
此调用的跟踪器运行的名称。默认为类的名称。 |
run_id | UUID |
此调用的跟踪器运行的唯一标识符。如果未提供,将生成新的 UUID。 |
tags | List[str] |
此调用和任何子调用(例如,调用 LLM 的链)的标签。您可以使用这些标签来筛选调用。 |
metadata | Dict[str, Any] |
此调用和任何子调用(例如,调用 LLM 的链)的元数据。键应为字符串,值应为可 JSON 序列化的。 |
LangGraph 图实现 LangChain 可运行接口,并在诸如 invoke
、ainvoke
、stream
等方法中接受第二个参数 (RunnableConfig
)。
LangSmith 平台将允许您根据 run_name
、run_id
、tags
和 metadata
搜索和筛选跟踪。
TLDR¶
import uuid
# Generate a random UUID -- it must be a UUID
config = {"run_id": uuid.uuid4()}, "tags": ["my_tag1"], "metadata": {"a": 5}}
# Works with all standard Runnable methods
# like invoke, batch, ainvoke, astream_events etc
graph.stream(inputs, config, stream_mode="values")
操作指南的其余部分将展示一个完整的代理。
设置¶
首先,让我们安装所需的软件包并设置我们的 API 密钥
在 [28]
已复制!
%%capture --no-stderr
%pip install --quiet -U langgraph langchain_openai
%%capture --no-stderr %pip install --quiet -U langgraph langchain_openai
在 [29]
已复制!
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")
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")
定义图¶
在本例中,我们将使用 预构建的 ReAct 代理。
在 [26]
已复制!
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)
from langchain_openai import ChatOpenAI from typing import Literal from langgraph.prebuilt import create_react_agent from langchain_core.tools import tool # 首先,我们初始化要使用的模型。 model = ChatOpenAI(model="gpt-4o", temperature=0) # 在本教程中,我们将使用自定义工具,该工具为两个城市(纽约和旧金山)的天气返回预定义的值 @tool def get_weather(city: Literal["nyc", "sf"]): """使用此工具获取天气信息。""" if city == "nyc": return "纽约的天气可能多云" elif city == "sf": return "旧金山总是阳光明媚" else: raise AssertionError("未知城市") tools = [get_weather] # 定义图 graph = create_react_agent(model, tools=tools)
运行你的图¶
现在我们已经定义了我们的图,让我们运行它一次并在 LangSmith 中查看跟踪。为了使我们的跟踪在 LangSmith 中易于访问,我们将在配置中传递自定义 run_id
。
这假设您已设置 LANGSMITH_API_KEY
环境变量。
请注意,您还可以通过设置 LANGCHAIN_PROJECT
环境变量来配置要跟踪到的项目,默认情况下,运行将跟踪到 default
项目。
在 [27]
已复制!
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"))
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", "旧金山的天气怎么样")]} config = {"run_name": "agent_007", "tags": ["猫很棒"]} print_stream(graph.stream(inputs, config, stream_mode="values"))
================================ Human Message ================================= what is the weather in sf ================================== Ai Message ================================== Tool Calls: get_weather (call_9ZudXyMAdlUjptq9oMGtQo8o) Call ID: call_9ZudXyMAdlUjptq9oMGtQo8o Args: city: sf ================================= Tool Message ================================= Name: get_weather It's always sunny in sf ================================== Ai Message ================================== The weather in San Francisco is currently sunny.
在 LangSmith 中查看跟踪¶
现在我们已经运行了我们的图,让我们转到 LangSmith 并查看我们的跟踪。首先,点击您跟踪到的项目(在本例中为默认项目)。您应该会看到一个具有自定义运行名称“agent_007”的运行。
此外,您将能够使用提供的标签或元数据事后筛选跟踪。例如,