Skip to main content

OpenInference DSPy Instrumentation

pypi

Python auto-instrumentation library for DSPy.

These traces are fully OpenTelemetry-compatible and can be sent to an OpenTelemetry collector for viewing, such as arize-phoenix.

Installation

pip install openinference-instrumentation-dspy

Quickstart

This quickstart shows you how to instrument your DSPy application. It is adapted from the DSPy quickstart.

Install required packages.

pip install openinference-instrumentation-dspy dspy-ai arize-phoenix opentelemetry-sdk opentelemetry-exporter-otlp

Start Phoenix in the background as a collector. By default, it listens on http://localhost:6006. You can visit the app via a browser at the same address. (Phoenix does not send data over the internet. It only operates locally on your machine.)

python -m phoenix.server.main serve

Set up DSPyInstrumentor to trace your DSPy application and sends the traces to Phoenix at the endpoint defined below.

from openinference.instrumentation.dspy import DSPyInstrumentor
from opentelemetry import trace as trace_api
from opentelemetry.exporter.otlp.proto.http.trace_exporter import OTLPSpanExporter
from opentelemetry.sdk import trace as trace_sdk
from opentelemetry.sdk.trace.export import SimpleSpanProcessor

endpoint = "http://127.0.0.1:6006/v1/traces"
tracer_provider = trace_sdk.TracerProvider()
trace_api.set_tracer_provider(tracer_provider)
tracer_provider.add_span_processor(SimpleSpanProcessor(OTLPSpanExporter(endpoint)))

DSPyInstrumentor().instrument()

Import dspy and configure your language model.

import dspy
from dspy.datasets.gsm8k import GSM8K, gsm8k_metric

turbo = dspy.OpenAI(model='gpt-3.5-turbo-instruct', max_tokens=250)
dspy.settings.configure(lm=turbo)
gms8k = GSM8K()
gsm8k_trainset, gsm8k_devset = gms8k.train[:10], gms8k.dev[:10]

Define a custom program that utilizes the ChainOfThought module to perform step-by-step reasoning to generate answers.

class CoT(dspy.Module):
    def __init__(self):
        super().__init__()
        self.prog = dspy.ChainOfThought("question -> answer")
    
    def forward(self, question):
        return self.prog(question=question)

Optimize your program using the BootstrapFewShotWithRandomSearch teleprompter.

from dspy.teleprompt import BootstrapFewShot

config = dict(max_bootstrapped_demos=4, max_labeled_demos=4)
teleprompter = BootstrapFewShot(metric=gsm8k_metric, **config)
optimized_cot = teleprompter.compile(CoT(), trainset=gsm8k_trainset, valset=gsm8k_devset)

Evaluate performance on the dev dataset.

from dspy.evaluate import Evaluate

evaluate = Evaluate(devset=gsm8k_devset, metric=gsm8k_metric, num_threads=4, display_progress=True, display_table=0)
evaluate(optimized_cot)

Visit the Phoenix app at http://localhost:6006 to see your traces.

More Info

More details about tracing with OpenInference and Phoenix can be found in the Phoenix docs.

For AI/ML observability solutions in production, including a cloud-based trace collector, visit Arize.

Release files for clank-so-openinference-instrumentation-dspy 0.1.10

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for clank-so-openinference-instrumentation-dspy 0.1.10
File Size Uploaded
clank_so_openinference_instrumentation_dspy-0.1.10.tar.gz 16.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for clank-so-openinference-instrumentation-dspy 0.1.10
File Interpreter ABI Platform
clank_so_openinference_instrumentation_dspy-0.1.10-py3-none-any.whl Python 3 none any Details

Total release size: 30.3 kB

Release files / clank_so_openinference_instrumentation_dspy-0.1.10.tar.gz

Download URL clank_so_openinference_instrumentation_dspy-0.1.10.tar.gz
Size 16.7 kB
Tags Source
SHA-256 checksum
How to use checksums
f513a172826891a84b2f0a17c931916385725ec7392bd0ef261959c957eee137
BLAKE2b-256 checksum
How to use checksums
ca73f684ada7829437ca8b1f930e8cb0f124fd1057e69d2e8de4e39c28e5ea05
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via python-httpx/0.27.0

Release files / clank_so_openinference_instrumentation_dspy-0.1.10-py3-none-any.whl

Download URL clank_so_openinference_instrumentation_dspy-0.1.10-py3-none-any.whl
Size 13.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
aae7775943d5460bf4dc7c6cfe023f31f1fc97ce5bcf4095a7e82ded8b1ed13b
BLAKE2b-256 checksum
How to use checksums
c909c08c1356a2a1bb693ca862325a507b8cfb451675974fc00c274b36285257
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via python-httpx/0.27.0

Release history Release notifications | RSS feed

This release

0.1.10 This release

2 release files

0.1.9

2 release files

0.1.6

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page