Revoke to Openai v0.X

This commit is contained in:
2025-08-25 07:24:54 +00:00
parent 9ca6e9359d
commit 01e9358006

View File

@@ -37,7 +37,7 @@ import requests
from bs4 import BeautifulSoup from bs4 import BeautifulSoup
import pandas as pd import pandas as pd
import openai import openai
#from openai.error import AuthenticationError, OpenAIError, RateLimitError, APIError, Timeout, InvalidRequestError, ServiceUnavailableError from openai.error import AuthenticationError, OpenAIError, RateLimitError, APIError, Timeout, InvalidRequestError, ServiceUnavailableError
from config import (Config, BRANCH_MAPPING_FILE, URL_CHECK_MARKER, USER_AGENTS, LOG_DIR) from config import (Config, BRANCH_MAPPING_FILE, URL_CHECK_MARKER, USER_AGENTS, LOG_DIR)
# Optionale Bibliotheken # Optionale Bibliotheken
@@ -759,22 +759,20 @@ def initialize_target_schema():
@retry_on_failure @retry_on_failure
def call_openai_chat(prompt, temperature=0.3, model=None, response_format_json=False): def call_openai_chat(prompt, temperature=0.3, model=None, response_format_json=False):
""" """
Zentrale Funktion fuer OpenAI Chat API Aufrufe (aktualisiert für openai>1.0). Zentrale Funktion fuer OpenAI Chat API Aufrufe (kompatibel mit openai v0.x).
""" """
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
api_key = Config.API_KEYS.get('openai') api_key = Config.API_KEYS.get('openai')
if not api_key: if not api_key:
logger.error("Fehler: OpenAI API Key nicht konfiguriert.") logger.error("Fehler: OpenAI API Key nicht konfiguriert.")
raise openai.AuthenticationError("OpenAI API Key nicht konfiguriert.") raise AuthenticationError("OpenAI API Key nicht konfiguriert.") # Nutzt die alte Fehlerklasse
if not prompt or not isinstance(prompt, str) or not prompt.strip(): if not prompt or not isinstance(prompt, str) or not prompt.strip():
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-4o') current_model = model if model else getattr(Config, 'TOKEN_MODEL', 'gpt-4o')
openai.api_key = api_key # API-Key wird global für das Modul gesetzt
# NEU: Der Client muss instanziiert werden
client = openai.OpenAI(api_key=api_key)
try: try:
request_payload = { request_payload = {
@@ -782,21 +780,24 @@ def call_openai_chat(prompt, temperature=0.3, model=None, response_format_json=F
"messages": [{"role": "user", "content": prompt}], "messages": [{"role": "user", "content": prompt}],
"temperature": temperature "temperature": temperature
} }
# Hinweis: Der Parameter 'response_format_json' hat in v0.x keine direkte Entsprechung.
# Die Anforderung für JSON muss im Prompt selbst enthalten sein, was in den aufrufenden
# Funktionen wie evaluate_branche_chatgpt bereits der Fall ist.
if response_format_json: if response_format_json:
logger.debug("Fordere JSON-Output von der OpenAI API an.") logger.debug("JSON-Output via Prompt angefordert (v0.x Kompatibilitätsmodus).")
request_payload["response_format"] = {"type": "json_object"}
# NEU: Der Aufruf erfolgt über das client-Objekt # Der Aufruf erfolgt über die statische Methode ChatCompletion.create
response = client.chat.completions.create(**request_payload) response = openai.ChatCompletion.create(**request_payload)
result = response.choices[0].message.content.strip() result = response['choices'][0]['message']['content'].strip()
return result return result
# NEU: Angepasste Fehlerbehandlung für die neue Bibliothek # Die Fehlerbehandlung hier fängt allgemeine Fehler ab, spezifische Fehler
except openai.APIError as e: # werden vom @retry_on_failure Decorator behandelt.
except APIError as e: # Nutzt die alte Fehlerklasse
logger.error(f"OpenAI API Fehler: {e}") logger.error(f"OpenAI API Fehler: {e}")
raise e # Erneut auslösen für den @retry_on_failure Decorator raise e # Erneut auslösen für den Decorator
except Exception as e: except Exception as e:
logger.error(f"Unerwarteter Fehler beim OpenAI-Aufruf: {e}") logger.error(f"Unerwarteter Fehler beim OpenAI-Aufruf: {e}")
raise e raise e