o
    ØRWj«Ã  ã                   @  s˜  d dl mZ d dlZd dlmZmZmZ d dlmZ d dlZddl	m
Z
 ddlmZmZmZmZmZmZmZ ddlmZmZmZ dd	lmZ dd
lmZmZ ddlmZmZ ddlm Z m!Z! ddl"m#Z#m$Z$m%Z% ddl&m'Z'm(Z( ddl)m*Z* ddl+m,Z, ddl-m.Z. ddl/m0Z0 ddl1m2Z2 ddl3m4Z4 ddl5m6Z6 ddgZ7G dd„ deƒZ8G dd„ deƒZ9G dd„ dƒZ:G dd„ dƒZ;G dd„ dƒZ<G d d!„ d!ƒZ=dS )"é    )ÚannotationsN)ÚUnionÚIterableÚOptional)ÚLiteralé   )Ú_legacy_response)ÚBodyÚOmitÚQueryÚHeadersÚNotGivenÚomitÚ	not_given)Úpath_templateÚmaybe_transformÚasync_maybe_transform)Úcached_property)ÚSyncAPIResourceÚAsyncAPIResource)Úto_streamed_response_wrapperÚ"async_to_streamed_response_wrapper)ÚSyncCursorPageÚAsyncCursorPage)Úassistant_list_paramsÚassistant_create_paramsÚassistant_update_params)ÚAsyncPaginatorÚmake_request_options)Ú	Assistant)Ú	ChatModel)ÚAssistantDeleted)ÚMetadata)ÚReasoningEffort)ÚAssistantToolParam)Ú"AssistantResponseFormatOptionParamÚ
AssistantsÚAsyncAssistantsc                   @  óþ   e Zd ZdZedBdd„ƒZedCdd„ƒZe d	¡e	e	e	e	e	e	e	e	e	e	d
d
d
e
dœdDd(d)„ƒZe d	¡d
d
d
e
d*œdEd-d.„ƒZe d	¡e	e	e	e	e	e	e	e	e	e	e	d
d
d
e
d/œdFd2d3„ƒZe d	¡e	e	e	e	d
d
d
e
d4œdGd=d>„ƒZe d	¡d
d
d
e
d*œdHd@dA„ƒZd
S )Ir&   ú4Build Assistants that can call models and use tools.ÚreturnÚAssistantsWithRawResponsec                 C  ó   t | ƒS ©a  
        This property can be used as a prefix for any HTTP method call to return
        the raw response object instead of the parsed content.

        For more information, see https://www.github.com/openai/openai-python#accessing-raw-response-data-eg-headers
        )r+   ©Úself© r0   úo/home/esfera/Documents/content_generation/venv/lib/python3.10/site-packages/openai/resources/beta/assistants.pyÚwith_raw_response&   ó   zAssistants.with_raw_responseÚAssistantsWithStreamingResponsec                 C  r,   ©zÌ
        An alternative to `.with_raw_response` that doesn't eagerly read the response body.

        For more information, see https://www.github.com/openai/openai-python#with_streaming_response
        )r4   r.   r0   r0   r1   Úwith_streaming_response0   ó   z"Assistants.with_streaming_responseÚ
deprecatedN©ÚdescriptionÚinstructionsÚmetadataÚnameÚreasoning_effortÚresponse_formatÚtemperatureÚtool_resourcesÚtoolsÚtop_pÚextra_headersÚextra_queryÚ
extra_bodyÚtimeoutÚmodelúUnion[str, ChatModel]r:   úOptional[str] | Omitr;   r<   úOptional[Metadata] | Omitr=   r>   ú Optional[ReasoningEffort] | Omitr?   ú3Optional[AssistantResponseFormatOptionParam] | Omitr@   úOptional[float] | OmitrA   ú6Optional[assistant_create_params.ToolResources] | OmitrB   ú#Iterable[AssistantToolParam] | OmitrC   rD   úHeaders | NonerE   úQuery | NonerF   úBody | NonerG   ú'float | httpx.Timeout | None | NotGivenr   c                C  sT   ddi|pi ¥}| j dt|||||||||	|
|dœtjƒt||||ddid�td�S )	á2  
        Create an assistant with a model and instructions.

        Args:
          model: ID of the model to use. You can use the
              [List models](https://platform.openai.com/docs/api-reference/models/list) API to
              see all of your available models, or see our
              [Model overview](https://platform.openai.com/docs/models) for descriptions of
              them.

          description: The description of the assistant. The maximum length is 512 characters.

          instructions: The system instructions that the assistant uses. The maximum length is 256,000
              characters.

          metadata: Set of 16 key-value pairs that can be attached to an object. This can be useful
              for storing additional information about the object in a structured format, and
              querying for objects via API or the dashboard.

              Keys are strings with a maximum length of 64 characters. Values are strings with
              a maximum length of 512 characters.

          name: The name of the assistant. The maximum length is 256 characters.

          reasoning_effort: Constrains effort on reasoning for reasoning models. Currently supported values
              are `none`, `minimal`, `low`, `medium`, `high`, `xhigh`, and `max`. Reducing
              reasoning effort can result in faster responses and fewer tokens used on
              reasoning in a response. Not all reasoning models support every value. See the
              [reasoning guide](https://platform.openai.com/docs/guides/reasoning) for
              model-specific support.

          response_format: Specifies the format that the model must output. Compatible with
              [GPT-4o](https://platform.openai.com/docs/models#gpt-4o),
              [GPT-4 Turbo](https://platform.openai.com/docs/models#gpt-4-turbo-and-gpt-4),
              and all GPT-3.5 Turbo models since `gpt-3.5-turbo-1106`.

              Setting to `{ "type": "json_schema", "json_schema": {...} }` enables Structured
              Outputs which ensures the model will match your supplied JSON schema. Learn more
              in the
              [Structured Outputs guide](https://platform.openai.com/docs/guides/structured-outputs).

              Setting to `{ "type": "json_object" }` enables JSON mode, which ensures the
              message the model generates is valid JSON.

              **Important:** when using JSON mode, you **must** also instruct the model to
              produce JSON yourself via a system or user message. Without this, the model may
              generate an unending stream of whitespace until the generation reaches the token
              limit, resulting in a long-running and seemingly "stuck" request. Also note that
              the message content may be partially cut off if `finish_reason="length"`, which
              indicates the generation exceeded `max_tokens` or the conversation exceeded the
              max context length.

          temperature: What sampling temperature to use, between 0 and 2. Higher values like 0.8 will
              make the output more random, while lower values like 0.2 will make it more
              focused and deterministic.

          tool_resources: A set of resources that are used by the assistant's tools. The resources are
              specific to the type of tool. For example, the `code_interpreter` tool requires
              a list of file IDs, while the `file_search` tool requires a list of vector store
              IDs.

          tools: A list of tool enabled on the assistant. There can be a maximum of 128 tools per
              assistant. Tools can be of types `code_interpreter`, `file_search`, or
              `function`.

          top_p: An alternative to sampling with temperature, called nucleus sampling, where the
              model considers the results of the tokens with top_p probability mass. So 0.1
              means only the tokens comprising the top 10% probability mass are considered.

              We generally recommend altering this or temperature but not both.

          extra_headers: Send extra headers

          extra_query: Add additional query parameters to the request

          extra_body: Add additional JSON properties to the request

          timeout: Override the client-level default timeout for this request, in seconds
        úOpenAI-Betaúassistants=v2ú/assistants©rH   r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   Úbearer_authT©rD   rE   rF   rG   Úsecurity©ÚbodyÚoptionsÚcast_to)Ú_postr   r   ÚAssistantCreateParamsr   r   ©r/   rH   r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   rD   rE   rF   rG   r0   r0   r1   Úcreate9   s6   eõòûçzAssistants.create©rD   rE   rF   rG   Úassistant_idÚstrc             	   C  óL   |s	t d|›�ƒ‚ddi|pi ¥}| jtd|d�t||||ddid�td	�S )
áK  
        Retrieves an assistant.

        Args:
          extra_headers: Send extra headers

          extra_query: Add additional query parameters to the request

          extra_body: Add additional JSON properties to the request

          timeout: Override the client-level default timeout for this request, in seconds
        ú;Expected a non-empty value for `assistant_id` but received rV   rW   ú/assistants/{assistant_id}©rf   rZ   Tr[   ©r_   r`   ©Ú
ValueErrorÚ_getr   r   r   ©r/   rf   rD   rE   rF   rG   r0   r0   r1   Úretrieve»   ó   
û÷zAssistants.retrieve©r:   r;   r<   rH   r=   r>   r?   r@   rA   rB   rC   rD   rE   rF   rG   á3  Union[str, Literal['gpt-5', 'gpt-5-mini', 'gpt-5-nano', 'gpt-5-2025-08-07', 'gpt-5-mini-2025-08-07', 'gpt-5-nano-2025-08-07', 'gpt-4.1', 'gpt-4.1-mini', 'gpt-4.1-nano', 'gpt-4.1-2025-04-14', 'gpt-4.1-mini-2025-04-14', 'gpt-4.1-nano-2025-04-14', 'o3-mini', 'o3-mini-2025-01-31', 'o1', 'o1-2024-12-17', 'gpt-4o', 'gpt-4o-2024-11-20', 'gpt-4o-2024-08-06', 'gpt-4o-2024-05-13', 'gpt-4o-mini', 'gpt-4o-mini-2024-07-18', 'gpt-4.5-preview', 'gpt-4.5-preview-2025-02-27', 'gpt-4-turbo', 'gpt-4-turbo-2024-04-09', 'gpt-4-0125-preview', 'gpt-4-turbo-preview', 'gpt-4-1106-preview', 'gpt-4-vision-preview', 'gpt-4', 'gpt-4-0314', 'gpt-4-0613', 'gpt-4-32k', 'gpt-4-32k-0314', 'gpt-4-32k-0613', 'gpt-3.5-turbo', 'gpt-3.5-turbo-16k', 'gpt-3.5-turbo-0613', 'gpt-3.5-turbo-1106', 'gpt-3.5-turbo-0125', 'gpt-3.5-turbo-16k-0613']] | Omitú6Optional[assistant_update_params.ToolResources] | Omitc                C  sn   |s	t d|›�ƒ‚ddi|pi ¥}| jtd|d�t||||||||	|
||dœtjƒt||||ddid	�td
�S )á  Modifies an assistant.

        Args:
          description: The description of the assistant.

        The maximum length is 512 characters.

          instructions: The system instructions that the assistant uses. The maximum length is 256,000
              characters.

          metadata: Set of 16 key-value pairs that can be attached to an object. This can be useful
              for storing additional information about the object in a structured format, and
              querying for objects via API or the dashboard.

              Keys are strings with a maximum length of 64 characters. Values are strings with
              a maximum length of 512 characters.

          model: ID of the model to use. You can use the
              [List models](https://platform.openai.com/docs/api-reference/models/list) API to
              see all of your available models, or see our
              [Model overview](https://platform.openai.com/docs/models) for descriptions of
              them.

          name: The name of the assistant. The maximum length is 256 characters.

          reasoning_effort: Constrains effort on reasoning for reasoning models. Currently supported values
              are `none`, `minimal`, `low`, `medium`, `high`, `xhigh`, and `max`. Reducing
              reasoning effort can result in faster responses and fewer tokens used on
              reasoning in a response. Not all reasoning models support every value. See the
              [reasoning guide](https://platform.openai.com/docs/guides/reasoning) for
              model-specific support.

          response_format: Specifies the format that the model must output. Compatible with
              [GPT-4o](https://platform.openai.com/docs/models#gpt-4o),
              [GPT-4 Turbo](https://platform.openai.com/docs/models#gpt-4-turbo-and-gpt-4),
              and all GPT-3.5 Turbo models since `gpt-3.5-turbo-1106`.

              Setting to `{ "type": "json_schema", "json_schema": {...} }` enables Structured
              Outputs which ensures the model will match your supplied JSON schema. Learn more
              in the
              [Structured Outputs guide](https://platform.openai.com/docs/guides/structured-outputs).

              Setting to `{ "type": "json_object" }` enables JSON mode, which ensures the
              message the model generates is valid JSON.

              **Important:** when using JSON mode, you **must** also instruct the model to
              produce JSON yourself via a system or user message. Without this, the model may
              generate an unending stream of whitespace until the generation reaches the token
              limit, resulting in a long-running and seemingly "stuck" request. Also note that
              the message content may be partially cut off if `finish_reason="length"`, which
              indicates the generation exceeded `max_tokens` or the conversation exceeded the
              max context length.

          temperature: What sampling temperature to use, between 0 and 2. Higher values like 0.8 will
              make the output more random, while lower values like 0.2 will make it more
              focused and deterministic.

          tool_resources: A set of resources that are used by the assistant's tools. The resources are
              specific to the type of tool. For example, the `code_interpreter` tool requires
              a list of file IDs, while the `file_search` tool requires a list of vector store
              IDs.

          tools: A list of tool enabled on the assistant. There can be a maximum of 128 tools per
              assistant. Tools can be of types `code_interpreter`, `file_search`, or
              `function`.

          top_p: An alternative to sampling with temperature, called nucleus sampling, where the
              model considers the results of the tokens with top_p probability mass. So 0.1
              means only the tokens comprising the top 10% probability mass are considered.

              We generally recommend altering this or temperature but not both.

          extra_headers: Send extra headers

          extra_query: Add additional query parameters to the request

          extra_body: Add additional JSON properties to the request

          timeout: Override the client-level default timeout for this request, in seconds
        rj   rV   rW   rk   rl   ©r:   r;   r<   rH   r=   r>   r?   r@   rA   rB   rC   rZ   Tr[   r]   )ro   ra   r   r   r   ÚAssistantUpdateParamsr   r   ©r/   rf   r:   r;   r<   rH   r=   r>   r?   r@   rA   rB   rC   rD   rE   rF   rG   r0   r0   r1   Úupdateâ   s<    
õòûçzAssistants.update©ÚafterÚbeforeÚlimitÚorderrD   rE   rF   rG   r}   ú
str | Omitr~   r   ú
int | Omitr€   úLiteral['asc', 'desc'] | OmitúSyncCursorPage[Assistant]c          	      C  óL   ddi|pi ¥}| j dtt t||||t||||dœtjƒddid�td�S ©	a  Returns a list of assistants.

        Args:
          after: A cursor for use in pagination.

        `after` is an object ID that defines your place
              in the list. For instance, if you make a list request and receive 100 objects,
              ending with obj_foo, your subsequent call can include after=obj_foo in order to
              fetch the next page of the list.

          before: A cursor for use in pagination. `before` is an object ID that defines your place
              in the list. For instance, if you make a list request and receive 100 objects,
              starting with obj_foo, your subsequent call can include before=obj_foo in order
              to fetch the previous page of the list.

          limit: A limit on the number of objects to be returned. Limit can range between 1 and
              100, and the default is 20.

          order: Sort order by the `created_at` timestamp of the objects. `asc` for ascending
              order and `desc` for descending order.

          extra_headers: Send extra headers

          extra_query: Add additional query parameters to the request

          extra_body: Add additional JSON properties to the request

          timeout: Override the client-level default timeout for this request, in seconds
        rV   rW   rX   )r}   r~   r   r€   rZ   T)rD   rE   rF   rG   Úqueryr\   )Úpager_   rH   )Ú_get_api_listr   r   r   r   r   ÚAssistantListParams©	r/   r}   r~   r   r€   rD   rE   rF   rG   r0   r0   r1   Úlist—  ó*   ,üù	òízAssistants.listr!   c             	   C  rh   )
áH  
        Delete an assistant.

        Args:
          extra_headers: Send extra headers

          extra_query: Add additional query parameters to the request

          extra_body: Add additional JSON properties to the request

          timeout: Override the client-level default timeout for this request, in seconds
        rj   rV   rW   rk   rl   rZ   Tr[   rm   ©ro   Ú_deleter   r   r!   rq   r0   r0   r1   ÚdeleteÚ  rs   zAssistants.delete)r*   r+   )r*   r4   © rH   rI   r:   rJ   r;   rJ   r<   rK   r=   rJ   r>   rL   r?   rM   r@   rN   rA   rO   rB   rP   rC   rN   rD   rQ   rE   rR   rF   rS   rG   rT   r*   r   ©rf   rg   rD   rQ   rE   rR   rF   rS   rG   rT   r*   r   ©"rf   rg   r:   rJ   r;   rJ   r<   rK   rH   ru   r=   rJ   r>   rL   r?   rM   r@   rN   rA   rv   rB   rP   rC   rN   rD   rQ   rE   rR   rF   rS   rG   rT   r*   r   )r}   r�   r~   r�   r   r‚   r€   rƒ   rD   rQ   rE   rR   rF   rS   rG   rT   r*   r„   ©rf   rg   rD   rQ   rE   rR   rF   rS   rG   rT   r*   r!   ©Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r2   r6   Útyping_extensionsr8   r   r   rd   rr   r{   rŒ   r‘   r0   r0   r0   r1   r&   #   ó~    	í ÷&0½ 5ôB÷c                   @  r(   )Ir'   r)   r*   ÚAsyncAssistantsWithRawResponsec                 C  r,   r-   )r�   r.   r0   r0   r1   r2     r3   z!AsyncAssistants.with_raw_responseÚ$AsyncAssistantsWithStreamingResponsec                 C  r,   r5   )rž   r.   r0   r0   r1   r6     r7   z'AsyncAssistants.with_streaming_responser8   Nr9   rH   rI   r:   rJ   r;   r<   rK   r=   r>   rL   r?   rM   r@   rN   rA   rO   rB   rP   rC   rD   rQ   rE   rR   rF   rS   rG   rT   r   c                Ã  sb   �ddi|pi ¥}| j dt|||||||||	|
|dœtjƒI dH t||||ddid�td	�I dH S )
rU   rV   rW   rX   rY   NrZ   Tr[   r]   )ra   r   r   rb   r   r   rc   r0   r0   r1   rd     s8   €eõòûçzAsyncAssistants.createre   rf   rg   c             	   Ã  óT   �|s
t d|›�ƒ‚ddi|pi ¥}| jtd|d�t||||ddid�td	�I d
H S )ri   rj   rV   rW   rk   rl   rZ   Tr[   rm   Nrn   rq   r0   r0   r1   rr   š  ó   €
û÷zAsyncAssistants.retrievert   ru   rv   c                Ã  s|   �|s
t d|›�ƒ‚ddi|pi ¥}| jtd|d�t||||||||	|
||dœtjƒI dH t||||dd	id
�td�I dH S )rw   rj   rV   rW   rk   rl   rx   NrZ   Tr[   r]   )ro   ra   r   r   r   ry   r   r   rz   r0   r0   r1   r{   Á  s>   € 
õòûçzAsyncAssistants.updater|   r}   r�   r~   r   r‚   r€   rƒ   ú5AsyncPaginator[Assistant, AsyncCursorPage[Assistant]]c          	      C  r…   r†   )r‰   r   r   r   r   r   rŠ   r‹   r0   r0   r1   rŒ   v  r�   zAsyncAssistants.listr!   c             	   Ã  rŸ   )rŽ   rj   rV   rW   rk   rl   rZ   Tr[   rm   Nr�   rq   r0   r0   r1   r‘   ¹  r    zAsyncAssistants.delete)r*   r�   )r*   rž   r’   r“   r”   )r}   r�   r~   r�   r   r‚   r€   rƒ   rD   rQ   rE   rR   rF   rS   rG   rT   r*   r¡   r•   r–   r0   r0   r0   r1   r'     rœ   c                   @  ó   e Zd Zddd„ZdS )	r+   Ú
assistantsr&   r*   ÚNonec                 C  óP   || _ t |j¡| _t |j¡| _t |j¡| _t |j¡| _t |j¡| _d S ©N)Ú_assistantsr   Úto_raw_response_wrapperrd   rr   r{   rŒ   r‘   ©r/   r£   r0   r0   r1   Ú__init__â  ó*   ÿÿÿÿÿÿÿÿÿÿz"AssistantsWithRawResponse.__init__N©r£   r&   r*   r¤   ©r—   r˜   r™   rª   r0   r0   r0   r1   r+   á  ó    r+   c                   @  r¢   )	r�   r£   r'   r*   r¤   c                 C  r¥   r¦   )r§   r   Úasync_to_raw_response_wrapperrd   rr   r{   rŒ   r‘   r©   r0   r0   r1   rª     r«   z'AsyncAssistantsWithRawResponse.__init__N©r£   r'   r*   r¤   r­   r0   r0   r0   r1   r�      r®   r�   c                   @  r¢   )	r4   r£   r&   r*   r¤   c                 C  óF   || _ t|jƒ| _t|jƒ| _t|jƒ| _t|jƒ| _t|jƒ| _d S r¦   )r§   r   rd   rr   r{   rŒ   r‘   r©   r0   r0   r1   rª      ó*   ÿÿÿÿÿÿÿÿÿÿz(AssistantsWithStreamingResponse.__init__Nr¬   r­   r0   r0   r0   r1   r4     r®   r4   c                   @  r¢   )	rž   r£   r'   r*   r¤   c                 C  r±   r¦   )r§   r   rd   rr   r{   rŒ   r‘   r©   r0   r0   r1   rª   ?  r²   z-AsyncAssistantsWithStreamingResponse.__init__Nr°   r­   r0   r0   r0   r1   rž   >  r®   rž   )>Ú
__future__r   r›   Útypingr   r   r   r   ÚhttpxÚ r   Ú_typesr	   r
   r   r   r   r   r   Ú_utilsr   r   r   Ú_compatr   Ú	_resourcer   r   Ú	_responser   r   Ú
paginationr   r   Ú
types.betar   r   r   Ú_base_clientr   r   Útypes.beta.assistantr   Útypes.shared.chat_modelr    Útypes.beta.assistant_deletedr!   Útypes.shared_params.metadatar"   Útypes.shared.reasoning_effortr#   Útypes.beta.assistant_tool_paramr$   Ú1types.beta.assistant_response_format_option_paramr%   Ú__all__r&   r'   r+   r�   r4   rž   r0   r0   r0   r1   Ú<module>   sD   $   b   b