o
    +ÂifXå  ã                   @  sL  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 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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& ddl'm(Z( ddl)m*Z* ddg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ƒZ0G dd„ dƒZ1dS )é    )Úannotations)ÚDictÚListÚUnionÚIterableÚOptionalÚoverload)ÚLiteralNé   )Ú_legacy_response)Úcompletion_create_params)Ú	NOT_GIVENÚBodyÚQueryÚHeadersÚNotGiven)Úrequired_argsÚmaybe_transformÚasync_maybe_transform)Úcached_property)ÚSyncAPIResourceÚAsyncAPIResource)Úto_streamed_response_wrapperÚ"async_to_streamed_response_wrapper)ÚStreamÚAsyncStream)Úmake_request_options)Ú
Completion)Ú ChatCompletionStreamOptionsParamÚCompletionsÚAsyncCompletionsc                   @  ó  e Zd Zed<dd„ƒZed=dd„ƒZeeeeeeeeeeeeeeeeeddded	œd>d0d1„ƒZeeeeeeeeeeeeeeeeddded2œd?d5d1„ƒZeeeeeeeeeeeeeeeeddded2œd@d8d1„ƒZe	d
dgg d9¢ƒeeeeeeeeeeeeeeeeddded	œdAd;d1„ƒZdS )Br   ÚreturnÚCompletionsWithRawResponsec                 C  ó   t | ƒS ©N)r#   ©Úself© r(   úU/var/www/html/corbot_env/lib/python3.10/site-packages/openai/resources/completions.pyÚwith_raw_response    ó   zCompletions.with_raw_responseÚ CompletionsWithStreamingResponsec                 C  r$   r%   )r,   r&   r(   r(   r)   Úwith_streaming_response$   r+   z#Completions.with_streaming_responseN©Úbest_ofÚechoÚfrequency_penaltyÚ
logit_biasÚlogprobsÚ
max_tokensÚnÚpresence_penaltyÚseedÚstopÚstreamÚstream_optionsÚsuffixÚtemperatureÚtop_pÚuserÚextra_headersÚextra_queryÚ
extra_bodyÚtimeoutÚmodelúKUnion[str, Literal['gpt-3.5-turbo-instruct', 'davinci-002', 'babbage-002']]ÚpromptúCUnion[str, List[str], Iterable[int], Iterable[Iterable[int]], None]r/   úOptional[int] | NotGivenr0   úOptional[bool] | NotGivenr1   úOptional[float] | NotGivenr2   ú#Optional[Dict[str, int]] | NotGivenr3   r4   r5   r6   r7   r8   ú0Union[Optional[str], List[str], None] | NotGivenr9   ú#Optional[Literal[False]] | NotGivenr:   ú5Optional[ChatCompletionStreamOptionsParam] | NotGivenr;   úOptional[str] | NotGivenr<   r=   r>   ústr | NotGivenr?   úHeaders | Noner@   úQuery | NonerA   úBody | NonerB   ú'float | httpx.Timeout | None | NotGivenr   c                C  ó   dS ©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/text-generation/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) 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 output 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) that can be generated 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/text-generation/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).

          stream_options: Options for streaming response. Only set this when you set `stream: true`.

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

              This parameter is only supported for `gpt-3.5-turbo-instruct`.

          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
        Nr(   ©r'   rC   rE   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   r(   r(   r)   Úcreate(   ó    zCompletions.create©r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r:   r;   r<   r=   r>   r?   r@   rA   rB   úLiteral[True]úStream[Completion]c                C  rT   ©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/text-generation/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) 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 output 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) that can be generated 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/text-generation/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_options: Options for streaming response. Only set this when you set `stream: true`.

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

              This parameter is only supported for `gpt-3.5-turbo-instruct`.

          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
        Nr(   ©r'   rC   rE   r9   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r:   r;   r<   r=   r>   r?   r@   rA   rB   r(   r(   r)   rW   Á   rX   ÚboolúCompletion | Stream[Completion]c                C  rT   r\   r(   r]   r(   r(   r)   rW   Z  rX   ©rC   rE   r9   ú3Optional[Literal[False]] | Literal[True] | NotGivenc             	   C  s    | j dti d|“d|“d|“d|“d|“d|“d|“d	|“d
|	“d|
“d|“d|“d|“d|“d|“d|“d|“d|i¥tjƒt||||d�t|pJdtt d�S ©Nz/completionsrC   rE   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   )r?   r@   rA   rB   F)ÚbodyÚoptionsÚcast_tor9   Ú
stream_cls)Ú_postr   r   ÚCompletionCreateParamsr   r   r   rV   r(   r(   r)   rW   ó  sb   ÿþýüûúùø	÷
öõôóòñðïîëÿâ)r"   r#   )r"   r,   ©.rC   rD   rE   rF   r/   rG   r0   rH   r1   rI   r2   rJ   r3   rG   r4   rG   r5   rG   r6   rI   r7   rG   r8   rK   r9   rL   r:   rM   r;   rN   r<   rI   r=   rI   r>   rO   r?   rP   r@   rQ   rA   rR   rB   rS   r"   r   ).rC   rD   rE   rF   r9   rZ   r/   rG   r0   rH   r1   rI   r2   rJ   r3   rG   r4   rG   r5   rG   r6   rI   r7   rG   r8   rK   r:   rM   r;   rN   r<   rI   r=   rI   r>   rO   r?   rP   r@   rQ   rA   rR   rB   rS   r"   r[   ).rC   rD   rE   rF   r9   r^   r/   rG   r0   rH   r1   rI   r2   rJ   r3   rG   r4   rG   r5   rG   r6   rI   r7   rG   r8   rK   r:   rM   r;   rN   r<   rI   r=   rI   r>   rO   r?   rP   r@   rQ   rA   rR   rB   rS   r"   r_   ).rC   rD   rE   rF   r/   rG   r0   rH   r1   rI   r2   rJ   r3   rG   r4   rG   r5   rG   r6   rI   r7   rG   r8   rK   r9   ra   r:   rM   r;   rN   r<   rI   r=   rI   r>   rO   r?   rP   r@   rQ   rA   rR   rB   rS   r"   r_   ©
Ú__name__Ú
__module__Ú__qualname__r   r*   r-   r   r   rW   r   r(   r(   r(   r)   r      ó¼    æ æ æ æc                   @  r!   )Br    r"   ÚAsyncCompletionsWithRawResponsec                 C  r$   r%   )ro   r&   r(   r(   r)   r*   3  r+   z"AsyncCompletions.with_raw_responseÚ%AsyncCompletionsWithStreamingResponsec                 C  r$   r%   )rp   r&   r(   r(   r)   r-   7  r+   z(AsyncCompletions.with_streaming_responseNr.   rC   rD   rE   rF   r/   rG   r0   rH   r1   rI   r2   rJ   r3   r4   r5   r6   r7   r8   rK   r9   rL   r:   rM   r;   rN   r<   r=   r>   rO   r?   rP   r@   rQ   rA   rR   rB   rS   r   c                Ã  ó   �dS rU   r(   rV   r(   r(   r)   rW   ;  ó   € zAsyncCompletions.createrY   rZ   úAsyncStream[Completion]c                Ã  rq   r\   r(   r]   r(   r(   r)   rW   Ô  rr   r^   ú$Completion | AsyncStream[Completion]c                Ã  rq   r\   r(   r]   r(   r(   r)   rW   m  rr   r`   ra   c             	   Ã  s®   �| j dti d|“d|“d|“d|“d|“d|“d|“d	|“d
|	“d|
“d|“d|“d|“d|“d|“d|“d|“d|i¥tjƒI d H t||||d�t|pNdtt d�I d H S rb   )rg   r   r   rh   r   r   r   rV   r(   r(   r)   rW     sd   €ÿþýüûúùø	÷
öõôóòñðïîëÿâ)r"   ro   )r"   rp   ri   ).rC   rD   rE   rF   r9   rZ   r/   rG   r0   rH   r1   rI   r2   rJ   r3   rG   r4   rG   r5   rG   r6   rI   r7   rG   r8   rK   r:   rM   r;   rN   r<   rI   r=   rI   r>   rO   r?   rP   r@   rQ   rA   rR   rB   rS   r"   rs   ).rC   rD   rE   rF   r9   r^   r/   rG   r0   rH   r1   rI   r2   rJ   r3   rG   r4   rG   r5   rG   r6   rI   r7   rG   r8   rK   r:   rM   r;   rN   r<   rI   r=   rI   r>   rO   r?   rP   r@   rQ   rA   rR   rB   rS   r"   rt   ).rC   rD   rE   rF   r/   rG   r0   rH   r1   rI   r2   rJ   r3   rG   r4   rG   r5   rG   r6   rI   r7   rG   r8   rK   r9   ra   r:   rM   r;   rN   r<   rI   r=   rI   r>   rO   r?   rP   r@   rQ   rA   rR   rB   rS   r"   rt   rj   r(   r(   r(   r)   r    2  rn   c                   @  ó   e Zd Zddd„ZdS )	r#   Úcompletionsr   r"   ÚNonec                 C  ó   || _ t |j¡| _d S r%   )Ú_completionsr   Úto_raw_response_wrapperrW   ©r'   rv   r(   r(   r)   Ú__init__F  ó   
ÿz#CompletionsWithRawResponse.__init__N©rv   r   r"   rw   ©rk   rl   rm   r|   r(   r(   r(   r)   r#   E  ó    r#   c                   @  ru   )	ro   rv   r    r"   rw   c                 C  rx   r%   )ry   r   Úasync_to_raw_response_wrapperrW   r{   r(   r(   r)   r|   O  r}   z(AsyncCompletionsWithRawResponse.__init__N©rv   r    r"   rw   r   r(   r(   r(   r)   ro   N  r€   ro   c                   @  ru   )	r,   rv   r   r"   rw   c                 C  ó   || _ t|jƒ| _d S r%   )ry   r   rW   r{   r(   r(   r)   r|   X  ó   
ÿz)CompletionsWithStreamingResponse.__init__Nr~   r   r(   r(   r(   r)   r,   W  r€   r,   c                   @  ru   )	rp   rv   r    r"   rw   c                 C  rƒ   r%   )ry   r   rW   r{   r(   r(   r)   r|   a  r„   z.AsyncCompletionsWithStreamingResponse.__init__Nr‚   r   r(   r(   r(   r)   rp   `  r€   rp   )2Ú
__future__r   Útypingr   r   r   r   r   r   Útyping_extensionsr	   ÚhttpxÚ r   Útypesr   Ú_typesr   r   r   r   r   Ú_utilsr   r   r   Ú_compatr   Ú	_resourcer   r   Ú	_responser   r   Ú
_streamingr   r   Ú_base_clientr   Útypes.completionr   Ú/types.chat.chat_completion_stream_options_paramr   Ú__all__r   r    r#   ro   r,   rp   r(   r(   r(   r)   Ú<module>   s<            			