Ë
    µŒjf"  ã                   óx   — d dl Z d dlmZmZmZ d dlmZmZ d dlm	Z	 d dl
mZmZ  G d„ de«      Z G d„ d	e«      Zy)
é    N)ÚAnyÚListÚOptional)ÚAsyncCallbackManagerForLLMRunÚCallbackManagerForLLMRun)Ú	LLMResult)ÚOpenAIÚ
OpenAIChatc                   óÖ   ‡ — e Zd ZU dZeee      ed<   dZee	   ed<   e
de	fd„«       Z	 	 ddee   deee      d	ee   d
edef
ˆ fd„Z	 	 ddee   deee      d	ee   d
edef
ˆ fd„Zˆ xZS )ÚPromptLayerOpenAIaS  PromptLayer OpenAI large language models.

    To use, you should have the ``openai`` and ``promptlayer`` python
    package installed, and the environment variable ``OPENAI_API_KEY``
    and ``PROMPTLAYER_API_KEY`` set with your openAI API key and
    promptlayer key respectively.

    All parameters that can be passed to the OpenAI LLM can also
    be passed here. The PromptLayerOpenAI LLM adds two optional

    parameters:
        ``pl_tags``: List of strings to tag the request with.
        ``return_pl_id``: If True, the PromptLayer request ID will be
            returned in the ``generation_info`` field of the
            ``Generation`` object.

    Example:
        .. code-block:: python

            from langchain_community.llms import PromptLayerOpenAI
            openai = PromptLayerOpenAI(model_name="gpt-3.5-turbo-instruct")
    Úpl_tagsFÚreturn_pl_idÚreturnc                  ó   — y)NF© )Úclss    úu/var/www/html/Fitness-lenito-AI-main/venv/lib/python3.12/site-packages/langchain_community/llms/promptlayer_openai.pyÚis_lc_serializablez$PromptLayerOpenAI.is_lc_serializable(   s   € àó    ÚpromptsÚstopÚrun_managerÚkwargsc                 ó†  •— ddl m}m} t        j                  j	                  «       j                  «       }t        ‰| �  |||«      }t        j                  j	                  «       j                  «       }	t        t        |«      «      D ]·  }
||
   }|j                  |
   d   }|j                  |j                  dœ}i | j                  ¥|¥} |dd|g|| j                  |||	 |«       | j                  ¬«
      }| j                  sŒ||j                   �t#        |j                   t$        «      si |_        ||j                   d<   Œ¹ |S )úFCall OpenAI generate and then call PromptLayer API to log the request.r   ©Úget_api_keyÚpromptlayer_api_request©ÚtextÚ
llm_outputzlangchain.PromptLayerOpenAIÚ	langchain©r   Úpl_request_id©Úpromptlayer.utilsr   r   ÚdatetimeÚnowÚ	timestampÚsuperÚ	_generateÚrangeÚlenÚgenerationsr    r!   Ú_identifying_paramsr   r   Úgeneration_infoÚ
isinstanceÚdict©Úselfr   r   r   r   r   r   Úrequest_start_timeÚgenerated_responsesÚrequest_end_timeÚiÚpromptÚ
generationÚrespÚparamsr$   Ú	__class__s                   €r   r+   zPromptLayerOpenAI._generate,   s9  ø€ ÷ 	Kä%×.Ñ.×2Ñ2Ó4×>Ñ>Ó@ÐÜ#™gÑ/°¸¸{ÓKÐÜ#×,Ñ,×0Ñ0Ó2×<Ñ<Ó>ÐÜ”s˜7“|Ö$ˆAØ˜Q‘ZˆFØ,×8Ñ8¸Ñ;¸AÑ>ˆJà"Ÿ™Ø1×<Ñ<ñˆDð <˜×0Ñ0Ð;°FÐ;ˆFÙ3Ø-ØØ�ØØ—‘ØØ"Ø Ù“Ø!×.Ñ.ôˆMð × Ó Ø×-Ñ-Ð5¼ZØ×.Ñ.´ô>ð 24�JÔ.Ø>K�
×*Ñ*¨?Ò;ð3 %ð4 #Ð"r   c              ‹   ó¸  •K  — ddl m}m} t        j                  j	                  «       j                  «       }t        ‰| �  |||«      ƒ d {  –—† }t        j                  j	                  «       j                  «       }	t        t        |«      «      D ]¿  }
||
   }|j                  |
   d   }|j                  |j                  dœ}i | j                  ¥|¥} |dd|g|| j                  |||	 |«       | j                  ¬«
      ƒ d {  –—† }| j                  sŒ„|j                   �t#        |j                   t$        «      si |_        ||j                   d<   ŒÁ |S 7 �Œ	7 ŒT­w)Nr   ©r   Úpromptlayer_api_request_asyncr   z!langchain.PromptLayerOpenAI.asyncr"   r#   r$   ©r&   r   r@   r'   r(   r)   r*   Ú
_agenerater,   r-   r.   r    r!   r/   r   r   r0   r1   r2   ©r4   r   r   r   r   r   r@   r5   r6   r7   r8   r9   r:   r;   r<   r$   r=   s                   €r   rB   zPromptLayerOpenAI._agenerateU   sQ  øè ø€ ÷ 	Qä%×.Ñ.×2Ñ2Ó4×>Ñ>Ó@ÐÜ$)¡GÑ$6°wÀÀkÓ$R×RÐÜ#×,Ñ,×0Ñ0Ó2×<Ñ<Ó>ÐÜ”s˜7“|Ö$ˆAØ˜Q‘ZˆFØ,×8Ñ8¸Ñ;¸AÑ>ˆJà"Ÿ™Ø1×<Ñ<ñˆDð <˜×0Ñ0Ð;°FÐ;ˆFÙ"?Ø3ØØ�ØØ—‘ØØ"Ø Ù“Ø!×.Ñ.ô#÷ ˆMð × Ó Ø×-Ñ-Ð5¼ZØ×.Ñ.´ô>ð 24�JÔ.Ø>K�
×*Ñ*¨?Ò;ð3 %ð4 #Ð"ð9 Sùðúó,   ƒA	EÁEÁB6EÄEÄEÄAEÅE©NN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   ÚstrÚ__annotations__r   ÚboolÚclassmethodr   r   r   r   r+   r   rB   Ú__classcell__©r=   s   @r   r   r      sæ   ø… ñð. �d˜3‘iÑ Ó Ø#(€L�(˜4‘.Ó(àð 4ò ó ðð %)Ø:>ñ	'#à�c‘ð'#ð �t˜C‘yÑ!ð'#ð Ð6Ñ7ð	'#ð
 ð'#ð 
õ'#ðX %)Ø?Cñ	&#à�c‘ð&#ð �t˜C‘yÑ!ð&#ð Ð;Ñ<ð	&#ð
 ð&#ð 
÷&#ñ &#r   r   c                   óÀ   ‡ — e Zd ZU dZeee      ed<   dZee	   ed<   	 	 ddee   deee      dee
   ded	ef
ˆ fd
„Z	 	 ddee   deee      dee   ded	ef
ˆ fd„Zˆ xZS )ÚPromptLayerOpenAIChataZ  PromptLayer OpenAI large language models.

    To use, you should have the ``openai`` and ``promptlayer`` python
    package installed, and the environment variable ``OPENAI_API_KEY``
    and ``PROMPTLAYER_API_KEY`` set with your openAI API key and
    promptlayer key respectively.

    All parameters that can be passed to the OpenAIChat LLM can also
    be passed here. The PromptLayerOpenAIChat adds two optional

    parameters:
        ``pl_tags``: List of strings to tag the request with.
        ``return_pl_id``: If True, the PromptLayer request ID will be
            returned in the ``generation_info`` field of the
            ``Generation`` object.

    Example:
        .. code-block:: python

            from langchain_community.llms import PromptLayerOpenAIChat
            openaichat = PromptLayerOpenAIChat(model_name="gpt-3.5-turbo")
    r   Fr   r   r   r   r   r   c                 ó†  •— ddl m}m} t        j                  j	                  «       j                  «       }t        ‰| �  |||«      }t        j                  j	                  «       j                  «       }	t        t        |«      «      D ]·  }
||
   }|j                  |
   d   }|j                  |j                  dœ}i | j                  ¥|¥} |dd|g|| j                  |||	 |«       | j                  ¬«
      }| j                  sŒ||j                   �t#        |j                   t$        «      si |_        ||j                   d<   Œ¹ |S )r   r   r   r   zlangchain.PromptLayerOpenAIChatr"   r#   r$   r%   r3   s                   €r   r+   zPromptLayerOpenAIChat._generate™   s9  ø€ ÷ 	Kä%×.Ñ.×2Ñ2Ó4×>Ñ>Ó@ÐÜ#™gÑ/°¸¸{ÓKÐÜ#×,Ñ,×0Ñ0Ó2×<Ñ<Ó>ÐÜ”s˜7“|Ö$ˆAØ˜Q‘ZˆFØ,×8Ñ8¸Ñ;¸AÑ>ˆJà"Ÿ™Ø1×<Ñ<ñˆDð <˜×0Ñ0Ð;°FÐ;ˆFÙ3Ø1ØØ�ØØ—‘ØØ"Ø Ù“Ø!×.Ñ.ôˆMð × Ó Ø×-Ñ-Ð5¼ZØ×.Ñ.´ô>ð 24�JÔ.Ø>K�
×*Ñ*¨?Ò;ð3 %ð4 #Ð"r   c              ‹   ó¸  •K  — ddl m}m} t        j                  j	                  «       j                  «       }t        ‰| �  |||«      ƒ d {  –—† }t        j                  j	                  «       j                  «       }	t        t        |«      «      D ]¿  }
||
   }|j                  |
   d   }|j                  |j                  dœ}i | j                  ¥|¥} |dd|g|| j                  |||	 |«       | j                  ¬«
      ƒ d {  –—† }| j                  sŒ„|j                   �t#        |j                   t$        «      si |_        ||j                   d<   ŒÁ |S 7 �Œ	7 ŒT­w)Nr   r?   r   z%langchain.PromptLayerOpenAIChat.asyncr"   r#   r$   rA   rC   s                   €r   rB   z PromptLayerOpenAIChat._agenerateÂ   sQ  øè ø€ ÷ 	Qä%×.Ñ.×2Ñ2Ó4×>Ñ>Ó@ÐÜ$)¡GÑ$6°wÀÀkÓ$R×RÐÜ#×,Ñ,×0Ñ0Ó2×<Ñ<Ó>ÐÜ”s˜7“|Ö$ˆAØ˜Q‘ZˆFØ,×8Ñ8¸Ñ;¸AÑ>ˆJà"Ÿ™Ø1×<Ñ<ñˆDð <˜×0Ñ0Ð;°FÐ;ˆFÙ"?Ø7ØØ�ØØ—‘ØØ"Ø Ù“Ø!×.Ñ.ô#÷ ˆMð × Ó Ø×-Ñ-Ð5¼ZØ×.Ñ.´ô>ð 24�JÔ.Ø>K�
×*Ñ*¨?Ò;ð3 %ð4 #Ð"ð9 SùðúrD   rE   )rF   rG   rH   rI   r   r   rJ   rK   r   rL   r   r   r   r+   r   rB   rN   rO   s   @r   rQ   rQ   ~   sÍ   ø… ñð. �d˜3‘iÑ Ó Ø#(€L�(˜4‘.Ó(ð
 %)Ø:>ñ	'#à�c‘ð'#ð �t˜C‘yÑ!ð'#ð Ð6Ñ7ð	'#ð
 ð'#ð 
õ'#ðX %)Ø?Cñ	&#à�c‘ð&#ð �t˜C‘yÑ!ð&#ð Ð;Ñ<ð	&#ð
 ð&#ð 
÷&#ñ &#r   rQ   )r'   Útypingr   r   r   Úlangchain_core.callbacksr   r   Úlangchain_core.outputsr   Úlangchain_community.llms.openair	   r
   r   rQ   r   r   r   Ú<module>rX      s8   ðÛ ß &Ñ &÷õ -ç >ôn#˜ô n#ôbj#˜Jõ j#r   