o
    ưif                     @   s   d Z ddlmZmZmZmZ ddlZddlmZ ddl	m
Z
mZ ddlmZmZmZmZmZ ddlmZ ddlmZ G d	d
 d
e
ZdS )z8
Anthropic Skills API configuration and transformations
    )AnyDictOptionalTupleN)verbose_logger)BaseSkillsAPIConfigLiteLLMLoggingObj)CreateSkillRequestDeleteSkillResponseListSkillsParamsListSkillsResponseSkill)GenericLiteLLMParams)LlmProvidersc                   @   sJ  e Zd ZdZedefddZdedee	 defddZ
		d#d
ee dedee defddZdede	dedefddZdejdedefddZdede	dedeeef fddZdejdedefddZded
ede	dedeeef f
ddZdejdedefddZded
ede	dedeeef f
dd Zdejdedefd!d"Zd	S )$AnthropicSkillsConfigz+Anthropic-specific Skills API configurationreturnc                 C   s   t jS N)r   Z	ANTHROPIC)self r   c/home/app/Keep/.python/lib/python3.10/site-packages/litellm/llms/anthropic/skills/transformation.pycustom_llm_provider   s   z)AnthropicSkillsConfig.custom_llm_providerheaderslitellm_paramsc                 C   s   ddl m} d}|r|j}||}|std||d< d|d< ddlm} d	|vr/||d	< n*t|d	 trD||d	 vrC|d	 	| nt|d	 t
rY||d	 vrY|d	 |g|d	< d
|d< |S )zAdd Anthropic-specific headersr   AnthropicModelInfoNz,ANTHROPIC_API_KEY is required for Skills APIz	x-api-keyz
2023-06-01zanthropic-version)!ANTHROPIC_SKILLS_API_BETA_VERSIONzanthropic-betazapplication/jsonzcontent-type)#litellm.llms.anthropic.common_utilsr   api_keyZget_api_key
ValueErrorZlitellm.constantsr   
isinstancelistappendstr)r   r   r   r   r   r   r   r   r   validate_environment    s*   

z*AnthropicSkillsConfig.validate_environmentNapi_baseendpointskill_idc                 C   s<   ddl m} |du r| }|r| d| S | d| S )z)Get complete URL for Anthropic Skills APIr   r   Nz/v1/skills/z/v1/)r   r   get_api_base)r   r$   r%   r&   r   r   r   r   get_complete_urlC   s   z&AnthropicSkillsConfig.get_complete_urlcreate_requestc                 C   s"   t d| dd | D }|S )z,Transform create skill request for Anthropicz%Transforming create skill request: %sc                 S   s   i | ]\}}|d ur||qS r   r   ).0kvr   r   r   
<dictcomp>_   s    zHAnthropicSkillsConfig.transform_create_skill_request.<locals>.<dictcomp>)r   debugitems)r   r)   r   r   request_bodyr   r   r   transform_create_skill_requestS   s
   z4AnthropicSkillsConfig.transform_create_skill_requestraw_responselogging_objc                 C   "   |  }td| tdi |S ),Transform Anthropic response to Skill objectz&Transforming create skill response: %sNr   jsonr   r.   r   r   r2   r3   Zresponse_jsonr   r   r   transform_create_skill_responsec   
   z5AnthropicSkillsConfig.transform_create_skill_responselist_paramsc                 C   s   ddl m} ||r|jnd}| j|dd}i }d|v r'|d r'|d |d< d|v r5|d r5|d |d< d|v rC|d rC|d |d< td	| ||fS )
z+Transform list skills request for Anthropicr   r   Nskills)r$   r%   limitpagesourcezEList skills request made to Anthropic Skills endpoint with params: %s)r   r   r'   r$   r(   r   r.   )r   r;   r   r   r   r$   urlZquery_paramsr   r   r   transform_list_skills_requestp   s    z3AnthropicSkillsConfig.transform_list_skills_requestc                 C   r4   )z2Transform Anthropic response to ListSkillsResponsez%Transforming list skills response: %sNr   )r7   r   r.   r   r8   r   r   r   transform_list_skills_response   r:   z4AnthropicSkillsConfig.transform_list_skills_responsec                 C   $   | j |d|d}td| ||fS )z)Transform get skill request for Anthropicr<   r$   r%   r&   zGet skill request - URL: %sr(   r   r.   r   r&   r$   r   r   r@   r   r   r   transform_get_skill_request   
   z1AnthropicSkillsConfig.transform_get_skill_requestc                 C   r4   )r5   z#Transforming get skill response: %sNr   r6   r8   r   r   r   transform_get_skill_response   r:   z2AnthropicSkillsConfig.transform_get_skill_responsec                 C   rC   )z,Transform delete skill request for Anthropicr<   rD   zDelete skill request - URL: %srE   rF   r   r   r   transform_delete_skill_request   rH   z4AnthropicSkillsConfig.transform_delete_skill_requestc                 C   r4   )z3Transform Anthropic response to DeleteSkillResponsez&Transforming delete skill response: %sNr   )r7   r   r.   r
   r8   r   r   r   transform_delete_skill_response   r:   z5AnthropicSkillsConfig.transform_delete_skill_responser   )__name__
__module____qualname____doc__propertyr   r   dictr   r   r#   r"   r(   r	   r   r1   httpxResponser   r   r9   r   r   rA   r   rB   rG   rI   rJ   r
   rK   r   r   r   r   r      s    
'










r   )rO   typingr   r   r   r   rR   Zlitellm._loggingr   Z+litellm.llms.base_llm.skills.transformationr   r   Z#litellm.types.llms.anthropic_skillsr	   r
   r   r   r   Zlitellm.types.routerr   Zlitellm.types.utilsr   r   r   r   r   r   <module>   s    