o
    h                     @  s,  U d dl 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 d dlmZ d dlmZmZ d dlmZ d d	lmZ d d
lmZmZ d dlmZ d dlmZ d dlmZ G dd dZeG dd dZ eeef Zee!ee!ef f Z"de#d< ee
d e!e df Z$de#d< eG dd dZ%dS )    )annotationsN)Mapping)fieldsreplace)	AnnotatedAnyLiteralUnion)Omit)BodyQuery)ResponseIncludable)	Reasoning)	BaseModelGetCoreSchemaHandler)	dataclass)core_schema)	TypeAliasc                   @  s   e Zd Zed
ddZd	S )_OmitTypeAnnotation_source_typer   _handlerr   returncore_schema.CoreSchemac                 C  sL   d
dd}t t  t |g}t j|t t t|gt dd d	S )NvalueNoner   _Omitc                 S  s   t  S N)r   )r    r   V/var/www/html/openai_agents/venv/lib/python3.10/site-packages/agents/model_settings.pyvalidate_from_none   s   zL_OmitTypeAnnotation.__get_pydantic_core_schema__.<locals>.validate_from_nonec                 S  s   d S r   r   )instancer   r   r   <lambda>+   s    zB_OmitTypeAnnotation.__get_pydantic_core_schema__.<locals>.<lambda>)json_schemapython_schemaserialization)r   r   r   r   )	r   chain_schemanone_schema no_info_plain_validator_functionjson_or_python_schemaunion_schemais_instance_schemar   $plain_serializer_function_ser_schema)clsr   r   r   from_none_schemar   r   r   __get_pydantic_core_schema__   s   
z0_OmitTypeAnnotation.__get_pydantic_core_schema__N)r   r   r   r   r   r   )__name__
__module____qualname__classmethodr.   r   r   r   r   r      s    r   c                   @  s   e Zd ZU ded< ded< dS )MCPToolChoicestrserver_labelnameN)r/   r0   r1   __annotations__r   r   r   r   r3   /   s   
 r3   r   Headers)autorequirednone
ToolChoicec                   @  s0  e Zd ZU dZdZded< 	 dZded< 	 dZded< 	 dZded< 	 dZ	ded	< 	 dZ
d
ed< 	 dZded< 	 dZded< 	 dZded< 	 dZded< 	 dZded< 	 dZd
ed< 	 dZd
ed< 	 dZded< 	 dZded< 	 dZded< 	 dZded< 	 dZded < 	 dZd!ed"< 	 d+d&d'Zd,d)d*ZdS )-ModelSettingsa?  Settings to use when calling an LLM.

    This class holds optional model configuration parameters (e.g. temperature,
    top_p, penalties, truncation, etc.).

    Not all models/providers support all of these parameters, so please check the API documentation
    for the specific model and provider you are using.
    Nzfloat | Nonetemperaturetop_pfrequency_penaltypresence_penaltyzToolChoice | Nonetool_choicezbool | Noneparallel_tool_callsz"Literal['auto', 'disabled'] | None
truncationz
int | None
max_tokenszReasoning | None	reasoningz'Literal['low', 'medium', 'high'] | None	verbosityzdict[str, str] | Nonemetadatastoreinclude_usagez%list[ResponseIncludable | str] | Noneresponse_includetop_logprobszQuery | Noneextra_queryzBody | None
extra_bodyzHeaders | Noneextra_headerszdict[str, Any] | None
extra_argsoverrideModelSettings | Noner   c                   s~    du r| S  fddt | D }| jdus jdur7i }| jr&|| j  jr/| j |r3|nd|d< t| fi |S )zpProduce a new ModelSettings by overlaying any non-None values from the
        override on top of this instance.Nc                   s,   i | ]}t  |jd ur|jt  |jqS r   )getattrr6   ).0fieldrQ   r   r   
<dictcomp>   s
    z)ModelSettings.resolve.<locals>.<dictcomp>rP   )r   rP   updater   )selfrQ   changesmerged_argsr   rV   r   resolve   s   
zModelSettings.resolvedict[str, Any]c                 C  sH   t | }i }| D ]\}}t|tr|jdd||< q|||< q|S )Njson)mode)dataclassesasdictitems
isinstancer   
model_dump)rY   dataclass_dict	json_dict
field_namer   r   r   r   to_json_dict   s   


zModelSettings.to_json_dict)rQ   rR   r   r=   )r   r]   )r/   r0   r1   __doc__r>   r7   r?   r@   rA   rB   rC   rD   rE   rF   rG   rH   rI   rJ   rK   rL   rM   rN   rO   rP   r\   rh   r   r   r   r   r=   :   sT   
 	
r=   )&
__future__r   r`   collections.abcr   r   r   typingr   r   r   r	   openair
   r   openai._typesr   r   openai.types.responsesr   openai.types.sharedr   pydanticr   r   pydantic.dataclassesr   pydantic_corer   typing_extensionsr   r   r3   r4   r8   r7   r<   r=   r   r   r   r   <module>   s*    