ट्रेसिंग SDK (potato_trace)
हल्के potato_trace SDK से किसी भी एजेंट को इंस्ट्रूमेंट करें और उसके रन को मूल्यांकन के लिए Potato में कैप्चर करें। फ़ंक्शनों पर @traceable लगाएँ (sync या async) और नेस्टेड रन कैप्चर होकर Potato के इंजेशन webhook पर भेज दिए जाते हैं, वैकल्पिक OpenTelemetry निर्यात के साथ।
potato_trace एक हल्का SDK है जो आपके एजेंट के रन कैप्चर करके उन्हें मूल्यांकन के लिए Potato में भेजता है। Potato रनटाइम पथ में बैठता है, इसलिए आप केवल ऑफ़लाइन डंप आयात करने के बजाय असली रन का मूल्यांकन उनके होते ही कर सकते हैं। यह निर्भरताओं में हल्का है (मानक लाइब्रेरी और भेजते समय requests) और एक टॉप-लेवल पैकेज है, इसलिए इसे import करने पर कोई वेब फ़्रेमवर्क साथ नहीं खिंचता।
त्वरित शुरुआत
import potato_trace
potato_trace.configure(
potato_url="http://localhost:8000", # or env POTATO_TRACE_URL
api_key="", # or env POTATO_TRACE_API_KEY
project_name="my-agent",
)
@potato_trace.traceable(run_type="tool")
def search(query):
return run_search(query)
@potato_trace.traceable(run_type="llm")
def summarize(text):
potato_trace.add_metadata(prompt_tokens=120, completion_tokens=40)
return call_llm(text)
@potato_trace.traceable # the outermost call is the trace root
def agent(task):
return summarize(search(task))
agent("weather in NYC")
potato_trace.flush() # ensure sends finish before a short script exitsनेस्टेड @traceable कॉल मिलकर एक रन ट्री बनाते हैं; जब रूट लौटता है, तो पूरा ट्री एक बैकग्राउंड थ्रेड में /api/traces/webhook पर POST कर दिया जाता है (ट्रेसिंग आपके एजेंट को न कभी रोकती है, न क्रैश करती है)। यदि कोई potato_url कॉन्फ़िगर नहीं है, तो ट्रेसिंग सुरक्षित रूप से कुछ नहीं करती।
API
| सिंबल | उद्देश्य |
|---|---|
configure(potato_url=, api_key=, project_name=) | ग्लोबल क्लाइंट सेट करें |
@traceable / @traceable(run_type=, name=, tags=) | किसी फ़ंक्शन को ट्रेस करें (sync या async); run_type: chain (डिफ़ॉल्ट), llm, tool, retriever |
trace(name, run_type=...) | कॉन्टेक्स्ट-मैनेजर रूप: with trace("step"): ... |
set_outputs({...}) / add_metadata(**kw) | वर्तमान रन से आउटपुट / टोकन उपयोग जोड़ें |
flush(timeout=30) | लंबित बैकग्राउंड भेजावों के पूरा होने की प्रतीक्षा करें |
OpenTelemetry इंटरऑप (वैकल्पिक)
यदि आपका स्टैक OpenTelemetry स्पैन (GenAI सिमैंटिक कन्वेंशन) उत्सर्जित करता है, तो उन्हें सीधे Potato में निर्यात करें। opentelemetry-sdk एक वैकल्पिक एक्स्ट्रा है:
from opentelemetry.sdk.trace import TracerProvider
from opentelemetry.sdk.trace.export import BatchSpanProcessor
from potato_trace.otel_exporter import build_exporter
provider = TracerProvider()
provider.add_span_processor(BatchSpanProcessor(build_exporter(project_name="my-agent")))ट्रेस प्राप्त करना
Potato की ओर से ट्रेस इंजेशन सक्रिय करें ताकि webhook रन स्वीकार करे:
trace_ingestion:
enabled: true
api_key: "" # set a key in production; the SDK sends it as a Bearer tokenकैप्चर की गई ट्रेस ऐसी आइटम बन जाती हैं जिनका आप मूल्यांकन कर सकते हैं, ऑटोमेशन नियमों से रूट कर सकते हैं, या डेटासेटों में संकलित कर सकते हैं।
संबंधित
- Read the Docs पर पूर्ण संदर्भ — पूरा SDK + OpenTelemetry API, संस्करण-अनुरूप
- एजेंटिक एनोटेशन — कैप्चर की गई ट्रेस को एनोटेट करें
- ऑटोमेशन नियम — आने वाली ट्रेस को अपने आप रूट करें