o
    #`^hV                     @  s@  d dl mZ d dlZd dlmZmZmZ d dlmZm	Z	 d dl
Z
ddlmZm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%m&Z& g dZ'G dd de%Z(G dd de&Z)G dd dZ*G dd dZ+G dd dZ,G dd dZ-e(Z.e)Z/dS )    )annotationsN)AnyUnionMapping)Selfoverride   )	resources_exceptionsQuerystring)	NOT_GIVENOmitTimeoutNotGiven	TransportProxiesTypesRequestOptions)is_given
is_mappingget_async_library)__version__)StreamAsyncStream)OpenAIErrorAPIStatusError)DEFAULT_MAX_RETRIESSyncAPIClientAsyncAPIClient)	r   r   r   r   r	   OpenAIAsyncOpenAIClientAsyncClientc                      2  e Zd ZU ded< ded< ded< ded< d	ed
< ded< ded< ded< ded< ded< ded< ded< ded< ded< ded< ded < ded!< d"d"d"d"eed"d"d"d#d$
dR fd5d6ZeedSd8d9Z	eedTd;d<Z
eedU fd>d?Zd"d"d"d"ed"ed"d"d"d"i d@dVdHdIZeZedWdPdQZ  ZS )Xr   zresources.Completionscompletionszresources.Chatchatzresources.Embeddings
embeddingszresources.Filesfileszresources.Imagesimageszresources.Audioaudiozresources.Moderationsmoderationszresources.Modelsmodelszresources.FineTuningfine_tuningzresources.Betabetazresources.Batchesbatcheszresources.UploadsuploadsOpenAIWithRawResponsewith_raw_responseOpenAIWithStreamedResponsewith_streaming_responsestrapi_key
str | NoneorganizationprojectNF
r5   r7   r8   base_urltimeoutmax_retriesdefault_headersdefault_queryhttp_client_strict_response_validationr:   str | httpx.URL | Noner;   %Union[float, Timeout, None, NotGiven]r<   intr=   Mapping[str, str] | Noner>   Mapping[str, object] | Noner?   httpx.Client | Noner@   boolreturnNonec       
      
     H  |du r
t jd}|du rtd|| _|du rt jd}|| _|du r,t jd}|| _|du r9t jd}|du r?d}t jt	||||	|||
d t
| _t| | _t| | _t| | _t| | _t| | _t| | _t| | _t| | _t| | _t| | _ t!| | _"t#| | _$t%| | _&t'| | _(dS )	aE  Construct a new synchronous openai client instance.

        This automatically infers the following arguments from their corresponding environment variables if they are not provided:
        - `api_key` from `OPENAI_API_KEY`
        - `organization` from `OPENAI_ORG_ID`
        - `project` from `OPENAI_PROJECT_ID`
        NOPENAI_API_KEYThe api_key client option must be set either by passing api_key to the client or by setting the OPENAI_API_KEY environment variableOPENAI_ORG_IDOPENAI_PROJECT_IDOPENAI_BASE_URLhttps://api.openai.com/v1versionr:   r<   r;   r?   custom_headerscustom_queryr@   ))osenvirongetr   r5   r7   r8   super__init__r   r   _default_stream_clsr	   Completionsr$   Chatr%   
Embeddingsr&   Filesr'   Imagesr(   Audior)   Moderationsr*   Modelsr+   
FineTuningr,   Betar-   Batchesr.   Uploadsr/   r0   r1   r2   r3   selfr5   r7   r8   r:   r;   r<   r=   r>   r?   r@   	__class__ L/home/air/shanriGPT/back/venv/lib/python3.10/site-packages/openai/_client.pyrY   F   T    
zOpenAI.__init__r   c                 C  
   t ddS Nbrackets)array_formatr   rh   rk   rk   rl   qs      
z	OpenAI.qsdict[str, str]c                 C     | j }dd| iS NAuthorizationzBearer r5   rh   r5   rk   rk   rl   auth_headers      zOpenAI.auth_headersdict[str, str | Omit]c                   sB   i t  jd| jd ur| jnt | jd ur| jnt d| jS )NfalsezX-Stainless-AsynczOpenAI-OrganizationzOpenAI-Project)rX   r=   r7   r   r8   _custom_headersrr   ri   rk   rl   r=      s   zOpenAI.default_headersr5   r7   r8   r:   r;   r?   r<   r=   set_default_headersr>   set_default_query_extra_kwargs!float | Timeout | None | NotGivenint | NotGivenr   r   r   Mapping[str, Any]r   c                C     |dur|	durt d|
dur|durt d| j}|dur&i ||}n|	dur,|	}| j}|
dur:i ||
}n|dur@|}|pD| j}| jd|pL| j|pP| j|pT| j|pX| jt	|t
r`| jn||t|rh|n| j||d	|S z~
        Create a new client instance re-using the same options given to the current client with optional overriding.
        NzPThe `default_headers` and `set_default_headers` arguments are mutually exclusivezLThe `default_query` and `set_default_query` arguments are mutually exclusive)	r5   r7   r8   r:   r;   r?   r<   r=   r>   rk   
ValueErrorr   _custom_query_clientrj   r5   r7   r8   r:   
isinstancer   r;   r   r<   rh   r5   r7   r8   r:   r;   r?   r<   r=   r   r>   r   r   headersparamsrk   rk   rl   copy   8   

zOpenAI.copyerr_msgbodyobjectresponsehttpx.Responser   c                C     t |r
|d|n|}|jdkrtj|||dS |jdkr&tj|||dS |jdkr3tj|||dS |jdkr@tj|||dS |jdkrMtj|||dS |jdkrZtj	|||dS |jd	krgtj
|||dS |jd
krttj|||dS t|||dS Nerrori  )r   r   i  i  i  i  i  i  i  r   rW   status_coder
   BadRequestErrorAuthenticationErrorPermissionDeniedErrorNotFoundErrorConflictErrorUnprocessableEntityErrorRateLimitErrorInternalServerErrorr   rh   r   r   r   datark   rk   rl   _make_status_error   $   







zOpenAI._make_status_error)r5   r6   r7   r6   r8   r6   r:   rA   r;   rB   r<   rC   r=   rD   r>   rE   r?   rF   r@   rG   rH   rI   rH   r   rH   ru   rH   r}   )r5   r6   r7   r6   r8   r6   r:   rA   r;   r   r?   rF   r<   r   r=   rD   r   rD   r>   rE   r   rE   r   r   rH   r   r   r4   r   r   r   r   rH   r   __name__
__module____qualname____annotations__r   r   rY   propertyr   rs   r{   r=   r   with_optionsr   __classcell__rk   rk   ri   rl   r   1   l   
 	Q5r   c                      r#   )Xr    zresources.AsyncCompletionsr$   zresources.AsyncChatr%   zresources.AsyncEmbeddingsr&   zresources.AsyncFilesr'   zresources.AsyncImagesr(   zresources.AsyncAudior)   zresources.AsyncModerationsr*   zresources.AsyncModelsr+   zresources.AsyncFineTuningr,   zresources.AsyncBetar-   zresources.AsyncBatchesr.   zresources.AsyncUploadsr/   AsyncOpenAIWithRawResponser1   AsyncOpenAIWithStreamedResponser3   r4   r5   r6   r7   r8   NFr9   r:   rA   r;   rB   r<   rC   r=   rD   r>   rE   r?   httpx.AsyncClient | Noner@   rG   rH   rI   c       
      
     rJ   )	a?  Construct a new async openai client instance.

        This automatically infers the following arguments from their corresponding environment variables if they are not provided:
        - `api_key` from `OPENAI_API_KEY`
        - `organization` from `OPENAI_ORG_ID`
        - `project` from `OPENAI_PROJECT_ID`
        NrK   rL   rM   rN   rO   rP   rQ   ))rU   rV   rW   r   r5   r7   r8   rX   rY   r   r   rZ   r	   AsyncCompletionsr$   	AsyncChatr%   AsyncEmbeddingsr&   
AsyncFilesr'   AsyncImagesr(   
AsyncAudior)   AsyncModerationsr*   AsyncModelsr+   AsyncFineTuningr,   	AsyncBetar-   AsyncBatchesr.   AsyncUploadsr/   r   r1   r   r3   rg   ri   rk   rl   rY     rm   zAsyncOpenAI.__init__r   c                 C  rn   ro   r   rr   rk   rk   rl   rs   m  rt   zAsyncOpenAI.qsru   c                 C  rv   rw   ry   rz   rk   rk   rl   r{   r  r|   zAsyncOpenAI.auth_headersr}   c                   sJ   i t  jdt  | jd ur| jnt | jd ur| jnt d| jS )Nzasync:r   )rX   r=   r   r7   r   r8   r   rr   ri   rk   rl   r=   x  s   
zAsyncOpenAI.default_headersr   r   r   r   r   r   r   r   c                C  r   r   r   r   rk   rk   rl   r     r   zAsyncOpenAI.copyr   r   r   r   r   r   c                C  r   r   r   r   rk   rk   rl   r     r   zAsyncOpenAI._make_status_error)r5   r6   r7   r6   r8   r6   r:   rA   r;   rB   r<   rC   r=   rD   r>   rE   r?   r   r@   rG   rH   rI   r   r   r   )r5   r6   r7   r6   r8   r6   r:   rA   r;   r   r?   r   r<   r   r=   rD   r   rD   r>   rE   r   rE   r   r   rH   r   r   r   rk   rk   ri   rl   r      r   r    c                   @     e Zd ZdddZdS )	r0   clientr   rH   rI   c                 C     t |j| _t |j| _t |j| _t |j| _t 	|j
| _
t |j| _t |j| _t |j| _t |j| _t |j| _t |j| _t |j| _d S N)r	   CompletionsWithRawResponser$   ChatWithRawResponser%   EmbeddingsWithRawResponser&   FilesWithRawResponser'   ImagesWithRawResponser(   AudioWithRawResponser)   ModerationsWithRawResponser*   ModelsWithRawResponser+   FineTuningWithRawResponser,   BetaWithRawResponser-   BatchesWithRawResponser.   UploadsWithRawResponser/   rh   r   rk   rk   rl   rY        zOpenAIWithRawResponse.__init__Nr   r   rH   rI   r   r   r   rY   rk   rk   rk   rl   r0         r0   c                   @  r   )	r   r   r    rH   rI   c                 C  r   r   )r	   AsyncCompletionsWithRawResponser$   AsyncChatWithRawResponser%   AsyncEmbeddingsWithRawResponser&   AsyncFilesWithRawResponser'   AsyncImagesWithRawResponser(   AsyncAudioWithRawResponser)   AsyncModerationsWithRawResponser*   AsyncModelsWithRawResponser+   AsyncFineTuningWithRawResponser,   AsyncBetaWithRawResponser-   AsyncBatchesWithRawResponser.   AsyncUploadsWithRawResponser/   r   rk   rk   rl   rY     r   z#AsyncOpenAIWithRawResponse.__init__Nr   r    rH   rI   r   rk   rk   rk   rl   r     r   r   c                   @  r   )	r2   r   r   rH   rI   c                 C  r   r   )r	    CompletionsWithStreamingResponser$   ChatWithStreamingResponser%   EmbeddingsWithStreamingResponser&   FilesWithStreamingResponser'   ImagesWithStreamingResponser(   AudioWithStreamingResponser)    ModerationsWithStreamingResponser*   ModelsWithStreamingResponser+   FineTuningWithStreamingResponser,   BetaWithStreamingResponser-   BatchesWithStreamingResponser.   UploadsWithStreamingResponser/   r   rk   rk   rl   rY     r   z#OpenAIWithStreamedResponse.__init__Nr   r   rk   rk   rk   rl   r2     r   r2   c                   @  r   )	r   r   r    rH   rI   c                 C  r   r   )r	   %AsyncCompletionsWithStreamingResponser$   AsyncChatWithStreamingResponser%   $AsyncEmbeddingsWithStreamingResponser&   AsyncFilesWithStreamingResponser'    AsyncImagesWithStreamingResponser(   AsyncAudioWithStreamingResponser)   %AsyncModerationsWithStreamingResponser*    AsyncModelsWithStreamingResponser+   $AsyncFineTuningWithStreamingResponser,   AsyncBetaWithStreamingResponser-   !AsyncBatchesWithStreamingResponser.   !AsyncUploadsWithStreamingResponser/   r   rk   rk   rl   rY     r   z(AsyncOpenAIWithStreamedResponse.__init__Nr   r   rk   rk   rk   rl   r     r   r   )0
__future__r   rU   typingr   r   r   typing_extensionsr   r   httpx r	   r
   _qsr   _typesr   r   r   r   r   r   r   _utilsr   r   r   _versionr   
_streamingr   r   r   r   _base_clientr   r   r   __all__r   r    r0   r   r2   r   r!   r"   rk   rk   rk   rl   <module>   s0   $	 W W