o
    {$f                     @  sl  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gZ0G dd deZ1G dd deZ2G dd dZ3G dd dZ4G dd dZ5G dd dZ6d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)	ChatModel)	Assistant)AssistantDeleted)AssistantToolParam)"AssistantResponseFormatOptionParam
AssistantsAsyncAssistantsc                   @     e Zd Zed=ddZed>ddZeeeeeeeeeddded	d?d$d%Zddded&d@d)d*Zeeeeeeeeeeddded+dAd.d/Z	eeeeddded0dBd8d9Z
ddded&dCd;d<ZdS )Dr!   returnAssistantsWithRawResponsec                 C     t | S N)r%   self r*   V/var/www/html/dev/env/lib/python3.10/site-packages/openai/resources/beta/assistants.pywith_raw_response$      zAssistants.with_raw_responseAssistantsWithStreamingResponsec                 C  r&   r'   )r.   r(   r*   r*   r+   with_streaming_response(   r-   z"Assistants.with_streaming_responseNdescriptioninstructionsmetadatanameresponse_formattemperaturetool_resourcestoolstop_pextra_headersextra_query
extra_bodytimeoutmodelUnion[str, ChatModel]r1   Optional[str] | NotGivenr2   r3   Optional[object] | NotGivenr4   r5   7Optional[AssistantResponseFormatOptionParam] | NotGivenr6   Optional[float] | NotGivenr7   :Optional[assistant_create_params.ToolResources] | NotGivenr8   'Iterable[AssistantToolParam] | NotGivenr9   r:   Headers | Noner;   Query | Noner<   Body | Noner=   'float | httpx.Timeout | None | NotGivenr   c                C  sL   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/overview) 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. Keys
              can be a maximum of 64 characters long and values can be a maxium of 512
              characters long.

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

          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 guarantees 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 guarantees 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
r>   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   bodyoptionscast_to)_postr   r   AssistantCreateParamsr   r   r)   r>   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r*   r*   r+   create,   s,   ZzAssistants.createrO   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 rK   rL   /assistants/rO   rR   rS   
ValueError_getr   r   r)   rX   r:   r;   r<   r=   r*   r*   r+   retrieve      zAssistants.retriever1   r2   r3   r>   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   str | NotGiven:Optional[assistant_update_params.ToolResources] | NotGivenc                C  sd   |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. Keys
              can be a maximum of 64 characters long and values can be a maxium of 512
              characters long.

          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/overview) for
              descriptions of them.

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

          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 guarantees 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 guarantees 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\   rK   rL   r]   
r1   r2   r3   r>   r4   r5   r6   r7   r8   r9   rO   rP   )r`   rT   r   r   AssistantUpdateParamsr   r   r)   rX   r1   r2   r3   r>   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r*   r*   r+   update   s0   \zAssistants.updateafterbeforelimitorderr:   r;   r<   r=   rn   ro   rp   int | NotGivenrq   !Literal['asc', 'desc'] | NotGiven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,
              ending 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
        rK   rL   rM   )rn   ro   rp   rq   )r:   r;   r<   r=   query)pagerR   r>   )_get_api_listr   r   r   r   r   AssistantListParams	r)   rn   ro   rp   rq   r:   r;   r<   r=   r*   r*   r+   list6  (   +zAssistants.listr   c                C  rZ   )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\   rK   rL   r]   rO   r^   r`   _deleter   r   rb   r*   r*   r+   deletew  rd   zAssistants.delete)r$   r%   )r$   r.   r>   r?   r1   r@   r2   r@   r3   rA   r4   r@   r5   rB   r6   rC   r7   rD   r8   rE   r9   rC   r:   rF   r;   rG   r<   rH   r=   rI   r$   r   rX   rY   r:   rF   r;   rG   r<   rH   r=   rI   r$   r    rX   rY   r1   r@   r2   r@   r3   rA   r>   rf   r4   r@   r5   rB   r6   rC   r7   rg   r8   rE   r9   rC   r:   rF   r;   rG   r<   rH   r=   rI   r$   r   )rn   rf   ro   rf   rp   rr   rq   rs   r:   rF   r;   rG   r<   rH   r=   rI   r$   rt   rX   rY   r:   rF   r;   rG   r<   rH   r=   rI   r$   r   __name__
__module____qualname__r   r,   r/   r	   rW   rc   rl   r|   r   r*   r*   r*   r+   r!   #   j    x&yGc                   @  r#   )Dr"   r$   AsyncAssistantsWithRawResponsec                 C  r&   r'   )r   r(   r*   r*   r+   r,     r-   z!AsyncAssistants.with_raw_response$AsyncAssistantsWithStreamingResponsec                 C  r&   r'   )r   r(   r*   r*   r+   r/     r-   z'AsyncAssistants.with_streaming_responseNr0   r>   r?   r1   r@   r2   r3   rA   r4   r5   rB   r6   rC   r7   rD   r8   rE   r9   r:   rF   r;   rG   r<   rH   r=   rI   r   c                  sZ   ddi|pi }| j dt|||||||||	|
d
tjI dH t||||dtdI dH S )rJ   rK   rL   rM   rN   NrO   rP   )rT   r   r   rU   r   r   rV   r*   r*   r+   rW     s.   ZzAsyncAssistants.createrO   rX   rY   c                  L   |s
t d|ddi|pi }| jd| t||||dtdI dH S )r[   r\   rK   rL   r]   rO   r^   Nr_   rb   r*   r*   r+   rc        zAsyncAssistants.retrievere   rf   rg   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 )	rh   r\   rK   rL   r]   ri   NrO   rP   )r`   rT   r   r   rj   r   r   rk   r*   r*   r+   rl   7  s2   \zAsyncAssistants.updaterm   rn   ro   rp   rr   rq   rs   5AsyncPaginator[Assistant, AsyncCursorPage[Assistant]]c          	      C  ru   rv   )ry   r   r   r   r   r   rz   r{   r*   r*   r+   r|     r}   zAsyncAssistants.listr   c                  r   )r~   r\   rK   rL   r]   rO   r^   Nr   rb   r*   r*   r+   r     r   zAsyncAssistants.delete)r$   r   )r$   r   r   r   r   )rn   rf   ro   rf   rp   rr   rq   rs   r:   rF   r;   rG   r<   rH   r=   rI   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 r'   )_assistantsr   to_raw_response_wrapperrW   rc   rl   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_wrapperrW   rc   rl   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   )	r.   r   r!   r$   r   c                 C  F   || _ t|j| _t|j| _t|j| _t|j| _t|j| _d S r'   )r   r   rW   rc   rl   r|   r   r   r*   r*   r+   r   <      
z(AssistantsWithStreamingResponse.__init__Nr   r   r*   r*   r*   r+   r.   ;  r   r.   c                   @  r   )	r   r   r"   r$   r   c                 C  r   r'   )r   r   rW   rc   rl   r|   r   r   r*   r*   r+   r   Q  r   z-AsyncAssistantsWithStreamingResponse.__init__Nr   r   r*   r*   r*   r+   r   P  r   r   )7
__future__r   typingr   r   r   typing_extensionsr   httpx r   _typesr	   r
   r   r   r   _utilsr   r   _compatr   	_resourcer   r   	_responser   r   
paginationr   r   
types.betar   r   r   _base_clientr   r   types.chat_modelr   types.beta.assistantr   types.beta.assistant_deletedr   types.beta.assistant_tool_paramr   1types.beta.assistant_response_format_option_paramr    __all__r!   r"   r%   r   r.   r   r*   r*   r*   r+   <module>   s:     y  y