
    Ti                    f    S SK Jr  S SKrS SKrS SKJrJr  S SKJr   " S S5      r	 " S S\5      r
g)	    )annotationsN)parserequest)ILanguageModelc                  J    \ rS rSrSr SrS
SS jjrSSS jjrS rSS jr	S	r
g)LibreTranslateAPI
   z!Connect to the LibreTranslate APIz$https://translate.argosopentech.com/Nc                    Uc  U R                   OUU l        X l        [        U R                  5      S:  d   eU R                  S   S:w  a  U =R                  S-  sl        gg)zzCreate 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      e/var/www/html/backend/Backoffice_Marketplace/venv/lib/python3.13/site-packages/argostranslate/apis.py__init__LibreTranslateAPI.__init__   sV     (+{4## 488}q   88B<3HHOH     c                l   U R                   S-   nXUS.nU R                  b  U R                  US'   [        R                  " U5      n[        R
                  " XFR                  5       S9n[        R                  " U5      nUR                  5       R                  5       n	[        R                  " U	5      S   $ )zTranslate 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   LibreTranslateAPI.translate'   s     hh$f=<<# $F9__V,
ooc(9(9(;<??3'}}--/zz,'(899r   c                p   U R                   S-   n[        5       nU R                  b  U R                  US'   [        R                  " U5      n[
        R                  " XR                  5       S9n[
        R                  " U5      nUR                  5       R                  5       n[        R                  " U5      $ )ztRetrieve 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.   LibreTranslateAPI.languagesC   s     hh$<<# $F9__V,
ooc(9(9(;<??3'}}--/zz,''r   c                d   U R                   S-   nSU0nU R                  b  U R                  US'   [        R                  " U5      n[        R
                  " X$R                  5       S9n[        R                  " U5      nUR                  5       R                  5       n[        R                  " U5      $ )zDetect 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   r2   LibreTranslateAPI.detectZ   s     hh!q<<# $F9__V,
ooc(9(9(;<??3'}}--/zz,''r   )r   r   )NN)r   strr   r4   )enes)r   r4   r   r4   r   r4   returnr4   )r   r4   )__name__
__module____qualname____firstlineno____doc__r   r   r   r.   r2   __static_attributes__ r   r   r   r   
   s%    + 9K :8(.(r   r   c                  (    \ rS rSrSS jrSS jrSrg)	OpenAIAPI|   c                    Xl         g)zMCreate an API connection.

Args:
    api_key: The API key for the OpenAI API
Nr   )r   r   s     r   r   OpenAIAPI.__init__}   s	     r   c                   SnUSS.nSSU R                   -   S.n[        R                  " U5      R                  5       n[        R
                  " X%USS9n [        R                  " U5      n UR                  5       R                  5       n	[        R                  " U	5      S
   S   S   $ ! [         a$  n[        U[        R                  5         S	nAg	S	nAff = f! [         a$  n[        U[        R                  5         S	nAg	S	nAff = f)zfConnect to OpenAI API

Args:
    prompt: The prompt to run inference on.

Returns: The generated text
z5https://api.openai.com/v1/engines/davinci/completionsd   )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   rG   r   r'   rK   encoded_paramsr)   r*   er+   s
             r   inferOpenAIAPI.infer   s     F"#6 /&5

 F+224oocPVW	s+H
	#==?113L
 zz,'	215f==  	!SZZ 	  	!SZZ 	s0   B) ,C )
C3CC
D$DDrC   N)r   r4   )rG   r4   r7   z
str | None)r8   r9   r:   r;   r   rV   r=   r>   r   r   r@   r@   |   s    !>r   r@   )
__future__r   r%   rR   urllibr   r   argostranslate.modelsr   r   r@   r>   r   r   <module>r[      s-    "  
 ! 0h( h(d*> *>r   