U
    ·ÜŸj²²  ã                   @  s„  d dl m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 ddl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,m-Z- ddl.m/Z/ ddl0m1Z1 ddl2m3Z3 ddgZ4G dd„ deƒZ5G dd„ deƒZ6G dd„ dƒZ7G dd„ dƒZ8G dd„ dƒZ9G d d!„ d!ƒZ:dS )"é    )Úannotations)ÚUnionÚIterableÚOptional)ÚLiteralNé   )Ú_legacy_response)Ú	NOT_GIVENÚBodyÚQueryÚHeadersÚNotGiven)Ú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                   @  sF  e Zd Zeddœdd„ƒZeddœdd„ƒZeeeeeeeeeeddded	œd
ddddddddddddddddœdd„Zdddedœdddddddœdd„Zeeeeeeeeeeedddedœddddd ddddd!dddddddd"œd#d$„Z	eeeeddded%œd&d&d'd(ddddd)d*œ	d+d,„Z
dddedœdddddd-dœd.d/„ZdS )0r#   ÚAssistantsWithRawResponse©Úreturnc                 C  s   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© r+   úD/tmp/pip-unpacked-wheel-2qj3ofc_/openai/resources/beta/assistants.pyÚwith_raw_response&   s    zAssistants.with_raw_responseÚAssistantsWithStreamingResponsec                 C  s   t | ƒS ©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
        )r.   r)   r+   r+   r,   Úwith_streaming_response0   s    z"Assistants.with_streaming_responseN©ÚdescriptionÚinstructionsÚmetadataÚnameÚreasoning_effortÚresponse_formatÚtemperatureÚtool_resourcesÚtoolsÚtop_pÚextra_headersÚextra_queryÚ
extra_bodyÚtimeoutúUnion[str, ChatModel]úOptional[str] | NotGivenúOptional[Metadata] | NotGivenú$Optional[ReasoningEffort] | NotGivenú7Optional[AssistantResponseFormatOptionParam] | NotGivenúOptional[float] | NotGivenú:Optional[assistant_create_params.ToolResources] | NotGivenú'Iterable[AssistantToolParam] | NotGivenúHeaders | NoneúQuery | NoneúBody | Noneú'float | httpx.Timeout | None | NotGivenr   ©Úmodelr2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r'   c                C  sN   ddi|pi –}| j dt|||||||||	|
|dœtjƒt||||d�td�S )á¹  
        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: **o-series models only**

              Constrains effort on reasoning for
              [reasoning models](https://platform.openai.com/docs/guides/reasoning). Currently
              supported values are `low`, `medium`, and `high`. Reducing reasoning effort can
              result in faster responses and fewer tokens used on reasoning in a response.

          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©rM   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   ©r<   r=   r>   r?   ©ÚbodyÚoptionsÚcast_to)Ú_postr   r   ÚAssistantCreateParamsr   r   ©r*   rM   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r+   r+   r,   Úcreate9   s4    dõò   ÿëzAssistants.createrS   Ústr©Úassistant_idr<   r=   r>   r?   r'   c                C  sD   |st d|›�ƒ‚ddi|pi –}| jd|› �t||||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 rO   rP   ú/assistants/rS   ©rV   rW   ©Ú
ValueErrorÚ_getr   r   ©r*   r^   r<   r=   r>   r?   r+   r+   r,   Úretrieve¶   s       ÿûzAssistants.retrieve©r2   r3   r4   rM   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   áÎ  Union[str, Literal[('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')]] | NotGivenú:Optional[assistant_update_params.ToolResources] | NotGiven©r^   r2   r3   r4   rM   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r'   c                C  sf   |st d|›�ƒ‚ddi|pi –}| jd|› �t||||||||	|
||dœtjƒt||||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: **o-series models only**

              Constrains effort on reasoning for
              [reasoning models](https://platform.openai.com/docs/guides/reasoning). Currently
              supported values are `low`, `medium`, and `high`. Reducing reasoning effort can
              result in faster responses and fewer tokens used on reasoning in a response.

          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
        r`   rO   rP   ra   ©r2   r3   r4   rM   r5   r6   r7   r8   r9   r:   r;   rS   rT   )rd   rX   r   r   ÚAssistantUpdateParamsr   r   ©r*   r^   r2   r3   r4   rM   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r+   r+   r,   ÚupdateØ   s:     õò   ÿëzAssistants.update©ÚafterÚbeforeÚlimitÚorderr<   r=   r>   r?   ústr | NotGivenúint | NotGivenú#Literal[('asc', 'desc')] | NotGivenzSyncCursorPage[Assistant]©	rr   rs   rt   ru   r<   r=   r>   r?   r'   c          	      C  sF   ddi|pi –}| j dtt t||||t||||dœtjƒ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
        rO   rP   rQ   )rr   rs   rt   ru   )r<   r=   r>   r?   Úquery)ÚpagerV   rM   )Ú_get_api_listr   r   r   r   r   ÚAssistantListParams©	r*   rr   rs   rt   ru   r<   r=   r>   r?   r+   r+   r,   Úlist‚  s(    +üùûîzAssistants.listr   c                C  sD   |st d|›�ƒ‚ddi|pi –}| jd|› �t||||d�td�S )á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
        r`   rO   rP   ra   rS   rb   ©rd   Ú_deleter   r   rf   r+   r+   r,   ÚdeleteÃ  s       ÿûzAssistants.delete©Ú__name__Ú
__module__Ú__qualname__r   r-   r0   r	   r[   rg   rp   r€   r„   r+   r+   r+   r,   r#   %   sp   	í0 ÷&*Ã2 .ô"G÷c                   @  sF  e Zd Zeddœdd„ƒZeddœdd„ƒZeeeeeeeeeeddded	œd
ddddddddddddddddœdd„Zdddedœdddddddœdd„Zeeeeeeeeeeedddedœddddd ddddd!dddddddd"œd#d$„Z	eeeeddded%œd&d&d'd(ddddd)d*œ	d+d,„Z
dddedœdddddd-dœd.d/„ZdS )0r$   ÚAsyncAssistantsWithRawResponser&   c                 C  s   t | ƒS r(   )r‰   r)   r+   r+   r,   r-   ç  s    z!AsyncAssistants.with_raw_responseÚ$AsyncAssistantsWithStreamingResponsec                 C  s   t | ƒS r/   )rŠ   r)   r+   r+   r,   r0   ñ  s    z'AsyncAssistants.with_streaming_responseNr1   r@   rA   rB   rC   rD   rE   rF   rG   rH   rI   rJ   rK   r   rL   c                Ã  sZ   ddi|pi –}| j dt|||||||||	|
|dœtjƒI dH t||||d�td�I dH S )rN   rO   rP   rQ   rR   NrS   rT   )rX   r   r   rY   r   r   rZ   r+   r+   r,   r[   ú  s4    dõò   ÿëzAsyncAssistants.createrS   r\   r]   c                Ã  sJ   |st d|›�ƒ‚ddi|pi –}| jd|› �t||||d�td�I dH S )r_   r`   rO   rP   ra   rS   rb   Nrc   rf   r+   r+   r,   rg   w  s       ÿûzAsyncAssistants.retrieverh   ri   rj   rk   c                Ã  sr   |st d|›�ƒ‚ddi|pi –}| jd|› �t||||||||	|
||dœtjƒI dH t||||d�td�I dH S )	rl   r`   rO   rP   ra   rm   NrS   rT   )rd   rX   r   r   rn   r   r   ro   r+   r+   r,   rp   ™  s:     õò   ÿëzAsyncAssistants.updaterq   rv   rw   rx   z5AsyncPaginator[Assistant, AsyncCursorPage[Assistant]]ry   c          	      C  sF   ddi|pi –}| j dtt t||||t||||dœtjƒd�td�S rz   )r}   r   r   r   r   r   r~   r   r+   r+   r,   r€   C  s(    +üùûîzAsyncAssistants.listr   c                Ã  sJ   |st d|›�ƒ‚ddi|pi –}| jd|› �t||||d�td�I dH S )r�   r`   rO   rP   ra   rS   rb   Nr‚   rf   r+   r+   r,   r„   „  s       ÿûzAsyncAssistants.deleter…   r+   r+   r+   r,   r$   æ  sp   	í0 ÷&*Ã2 .ô"G÷c                   @  s   e Zd Zdddœdd„ZdS )r%   r#   ÚNone©Ú
assistantsr'   c                 C  sP   || _ t |j¡| _t |j¡| _t |j¡| _t |j¡| _t |j¡| _d S ©N)Ú_assistantsr   Zto_raw_response_wrapperr[   rg   rp   r€   r„   ©r*   r�   r+   r+   r,   Ú__init__¨  s     ÿÿÿÿÿz"AssistantsWithRawResponse.__init__N©r†   r‡   rˆ   r‘   r+   r+   r+   r,   r%   §  s   r%   c                   @  s   e Zd Zdddœdd„ZdS )r‰   r$   r‹   rŒ   c                 C  sP   || _ t |j¡| _t |j¡| _t |j¡| _t |j¡| _t |j¡| _d S rŽ   )r�   r   Zasync_to_raw_response_wrapperr[   rg   rp   r€   r„   r�   r+   r+   r,   r‘   ½  s     ÿÿÿÿÿz'AsyncAssistantsWithRawResponse.__init__Nr’   r+   r+   r+   r,   r‰   ¼  s   r‰   c                   @  s   e Zd Zdddœdd„ZdS )r.   r#   r‹   rŒ   c                 C  sF   || _ t|jƒ| _t|jƒ| _t|jƒ| _t|jƒ| _t|jƒ| _d S rŽ   )r�   r   r[   rg   rp   r€   r„   r�   r+   r+   r,   r‘   Ò  s     ÿÿÿÿÿz(AssistantsWithStreamingResponse.__init__Nr’   r+   r+   r+   r,   r.   Ñ  s   r.   c                   @  s   e Zd Zdddœdd„ZdS )rŠ   r$   r‹   rŒ   c                 C  sF   || _ t|jƒ| _t|jƒ| _t|jƒ| _t|jƒ| _t|jƒ| _d S rŽ   )r�   r   r[   rg   rp   r€   r„   r�   r+   r+   r,   r‘   ç  s     ÿÿÿÿÿz-AsyncAssistantsWithStreamingResponse.__init__Nr’   r+   r+   r+   r,   rŠ   æ  s   rŠ   );Ú
__future__r   Útypingr   r   r   Útyping_extensionsr   ZhttpxÚ r   Ú_typesr	   r
   r   r   r   Ú_utilsr   r   Ú_compatr   Z	_resourcer   r   Ú	_responser   r   Z
paginationr   r   Z
types.betar   r   r   Z_base_clientr   r   Ztypes.beta.assistantr   Ztypes.shared.chat_modelr   Ztypes.beta.assistant_deletedr   Ztypes.shared_params.metadatar   Ztypes.shared.reasoning_effortr    Ztypes.beta.assistant_tool_paramr!   Z1types.beta.assistant_response_format_option_paramr"   Ú__all__r#   r$   r%   r‰   r.   rŠ   r+   r+   r+   r,   Ú<module>   s@      D   D