helpers.py aktualisiert

This commit is contained in:
2025-07-28 11:11:37 +00:00
parent 96e3535c0f
commit 22af96c375

View File

@@ -733,15 +733,17 @@ def initialize_target_schema():
# ============================================================================== # ==============================================================================
@retry_on_failure @retry_on_failure
def call_openai_chat(prompt, temperature=0.3, model=None): def call_openai_chat(prompt, temperature=0.3, model=None, response_format_json=False):
""" """
Zentrale Funktion fuer OpenAI Chat API Aufrufe. Zentrale Funktion fuer OpenAI Chat API Aufrufe.
Wird von anderen globalen Helfern oder DataProcessor Methoden aufgerufen. Wird von anderen globalen Helfern oder DataProcessor Methoden aufgerufen.
NEU: Unterstützt explizite Anforderung des JSON-Formats.
Args: Args:
prompt (str): Der Prompt-Text an die API. prompt (str): Der Prompt-Text an die API.
temperature (float, optional): Die Temperatur fuer die Textgenerierung. Defaults to 0.3. temperature (float, optional): Die Temperatur fuer die Textgenerierung. Defaults to 0.3.
model (str, optional): Das zu verwendende OpenAI Modell. Defaults to Config.TOKEN_MODEL. model (str, optional): Das zu verwendende OpenAI Modell. Defaults to Config.TOKEN_MODEL.
response_format_json (bool, optional): Wenn True, wird die API um eine JSON-Antwort gebeten. Defaults to False.
Returns: Returns:
str: Der bereinigte Antwortstring von der API. str: Der bereinigte Antwortstring von der API.
@@ -756,18 +758,24 @@ def call_openai_chat(prompt, temperature=0.3, model=None):
logger.error("Fehler: Leerer Prompt fuer OpenAI.") logger.error("Fehler: Leerer Prompt fuer OpenAI.")
raise ValueError("Leerer Prompt fuer OpenAI.") raise ValueError("Leerer Prompt fuer OpenAI.")
current_model = model if model else getattr(Config, 'TOKEN_MODEL', 'gpt-3.5-turbo') current_model = model if model else getattr(Config, 'TOKEN_MODEL', 'gpt-4o')
try: try:
# Optional: Token-Zählung für Debugging # Baue die Anfrage-Payload dynamisch auf
# prompt_tokens = token_count(prompt, model=current_model) request_payload = {
# logger.debug(f"Sende Prompt an OpenAI ({current_model}, geschaetzt {prompt_tokens} Tokens)...") "model": current_model,
"messages": [{"role": "user", "content": prompt}],
"temperature": temperature
}
# Füge den response_format Parameter hinzu, wenn er benötigt wird
if response_format_json:
logger.debug("Fordere JSON-Output von der OpenAI API an.")
request_payload["response_format"] = {"type": "json_object"}
# Hinweis: GPT-4o, GPT-4-Turbo und GPT-3.5-Turbo-Modelle unterstützen diesen Modus.
response = openai.ChatCompletion.create( # Führe den API-Call mit dem dynamischen Payload aus
model=current_model, response = openai.ChatCompletion.create(**request_payload)
messages=[{"role": "user", "content": prompt}],
temperature=temperature
)
if not response or not hasattr(response, 'choices') or not response.choices: if not response or not hasattr(response, 'choices') or not response.choices:
logger.error(f"OpenAI Call erfolgreich, aber keine Choices in der Antwort erhalten. Response: {str(response)[:200]}...") logger.error(f"OpenAI Call erfolgreich, aber keine Choices in der Antwort erhalten. Response: {str(response)[:200]}...")