Skip to main content

OpenInference smolagents Instrumentation

Project description

OpenInference smolagents Instrumentation

pypi

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)

More Info

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page