
为 Huggingface Smolagents 解锁全面可检查性:使用 Opentelemetry 的分步指南!
- Rifx.Online
- Large Language Models , MLOps , Best Practices
- 23 Feb, 2025
检查AI代理运行可能是一项挑战,没有完整的可检查性,AI代理环境是不完整的
你为什么应该记录你的代理运行?
传统的预定义图形方法需要将用户请求匹配到最接近的意图,限制了运行在特定流程路径上。
当用户偏离这些预定义路径时,用户体验会下降,这通常被视为超出领域。
另一方面,AI代理实时动态生成链,提供更高水平的灵活性和自主性。
为了确保透明度,全面了解AI代理的决策链和节点至关重要。映射AI代理路径的遥测有助于有效识别延迟问题或错误。
原始日志可能难以解释,但交互式可视化表示简化了探索和调试。
为了标准化仪器,HuggingFace使用OpenTelemetry。
OpenTelemetry允许您无缝集成仪器层,像往常一样运行您的代理,并自动将所有内容记录到您的平台。
入门指南
首先,安装必要的包。在这个例子中,HuggingFace 使用 Phoenix by Arize AI,这是一个强大的工具,用于收集和检查日志。
然而,任何 OpenTelemetry 兼容的平台 都可以用于此目的。
pip install smolagents
pip install arize-phoenix opentelemetry-sdk opentelemetry-exporter-otlp openinference-instrumentation-smolagents
然后可以启动 Phoenix 服务器,并通过浏览器访问……
python -m phoenix.server.main serve
下面是终端的视图……
与 LangChain 和 LangSmith 类似,需要在你的 Python 脚本中添加一小段代码,如下所示。这让我想起了 LangChain 在 LangChain 应用中添加 LangSmith 监控的方式。
from opentelemetry import trace
from opentelemetry.sdk.trace import TracerProvider
from opentelemetry.sdk.trace.export import BatchSpanProcessor
from openinference.instrumentation.smolagents import SmolagentsInstrumentor
from opentelemetry.exporter.otlp.proto.http.trace_exporter import OTLPSpanExporter
from opentelemetry.sdk.trace.export import ConsoleSpanExporter, SimpleSpanProcessor
endpoint = "http://0.0.0.0:6006/v1/traces"
trace_provider = TracerProvider()
trace_provider.add_span_processor(SimpleSpanProcessor(OTLPSpanExporter(endpoint)))
SmolagentsInstrumentor().instrument(tracer_provider=trace_provider)
如果你喜欢这篇文章
以下是完整的 AI 代理代码,可以复制并粘贴到单个 Python 文件中。
from opentelemetry import trace
from opentelemetry.sdk.trace import TracerProvider
from opentelemetry.sdk.trace.export import BatchSpanProcessor
from openinference.instrumentation.smolagents import SmolagentsInstrumentor
from opentelemetry.exporter.otlp.proto.http.trace_exporter import OTLPSpanExporter
from opentelemetry.sdk.trace.export import ConsoleSpanExporter, SimpleSpanProcessor
endpoint = "http://0.0.0.0:6006/v1/traces"
trace_provider = TracerProvider()
trace_provider.add_span_processor(SimpleSpanProcessor(OTLPSpanExporter(endpoint)))
SmolagentsInstrumentor().instrument(tracer_provider=trace_provider)
from typing import Optional
from smolagents import HfApiModel, LiteLLMModel, TransformersModel, tool
from smolagents.agents import CodeAgent, ToolCallingAgent
available_inferences = ["hf_api", "transformers", "ollama", "litellm"]
chosen_inference = "transformers"
print(f"选择的模型: '{chosen_inference}'")
if chosen_inference == "hf_api":
model = HfApiModel(model_id="meta-llama/Llama-3.3-70B-Instruct")
elif chosen_inference == "transformers":
model = TransformersModel(model_id="HuggingFaceTB/SmolLM2-1.7B-Instruct", device_map="auto", max_new_tokens=1000)
elif chosen_inference == "ollama":
model = LiteLLMModel(
model_id="ollama_chat/llama3.2",
api_base="http://localhost:11434",
api_key="your-api-key",
num_ctx=8192,
)
elif chosen_inference == "litellm":
model = LiteLLMModel(model_id="gpt-4o")
@tool
def get_weather(location: str, celsius: Optional[bool] = False) -> str:
"""
获取给定地点未来几天的天气。
这个工具其实并不在乎地点,它讨厌任何地方的天气。
Args:
location: 地点
celsius: 温度
"""
return "天气非常糟糕,暴雨倾盆,气温低于 -10°C"
agent = ToolCallingAgent(tools=[get_weather], model=model)
print("ToolCallingAgent:", agent.run("巴黎的天气怎么样?"))
agent = CodeAgent(tools=[get_weather], model=model)
print("CodeAgent:", agent.run("巴黎的天气怎么样?"))
如果你喜欢这篇文章并想表达一些爱 ❤️
一旦 AI Agent 运行
在遥测 GUI 中可以看到痕迹。注意代理名称、链条以及运行中的 llm 和工具步骤,包括输入、输出、延迟等信息。
下面是更深入的视图,模型的输入消息和系统可见…
最后,遥测提供 AI Agents 决策过程的实时可见性,帮助诊断延迟、错误或意外行为等问题。
通过映射 AI Agent 工作流,遥测使开发者能够理解不同节点之间的交互,确保更顺畅和高效的执行。
没有适当的日志记录和监控,调试 AI Agents 可能会很具挑战性,但遥测通过结构化的见解和可视化表示简化了故障排除。
首席布道者 @ Kore.ai | 我热衷于探索 AI 与语言的交集。从语言模型、AI Agents 到代理应用、开发框架和数据中心生产力工具,我分享这些技术如何塑造未来的见解和想法。