o
    $i                     @  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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l0m1Z1 ddl2m3Z3 ddl4m5Z5 ddgZ6G dd deZ7G dd deZ8G dd dZ9G dd dZ:G dd dZ;G d d! d!Z<dS )"    )annotations)UnionIterableOptional)LiteralN   )_legacy_response)BodyOmitQueryHeadersNotGivenomit	not_given)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ed@ddZedAddZeeeeeeeeeeddded	dBd&d'Zddded(dCd+d,Z	eeeeeeeeeeeddded-dDd0d1Z
eeeeddded2dEd;d<Zddded(dFd>d?ZdS )Gr%   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 r.   `/var/www/html/flask_server/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
        )r2   r,   r.   r.   r/   with_streaming_response-      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modelUnion[str, ChatModel]r7   Optional[str] | Omitr8   r9   Optional[Metadata] | Omitr:   r;    Optional[ReasoningEffort] | Omitr<   3Optional[AssistantResponseFormatOptionParam] | Omitr=   Optional[float] | Omitr>   6Optional[assistant_create_params.ToolResources] | Omitr?   #Iterable[AssistantToolParam] | Omitr@   rA   Headers | NonerB   Query | NonerC   Body | NonerD   'float | httpx.Timeout | None | NotGivenr   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: Constrains effort on reasoning for
              [reasoning models](https://platform.openai.com/docs/guides/reasoning). Currently
              supported values are `minimal`, `low`, `medium`, and `high`. Reducing reasoning
              effort can result in faster responses and fewer tokens used on reasoning in a
              response.

              Note: The `gpt-5-pro` model defaults to (and only supports) `high` reasoning
              effort.

          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rE   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   rD   bodyoptionscast_to)_postr   r   AssistantCreateParamsr   r   r-   rE   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   rD   r.   r.   r/   create6   s.   fzAssistants.createrW   assistant_idstrc                C  D   |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 rS   rT   /assistants/rW   rZ   r[   
ValueError_getr   r   r-   r`   rA   rB   rC   rD   r.   r.   r/   retrieve      zAssistants.retriever7   r8   r9   rE   r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   rD   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']] | Omit6Optional[assistant_update_params.ToolResources] | Omitc                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: Constrains effort on reasoning for
              [reasoning models](https://platform.openai.com/docs/guides/reasoning). Currently
              supported values are `minimal`, `low`, `medium`, and `high`. Reducing reasoning
              effort can result in faster responses and fewer tokens used on reasoning in a
              response.

              Note: The `gpt-5-pro` model defaults to (and only supports) `high` reasoning
              effort.

          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
        rd   rS   rT   re   r7   r8   r9   rE   r:   r;   r<   r=   r>   r?   r@   rW   rX   )rh   r\   r   r   AssistantUpdateParamsr   r   r-   r`   r7   r8   r9   rE   r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   rD   r.   r.   r/   update   s4    zAssistants.updateafterbeforelimitorderrA   rB   rC   rD   rv   
str | Omitrw   rx   
int | Omitry   Literal['asc', 'desc'] | OmitSyncCursorPage[Assistant]c          	      C  F   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
        rS   rT   rU   )rv   rw   rx   ry   )rA   rB   rC   rD   query)pagerZ   rE   )_get_api_listr   r   r   r   r   AssistantListParams	r-   rv   rw   rx   ry   rA   rB   rC   rD   r.   r.   r/   list  (   +zAssistants.listr    c                C  rb   )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
        rd   rS   rT   re   rW   rf   rh   _deleter   r    rj   r.   r.   r/   delete  rl   zAssistants.delete)r(   r)   )r(   r2    rE   rF   r7   rG   r8   rG   r9   rH   r:   rG   r;   rI   r<   rJ   r=   rK   r>   rL   r?   rM   r@   rK   rA   rN   rB   rO   rC   rP   rD   rQ   r(   r   r`   ra   rA   rN   rB   rO   rC   rP   rD   rQ   r(   r   "r`   ra   r7   rG   r8   rG   r9   rH   rE   rn   r:   rG   r;   rI   r<   rJ   r=   rK   r>   ro   r?   rM   r@   rK   rA   rN   rB   rO   rC   rP   rD   rQ   r(   r   )rv   rz   rw   rz   rx   r{   ry   r|   rA   rN   rB   rO   rC   rP   rD   rQ   r(   r}   r`   ra   rA   rN   rB   rO   rC   rP   rD   rQ   r(   r    __name__
__module____qualname__r   r0   r4   r   r   r_   rk   rt   r   r   r.   r.   r.   r/   r%   "   r    	 &0 6Gc                   @  r'   )Gr&   r(   AsyncAssistantsWithRawResponsec                 C  r*   r+   )r   r,   r.   r.   r/   r0     r1   z!AsyncAssistants.with_raw_response$AsyncAssistantsWithStreamingResponsec                 C  r*   r3   )r   r,   r.   r.   r/   r4     r5   z'AsyncAssistants.with_streaming_responseNr6   rE   rF   r7   rG   r8   r9   rH   r:   r;   rI   r<   rJ   r=   rK   r>   rL   r?   rM   r@   rA   rN   rB   rO   rC   rP   rD   rQ   r   c                  s\   ddi|pi }| j dt|||||||||	|
|dtjI dH t||||dtdI dH S )rR   rS   rT   rU   rV   NrW   rX   )r\   r   r   r]   r   r   r^   r.   r.   r/   r_     s0   fzAsyncAssistants.createrW   r`   ra   c                  L   |s
t d|ddi|pi }| jd| t||||dtdI dH S )rc   rd   rS   rT   re   rW   rf   Nrg   rj   r.   r.   r/   rk        zAsyncAssistants.retrieverm   rn   ro   c                  st   |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 )	rp   rd   rS   rT   re   rq   NrW   rX   )rh   r\   r   r   rr   r   r   rs   r.   r.   r/   rt     s6    zAsyncAssistants.updateru   rv   rz   rw   rx   r{   ry   r|   5AsyncPaginator[Assistant, AsyncCursorPage[Assistant]]c          	      C  r~   r   )r   r   r   r   r   r   r   r   r.   r.   r/   r   T  r   zAsyncAssistants.listr    c                  r   )r   rd   rS   rT   re   rW   rf   Nr   rj   r.   r.   r/   r     r   zAsyncAssistants.delete)r(   r   )r(   r   r   r   r   )rv   rz   rw   rz   rx   r{   ry   r|   rA   rN   rB   rO   rC   rP   rD   rQ   r(   r   r   r   r.   r.   r.   r/   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_wrapperr_   rk   rt   r   r   r-   r   r.   r.   r/   __init__      
z"AssistantsWithRawResponse.__init__Nr   r%   r(   r   r   r   r   r   r.   r.   r.   r/   r)         r)   c                   @  r   )	r   r   r&   r(   r   c                 C  r   r   )r   r   async_to_raw_response_wrapperr_   rk   rt   r   r   r   r.   r.   r/   r     r   z'AsyncAssistantsWithRawResponse.__init__Nr   r&   r(   r   r   r.   r.   r.   r/   r     r   r   c                   @  r   )	r2   r   r%   r(   r   c                 C  F   || _ t|j| _t|j| _t|j| _t|j| _t|j| _d S r   )r   r   r_   rk   rt   r   r   r   r.   r.   r/   r         
z(AssistantsWithStreamingResponse.__init__Nr   r   r.   r.   r.   r/   r2     r   r2   c                   @  r   )	r   r   r&   r(   r   c                 C  r   r   )r   r   r_   rk   rt   r   r   r   r.   r.   r/   r     r   z-AsyncAssistantsWithStreamingResponse.__init__Nr   r   r.   r.   r.   r/   r     r   r   )=
__future__r   typingr   r   r   typing_extensionsr   httpx r   _typesr	   r
   r   r   r   r   r   _utilsr   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   r2   r   r.   r.   r.   r/   <module>   sB   $   N   N