
    sIj                    z    S r SSKJr  SSKrSSKrSSKJr  SSKJr  SSK	J
r
Jr  SS jrSS jrS	 rSS
 jrSS jrg)u7   Cliente OpenAI para Agent v2 (chat y extracción JSON).    )annotationsN)Iterator)Any)load_backend_envsettingsc                     [        5         [        R                  " S5      =(       d    [        R                  =(       d    SR                  5       $ )NOPENAI_API_KEY )r   osgetenvr   openai_api_keystrip     VC:\Users\jesus\Desktop\proyecto_pie360\backend\app\backend\services\agent_v2_openai.py_openai_api_keyr      s1    II&'H8+B+BHbOOQQr   c                 (    [        [        5       5      $ )N)boolr   r   r   r   openai_api_key_configuredr      s    !""r   c                 R    SSK Jn   [        5       nU(       d  [        S5      eU " US9$ )Nr   )OpenAIu2   OPENAI_API_KEY no está configurada en el backend.)api_key)openair   r   
ValueError)r   r   s     r   _clientr      s'    GMNN'""r   c              #  
  #    [        5       nUR                  R                  R                  [        R
                  U SS9nU H<  nUR                  S   R                  R                  =(       d    SnU(       d  M8  Uv   M>     g 7f)NT)modelmessagesstreamr   r
   )	r   chatcompletionscreater   agent_v2_modelchoicesdeltacontent)r   clientr   chunkr%   s        r   stream_chat_completionr)      so     YF[[$$++%% , F
 a &&..4"5K s   A4B:	Bc                   [        5       nUR                  R                  R                  [        R
                  U SS0S9nUR                  S   R                  R                  =(       d    Sn [        R                  " U5      n[        U[        5      (       d  [        S5      eU$ ! [        R                   a  n[        S5      UeS nAff = f)Ntypejson_object)r   r   response_formatr   z{}u$   El modelo no devolvió JSON válido.u0   El modelo devolvió un JSON que no es un objeto.)r   r    r!   r"   r   r#   r$   messager&   jsonloadsJSONDecodeErrorr   
isinstancedict)r   r'   responserawparsedexcs         r   json_chat_completionr8   ,   s    YF{{&&--%%/ . H
 

1

%
%
-
-
5CJC fd##KLLM	  J?@cIJs   -B% %C
9CC
)returnstr)r9   r   )r   list[dict[str, str]]r9   zIterator[str])r   r;   r9   zdict[str, Any])__doc__
__future__r   r/   r   collections.abcr   typingr   app.backend.core.configr   r   r   r   r   r)   r8   r   r   r   <module>rA      s4    = "  	 $  >R
##
r   