
    2Rj                       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Z7 G d de      Z8 G d de      Z9 G d d      Z: G d d      Z; G d d      Z< G d  d!      Z=y)"    )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                  j   e Zd ZdZedd       Zedd       Z ej                  d      e	e	e	e	e	e	e	e	e	e	ddde
d	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dd       Z ej                  d      ddde
d	 	 	 	 	 	 	 	 	 	 	 dd	       Z ej                  d      e	e	e	e	e	e	e	e	e	e	e	ddde
d
	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dd       Z ej                  d      e	e	e	e	ddde
d	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dd       Z ej                  d      ddde
d	 	 	 	 	 	 	 	 	 	 	 dd       Zy)r'   4Build Assistants that can call models and use tools.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
        )AssistantsWithRawResponseselfs    h/var/www/html/meridian/meridian-ai/venv/lib/python3.12/site-packages/openai/resources/beta/assistants.pywith_raw_responsezAssistants.with_raw_response&   s     )..    c                    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
        )AssistantsWithStreamingResponser.   s    r0   with_streaming_responsez"Assistants.with_streaming_response0   s     /t44r2   
deprecatedNdescriptioninstructionsmetadatanamereasoning_effortresponse_formattemperaturetool_resourcestoolstop_pextra_headersextra_query
extra_bodytimeoutc                   ddi|xs i }| j                  dt        |||||||||	|
|dt        j                        t	        ||||ddi      t
              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modelr9   r:   r;   r<   r=   r>   r?   r@   rA   rB   bearer_authTrC   rD   rE   rF   securitybodyoptionscast_to)_postr   r   AssistantCreateParamsr   r    r/   rM   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   rD   rE   rF   s                   r0   createzAssistants.create9   s    J 'QM<ORQzz "#.$0 ( (8'6#.&4"" (==  )+'%'. 3  
 	
r2   rC   rD   rE   rF   c                   |st        d|      ddi|xs i }| j                  t        d|      t        ||||ddi      t        	      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 rI   rJ   /assistants/{assistant_id}assistant_idrN   TrO   rS   rT   
ValueError_getr   r   r    r/   r_   rC   rD   rE   rF   s         r0   retrievezAssistants.retrieve   sr    0 Z[gZjkll&QM<ORQyy6\R(+'%'.   

 
	
r2   r9   r:   r;   rM   r<   r=   r>   r?   r@   rA   rB   rC   rD   rE   rF   c                   |st        d|      ddi|xs i }| j                  t        d|      t        ||||||||	|
||dt        j
                        t        ||||ddi	      t        
      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
        r\   rI   rJ   r]   r^   r9   r:   r;   rM   r<   r=   r>   r?   r@   rA   rB   rN   TrO   rQ   )rb   rU   r   r   r   AssistantUpdateParamsr   r    r/   r_   r9   r:   r;   rM   r<   r=   r>   r?   r@   rA   rB   rC   rD   rE   rF   s                    r0   updatezAssistants.update   s    l Z[gZjkll&QM<ORQzz6\R #.$0 (" (8'6#.&4"" (==  )+'%'. 3  
 	
r2   afterbeforelimitorderrC   rD   rE   rF   c                   ddi|xs i }| j                  dt        t           t        ||||t	        ||||dt
        j                        ddi      t              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
        rI   rJ   rK   )rn   ro   rp   rq   rN   T)rC   rD   rE   rF   queryrP   )pagerS   rM   )_get_api_listr   r    r   r   r   AssistantListParams	r/   rn   ro   rp   rq   rC   rD   rE   rF   s	            r0   listzAssistants.list  s    X 'QM<ORQ!!	*(+'%%!&"(!&!&	 *== (.  ' " 
 	
r2   c                   |st        d|      ddi|xs i }| j                  t        d|      t        ||||ddi      t        	      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\   rI   rJ   r]   r^   rN   TrO   r`   rb   _deleter   r   r"   rd   s         r0   deletezAssistants.delete  sr    0 Z[gZjkll&QM<ORQ||6\R(+'%'. %  

 
	
r2   )returnr-   )r   r5    rM   zUnion[str, ChatModel]r9   Optional[str] | Omitr:   r   r;   Optional[Metadata] | Omitr<   r   r=    Optional[ReasoningEffort] | Omitr>   3Optional[AssistantResponseFormatOptionParam] | Omitr?   Optional[float] | Omitr@   z6Optional[assistant_create_params.ToolResources] | OmitrA   #Iterable[AssistantToolParam] | OmitrB   r   rC   Headers | NonerD   Query | NonerE   Body | NonerF   'float | httpx.Timeout | None | NotGivenr   r    r_   strrC   r   rD   r   rE   r   rF   r   r   r    "r_   r   r9   r   r:   r   r;   r   rM   a3  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']] | Omitr<   r   r=   r   r>   r   r?   r   r@   z6Optional[assistant_update_params.ToolResources] | OmitrA   r   rB   r   rC   r   rD   r   rE   r   rF   r   r   r    )rn   
str | Omitro   r   rp   
int | Omitrq   Literal['asc', 'desc'] | OmitrC   r   rD   r   rE   r   rF   r   r   zSyncCursorPage[Assistant]r_   r   rC   r   rD   r   rE   r   rF   r   r   r"   __name__
__module____qualname____doc__r   r1   r6   typing_extensionsr7   r   r   rX   re   rl   ry   r~    r2   r0   r'   r'   #   s   >/ / 5 5 "!!,/
 -1-1.2%)=AOS.2QU59(, )-$("&;D'
 %
 *	

 +
 ,
 #
 ;
 M
 ,
 O
 3
 &
  &!
" "#
$  %
& 9'
( 
)
 0
B "!!,/ )-$("&;D$
$
 &$
 "$
  $
 9$
 
$
 0$
L "!!,/
 -1-1.2` %)=AOS.2QU59(, )-$("&;DGr
r
 *	r

 +r
 ,r
/r
n #or
p ;qr
r Msr
t ,ur
v Owr
x 3yr
z &{r
@ &Ar
B "Cr
D  Er
F 9Gr
H 
Ir
 0r
h "!!,/ !! /3 )-$("&;D@
 @
 	@

 @
 -@
 &@
 "@
  @
 9@
 
#@
 0@
D "!!,/ )-$("&;D$
$
 &$
 "$
  $
 9$
 
$
 0$
r2   c                  j   e Zd ZdZedd       Zedd       Z ej                  d      e	e	e	e	e	e	e	e	e	e	ddde
d	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dd       Z ej                  d      ddde
d	 	 	 	 	 	 	 	 	 	 	 dd	       Z ej                  d      e	e	e	e	e	e	e	e	e	e	e	ddde
d
	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dd       Z ej                  d      e	e	e	e	ddde
d	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dd       Z ej                  d      ddde
d	 	 	 	 	 	 	 	 	 	 	 dd       Zy)r(   r*   c                    t        |       S r,   )AsyncAssistantsWithRawResponser.   s    r0   r1   z!AsyncAssistants.with_raw_response  s     .d33r2   c                    t        |       S r4   )$AsyncAssistantsWithStreamingResponser.   s    r0   r6   z'AsyncAssistants.with_streaming_response  s     4D99r2   r7   Nr8   c                  K   ddi|xs i }| j                  dt        |||||||||	|
|dt        j                         d{   t	        ||||ddi      t
        	       d{   S 7 '7 w)
rH   rI   rJ   rK   rL   NrN   TrO   rQ   )rU   r   r   rV   r   r    rW   s                   r0   rX   zAsyncAssistants.create  s     J 'QM<ORQZZ,"#.$0 ( (8'6#.&4"" (==   )+'%'. 3   
 
 	

s$   A A.A*
"A.%A,&A.,A.rY   c                  K   |st        d|      ddi|xs i }| j                  t        d|      t        ||||ddi      t        	       d
{   S 7 w)r[   r\   rI   rJ   r]   r^   rN   TrO   r`   Nra   rd   s         r0   re   zAsyncAssistants.retrieve  s     0 Z[gZjkll&QM<ORQYY6\R(+'%'.   

 

 
	
 

   AAAArf   c                 K   |st        d|      ddi|xs i }| j                  t        d|      t        ||||||||	|
||dt        j
                         d{   t        ||||dd	i
      t               d{   S 7 '7 w)rh   r\   rI   rJ   r]   r^   ri   NrN   TrO   rQ   )rb   rU   r   r   r   rj   r   r    rk   s                    r0   rl   zAsyncAssistants.update  s     l Z[gZjkll&QM<ORQZZ6\R,#.$0 (" (8'6#.&4"" (==   )+'%'. 3   
 
 	

s$   AB	B
"B	 BB	B	rm   c                   ddi|xs i }| j                  dt        t           t        ||||t	        ||||dt
        j                        ddi      t              S rs   )rv   r   r    r   r   r   rw   rx   s	            r0   ry   zAsyncAssistants.listv  s    X 'QM<ORQ!! +(+'%%!&"(!&!&	 *== (.  ' " 
 	
r2   c                  K   |st        d|      ddi|xs i }| j                  t        d|      t        ||||ddi      t        	       d
{   S 7 w)r{   r\   rI   rJ   r]   r^   rN   TrO   r`   Nr|   rd   s         r0   r~   zAsyncAssistants.delete  s     0 Z[gZjkll&QM<ORQ\\6\R(+'%'. % " 

 

 
	
 

r   )r   r   )r   r   r   r   r   )rn   r   ro   r   rp   r   rq   r   rC   r   rD   r   rE   r   rF   r   r   z5AsyncPaginator[Assistant, AsyncCursorPage[Assistant]]r   r   r   r2   r0   r(   r(     s   >4 4 : : "!!,/
 -1-1.2%)=AOS.2QU59(, )-$("&;D'
 %
 *	

 +
 ,
 #
 ;
 M
 ,
 O
 3
 &
  &!
" "#
$  %
& 9'
( 
)
 0
B "!!,/ )-$("&;D$
$
 &$
 "$
  $
 9$
 
$
 0$
L "!!,/
 -1-1.2` %)=AOS.2QU59(, )-$("&;DGr
r
 *	r

 +r
 ,r
/r
n #or
p ;qr
r Msr
t ,ur
v Owr
x 3yr
z &{r
@ &Ar
B "Cr
D  Er
F 9Gr
H 
Ir
 0r
h "!!,/ !! /3 )-$("&;D@
 @
 	@

 @
 -@
 &@
 "@
  @
 9@
 
?@
 0@
D "!!,/ )-$("&;D$
$
 &$
 "$
  $
 9$
 
$
 0$
r2   c                      e Zd ZddZy)r-   c                z   || _         t        j                  |j                        | _        t        j                  |j                        | _        t        j                  |j
                        | _        t        j                  |j                        | _        t        j                  |j                        | _        y N)_assistantsr	   to_raw_response_wrapperrX   re   rl   ry   r~   r/   
assistantss     r0   __init__z"AssistantsWithRawResponse.__init__  s    % 44!! 	 44## 	 44!! 	 44 		 44!! 	r2   Nr   r'   r   Noner   r   r   r   r   r2   r0   r-   r-         
r2   r-   c                      e Zd ZddZy)r   c                z   || _         t        j                  |j                        | _        t        j                  |j                        | _        t        j                  |j
                        | _        t        j                  |j                        | _        t        j                  |j                        | _        y r   )r   r	   async_to_raw_response_wrapperrX   re   rl   ry   r~   r   s     r0   r   z'AsyncAssistantsWithRawResponse.__init__  s    % ::!! 	 ::## 	 ::!! 	 :: 		 ::!! 	r2   Nr   r(   r   r   r   r   r2   r0   r   r      r   r2   r   c                      e Zd ZddZy)r5   c                   || _         t        |j                        | _        t        |j                        | _        t        |j                        | _        t        |j
                        | _        t        |j                        | _        y r   )r   r   rX   re   rl   ry   r~   r   s     r0   r   z(AssistantsWithStreamingResponse.__init__   s    % )!! 	 )## 	 )!! 	 ) 		 )!! 	r2   Nr   r   r   r2   r0   r5   r5     r   r2   r5   c                      e Zd ZddZy)r   c                   || _         t        |j                        | _        t        |j                        | _        t        |j                        | _        t        |j
                        | _        t        |j                        | _        y r   )r   r   rX   re   rl   ry   r~   r   s     r0   r   z-AsyncAssistantsWithStreamingResponse.__init__?  s    % /!! 	 /## 	 /!! 	 / 		 /!! 	r2   Nr   r   r   r2   r0   r   r   >  r   r2   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   r5   r   r   r2   r0   <module>r      s    #  , , %    K K K K K & : Y 9 
 A - 0 < 4 < A c*
+\
 \
~\
& \
~
 
>
 
>
 
>
 
r2   