o
    ưi1                     @   s   d dl Z d dlZd dlZd dlmZmZ d dlZd dlZd dlm	Z	m
Z
mZmZ G dd deZG dd dZdd	 Z			dd
edededededefddZdd ZdS )    N)CallableOptional)ChoicesMessageModelResponseUsagec                       s   e Zd Z fddZ  ZS )AlephAlphaErrorc                    s@   || _ || _tjddd| _tj|| jd| _t | j d S )NPOSTz$https://api.aleph-alpha.com/complete)methodurl)status_coderequest)	r   messagehttpxRequestr   Responseresponsesuper__init__)selfr   r   	__class__ d/home/app/Keep/.python/lib/python3.10/site-packages/litellm/llms/deprecated_providers/aleph_alpha.pyr      s   zAlephAlphaError.__init__)__name__
__module____qualname__r   __classcell__r   r   r   r   r      s    r   c                A   @   sV  e Zd ZU dZejZee e	d< dZ
ee e	d< dZee e	d< dZee e	d< dZee e	d< dZee e	d< dZee e	d	< dZee e	d
< dZee e	d< dZee e	d< dZee e	d< dZee e	d< dZee e	d< dZee e	d< dZee e	d< dZee e	d< dZee e	d< dZee e	d< dZee e	d< dZee e	d< dZ ee e	d< dZ!ee" e	d< dZ#ee e	d< dZ$ee e	d< dZ%ee e	d< dZ&ee" e	d< dZ'ee" e	d< dZ(ee e	d< dZ)ee e	d< dZ*ee e	d < dZ+ee e	d!< 																															d'dee dee dee dee dee dee d	ee d
ee dee dee dee dee dee dee dee dee dee dee dee dee dee dee" dee dee dee dee" dee" dee dee d ee d!ee d"df@d#d$Z,e-d%d& Z.dS )(AlephAlphaConfiga  
    Reference: https://docs.aleph-alpha.com/api/complete/

    The `AlephAlphaConfig` class represents the configuration for the Aleph Alpha API. Here are the properties:

    - `maximum_tokens` (integer, required): The maximum number of tokens to be generated by the completion. The sum of input tokens and maximum tokens may not exceed 2048.

    - `minimum_tokens` (integer, optional; default value: 0): Generate at least this number of tokens before an end-of-text token is generated.

    - `echo` (boolean, optional; default value: false): Whether to echo the prompt in the completion.

    - `temperature` (number, nullable; default value: 0): Adjusts how creatively the model generates outputs. Use combinations of temperature, top_k, and top_p sensibly.

    - `top_k` (integer, nullable; default value: 0): Introduces randomness into token generation by considering the top k most likely options.

    - `top_p` (number, nullable; default value: 0): Adds randomness by considering the smallest set of tokens whose cumulative probability exceeds top_p.

    - `presence_penalty`, `frequency_penalty`, `sequence_penalty` (number, nullable; default value: 0): Various penalties that can reduce repetition.

    - `sequence_penalty_min_length` (integer; default value: 2): Minimum number of tokens to be considered as a sequence.

    - `repetition_penalties_include_prompt`, `repetition_penalties_include_completion`, `use_multiplicative_presence_penalty`,`use_multiplicative_frequency_penalty`,`use_multiplicative_sequence_penalty` (boolean, nullable; default value: false): Various settings that adjust how the repetition penalties are applied.

    - `penalty_bias` (string, nullable): Text used in addition to the penalized tokens for repetition penalties.

    - `penalty_exceptions` (string[], nullable): Strings that may be generated without penalty.

    - `penalty_exceptions_include_stop_sequences` (boolean, nullable; default value: true): Include all stop_sequences in penalty_exceptions.

    - `best_of` (integer, nullable; default value: 1): The number of completions will be generated on the server side.

    - `n` (integer, nullable; default value: 1): The number of completions to return.

    - `logit_bias` (object, nullable): Adjust the logit scores before sampling.

    - `log_probs` (integer, nullable): Number of top log probabilities for each token generated.

    - `stop_sequences` (string[], nullable): List of strings that will stop generation if they're generated.

    - `tokens` (boolean, nullable; default value: false): Flag indicating whether individual tokens of the completion should be returned or not.

    - `raw_completion` (boolean; default value: false): if True, the raw completion of the model will be returned.

    - `disable_optimizations` (boolean, nullable; default value: false): Disables any applied optimizations to both your prompt and completion.

    - `completion_bias_inclusion`, `completion_bias_exclusion` (string[], default value: []): Set of strings to bias the generation of tokens.

    - `completion_bias_inclusion_first_token_only`, `completion_bias_exclusion_first_token_only` (boolean; default value: false): Consider only the first token for the completion_bias_inclusion/exclusion.

    - `contextual_control_threshold` (number, nullable): Control over how similar tokens are controlled.

    - `control_log_additive` (boolean; default value: true): Method of applying control to attention scores.
    maximum_tokensNminimum_tokensechotemperaturetop_ktop_ppresence_penaltyfrequency_penaltysequence_penaltysequence_penalty_min_length#repetition_penalties_include_prompt'repetition_penalties_include_completion#use_multiplicative_presence_penalty$use_multiplicative_frequency_penalty#use_multiplicative_sequence_penaltypenalty_bias)penalty_exceptions_include_stop_sequencesbest_ofn
logit_bias	log_probsstop_sequencestokensraw_completiondisable_optimizationscompletion_bias_inclusioncompletion_bias_exclusion*completion_bias_inclusion_first_token_only*completion_bias_exclusion_first_token_onlycontextual_control_thresholdcontrol_log_additivereturnc            #      C   s>   t   } |  D ]\}!}"|!dkr|"d urt| j|!|" q	d S )Nr   )localscopyitemssetattrr   )#r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   Zlocals_keyvaluer   r   r   r   r   s   
"zAlephAlphaConfig.__init__c                 C   s   dd | j  D S )Nc                 S   s>   i | ]\}}| d st|tjtjttfs|dur||qS )__N)
startswith
isinstancetypesFunctionTypeBuiltinFunctionTypeclassmethodstaticmethod).0kvr   r   r   
<dictcomp>   s     z/AlephAlphaConfig.get_config.<locals>.<dictcomp>)__dict__rA   )clsr   r   r   
get_config   s   zAlephAlphaConfig.get_config)NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN)/r   r   r   __doc__litellmZ
max_tokensr   r   int__annotations__r    r!   boolr"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   strr/   r0   r1   r2   dictr3   r4   listr5   r6   r7   r8   r9   r:   r;   r<   r=   r   rK   rS   r   r   r   r   r      s  
 8	
 !
'r   c                 C   s    ddd}| rd|  |d< |S )Nzapplication/json)acceptzcontent-typezBearer Authorizationr   )api_keyheadersr   r   r   validate_environment   s   r`   modelmessagesapi_basemodel_responseprint_verboseoptional_paramsc                 C   s  t |}tj }| D ]\}}||vr|||< q|}| } d}d| v rqt|D ]G\}}d|v rh|dkr>|d|d  7 }q(|d dkrN|d|d  7 }q(|d dkr^|d	|d  7 }q(|d
|d  7 }q(||d  7 }q(n
ddd |D }| |d|}|j||d|id tjj	||t
|d|v r|d ndd}d|v r|d du r| S |j|||jd|id |d|j  |
 }d|v rt|d |jdz7g }t|d D ])\}}t|d dkrt|d d}ntd d}t|d |d |d}|| q||_W n ty   tt
||jdw t||}t|j|d d d  d d!d"}tt |_| |_t|||| d#}t|d$| |S )%N controlZroler   z###Instruction: contentsystemuserz
###Input: z###Response:  c                 s   s    | ]}|d  V  qdS )ri   Nr   )rM   r   r   r   r   	<genexpr>   s    zcompletion.<locals>.<genexpr>)ra   promptZcomplete_input_dict)inputr^   additional_argsstreamF)r_   datarq   T)ro   r^   original_responserp   zraw model_response: error)r   r   Zcompletions
completion)ri   finish_reason   )rv   indexr   choicesr   r   )Zdisallowed_special)prompt_tokenscompletion_tokensZtotal_tokensusage)r`   rU   r   rS   rA   	enumeratejoinZpre_callZmodule_level_clientpostjsondumps
iter_linesZ	post_calltextr   r   lenr   r   appendry   	ExceptionencoderV   timecreatedra   r   rB   )ra   rb   rc   rd   re   encodingr^   Zlogging_objrf   Zlitellm_paramsZ	logger_fnZdefault_max_tokens_to_sampler_   configrN   rO   Zcompletion_urlrn   idxr   rr   r   Zcompletion_responseZchoices_listitemZmessage_objZ
choice_objrz   r{   r|   r   r   r   ru      s   


ru   c                   C   s   d S )Nr   r   r   r   r   	embedding1  s   r   )NNN)r   r   rH   typingr   r   r   rU   Zlitellm.utilsr   r   r   r   r   r   r   r`   rY   r[   rZ   ru   r   r   r   r   r   <module>   s8     	
{