Tracing#
Experimentelles Feature
Dies ist ein experimentelles Feature und kann sich jederzeit ändern. Erfahren Sie mehr.
Traces erfassen spezifische Ereignisse oder den Zustand einer Anwendung während der Ausführung. Sie können Daten zu Funktionsaufrufen, Variablenwerten, Systemereignissen und mehr enthalten. Traces helfen dabei, die Komponenten einer Anwendung in diskrete Ein- und Ausgaben zu zerlegen, was für die Fehlersuche und das Verständnis einer Anwendung entscheidend ist. Mehr über Traces erfahren Sie hier.
Prompt flow bietet die Trace-Funktion, um Benutzern das Nachverfolgen von LLM-Aufrufen oder Funktionen zu ermöglichen, sowie LLM-Frameworks wie LangChain und AutoGen, die der OpenTelemetry-Spezifikation folgen.
Installation des Pakets#
pip install promptflow-tracing
Instrumentierung des Benutzercodes#
Trace für LLM-Aufrufe aktivieren#
Beginnen wir mit dem einfachsten Beispiel: Fügen Sie eine einzelne Codezeile start_trace() hinzu, um Tracing für LLM-Aufrufe in Ihrer Anwendung zu aktivieren.
from openai import OpenAI
from promptflow.tracing import start_trace
# instrument OpenAI
start_trace()
client = OpenAI()
completion = client.chat.completions.create(
model="gpt-4",
messages=[
{"role": "system", "content": "You are a poetic assistant, skilled in explaining complex programming concepts with creative flair."},
{"role": "user", "content": "Compose a poem that explains the concept of recursion in programming."}
]
)
print(completion.choices[0].message)
Dann wird OpenAI instrumentiert, und da Prompt flow der OpenTelemetry-Spezifikation folgt, können Benutzer das OpenTelemetry-Wissen vollständig nutzen, um diese Traces während der OpenAI-Aufrufe zu verwenden.
Trace für jede Funktion#
Ein häufigeres Szenario ist, dass die Anwendung eine komplizierte Code-Struktur hat und der Entwickler Traces auf kritischen Pfaden hinzufügen möchte, die er debuggen und überwachen möchte.
Sehen Sie sich das math_to_code Beispiel an, wie @trace verwendet wird.
Durch Ausführen des folgenden Befehls erhalten Sie eine URL, um die Trace-Datensätze und Tracedetails jedes Tests anzuzeigen.
from promptflow.tracing import trace
# trace your function
@trace
def code_gen(client: AzureOpenAI, question: str) -> str:
sys_prompt = (
"I want you to act as a Math expert specializing in Algebra, Geometry, and Calculus. "
"Given the question, develop python code to model the user's question. "
"Make sure only reply the executable code, no other words."
)
completion = client.chat.completions.create(
model=os.getenv("CHAT_DEPLOYMENT_NAME", "gpt-35-turbo"),
messages=[
{
"role": "system",
"content": sys_prompt,
},
{"role": "user", "content": question},
],
)
raw_code = completion.choices[0].message.content
result = code_refine(raw_code)
return result
python math_to_code.py
Trace von LLM und Frameworks#
Das Tracing von Prompt flow funktioniert nicht nur für allgemeine LLM-Anwendungen, sondern auch für weitere Frameworks wie autogen und langchain. Neben den grundlegenden Tracing-Funktionen bietet Prompt flow auch mehrere Trace-Toolkits, die das Tracing-Erlebnis verbessern können (z. B. Trace UI zur Visualisierung).
Beispiel: Trace für LLM hinzufügen

Beispiel: Trace für Autogen hinzufügen

Beispiel: Trace für Langchain hinzufügen
