Fehler bei leeren choices-Arrays in Azure OpenAI Streaming-Antworten
SPDX-FileCopyrightText: 2025 Land Baden-Württemberg <InnoLab@stm.bwl.de> SPDX-License-Identifier: MPL-2.0
Fehler
Als User habe ich einen Fehler(Bug) gefunden, der behoben werden muss. Dazu liefere ich in dieser Vorlage bei allen kursiv beschriebenen Fragen/Unterpunkten alle relevanten Informationen für die Entwicklenden mit.
Bugbeschreibung
Bei Verwendung der Azure OpenAI Api (streaming) werden teilweise (als erster chunk) leere choices-Arrays gesendet welche einen Fehler im chat Microservices auslösen. Dadurch kann ein via Azure OpenAI gehostetes Modell nicht erfolgreich genutzt werden.
Reproduzierbarkeit
Erwartetes Verhalten
Das Modell mit der OpenAI kompatiblen API kann direkt verwendet werden.
Fehlermeldung
ERROR - chat_registry - run_chat_completion_json_stream: Error while processing chat input with model: <src.chat.chat_completion.OpenAIChatCompletion object at 0x7ffffc908290>: list index out of range
Priorität
gering
Umgebung
- Branch: main
- Version: 1.0.0
- Azure OpenAI kompatible API
Zusätzlicher Inhalt
Beispiel Streaming Response mit leerem choice Array:
ChatCompletionChunk(id='', choices=[], created=0, model='', object='', service_tier=None, system_fingerprint=None, usage=None, prompt_filter_results=[{'prompt_index': 0, 'content_filter_results': {'hate': {'filtered': False, 'severity': 'safe'}, 'jailbreak': {'filtered': False, 'detected': False}, 'self_harm': {'filtered': False, 'severity': 'safe'}, 'sexual': {'filtered': False, 'severity': 'safe'}, 'violence': {'filtered': False, 'severity': 'safe'}}}])
Verwendetes Modell / API:
- Llama 3.3 70B
- hosted über die Azure AI Foundy
- Beispiel URL: https://PROJECT_HERE.services.ai.azure.com/openai/v1
Problemstelle im Code:
-
Microservice:
chat -
Datei:
src/chat/chat_completion.py -
Methode:
_extract_text_and_finish_reason -
Beispiel fix: Chunks mit leerem choices Array werden übersprungen, wird dann von der aufrufende Methode
_postprocess_streamgefiltert. Der Fix funktioniert bei mir und damit kann der Azure AI Api Endpoint im chat soweit problemlos verwendet werden.if not chunk.choices or len(chunk.choices) == 0: return None, None
Falls gewünscht kann ich gern einen MR für den Fix oder einen komplexeren Fix bereitstellen bzw. vorbereiten.