Ë
    uPêj‚  ã                   óÄ   — d Z ddlZddlmZmZmZ ddlZddlmZ ddl	m
Z
 ddlmZ ddlmZ ddlmZ dd	lmZ d
dlmZ d
dlmZmZmZ er	ddlmZ eZneZ G d„ de«      Zy)zï
GitHub Copilot Embedding API Configuration.

This module provides the configuration for GitHub Copilot's Embedding API.

Implementation based on analysis of the copilot-api project by caozhiyuan:
https://github.com/caozhiyuan/copilot-api
é    N)ÚTYPE_CHECKINGÚAnyÚFinal)Úverbose_logger)ÚAuthenticationError)ÚBaseEmbeddingConfig)ÚAllEmbeddingInputValues)ÚEmbeddingResponse)Ú convert_to_model_response_objecté   )ÚAuthenticator)ÚDEFAULT_GITHUB_COPILOT_API_BASEÚGetAPIKeyErrorÚget_copilot_default_headers)ÚLoggingc                   ó>  ‡ — e Zd ZdZdˆ fd„Z	 	 ddedededed	ed
edz  dedz  defd„Z	 ddedz  d
edz  deded	ede	dz  defd„Z
dededededef
d„Zdedej                  deded
edz  deded	edefd„Zdedefd„Zdededede	def
d„Zdedededefd„Zˆ xZS ) ÚGithubCopilotEmbeddingConfigzt
    Configuration for GitHub Copilot's Embedding API.

    Reference: https://api.githubcopilot.com/embeddings
    ÚreturnNc                 ó@   •— t         ‰| �  «        t        «       | _        y ©N)ÚsuperÚ__init__r   Úauthenticator)ÚselfÚ	__class__s    €úy/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/litellm/llms/github_copilot/embedding/transformation.pyr   z%GithubCopilotEmbeddingConfig.__init__,   s   ø€ Ü‰ÑÔÜ*›_ˆÕó    ÚheadersÚmodelÚmessagesÚoptional_paramsÚlitellm_paramsÚapi_keyÚapi_basec                 óú   — 	 | j                   j                  «       }|st        |dd¬«      ‚t        |«      }i |¥|¥}	t	        j
                  d|«       |	S # t        $ r}
t        |dt        |
«      ¬«      ‚d}
~
ww xY w)zQ
        Validate environment and set up headers for GitHub Copilot API.
        Úgithub_copilotzNGitHub Copilot API key is required. Please authenticate via OAuth Device Flow.)r   Úllm_providerÚmessagezJGitHub Copilot Embedding API: Successfully configured headers for model %sN)r   Úget_api_keyr   r   r   Údebugr   Ústr)r   r   r   r    r!   r"   r#   r$   Údefault_headersÚmerged_headersÚes              r   Úvalidate_environmentz1GithubCopilotEmbeddingConfig.validate_environment0   s•   € ð	à×(Ñ(×4Ñ4Ó6ˆGáÜ)ØØ!1Ølôð ô &AÀÓ%IˆOð %C Ð$B¸'Ð$BˆNä× Ñ Ð!mÐotÔuà!Ð!øäò 	Ü%ØØ-Ü˜A›ôð ûð	ús   ‚AA Á	A:ÁA5Á5A:Ústreamc                 ó¨   — |xs9 | j                   j                  «       xs t        j                  d«      xs t        }|j                  d«      }|› d�S )zQ
        Get the complete URL for GitHub Copilot Embedding API endpoint.
        ÚGITHUB_COPILOT_API_BASEú/z/embeddings)r   Úget_api_baseÚosÚgetenvr   Úrstrip)r   r$   r#   r   r!   r"   r0   Úeffective_api_bases           r   Úget_complete_urlz-GithubCopilotEmbeddingConfig.get_complete_urlY   sb   € ð ò /Ø×!Ñ!×.Ñ.Ó0ò/ä�y‰yÐ2Ó3ò/ô /ð	 	ð 0×6Ñ6°sÓ;Ðð %Ð% [Ð1Ð1r   Úinputc                 ó~   — t        |t        «      r|g}|j                  d«      r|j                  ddd«      }||dœ|¥S )zG
        Transform embedding request to GitHub Copilot format.
        zgithub_copilot/Ú é   )r   r:   )Ú
isinstancer+   Ú
startswithÚreplace)r   r   r:   r!   r   s        r   Útransform_embedding_requestz8GithubCopilotEmbeddingConfig.transform_embedding_requests   sU   € ô �eœSÔ!Ø�GˆEð ×ÑÐ-Ô.Ø—M‘MÐ"3°R¸Ó;ˆEð Øñ
ð ð
ð 	
r   Úraw_responseÚmodel_responseÚlogging_objÚrequest_datac	                 óv   — |j                  |j                  ¬«       |j                  «       }	t        |	|d¬«      S )zJ
        Transform embedding response from GitHub Copilot format.
        )Úoriginal_responseÚ	embedding)Úresponse_objectÚmodel_response_objectÚresponse_type)Ú	post_callÚtextÚjsonr   )
r   r   rB   rC   rD   r#   rE   r!   r"   Úresponse_jsons
             r   Útransform_embedding_responsez9GithubCopilotEmbeddingConfig.transform_embedding_responseŒ   sA   € ð 	×Ñ°×0AÑ0AÐÔBð  ,×0Ñ0Ó2ˆä/Ø)Ø"0Ø%ô
ð 	
r   c                 ó
   — g d¢S )N)ÚtimeoutÚ
dimensionsÚencoding_formatÚuser© )r   r   s     r   Úget_supported_openai_paramsz8GithubCopilotEmbeddingConfig.get_supported_openai_params¥   s   € ò
ð 	
r   Únon_default_paramsÚdrop_paramsc                 óh   — |j                  «       D ]  \  }}|| j                  |«      v sŒ|||<   Œ  |S r   )ÚitemsrW   )r   rX   r!   r   rY   ÚparamÚvalues          r   Úmap_openai_paramsz.GithubCopilotEmbeddingConfig.map_openai_params­   sE   € ð /×4Ñ4Ó6ò 	/‰LˆE�5Ø˜×8Ñ8¸Ó?Ò?Ø).� Ò&ð	/ð Ðr   Úerror_messageÚstatus_codec                 ó@   — ddl m}  |«       j                  |||¬«      S )Nr   )ÚOpenAIConfig)r_   r`   r   )Úlitellm.llms.openai.openairb   Úget_error_class)r   r_   r`   r   rb   s        r   rd   z,GithubCopilotEmbeddingConfig.get_error_class¹   s!   € Ý;á‹~×-Ñ-¸MÐWbÐlsÐ-ÓtÐtr   )r   N)NNr   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   Údictr+   Úlistr/   Úboolr9   r	   rA   ÚhttpxÚResponser
   ÚLiteLLMLoggingObjrP   rW   r^   Úintr   rd   Ú__classcell__)r   s   @r   r   r   %   sÔ  ø„ ñõ-ð #Ø#ñ'àð'ð ð'ð ð	'ð
 ð'ð ð'ð �t‘ð'ð ˜‘*ð'ð 
ó'ð` #ñ2à˜‘*ð2ð �t‘ð2ð ð	2ð
 ð2ð ð2ð �t‘ð2ð 
ó2ð4
àð
ð 'ð
ð ð	
ð
 ð
ð 
ó
ð2
àð
ð —n‘nð
ð *ð	
ð
 'ð
ð �t‘ð
ð ð
ð ð
ð ð
ð 
ó
ð2
°ð 
¸ó 
ð
à ð
ð ð
ð ð	
ð
 ð
ð 
ó
ðu¨Sð u¸sð uÈSð uÐUX÷ ur   r   )rh   r5   Útypingr   r   r   rl   Úlitellm._loggingr   Úlitellm.exceptionsr   Ú.litellm.llms.base_llm.embedding.transformationr   Úlitellm.types.llms.openair	   Úlitellm.types.utilsr
   Úlitellm.utilsr   r   r   Úcommon_utilsr   r   r   Ú*litellm.litellm_core_utils.litellm_loggingr   Ú_LiteLLMLoggingObjrn   r   rV   r   r   ú<module>r{      s\   ðñó 
ß ,Ñ ,ã å +Ý 2Ý NÝ =Ý 1Ý :å )÷ñ ñ ÝXà*ÑàÐôWuÐ#6õ Wur   