Ë
    µŒjÄ  ã                   ó–   — d dl Z d dlZd dlmZmZmZmZmZ d dlZd dl	m
Z
 d dlmZ d dlmZ  ej                  e«      Z G d„ de«      Zy)é    N)ÚAnyÚDictÚIteratorÚListÚOptional)ÚCallbackManagerForLLMRun)ÚLLM)ÚGenerationChunkc                   ó”  ‡ — e Zd ZU dZeed<   eed<   dZeed<   dZeed<   dZe	ed	<   d
Z
eed<   deddfˆ fd„Zedefd„«       Zedeeef   fd„«       Zedeeef   fd„«       Zdedeeef   dej&                  fd„Zdej&                  defd„Z	 	 ddedeee      dee   dedee   f
d„Z	 	 ddedeee      dee   dedef
d„Zˆ xZS )ÚCloudflareWorkersAIa„  Cloudflare Workers AI service.

    To use, you must provide an API token and
    account ID to access Cloudflare Workers AI, and
    pass it as a named parameter to the constructor.

    Example:
        .. code-block:: python

            from langchain_community.llms.cloudflare_workersai import CloudflareWorkersAI

            my_account_id = "my_account_id"
            my_api_token = "my_secret_api_token"
            llm_model =  "@cf/meta/llama-2-7b-chat-int8"

            cf_ai = CloudflareWorkersAI(
                account_id=my_account_id,
                api_token=my_api_token,
                model=llm_model
            )
    Ú
account_idÚ	api_tokenz@cf/meta/llama-2-7b-chat-int8Úmodelz-https://api.cloudflare.com/client/v4/accountsÚbase_urlFÚ	streamingÚ Úendpoint_urlÚkwargsÚreturnNc                 ó~   •— t        ‰| �  di |¤Ž | j                  › d| j                  › d| j                  › �| _        y)z+Initialize the Cloudflare Workers AI class.Ú/z/ai/run/N© )ÚsuperÚ__init__r   r   r   r   )Úselfr   Ú	__class__s     €úw/var/www/html/Fitness-lenito-AI-main/venv/lib/python3.12/site-packages/langchain_community/llms/cloudflare_workersai.pyr   zCloudflareWorkersAI.__init__+   s9   ø€ ä‰ÑÑ"˜6Ò"à#Ÿ}™}˜o¨Q¨t¯©Ð.?¸xÈÏ
É
À|ÐTˆÕó    c                  ó   — y)zReturn type of LLM.Ú
cloudflarer   ©r   s    r   Ú	_llm_typezCloudflareWorkersAI._llm_type1   s   € ð r   c                 ó   — i S )zDefault parametersr   r!   s    r   Ú_default_paramsz#CloudflareWorkersAI._default_params6   s	   € ð ˆ	r   c                 ó`   — | j                   | j                  | j                  | j                  dœS )zIdentifying parameters©r   r   r   r   r&   r!   s    r   Ú_identifying_paramsz'CloudflareWorkersAI._identifying_params;   s*   € ð Ÿ/™/ØŸ™Ø—Z‘ZØŸ™ñ	
ð 	
r   ÚpromptÚparamsc                 ó¤   — dd| j                   › �i}|| j                  dœ|¥}t        j                  | j                  ||| j                  ¬«      }|S )zCall Cloudflare Workers APIÚAuthorizationzBearer )r(   Ústream)ÚheadersÚjsonr,   )r   r   ÚrequestsÚpostr   )r   r(   r)   r-   ÚdataÚresponses         r   Ú	_call_apizCloudflareWorkersAI._call_apiE   sS   € à" g¨d¯n©nÐ-=Ð$>Ð?ˆØ ¨D¯N©NÑE¸fÐEˆÜ—=‘=Ø×Ñ w°TÀ$Ç.Á.ô
ˆð ˆr   r2   c                 óz   — |j                   r|j                  «       }|d   d   S t        d|j                  › �«      ‚)zProcess API responseÚresultr2   zRequest failed with status )Úokr.   Ú
ValueErrorÚstatus_code)r   r2   r1   s      r   Ú_process_responsez%CloudflareWorkersAI._process_responseN   s=   € à�;Š;Ø—=‘=“?ˆDØ˜‘> *Ñ-Ð-äÐ:¸8×;OÑ;OÐ:PÐQÓRÐRr   ÚstopÚrun_managerc              +   óÚ  K  — | j                   }d| _         t        d«      }d}| j                  ||«      j                  «       D ]`  }||k(  r nYt        |«      |kD  sŒ	 t	        j
                  ||d «      }	|	€Œ5d|	v sŒ:|r|j                  |	d   «       t        |	d   ¬«      –— Œb t        j                  d«       || _         y# t        $ r}
t        j                  |«       |
‚d}
~
ww xY w­w)zStreaming predictionTzdata: s   data: [DONE]Nr2   )Útextz
stream end)r   Úlenr3   Ú
iter_linesr.   ÚloadsÚ	ExceptionÚloggerÚdebugÚon_llm_new_tokenr
   )r   r(   r:   r;   r   Úoriginal_steamingÚ_response_prefix_countÚ_response_stream_endÚchunkr1   Úes              r   Ú_streamzCloudflareWorkersAI._streamV   sé   è ø€ ð #'§.¡.ÐØˆŒÜ!$ X£ÐØ.ÐØ—^‘^ F¨FÓ3×>Ñ>Ö@ˆEØÐ,Ò,ÙÜ�5‹zÐ2Ó2ðÜŸ:™: eÐ,BÐ,CÐ&DÓE�Dð Ñ#¨
°dÒ(:Ù"Ø#×4Ñ4°T¸*Ñ5EÔFÜ)¨t°JÑ/?Ô@Ó@ð Aô 	�‰�\Ô"Ø*ˆ�øô !ò Ü—L‘L Ô'Ø�Gûðüs7   ‚AC+ÁCÁ5C+Á8C+Á=AC+Ã	C(ÃC#Ã#C(Ã(C+c                 óâ   — | j                   r<dj                   | j                  |||fi |¤ŽD �cg c]  }|j                  ‘Œ c}«      S | j	                  ||«      }| j                  |«      S c c}w )zRegular predictionr   )r   ÚjoinrJ   r=   r3   r9   )r   r(   r:   r;   r   Úcr2   s          r   Ú_callzCloudflareWorkersAI._callr   sq   € ð �>Š>Ø—7‘7Ø!- §¡¨f°d¸KÑ!RÈ6Ò!RÓSÑ!R˜A�—“Ð!RÑSóð ð —~‘~ f¨fÓ5ˆHØ×)Ñ)¨(Ó3Ð3ùò	 Ts   ¯A,)NN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚstrÚ__annotations__r   r   r   Úboolr   r   r   Úpropertyr"   r   r$   r'   r/   ÚResponser3   r9   r   r   r   r   r
   rJ   rN   Ú__classcell__)r   s   @r   r   r      s”  ø… ñð, ƒOØƒNØ0€Eˆ3Ó0ØC€HˆcÓCØ€IˆtÓØ€L�#ÓðU ð U¨õ Uð ð˜3ò ó ðð ð  c¨3 h¡ò ó ðð ð
 T¨#¨s¨(¡^ò 
ó ð
ð ð ¨T°#°s°(©^ð À×@QÑ@Qó ðS¨(×*;Ñ*;ð SÀó Sð %)Ø:>ñ	+àð+ð �t˜C‘yÑ!ð+ð Ð6Ñ7ð	+ð
 ð+ð 
�/Ñ	"ó+ð> %)Ø:>ñ	4àð4ð �t˜C‘yÑ!ð4ð Ð6Ñ7ð	4ð
 ð4ð 
÷4r   r   )r.   ÚloggingÚtypingr   r   r   r   r   r/   Úlangchain_core.callbacksr   Ú#langchain_core.language_models.llmsr	   Úlangchain_core.outputsr
   Ú	getLoggerrO   rB   r   r   r   r   Ú<module>r_      s=   ðÛ Û ß 6Õ 6ã Ý =Ý 3Ý 2à	ˆ×	Ñ	˜8Ó	$€ôs4˜#õ s4r   