Ë
    i›¾jä  ã                  óf   — d dl mZ d dlZd dlZd dlmZmZ d dlmZ  G d„ d«      Z	 G d„ de«      Z
y)	é    )ÚannotationsN)ÚparseÚrequest)ÚILanguageModelc                  ó8   — e Zd ZdZ	 dZdd	d„Zd
dd„Zd„ Zdd„Zy)ÚLibreTranslateAPIz!Connect to the LibreTranslate APIz$https://translate.argosopentech.com/Nc                óÀ   — |€| j                   n|| _        || _        t        | j                  «      dkD  sJ ‚| j                  d   dk7  r| xj                  dz  c_        yy)zšCreate a LibreTranslate API connection.

        Args:
            url: The url of the LibreTranslate endpoint.
            api_key: The API key.
        Nr   éÿÿÿÿú/)ÚDEFAULT_URLÚurlÚapi_keyÚlen)Úselfr   r   s      ú]/home/spazio/kingdom_calls/work5/transenv/lib/python3.12/site-packages/argostranslate/apis.pyÚ__init__zLibreTranslateAPI.__init__   sX   € ð (+ {�4×#Ò#¸ˆŒØˆŒô �4—8‘8‹}˜qÒ Ð Ð Ø�8‰8�B‰<˜3ÒØ�HŠH˜‰OŽHð ó    c                ól  — | j                   dz   }|||dœ}| j                  �| j                  |d<   t        j                  |«      }t	        j
                  ||j                  «       ¬«      }t	        j                  |«      }|j                  «       j                  «       }	t        j                  |	«      d   S )záTranslate string

        Args:
            q: The text to translate
            source: The source language code (ISO 639)
            target: The target language code (ISO 639)

        Returns: The translated text
        Ú	translate)ÚqÚsourceÚtargetr   ©ÚdataÚtranslatedText©r   r   r   Ú	urlencoder   ÚRequestÚencodeÚurlopenÚreadÚdecodeÚjsonÚloads)
r   r   r   r   r   ÚparamsÚ
url_paramsÚreqÚresponseÚresponse_strs
             r   r   zLibreTranslateAPI.translate'   s”   € ð �h‰h˜Ñ$ˆà F°fÑ=ˆà�<‰<Ð#Ø $§¡ˆF�9Ñä—_‘_ VÓ,ˆ
ä�o‰o˜c¨
×(9Ñ(9Ó(;Ô<ˆä—?‘? 3Ó'ˆà—}‘}“×-Ñ-Ó/ˆä�z‰z˜,Ó'Ð(8Ñ9Ð9r   c                ón  — | j                   dz   }t        «       }| j                  �| j                  |d<   t        j                  |«      }t        j                  ||j                  «       ¬«      }t        j                  |«      }|j                  «       j                  «       }t        j                  |«      S )z„Retrieve list of supported languages.

        Returns: A list of available languages ex. [{"code":"en", "name":"English"}]
        Ú	languagesr   r   )r   Údictr   r   r   r   r   r   r    r!   r"   r#   r$   )r   r   r%   r&   r'   r(   r)   s          r   r+   zLibreTranslateAPI.languagesC   s‰   € ð �h‰h˜Ñ$ˆä“ˆà�<‰<Ð#Ø $§¡ˆF�9Ñä—_‘_ VÓ,ˆ
ä�o‰o˜c¨
×(9Ñ(9Ó(;Ô<ˆä—?‘? 3Ó'ˆà—}‘}“×-Ñ-Ó/ˆä�z‰z˜,Ó'Ð'r   c                ób  — | j                   dz   }d|i}| j                  �| j                  |d<   t        j                  |«      }t	        j
                  ||j                  «       ¬«      }t	        j                  |«      }|j                  «       j                  «       }t        j                  |«      S )z°Detect the language of a single text.

        Args:
            q: Text to detect

        Returns: The detected languages ex. [{"confidence": 0.6, "language": "en"}]
        Údetectr   r   r   r   )r   r   r   r%   r&   r'   r(   r)   s           r   r.   zLibreTranslateAPI.detectZ   s‹   € ð �h‰h˜Ñ!ˆà�q�ˆà�<‰<Ð#Ø $§¡ˆF�9Ñä—_‘_ VÓ,ˆ
ä�o‰o˜c¨
×(9Ñ(9Ó(;Ô<ˆä—?‘? 3Ó'ˆà—}‘}“×-Ñ-Ó/ˆä�z‰z˜,Ó'Ð'r   )NN)r   Ústrr   r/   )ÚenÚes)r   r/   r   r/   r   r/   Úreturnr/   )r   r/   )	Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r   r+   r.   © r   r   r   r   
   s%   „ Ù+ðð 9€Kôô :ò8(ô.(r   r   c                  ó   — e Zd Zdd„Zdd„Zy)Ú	OpenAIAPIc                ó   — || _         y)zeCreate an API connection.

        Args:
            api_key: The API key for the OpenAI API
        N)r   )r   r   s     r   r   zOpenAIAPI.__init__}   s   € ð ˆ�r   c                ó  — d}|ddœ}dd| j                   z   dœ}t        j                  |«      j                  «       }t	        j
                  |||d¬«      }	 t	        j                  |«      }	 |j                  «       j                  «       }	t        j                  |	«      d
   d   d   S # t        $ r$}t        |t        j                  «       Y d	}~y	d	}~ww xY w# t        $ r$}t        |t        j                  «       Y d	}~y	d	}~ww xY w)z†Connect to OpenAI API

        Args:
            prompt: The prompt to run inference on.

        Returns: The generated text
        z5https://api.openai.com/v1/engines/davinci/completionséd   )ÚpromptÚ
max_tokenszapplication/jsonzBearer )zContent-TypeÚAuthorizationÚPOST)r   ÚheadersÚmethodNÚchoicesr   Útext)r   r#   Údumpsr   r   r   r    Ú	ExceptionÚprintÚsysÚstderrr!   r"   r$   )
r   r=   r   r%   rA   Úencoded_paramsr'   r(   Úer)   s
             r   ÚinferzOpenAIAPI.infer…   së   € ð Fˆà"°#Ñ6ˆð /Ø&¨¯©Ñ5ñ
ˆô
 Ÿ™ FÓ+×2Ñ2Ó4ˆä�o‰o˜c¨ÀÐPVÔWˆð	Ü—‘ sÓ+ˆHð
	Ø#Ÿ=™=›?×1Ñ1Ó3ˆLô
 �z‰z˜,Ó'¨	Ñ2°1Ñ5°fÑ=Ð=øô ò 	Ü�!”S—Z‘ZÔ Üûð	ûô ò 	Ü�!”S—Z‘ZÔ Üûð	ús0   ÁB) Á-C Â)	CÂ2CÃCÃ	DÃ"DÄDN)r   r/   )r=   r/   r2   z
str | None)r3   r4   r5   r   rL   r7   r   r   r9   r9   |   s   „ óô!>r   r9   )Ú
__future__r   r#   rH   Úurllibr   r   Úargostranslate.modelsr   r   r9   r7   r   r   ú<module>rP      s-   ðÝ "ã Û 
ß !å 0÷h(ñ h(ôd*>�õ *>r   