Skip to content

ट्रेसिंग SDK (potato_trace)

हल्के potato_trace SDK से किसी भी एजेंट को इंस्ट्रूमेंट करें और उसके रन को मूल्यांकन के लिए Potato में कैप्चर करें। फ़ंक्शनों पर @traceable लगाएँ (sync या async) और नेस्टेड रन कैप्चर होकर Potato के इंजेशन webhook पर भेज दिए जाते हैं, वैकल्पिक OpenTelemetry निर्यात के साथ।

potato_trace एक हल्का SDK है जो आपके एजेंट के रन कैप्चर करके उन्हें मूल्यांकन के लिए Potato में भेजता है। Potato रनटाइम पथ में बैठता है, इसलिए आप केवल ऑफ़लाइन डंप आयात करने के बजाय असली रन का मूल्यांकन उनके होते ही कर सकते हैं। यह निर्भरताओं में हल्का है (मानक लाइब्रेरी और भेजते समय requests) और एक टॉप-लेवल पैकेज है, इसलिए इसे import करने पर कोई वेब फ़्रेमवर्क साथ नहीं खिंचता।

त्वरित शुरुआत

python
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 एक वैकल्पिक एक्स्ट्रा है:

python
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 रन स्वीकार करे:

yaml
trace_ingestion:
  enabled: true
  api_key: ""    # set a key in production; the SDK sends it as a Bearer token

कैप्चर की गई ट्रेस ऐसी आइटम बन जाती हैं जिनका आप मूल्यांकन कर सकते हैं, ऑटोमेशन नियमों से रूट कर सकते हैं, या डेटासेटों में संकलित कर सकते हैं।

संबंधित