Ë
    uPêjH	  ã                   óB   — d Z ddlmZ ddlmZ ddlmZ  G d„ de«      Zy)	aT  
Translate from OpenAI's `/v1/chat/completions` to SageMaker Nova Inference endpoints.

Nova models on SageMaker use OpenAI-compatible request/response format with
additional Nova-specific parameters (top_k, reasoning_effort, etc.).

Docs: https://docs.aws.amazon.com/nova/latest/nova2-userguide/nova-sagemaker-inference-api-reference.html
é    )ÚFinal)ÚAllMessageValuesé   )ÚSagemakerChatConfigc                   ól   ‡ — e Zd ZdZedefd„«       Zdedefˆ fd„Z	dedee
   deded	edefˆ fd
„Zˆ xZS )ÚSagemakerNovaConfigaT  
    Config for Amazon Nova models deployed on SageMaker Inference endpoints.

    Nova uses OpenAI-compatible format (same as sagemaker_chat / HF Messages API)
    but with additional Nova-specific parameters and requires `stream: true` in
    the request body for streaming.

    Usage:
        model="sagemaker_nova/<endpoint-name>"
    Úreturnc                  ó   — y)z>Nova expects `stream: true` in the request body for streaming.T© )Úselfs    úo/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/litellm/llms/sagemaker/nova/transformation.pyÚ%supports_stream_param_in_request_bodyz9SagemakerNovaConfig.supports_stream_param_in_request_body   s   € ð ó    Úmodelc                 óh   •— t         ‰| �  |«      }g d¢}|D ]  }||vsŒ|j                  |«       Œ |S )z3Extend parent params with Nova-specific parameters.)Útop_kÚreasoning_effortÚallowed_token_idsÚtruncate_prompt_tokens)ÚsuperÚget_supported_openai_paramsÚappend)r   r   ÚparamsÚnova_paramsÚpÚ	__class__s        €r   r   z/SagemakerNovaConfig.get_supported_openai_params"   sD   ø€ ä™Ñ;¸EÓBˆò
ˆð ò 	!ˆAØ˜ŠØ—‘˜aÕ ð	!ð ˆr   ÚmessagesÚoptional_paramsÚlitellm_paramsÚheadersc                 óT   •— t         ‰| �  |||||¬«      }|j                  dd«       |S )a9  
        Nova SageMaker endpoints do not accept 'model' in the request body.
        Only supported fields: messages, max_tokens, max_completion_tokens,
        temperature, top_p, top_k, stream, stream_options, logprobs,
        top_logprobs, reasoning_effort, allowed_token_ids, truncate_prompt_tokens.
        )r   r   r   r   r    r   N)r   Útransform_requestÚpop)r   r   r   r   r   r    Úrequest_bodyr   s          €r   r"   z%SagemakerNovaConfig.transform_request0   s@   ø€ ô $™gÑ7ØØØ+Ø)Øð 8ó 
ˆð 	×Ñ˜ $Ô'ØÐr   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚpropertyÚboolr   ÚstrÚlistr   r   Údictr"   Ú__classcell__)r   s   @r   r   r      s€   ø„ ñ	ð ð°tò ó ðð°ð ¸õ ðàðð Ð'Ñ(ðð ð	ð
 ðð ðð 
÷ñ r   r   N)r(   Útypingr   Úlitellm.types.llms.openair   Úchat.transformationr   r   r   r   r   ú<module>r2      s"   ðñõ å 6å 5ô5Ð-õ 5r   