a
    ù!fÏK  ã                   @  s4  d dl mZ d dl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  ddl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,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                      sr  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ddeedddd d!œ	ddd"d#d$d%d&d'd(d)d*œ
‡ fd+d,„Zeed-d.œd/d0„ƒƒZ	eed1d.œd2d3„ƒƒZ
eed4d.œ‡ fd5d6„ƒƒZdddededdddi d7œddd"d8d'd9d%d%d&d&d:d;d<œd=d>„ZeZd)d.œd?d@„ZeddAdBdCdDœdEdF„ƒZ‡  ZS )Gr   zresources.CompletionsÚcompletionszresources.ChatÚchatzresources.EditsÚeditszresources.EmbeddingsÚ
embeddingszresources.FilesÚfileszresources.ImagesÚimageszresources.AudioÚaudiozresources.ModerationsÚmoderationszresources.ModelsÚmodelszresources.FineTuningÚfine_tuningzresources.FineTunesÚ
fine_tuneszresources.BetaÚbetaÚOpenAIWithRawResponseÚwith_raw_responseÚstrÚapi_keyú
str | NoneÚorganizationNF©	r2   r4   Úbase_urlÚtimeoutÚmax_retriesÚdefault_headersÚdefault_queryÚhttp_clientÚ_strict_response_validationústr | httpx.URL | Noneú%Union[float, Timeout, None, NotGiven]ÚintúMapping[str, str] | NoneúMapping[str, object] | Nonezhttpx.Client | NoneÚboolÚNone©
r2   r4   r6   r7   r8   r9   r:   r;   r<   Úreturnc       	   
   
     s$  |du rt j d¡}|du r$tdƒ‚|| _|du r>t j d¡}|| _|du rXt j d¡}|du rdd}tƒ jt|||||||	d t	| _
t | ¡| _t | ¡| _t | ¡| _t | ¡| _t | ¡| _t | ¡| _t | ¡| _t | ¡| _t | ¡| _t | ¡| _t  | ¡| _!t "| ¡| _#t$| ƒ| _%dS )a  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`
        NÚOPENAI_API_KEYúƒThe 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_BASE_URLúhttps://api.openai.com/v1©Úversionr6   r8   r7   r;   Zcustom_headersZcustom_queryr<   )&ÚosÚenvironÚgetr   r2   r4   ÚsuperÚ__init__r   r   Ú_default_stream_clsr	   ZCompletionsr#   ZChatr$   ZEditsr%   Z
Embeddingsr&   ZFilesr'   ZImagesr(   ZAudior)   ZModerationsr*   ZModelsr+   Z
FineTuningr,   Z	FineTunesr-   ÚBetar.   r/   r0   ©
Úselfr2   r4   r6   r7   r8   r9   r:   r;   r<   ©Ú	__class__© úO/var/www/html/python-backend/venv/lib/python3.9/site-packages/openai/_client.pyrQ   >   sL    ÿøzOpenAI.__init__r   ©rE   c                 C  s
   t ddS ©NÚcomma)Zarray_formatr   ©rU   rX   rX   rY   Úqs†   s    z	OpenAI.qsúdict[str, str]c                 C  s   | j }dd|› iS ©NÚAuthorizationzBearer ©r2   ©rU   r2   rX   rX   rY   Úauth_headers‹   s    zOpenAI.auth_headersúdict[str, str | Omit]c                   s.   i t ƒ j¥d| jd ur| jntƒ dœ¥| j¥S )NÚfalse©zX-Stainless-AsynczOpenAI-Organization)rP   r9   r4   r   Ú_custom_headersr]   rV   rX   rY   r9   ‘   s    ÿýüzOpenAI.default_headers©r2   r4   r6   r7   r;   r8   r9   Úset_default_headersr:   Úset_default_queryÚ_extra_kwargsú!float | Timeout | None | NotGivenúint | NotGivenúMapping[str, Any]r   ©r2   r4   r6   r7   r;   r8   r9   rj   r:   rk   rl   rE   c                C  sà   |dur|durt dƒ‚|	dur0|
dur0t dƒ‚| j}|durLi |¥|¥}n|durX|}| j}|	durti |¥|	¥}n|
dur€|
}|pˆ| j}| jf |p˜| j|p | j|p¬t| jƒt	|t
ƒr¼| jn||t|ƒrÌ|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)r2   r4   r6   r7   r;   r8   r9   r:   ©Ú
ValueErrorrh   Z_custom_queryZ_clientrW   r2   r4   r1   r6   Ú
isinstancer   r7   r   r8   ©rU   r2   r4   r6   r7   r;   r8   r9   rj   r:   rk   rl   ÚheadersÚparamsrX   rX   rY   Úcopy›   s6    
ø	÷zOpenAI.copyc                 C  s.   t | dƒrt | dƒsd S | jr"d S |  ¡  d S ©NÚ_has_custom_http_clientÚclose)Úhasattrrz   r{   r]   rX   rX   rY   Ú__del__Ð   s
    zOpenAI.__del__Úobjectúhttpx.Responser   ©Úerr_msgÚbodyÚresponserE   c                C  sö   t |ƒr| d|¡n|}|jdkr2tj|||dS |jdkrLtj|||dS |jdkrftj|||dS |jdkr€tj|||dS |jdkrštj|||dS |jdkr´tj	|||dS |jd	krÎtj
|||dS |jd
krètj|||dS t|||dS ©NÚerrori  )rƒ   r‚   i‘  i“  i”  i™  i¦  i­  iô  ©r   rO   Ústatus_coder
   ZBadRequestErrorÚAuthenticationErrorZPermissionDeniedErrorZNotFoundErrorZConflictErrorZUnprocessableEntityErrorZRateLimitErrorZInternalServerErrorr   ©rU   r   r‚   rƒ   ÚdatarX   rX   rY   Ú_make_status_errorÚ   s$    







zOpenAI._make_status_error©Ú__name__Ú
__module__Ú__qualname__Ú__annotations__r   r   rQ   Úpropertyr   r^   rd   r9   rx   Zwith_optionsr}   r‹   Ú__classcell__rX   rX   rV   rY   r   +   sd   
	ì(Hó(3
r   c                      sr  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ddeedddd d!œ	ddd"d#d$d%d&d'd(d)d*œ
‡ fd+d,„Zeed-d.œd/d0„ƒƒZ	eed1d.œd2d3„ƒƒZ
eed4d.œ‡ fd5d6„ƒƒZdddededdddi d7œddd"d8d'd9d%d%d&d&d:d;d<œd=d>„ZeZd)d.œd?d@„ZeddAdBdCdDœdEdF„ƒZ‡  ZS )Gr    zresources.AsyncCompletionsr#   zresources.AsyncChatr$   zresources.AsyncEditsr%   zresources.AsyncEmbeddingsr&   zresources.AsyncFilesr'   zresources.AsyncImagesr(   zresources.AsyncAudior)   zresources.AsyncModerationsr*   zresources.AsyncModelsr+   zresources.AsyncFineTuningr,   zresources.AsyncFineTunesr-   zresources.AsyncBetar.   ÚAsyncOpenAIWithRawResponser0   r1   r2   r3   r4   NFr5   r=   r>   r?   r@   rA   zhttpx.AsyncClient | NonerB   rC   rD   c       	   
   
     s$  |du rt j d¡}|du r$tdƒ‚|| _|du r>t j d¡}|| _|du rXt j d¡}|du rdd}tƒ jt|||||||	d t	| _
t | ¡| _t | ¡| _t | ¡| _t | ¡| _t | ¡| _t | ¡| _t | ¡| _t | ¡| _t | ¡| _t | ¡| _t  | ¡| _!t "| ¡| _#t$| ƒ| _%dS )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`
        NrF   rG   rH   rI   rJ   rK   )&rM   rN   rO   r   r2   r4   rP   rQ   r   r   rR   r	   ZAsyncCompletionsr#   Z	AsyncChatr$   Z
AsyncEditsr%   ZAsyncEmbeddingsr&   Z
AsyncFilesr'   ZAsyncImagesr(   Z
AsyncAudior)   ZAsyncModerationsr*   ZAsyncModelsr+   ZAsyncFineTuningr,   ZAsyncFineTunesr-   Z	AsyncBetar.   r“   r0   rT   rV   rX   rY   rQ     sL    ÿøzAsyncOpenAI.__init__r   rZ   c                 C  s
   t ddS r[   r   r]   rX   rX   rY   r^   X  s    zAsyncOpenAI.qsr_   c                 C  s   | j }dd|› iS r`   rb   rc   rX   rX   rY   rd   ]  s    zAsyncOpenAI.auth_headersre   c                   s6   i t ƒ j¥dtƒ › | jd ur$| jntƒ dœ¥| j¥S )Nzasync:rg   )rP   r9   r   r4   r   rh   r]   rV   rX   rY   r9   c  s    ÿ
ýüzAsyncOpenAI.default_headersri   rm   rn   ro   r   rp   c                C  sà   |dur|durt dƒ‚|	dur0|
dur0t dƒ‚| j}|durLi |¥|¥}n|durX|}| j}|	durti |¥|	¥}n|
dur€|
}|pˆ| j}| jf |p˜| j|p | j|p¬t| jƒt	|t
ƒr¼| jn||t|ƒrÌ|n| j||dœ|¤ŽS rq   rr   ru   rX   rX   rY   rx   m  s6    
ø	÷zAsyncOpenAI.copyc                 C  sP   t | dƒrt | dƒsd S | jr"d S zt ¡  |  ¡ ¡ W n tyJ   Y n0 d S ry   )r|   rz   ÚasyncioÚget_running_loopÚcreate_taskr{   Ú	Exceptionr]   rX   rX   rY   r}   ¢  s    zAsyncOpenAI.__del__r~   r   r   r€   c                C  sö   t |ƒr| d|¡n|}|jdkr2tj|||dS |jdkrLtj|||dS |jdkrftj|||dS |jdkr€tj|||dS |jdkrštj|||dS |jdkr´tj	|||dS |jd	krÎtj
|||dS |jd
krètj|||dS t|||dS r„   r†   r‰   rX   rX   rY   r‹   ¯  s$    







zAsyncOpenAI._make_status_errorrŒ   rX   rX   rV   rY   r    ý   sd   
	ì(Hó(3r    c                   @  s   e Zd Zdddœdd„ZdS )r/   r   rC   ©ÚclientrE   c                 C  s¬   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	   ZCompletionsWithRawResponser#   ZChatWithRawResponser$   ZEditsWithRawResponser%   ZEmbeddingsWithRawResponser&   ZFilesWithRawResponser'   ZImagesWithRawResponser(   ZAudioWithRawResponser)   ZModerationsWithRawResponser*   ZModelsWithRawResponser+   ZFineTuningWithRawResponser,   ZFineTunesWithRawResponser-   ZBetaWithRawResponser.   ©rU   r™   rX   rX   rY   rQ   Ó  s    zOpenAIWithRawResponse.__init__N©r   rŽ   r   rQ   rX   rX   rX   rY   r/   Ò  s   r/   c                   @  s   e Zd Zdddœdd„ZdS )r“   r    rC   r˜   c                 C  s¬   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 rš   )r	   ZAsyncCompletionsWithRawResponser#   ZAsyncChatWithRawResponser$   ZAsyncEditsWithRawResponser%   ZAsyncEmbeddingsWithRawResponser&   ZAsyncFilesWithRawResponser'   ZAsyncImagesWithRawResponser(   ZAsyncAudioWithRawResponser)   ZAsyncModerationsWithRawResponser*   ZAsyncModelsWithRawResponser+   ZAsyncFineTuningWithRawResponser,   ZAsyncFineTunesWithRawResponser-   ZAsyncBetaWithRawResponser.   r›   rX   rX   rY   rQ   ã  s    z#AsyncOpenAIWithRawResponse.__init__Nrœ   rX   rX   rX   rY   r“   â  s   r“   )/Ú
__future__r   rM   r”   Útypingr   r   r   Ztyping_extensionsr   r   ZhttpxÚ r	   r
   Z_qsr   Ú_typesr   r   r   r   r   r   r   Ú_utilsr   r   r   Ú_versionr   Z
_streamingr   r   r   r   Z_base_clientr   r   r   Ú__all__r   r    r/   r“   r!   r"   rX   rX   rX   rY   Ú<module>   s.   $	 S V