OpenAI Integration
Regeln
- Verwende das offizielle
openai Paket — new OpenAI({ apiKey: process.env.OPENAI_API_KEY })
- Streaming für Chat:
stream: true mit asynchronem Iterator — warte niemals auf vollständige Antworten für benutzerseitige Antworten
- Funktionsaufruf: Funktionen mit JSON-Schema definieren,
tool_calls in der Antwort verarbeiten, Ergebnisse als Tool-Nachrichten zurückgeben
- Strukturierte Ausgaben:
response_format: { type: "json_schema", json_schema: {...} } oder Zod mit AI SDK verwenden
- Token-Management: Token vor dem Senden schätzen (etwa 4 Zeichen pro Token), Kontext kürzen, um innerhalb der Limits zu bleiben
- Modellauswahl:
gpt-4o für komplexe Überlegungen, gpt-4o-mini für einfache Aufgaben — konfigurierbar machen
- System-Prompt als erste Nachricht — Ton, Einschränkungen und Ausgabeformat festlegen
- Temperatur: 0 für deterministische Ausgaben (Datenextraktion), 0,7-1,0 für kreative Aufgaben
- Ratenbegrenzung:
x-ratelimit-* Header beachten, exponentielle Rückverzögerung bei 429-Fehlern implementieren
Muster
const stream = await openai.chat.completions.create({
model: "gpt-4o",
messages,
stream: true,
});
for await (const chunk of stream) {
const content = chunk.choices[0]?.delta?.content || "";
process.stdout.write(content);
}
const response = await openai.chat.completions.create({
model: "gpt-4o",
messages,
tools: [{ type: "function", function: { name: "get_weather", parameters: schema } }],
});
Vermeiden
- Hartcodierte API-Schlüssel — immer Umgebungsvariablen verwenden
- Token-Limits ignorieren — Token zählen und Nachrichten proaktiv kürzen
gpt-4o für triviale Aufgaben verwenden — gpt-4o-mini nutzen, um Kosten zu sparen
- Fehlende Fehlerbehandlung bei API-Aufrufen — 429-, 500- und Timeout-Fehler elegant behandeln