OpenAI Agents SDK Cheatsheet
Das OpenAI Agents SDK ist ein kleines, eigensinniges Python-Framework zum Erstellen von Agent-Apps. Es stellt vier Kernprimitiven zur Verfügung — Agents (ein LLM plus Anweisungen und Tools), Tools (Python-Funktionen oder gehostete Tools), Handoffs (Delegierung eines Laufs an einen anderen Agent) und Guardrails (Validierung von Ein- und Ausgaben) — mit Sessions für Speicher und Tracing integriert. Es ist Provider-flexibel, funktioniert aber standardmäßig mit OpenAI-Modellen.
Installation
| Schritt | Befehl |
|---|
| Installieren | pip install openai-agents |
| Mit uv | uv add openai-agents |
| Legen Sie den Schlüssel fest | export OPENAI_API_KEY="sk-..." |
| Voice-Extras | pip install "openai-agents[voice]" |
| Verifizieren | python -c "import agents; print(agents.__version__)" |
Minimaler Agent
from agents import Agent, Runner
agent = Agent(
name="Assistant",
instructions="You are a concise, helpful assistant.",
)
result = Runner.run_sync(agent, "Summarize the Unix philosophy in one line.")
print(result.final_output)
| Aufruf | Beschreibung |
|---|
Runner.run_sync(agent, input) | Synchron ausführen |
await Runner.run(agent, input) | Asynchron ausführen |
Runner.run_streamed(agent, input) | Ereignisse streamen, während sie auftreten |
result.final_output | Die endgültige Antwort des Agenten |
result.new_items | Strukturierte Laufelemente (Nachrichten, Tool-Aufrufe, Handoffs) |
from agents import Agent, function_tool
@function_tool
def get_weather(city: str) -> str:
"""Return the weather for a city."""
return f"Sunny in {city}"
agent = Agent(name="Weather", tools=[get_weather])
| Konzept | Beschreibung |
|---|
@function_tool | Verwandle eine typisierte Python-Funktion in ein Tool (Schema wird automatisch aus der Signatur/Dokumentation generiert) |
| Gehostete Tools | Integrierte Tools wie Web-Suche und Datei-Suche |
tool_use_behavior | Kontrollieren Sie, ob die Tool-Ausgabe den Zug beendet |
| Agents als Tools | agent.as_tool(...) macht einen Agent als aufrufbares Tool eines anderen Agenten verfügbar |
Handoffs
from agents import Agent, handoff
billing = Agent(name="Billing", instructions="Handle billing questions.")
triage = Agent(
name="Triage",
instructions="Route the user to the right specialist.",
handoffs=[billing], # or handoff(billing, ...)
)
Handoffs übertragen das gesamte Gespräch an den empfangenden Agent innerhalb eines einzelnen Laufs; Eingabe-Guardrails gelten für den ersten Agent und Ausgabe-Guardrails für den Agent, der die endgültige Ausgabe produziert.
Guardrails
from agents import Agent, input_guardrail, GuardrailFunctionOutput
@input_guardrail
async def no_secrets(ctx, agent, user_input):
tripped = "password" in user_input.lower()
return GuardrailFunctionOutput(output_info={}, tripwire_triggered=tripped)
agent = Agent(name="Safe", input_guardrails=[no_secrets])
| Typ | Läuft | Zweck |
|---|
@input_guardrail | Vor dem Agent | Benutzer-Eingabe validieren/filtern |
@output_guardrail | Nach der endgültigen Ausgabe | Validiere die Antwort des Agenten |
| Tool-Guardrails | Um jeden Tool-Aufruf | Überprüfe Eingaben/Ausgaben einzelner Tools |
| Tripwire | Bei Auslösung | Wirft eine Exception, um den Lauf zu unterbrechen |
Sessions (Speicher)
from agents import Agent, Runner, SQLiteSession
session = SQLiteSession("user-123", "conversations.db")
Runner.run_sync(agent, "My name is Nick.", session=session)
Runner.run_sync(agent, "What's my name?", session=session) # remembers
| Session | Verwendung |
|---|
SQLiteSession | Lokales/persistentes Gesprächsspeicher |
| In-Memory-Session | Flüchtiger Kontext innerhalb eines Prozesses |
| Benutzerdefinierte Session | Implementiere das Session-Protokoll für deinen eigenen Store |
Tracing
| Funktion | Beschreibung |
|---|
| Automatische Traces | Jeder Runner.run erfasst Modellaufrufe, Tool-Aufrufe, Handoffs, Guardrail-Ergebnisse und Timing |
| Dashboard | Traces erscheinen unter Ihrem Projekt auf der OpenAI-Plattform |
trace(...) | Gruppiere mehrere Läufe in ein Workflow-Trace |
| Externe Prozessoren | Exportiere Spans zu Drittanbieter-Observability-Tools |
Häufige Workflows
# Streaming von Token zu einer UI
import asyncio
from agents import Agent, Runner
async def main():
agent = Agent(name="Writer", instructions="Write vividly.")
streamed = Runner.run_streamed(agent, "Describe a thunderstorm.")
async for event in streamed.stream_events():
print(event)
asyncio.run(main())
Ressourcen