Published
OpenInference smolagents Instrumentation
pip install openinference-instrumentation-smolagents
Package Downloads
Authors
Project URLs
Requires Python
<3.14,>=3.10
Dependencies
- openinference-instrumentation
>=0.1.27
- openinference-semantic-conventions
>=0.1.17
- opentelemetry-api
- opentelemetry-instrumentation
- opentelemetry-semantic-conventions
- typing-extensions
- wrapt
- smolagents
>=1.15.0; extra == "instruments"
- openai
; extra == "test"
- opentelemetry-sdk
; extra == "test"
- pytest-recording
; extra == "test"
- smolagents
[litellm]==1.15.0; extra == "test"
OpenInference smolagents Instrumentation
Python auto-instrumentation library for LLM agents implemented with smolagents
Crews are fully OpenTelemetry-compatible and can be sent to an OpenTelemetry collector for monitoring, such as arize-phoenix
.
Installation
pip install openinference-instrumentation-smolagents
Quickstart
This quickstart shows you how to instrument your LLM agent application.
You've already installed openinference-instrumentation-smolagents. Next is to install packages for smolagents,
Phoenix and opentelemetry-instrument
, which exports traces to it.
pip install smolagents arize-phoenix opentelemetry-sdk opentelemetry-exporter-otlp-proto-grpc opentelemetry-distro
Start Phoenix in the background as a collector, which listens on http://localhost:6006
and default gRPC port 4317.
Note that Phoenix does not send data over the internet. It only operates locally on your machine.
python -m phoenix.server.main serve
Create an example like this:
from smolagents import CodeAgent, DuckDuckGoSearchTool, HfApiModel
agent = CodeAgent(tools=[DuckDuckGoSearchTool()], model=HfApiModel())
agent.run("How many seconds would it take for a leopard at full speed to run through Pont des Arts?")
Then, run it like this:
opentelemetry-instrument python example.py
Finally, browse for your trace in Phoenix at http://localhost:6006
!
Manual instrumentation
opentelemetry-instrument
is the Zero-code instrumentation approach
for Python. It avoids explicitly importing and configuring OpenTelemetry code in your main source. Alternatively, you
can copy-paste the following into your main source and run it without opentelemetry-instrument
.
from opentelemetry.sdk.trace import TracerProvider
from openinference.instrumentation.smolagents import SmolagentsInstrumentor
from opentelemetry.exporter.otlp.proto.grpc.trace_exporter import OTLPSpanExporter
from opentelemetry.sdk.trace.export import SimpleSpanProcessor
otlp_exporter = OTLPSpanExporter(endpoint="http://localhost:4317", insecure=True)
trace_provider = TracerProvider()
trace_provider.add_span_processor(SimpleSpanProcessor(otlp_exporter))
SmolagentsInstrumentor().instrument(tracer_provider=trace_provider)