helpers.py aktualisiert
This commit is contained in:
28
helpers.py
28
helpers.py
@@ -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]}...")
|
||||||
|
|||||||
Reference in New Issue
Block a user