
    7Qj                     :    d dl Z ddlmZ ddlmZ  G d de      Zy)    N   )LLMProvider)parse_json_responsec                   X    e Zd ZdZ	 	 ddedz  dededz  deddf
dZd	ed
ee   defdZ	y)OpenAICompatibleProvidera:  Handles OpenAI's own API and any OpenAI-compatible endpoint (Ollama, vLLM,
    Groq, etc.) - they share the same request/response wire format, so one class
    covers both; only api_key/base_url/model differ, which is exactly how
    goplaces_backend/v4/agent.py toggled between cloud OpenAI and local Ollama.
    Napi_keymodelbase_urluse_json_modereturnc                 X    t        j                  ||      | _        || _        || _        y )N)r   r
   )openaiOpenAIclientr	   r   )selfr   r	   r
   r   s        C/var/www/html/meridian/meridian-ai/app/providers/openai_provider.py__init__z!OpenAICompatibleProvider.__init__   s'     mmGhG
 +    system_promptmessagesc                    d|dg|}| j                   rdddiini } | j                  j                  j                  j                  d| j
                  |d|}t        |j                  d   j                  j                        S )	Nsystem)rolecontentresponse_formattypejson_object)r	   r   r    )
r   r   chatcompletionscreater	   r   choicesmessager   )r   r   r   chat_messageskwargsresponses         r   complete_jsonz&OpenAICompatibleProvider.complete_json   s    "*}EQQAEASAS#fm%<=Y[64;;##//66 
**"
 

 #8#3#3A#6#>#>#F#FGGr   )NT)
__name__
__module____qualname____doc__strboolr   listdictr'   r   r   r   r   r      sn      $"+t+ + *	+
 + 
+H3 H$t* H Hr   r   )r   baser   
json_utilsr   r   r   r   r   <module>r2      s      +H{ Hr   