
    +hB                    ,   d dl mZ d dlmZmZmZmZmZmZ d dl	m
Z
 d dlZddlmZ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mZ dd
lmZmZ ddlmZm Z  ddl!m"Z" erddl#m$Z$m%Z% ddgZ& G d de      Z' G d de      Z( G d d      Z) G d d      Z*y)    )annotations)TYPE_CHECKINGDictListUnionOptionaloverload)LiteralN   )
Completioncompletion_create_params)	NOT_GIVENBodyQueryHeadersNotGiven)required_argsmaybe_transform)SyncAPIResourceAsyncAPIResource)to_raw_response_wrapperasync_to_raw_response_wrapper)StreamAsyncStream)make_request_options)OpenAIAsyncOpenAICompletionsAsyncCompletionsc                      e Zd ZU ded<   d fdZeeeeeeeeeeeeeeeeddded	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dd       Zeeeeeeeeeeeeeeeddded		 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dd
       Zeeeeeeeeeeeeeeeddded		 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dd       Z eddgg d      eeeeeeeeeeeeeeeddded	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dd       Z xZ	S )r   CompletionsWithRawResponsewith_raw_responsec                D    t         |   |       t        |       | _        y N)super__init__r!   r"   selfclient	__class__s     O/var/www/html/venv/lib/python3.12/site-packages/openai/resources/completions.pyr&   zCompletions.__init__   s     !;D!A    Nbest_ofechofrequency_penalty
logit_biaslogprobs
max_tokensnpresence_penaltyseedstopstreamsuffixtemperaturetop_puserextra_headersextra_query
extra_bodytimeoutmodelpromptc                    yu\  
        Creates a completion for the provided prompt and parameters.

        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.

          prompt: The prompt(s) to generate completions for, encoded as a string, array of
              strings, array of tokens, or array of token arrays.

              Note that <|endoftext|> is the document separator that the model sees during
              training, so if a prompt is not specified the model will generate as if from the
              beginning of a new document.

          best_of: Generates `best_of` completions server-side and returns the "best" (the one with
              the highest log probability per token). Results cannot be streamed.

              When used with `n`, `best_of` controls the number of candidate completions and
              `n` specifies how many to return – `best_of` must be greater than `n`.

              **Note:** Because this parameter generates many completions, it can quickly
              consume your token quota. Use carefully and ensure that you have reasonable
              settings for `max_tokens` and `stop`.

          echo: Echo back the prompt in addition to the completion

          frequency_penalty: Number between -2.0 and 2.0. Positive values penalize new tokens based on their
              existing frequency in the text so far, decreasing the model's likelihood to
              repeat the same line verbatim.

              [See more information about frequency and presence penalties.](https://platform.openai.com/docs/guides/gpt/parameter-details)

          logit_bias: Modify the likelihood of specified tokens appearing in the completion.

              Accepts a JSON object that maps tokens (specified by their token ID in the GPT
              tokenizer) to an associated bias value from -100 to 100. You can use this
              [tokenizer tool](/tokenizer?view=bpe) (which works for both GPT-2 and GPT-3) to
              convert text to token IDs. Mathematically, the bias is added to the logits
              generated by the model prior to sampling. The exact effect will vary per model,
              but values between -1 and 1 should decrease or increase likelihood of selection;
              values like -100 or 100 should result in a ban or exclusive selection of the
              relevant token.

              As an example, you can pass `{"50256": -100}` to prevent the <|endoftext|> token
              from being generated.

          logprobs: Include the log probabilities on the `logprobs` most likely tokens, as well the
              chosen tokens. For example, if `logprobs` is 5, the API will return a list of
              the 5 most likely tokens. The API will always return the `logprob` of the
              sampled token, so there may be up to `logprobs+1` elements in the response.

              The maximum value for `logprobs` is 5.

          max_tokens: The maximum number of [tokens](/tokenizer) to generate in the completion.

              The token count of your prompt plus `max_tokens` cannot exceed the model's
              context length.
              [Example Python code](https://cookbook.openai.com/examples/how_to_count_tokens_with_tiktoken)
              for counting tokens.

          n: How many completions to generate for each prompt.

              **Note:** Because this parameter generates many completions, it can quickly
              consume your token quota. Use carefully and ensure that you have reasonable
              settings for `max_tokens` and `stop`.

          presence_penalty: Number between -2.0 and 2.0. Positive values penalize new tokens based on
              whether they appear in the text so far, increasing the model's likelihood to
              talk about new topics.

              [See more information about frequency and presence penalties.](https://platform.openai.com/docs/guides/gpt/parameter-details)

          seed: If specified, our system will make a best effort to sample deterministically,
              such that repeated requests with the same `seed` and parameters should return
              the same result.

              Determinism is not guaranteed, and you should refer to the `system_fingerprint`
              response parameter to monitor changes in the backend.

          stop: Up to 4 sequences where the API will stop generating further tokens. The
              returned text will not contain the stop sequence.

          stream: Whether to stream back partial progress. If set, tokens will be sent as
              data-only
              [server-sent events](https://developer.mozilla.org/en-US/docs/Web/API/Server-sent_events/Using_server-sent_events#Event_stream_format)
              as they become available, with the stream terminated by a `data: [DONE]`
              message.
              [Example Python code](https://cookbook.openai.com/examples/how_to_stream_completions).

          suffix: The suffix that comes after a completion of inserted text.

          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.

              We generally recommend altering this or `top_p` but not both.

          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.

          user: A unique identifier representing your end-user, which can help OpenAI to monitor
              and detect abuse.
              [Learn more](https://platform.openai.com/docs/guides/safety-best-practices/end-user-ids).

          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
        N r(   rA   rB   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   s                         r+   createzCompletions.create       @ 	r,   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r9   r:   r;   r<   r=   r>   r?   r@   c                    yu\  
        Creates a completion for the provided prompt and parameters.

        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.

          prompt: The prompt(s) to generate completions for, encoded as a string, array of
              strings, array of tokens, or array of token arrays.

              Note that <|endoftext|> is the document separator that the model sees during
              training, so if a prompt is not specified the model will generate as if from the
              beginning of a new document.

          stream: Whether to stream back partial progress. If set, tokens will be sent as
              data-only
              [server-sent events](https://developer.mozilla.org/en-US/docs/Web/API/Server-sent_events/Using_server-sent_events#Event_stream_format)
              as they become available, with the stream terminated by a `data: [DONE]`
              message.
              [Example Python code](https://cookbook.openai.com/examples/how_to_stream_completions).

          best_of: Generates `best_of` completions server-side and returns the "best" (the one with
              the highest log probability per token). Results cannot be streamed.

              When used with `n`, `best_of` controls the number of candidate completions and
              `n` specifies how many to return – `best_of` must be greater than `n`.

              **Note:** Because this parameter generates many completions, it can quickly
              consume your token quota. Use carefully and ensure that you have reasonable
              settings for `max_tokens` and `stop`.

          echo: Echo back the prompt in addition to the completion

          frequency_penalty: Number between -2.0 and 2.0. Positive values penalize new tokens based on their
              existing frequency in the text so far, decreasing the model's likelihood to
              repeat the same line verbatim.

              [See more information about frequency and presence penalties.](https://platform.openai.com/docs/guides/gpt/parameter-details)

          logit_bias: Modify the likelihood of specified tokens appearing in the completion.

              Accepts a JSON object that maps tokens (specified by their token ID in the GPT
              tokenizer) to an associated bias value from -100 to 100. You can use this
              [tokenizer tool](/tokenizer?view=bpe) (which works for both GPT-2 and GPT-3) to
              convert text to token IDs. Mathematically, the bias is added to the logits
              generated by the model prior to sampling. The exact effect will vary per model,
              but values between -1 and 1 should decrease or increase likelihood of selection;
              values like -100 or 100 should result in a ban or exclusive selection of the
              relevant token.

              As an example, you can pass `{"50256": -100}` to prevent the <|endoftext|> token
              from being generated.

          logprobs: Include the log probabilities on the `logprobs` most likely tokens, as well the
              chosen tokens. For example, if `logprobs` is 5, the API will return a list of
              the 5 most likely tokens. The API will always return the `logprob` of the
              sampled token, so there may be up to `logprobs+1` elements in the response.

              The maximum value for `logprobs` is 5.

          max_tokens: The maximum number of [tokens](/tokenizer) to generate in the completion.

              The token count of your prompt plus `max_tokens` cannot exceed the model's
              context length.
              [Example Python code](https://cookbook.openai.com/examples/how_to_count_tokens_with_tiktoken)
              for counting tokens.

          n: How many completions to generate for each prompt.

              **Note:** Because this parameter generates many completions, it can quickly
              consume your token quota. Use carefully and ensure that you have reasonable
              settings for `max_tokens` and `stop`.

          presence_penalty: Number between -2.0 and 2.0. Positive values penalize new tokens based on
              whether they appear in the text so far, increasing the model's likelihood to
              talk about new topics.

              [See more information about frequency and presence penalties.](https://platform.openai.com/docs/guides/gpt/parameter-details)

          seed: If specified, our system will make a best effort to sample deterministically,
              such that repeated requests with the same `seed` and parameters should return
              the same result.

              Determinism is not guaranteed, and you should refer to the `system_fingerprint`
              response parameter to monitor changes in the backend.

          stop: Up to 4 sequences where the API will stop generating further tokens. The
              returned text will not contain the stop sequence.

          suffix: The suffix that comes after a completion of inserted text.

          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.

              We generally recommend altering this or `top_p` but not both.

          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.

          user: A unique identifier representing your end-user, which can help OpenAI to monitor
              and detect abuse.
              [Learn more](https://platform.openai.com/docs/guides/safety-best-practices/end-user-ids).

          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
        NrE   r(   rA   rB   r8   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r9   r:   r;   r<   r=   r>   r?   r@   s                         r+   rG   zCompletions.create   rH   r,   c                    yrK   rE   rL   s                         r+   rG   zCompletions.createc  rH   r,   rA   rB   r8   c          
        | j                  dt        i d|d|d|d|d|d|d|d	|d
|	d|
d|d|d|d|d|d|d|t        j                        t	        ||||      t
        |xs dt        t
                 S Nz/completionsrA   rB   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   )r=   r>   r?   r@   F)bodyoptionscast_tor8   
stream_cls)_postr   r   CompletionCreateParamsr   r   r   rF   s                         r+   rG   zCompletions.create  s)   T zz Uf w D	
 (): !*  !*  '(8 D D f f ";  U!" D#& )??), )+Q[el ?Uj);  
 	
r,   )r)   r   returnNone,rA   Union[str, Literal['babbage-002', 'davinci-002', 'gpt-3.5-turbo-instruct', 'text-davinci-003', 'text-davinci-002', 'text-davinci-001', 'code-davinci-002', 'text-curie-001', 'text-babbage-001', 'text-ada-001']]rB   7Union[str, List[str], List[int], List[List[int]], None]r.   Optional[int] | NotGivenr/   Optional[bool] | NotGivenr0   Optional[float] | NotGivenr1   #Optional[Dict[str, int]] | NotGivenr2   r\   r3   r\   r4   r\   r5   r^   r6   r\   r7   0Union[Optional[str], List[str], None] | NotGivenr8   z#Optional[Literal[False]] | NotGivenr9   Optional[str] | NotGivenr:   r^   r;   r^   r<   str | NotGivenr=   Headers | Noner>   Query | Noner?   Body | Noner@   'float | httpx.Timeout | None | NotGivenrW   r   ),rA   rZ   rB   r[   r8   Literal[True]r.   r\   r/   r]   r0   r^   r1   r_   r2   r\   r3   r\   r4   r\   r5   r^   r6   r\   r7   r`   r9   ra   r:   r^   r;   r^   r<   rb   r=   rc   r>   rd   r?   re   r@   rf   rW   zStream[Completion]),rA   rZ   rB   r[   r8   boolr.   r\   r/   r]   r0   r^   r1   r_   r2   r\   r3   r\   r4   r\   r5   r^   r6   r\   r7   r`   r9   ra   r:   r^   r;   r^   r<   rb   r=   rc   r>   rd   r?   re   r@   rf   rW   Completion | Stream[Completion]),rA   rZ   rB   r[   r.   r\   r/   r]   r0   r^   r1   r_   r2   r\   r3   r\   r4   r\   r5   r^   r6   r\   r7   r`   r8   3Optional[Literal[False]] | Literal[True] | NotGivenr9   ra   r:   r^   r;   r^   r<   rb   r=   rc   r>   rd   r?   re   r@   rf   rW   ri   
__name__
__module____qualname____annotations__r&   r	   r   rG   r   __classcell__r*   s   @r+   r   r      so   11B ( -6*38A:C-6/8&/7@)2AJ6?+42;,5( )-$("&;DO_
_$ H%_& *'_( ()_* 6+_, 8-_. +/_0 -1_2 $3_4 55_6 '7_8 ?9_: 4;_< )=_> 0?_@ *A_B C_H &I_J "K_L  M_N 9O_P 
Q_ _B * -6*38A:C-6/8&/7@)2AJ+42;,5( )-$("&;DO_
_$ H%_& '_( *)_* (+_, 6-_. 8/_0 +1_2 -3_4 $5_6 57_8 '9_: ?;_< )=_> 0?_@ *A_B C_H &I_J "K_L  M_N 9O_P 
Q_ _B * -6*38A:C-6/8&/7@)2AJ+42;,5( )-$("&;DO_
_$ H%_& '_( *)_* (+_, 6-_. 8/_0 +1_2 -3_4 $5_6 57_8 '9_: ?;_< )=_> 0?_@ *A_B C_H &I_J "K_L  M_N 9O_P 
)Q_ _B GX&(EF( -6*38A:C-6/8&/7@)2AJFO+42;,5( )-$("&;DOG

G
$ H%G
& *'G
( ()G
* 6+G
, 8-G
. +/G
0 -1G
2 $3G
4 55G
6 '7G
8 ?9G
: D;G
< )=G
> 0?G
@ *AG
B CG
H &IG
J "KG
L  MG
N 9OG
P 
)QG
 GG
r,   c                      e Zd ZU ded<   d fdZeeeeeeeeeeeeeeeeddded	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dd       Zeeeeeeeeeeeeeeeddded		 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dd
       Zeeeeeeeeeeeeeeeddded		 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dd       Z eddgg d      eeeeeeeeeeeeeeeddded	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dd       Z xZ	S )r   AsyncCompletionsWithRawResponser"   c                D    t         |   |       t        |       | _        y r$   )r%   r&   rs   r"   r'   s     r+   r&   zAsyncCompletions.__init__S  s     !@!Fr,   Nr-   rA   rB   c                  K   ywrD   rE   rF   s                         r+   rG   zAsyncCompletions.createW       @ 	   rI   c                  K   ywrK   rE   rL   s                         r+   rG   zAsyncCompletions.create  rv   rw   c                  K   ywrK   rE   rL   s                         r+   rG   zAsyncCompletions.create  rv   rw   rN   c          
     "  K   | j                  dt        i d|d|d|d|d|d|d|d	|d
|	d|
d|d|d|d|d|d|d|t        j                        t	        ||||      t
        |xs dt        t
                  d {   S 7 wrP   )rU   r   r   rV   r   r   r   rF   s                         r+   rG   zAsyncCompletions.create=  s7    T ZZ Uf w D	
 (): !*  !*  '(8 D D f f ";  U!" D#& )??), )+Q[el ?U":.;   
 
 	
 
s   BBB	B)r)   r   rW   rX   rY   ),rA   rZ   rB   r[   r8   rg   r.   r\   r/   r]   r0   r^   r1   r_   r2   r\   r3   r\   r4   r\   r5   r^   r6   r\   r7   r`   r9   ra   r:   r^   r;   r^   r<   rb   r=   rc   r>   rd   r?   re   r@   rf   rW   zAsyncStream[Completion]),rA   rZ   rB   r[   r8   rh   r.   r\   r/   r]   r0   r^   r1   r_   r2   r\   r3   r\   r4   r\   r5   r^   r6   r\   r7   r`   r9   ra   r:   r^   r;   r^   r<   rb   r=   rc   r>   rd   r?   re   r@   rf   rW   $Completion | AsyncStream[Completion]),rA   rZ   rB   r[   r.   r\   r/   r]   r0   r^   r1   r_   r2   r\   r3   r\   r4   r\   r5   r^   r6   r\   r7   r`   r8   rj   r9   ra   r:   r^   r;   r^   r<   rb   r=   rc   r>   rd   r?   re   r@   rf   rW   r{   rk   rq   s   @r+   r   r   P  so   66G ( -6*38A:C-6/8&/7@)2AJ6?+42;,5( )-$("&;DO_
_$ H%_& *'_( ()_* 6+_, 8-_. +/_0 -1_2 $3_4 55_6 '7_8 ?9_: 4;_< )=_> 0?_@ *A_B C_H &I_J "K_L  M_N 9O_P 
Q_ _B * -6*38A:C-6/8&/7@)2AJ+42;,5( )-$("&;DO_
_$ H%_& '_( *)_* (+_, 6-_. 8/_0 +1_2 -3_4 $5_6 57_8 '9_: ?;_< )=_> 0?_@ *A_B C_H &I_J "K_L  M_N 9O_P 
!Q_ _B * -6*38A:C-6/8&/7@)2AJ+42;,5( )-$("&;DO_
_$ H%_& '_( *)_* (+_, 6-_. 8/_0 +1_2 -3_4 $5_6 57_8 '9_: ?;_< )=_> 0?_@ *A_B C_H &I_J "K_L  M_N 9O_P 
.Q_ _B GX&(EF( -6*38A:C-6/8&/7@)2AJFO+42;,5( )-$("&;DOG

G
$ H%G
& *'G
( ()G
* 6+G
, 8-G
. +/G
0 -1G
2 $3G
4 55G
6 '7G
8 ?9G
: D;G
< )=G
> 0?G
@ *AG
B CG
H &IG
J "KG
L  MG
N 9OG
P 
.QG
 GG
r,   c                      e Zd ZddZy)r!   c                8    t        |j                        | _        y r$   )r   rG   r(   completionss     r+   r&   z#CompletionsWithRawResponse.__init__  s    -
r,   N)r   r   rW   rX   rl   rm   rn   r&   rE   r,   r+   r!   r!         
r,   r!   c                      e Zd ZddZy)rs   c                8    t        |j                        | _        y r$   )r   rG   r~   s     r+   r&   z(AsyncCompletionsWithRawResponse.__init__  s    3
r,   N)r   r   rW   rX   r   rE   r,   r+   rs   rs     r   r,   rs   )+
__future__r   typingr   r   r   r   r   r	   typing_extensionsr
   httpxtypesr   r   _typesr   r   r   r   r   _utilsr   r   	_resourcer   r   	_responser   r   
_streamingr   r   _base_clientr   _clientr   r   __all__r   r   r!   rs   rE   r,   r+   <module>r      sr    # G G %  8 > > 3 9 N , /-,
-u
/ u
pu
' u
p
 

 
r,   