
    $^j	                     x    S r SSKrSSKrSSKJrJr  SSKJr   SSKJ	r	  Sr
 " S	 S
\5      rg! \ a    Sr
 Nf = f)u`   
OpenAI Provider für LLM Enrichment.
Verwendet gpt-5-nano (Level 1) oder gpt-5-mini (Level 2).
    N)DictAny   )LLMProvider)OpenAITFc                   T   ^  \ rS rSrSrS	S\4U 4S jjjrS\S\\\4   4S jr	Sr
U =r$ )
OpenAIProvider   z&OpenAI API Provider mit JSON-Response.modelc                    > [         (       d  [        S5      eU=(       d    [        R                  " SS5      n[        TU ]  U5        [        [        R                  " S5      S9U l        SU l        g )Nz3openai nicht installiert. Bitte: pip install openaiOPENAI_MODEL_LOWzgpt-4o-miniOPENAI_API_KEY)api_keyr   )	
HAS_OPENAIImportErrorosgetenvsuper__init__r   clienttokens_used)selfr   	__class__s     /app/llm/openai_provider.pyr   OpenAIProvider.__init__   sU    zSTTE#5}ERYY/?%@A    promptreturnc                     U R                   R                  S5      nU(       a>  U R                  R                  R                  R                  U R                   SUS./SS9nOAU R                  R                  R                  R                  U R                   SUS./SSSS	0S
9nUR                  R                  UR                  R                  -   U l	        UR                  S   R                  R                  R                  5       n[        R                  " U5      nU$ ! [        R                    a  n[#        S[%        U5       35      eSnAf[&         a  n[#        S[%        U5       35      eSnAff = f)z
Ruft OpenAI API auf und parsed JSON Response.

Args:
    prompt: Der Enrichment-Prompt

Returns:
    Dict mit extrahierten Daten

Raises:
    ValueError: Bei API-Fehler oder JSON-Parse-Fehler
zgpt-5user)rolecontenti'  )r   messagesmax_completion_tokensi  g?typejson_object)r   r#   
max_tokenstemperatureresponse_formatr   zJSON_PARSE_ERROR: NzOPENAI_API_ERROR: )r   
startswithr   chatcompletionscreateusageprompt_tokenscompletion_tokensr   choicesmessager"   stripjsonloadsJSONDecodeError
ValueErrorstr	Exception)r   r   is_reasoningresponseraw_textdataes          r   extractOpenAIProvider.extract    sN   "	<  ::009L;;++77>>**'-&AB*/ ?   ;;++77>>**'-&AB# #%+]$; ?  ,,x~~/O/OO 
  ''*22::@@BH::h'DK## 	<1#a&:;; 	<1#a&:;;	<s$   DD E22E		E2E--E2)r   r   )N)__name__
__module____qualname____firstlineno____doc__r8   r   r   r   r?   __static_attributes____classcell__)r   s   @r   r	   r	      s7    0c  /<c /<d38n /< /<r   r	   )rE   r   r4   typingr   r   baser   openair   r   r   r	    r   r   <module>rL      sG   
 
   J
<<[ <<	  Js   . 99