Ë
    õ¡ŸjØ  ã                  óŠ   — U d Z ddlmZ ddlZddlZddlmZ  ej                  e«      Z	ddddd	œZ
d
ed<   dd„Z	 	 	 	 	 	 dd„Zy)zÈ
author: Yagnik Poshiya
organization: Webbrains Technologies Private Limited

Builds the correct LLMClient for a given provider name.
API key env var convention: {PROVIDER_NAME_UPPERCASE}_LLM_API_KEY
é    )ÚannotationsN)Ú	LLMClientÚgoogleÚopenaiÚ	anthropicÚ
openrouter)r   r   r   r   zdict[str, str]Ú_PROVIDER_ALIASESc                ó¶   — | j                  «       › d�}t        j                  j                  |«      xs dj	                  «       }|st        d| › d|› d�«      ‚|S )NÚ_LLM_API_KEYÚ z%API key not configured for provider 'z'. Set z in the RAG agent .env file.)ÚupperÚosÚenvironÚgetÚstripÚ
ValueError)Úprovider_nameÚenv_keyÚvalues      úC/var/www/html/agent-engine/apps/agents/rag-agent/src/llm/factory.pyÚ_resolve_api_keyr      si   € Ø×$Ñ$Ó&Ð' |Ð4€GÜ�Z‰Z�^‰^˜GÓ$Ò*¨×1Ñ1Ó3€EÙÜØ3°M°?ð CØ�)Ð7ð9ó
ð 	
ð €Ló    c                ó¾  — | j                  «       j                  «       }t        j                  |«      }|€;t	        d| › ddj                  t        t        j                  «       «      «      › �«      ‚t        |«      }|dk(  rddl	m
}  |||¬«      S |dk(  rdd	lm}  |||¬«      S |d
k(  rddlm}  |||¬«      S |dk(  rddlm}  |||¬«      S t	        d| › d�«      ‚)NzUnsupported LLM provider: 'z'. Supported: z, r   r   )ÚGoogleLLMClient)Úapi_keyÚmodel_identifierr   )ÚOpenAILLMClientr   )ÚAnthropicLLMClientr   )ÚOpenRouterLLMClientú')r   Úlowerr	   r   r   ÚjoinÚsortedÚkeysr   Úllm.google_llmr   Úllm.openai_llmr   Úllm.anthropic_llmr   Úllm.openrouter_llmr   )	r   r   ÚkeyÚresolvedr   r   r   r   r   s	            r   Úbuild_llm_clientr+   %   só   € ð ×
Ñ
Ó
×
%Ñ
%Ó
'€CÜ ×$Ñ$ SÓ)€HØÐÜØ)¨-¨ð 9ØŸ)™)¤FÔ+<×+AÑ+AÓ+CÓ$DÓEÐFðHó
ð 	
ô
 ˜xÓ(€Gà�8ÒÝ2Ù wÐAQÔRÐRà�8ÒÝ2Ù wÐAQÔRÐRà�;ÒÝ8Ù!¨'ÐDTÔUÐUà�<ÒÝ:Ù"¨7ÐEUÔVÐVä
Ð2°=°/ÀÐCÓ
DÐDr   )r   ÚstrÚreturnr,   )r   r,   r   r,   r-   r   )Ú__doc__Ú
__future__r   Úloggingr   Úllm.baser   Ú	getLoggerÚ__name__Úloggerr	   Ú__annotations__r   r+   © r   r   ú<module>r7      so   ðòõ #ã Û 	å à	ˆ×	Ñ	˜8Ó	$€ð ØØØñ	%Ð �>ó óðEØðEàðEð ôEr   