§
    šŠtj  ã                   ód   — d Z ddlmZ ddlmZmZmZ ddlmZ ddl	m
Z
mZ  G d„ dee¦  «        ZdS )	z$Wrapper around Moonshot chat models.é    )ÚDict)Úconvert_to_secret_strÚget_from_dict_or_envÚpre_init)Ú
ChatOpenAI)ÚMOONSHOT_SERVICE_URL_BASEÚMoonshotCommonc                   ó2   — e Zd ZdZededefd„¦   «         ZdS )ÚMoonshotChatuá  Moonshot chat model integration.

    Setup:
        Install ``openai`` and set environment variables ``MOONSHOT_API_KEY``.

        .. code-block:: bash

            pip install openai
            export MOONSHOT_API_KEY="your-api-key"

    Key init args â€” completion params:
        model: str
            Name of Moonshot model to use.
        temperature: float
            Sampling temperature.
        max_tokens: Optional[int]
            Max number of tokens to generate.

    Key init args â€” client params:
        api_key: Optional[str]
            Moonshot API KEY. If not passed in will be read from env var MOONSHOT_API_KEY.
        api_base: Optional[str]
            Base URL for API requests.

    See full list of supported init args and their descriptions in the params section.

    Instantiate:
        .. code-block:: python

            from langchain_community.chat_models import MoonshotChat

            chat = MoonshotChat(
                temperature=0.5,
                api_key="your-api-key",
                model="moonshot-v1-8k",
                # api_base="...",
                # other params...
            )

    Invoke:
        .. code-block:: python

            messages = [
                ("system", "ä½ æ˜¯ä¸€å��ä¸“ä¸šçš„ç¿»è¯‘å®¶ï¼Œå�¯ä»¥å°†ç”¨æˆ·çš„ä¸­æ–‡ç¿»è¯‘ä¸ºè‹±æ–‡ã€‚"),
                ("human", "æˆ‘å–œæ¬¢ç¼–ç¨‹ã€‚"),
            ]
            chat.invoke(messages)

        .. code-block:: python

            AIMessage(
                content='I like programming.',
                additional_kwargs={},
                response_metadata={
                    'token_usage': {
                        'completion_tokens': 5,
                        'prompt_tokens': 27,
                        'total_tokens': 32
                    },
                    'model_name': 'moonshot-v1-8k',
                    'system_fingerprint': None,
                    'finish_reason': 'stop',
                    'logprobs': None
                },
                id='run-71c03f4e-6628-41d5-beb6-d2559ae68266-0'
            )

    Stream:
        .. code-block:: python

            for chunk in chat.stream(messages):
                print(chunk)

        .. code-block:: python

            content='' additional_kwargs={} response_metadata={} id='run-80d77096-8b83-4c39-a84d-71d9c746da92'
            content='I' additional_kwargs={} response_metadata={} id='run-80d77096-8b83-4c39-a84d-71d9c746da92'
            content=' like' additional_kwargs={} response_metadata={} id='run-80d77096-8b83-4c39-a84d-71d9c746da92'
            content=' programming' additional_kwargs={} response_metadata={} id='run-80d77096-8b83-4c39-a84d-71d9c746da92'
            content='.' additional_kwargs={} response_metadata={} id='run-80d77096-8b83-4c39-a84d-71d9c746da92'
            content='' additional_kwargs={} response_metadata={'finish_reason': 'stop'} id='run-80d77096-8b83-4c39-a84d-71d9c746da92'

        .. code-block:: python

            stream = chat.stream(messages)
            full = next(stream)
            for chunk in stream:
                full += chunk
            full

        .. code-block:: python

            AIMessageChunk(
                content='I like programming.',
                additional_kwargs={},
                response_metadata={'finish_reason': 'stop'},
                id='run-10c80976-7aa5-4ff7-ba3e-1251665557ef'
            )

    Async:
        .. code-block:: python

            await chat.ainvoke(messages)

            # stream:
            # async for chunk in chat.astream(messages):
            #    print(chunk)

            # batch:
            # await chat.abatch([messages])

        .. code-block:: python

            [AIMessage(content='I like programming.', additional_kwargs={}, response_metadata={'token_usage': {'completion_tokens': 5, 'prompt_tokens': 27, 'total_tokens': 32}, 'model_name': 'moonshot-v1-8k', 'system_fingerprint': None, 'finish_reason': 'stop', 'logprobs': None}, id='run-2938b005-9204-4b9f-b273-1c3272fce9e5-0')]

    Response metadata
        .. code-block:: python

            ai_msg = chat.invoke(messages)
            ai_msg.response_metadata

        .. code-block:: python

            {
                'token_usage': {
                    'completion_tokens': 5,
                    'prompt_tokens': 27,
                    'total_tokens': 32
                },
                'model_name': 'moonshot-v1-8k',
                'system_fingerprint': None,
                'finish_reason': 'stop',
                'logprobs': None
            }

    ÚvaluesÚreturnc                 óª  — t          t          |g d¢d¦  «        ¦  «        |d<   	 ddl}n# t          $ r t          d¦  «        ‚w xY w|d                              ¦   «         d|v r|d         nt
          dœ}|                     d	¦  «        s |j        di |¤Žj        j	        |d	<   |                     d
¦  «        s |j
        di |¤Žj        j	        |d
<   |S )z2Validate that the environment is set up correctly.)Úmoonshot_api_keyÚapi_keyÚopenai_api_keyÚMOONSHOT_API_KEYr   r   NzTCould not import openai python package. Please install it with `pip install openai`.Úbase_url)r   r   ÚclientÚasync_client© )r   r   ÚopenaiÚImportErrorÚget_secret_valuer   ÚgetÚOpenAIÚchatÚcompletionsÚAsyncOpenAI)Úclsr   r   Úclient_paramss       úf/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/langchain_community/chat_models/moonshot.pyÚvalidate_environmentz!MoonshotChat.validate_environment™   s7  € õ &;Ý ØØAÐAÐAØ"ñô ñ&
ô &
ˆÐ!Ñ"ð	ØˆMˆMˆMˆMøåð 	ð 	ð 	Ýð?ñô ð ð	øøøð Ð0Ô1×BÒBÑDÔDà˜VÐ#Ð#ð ˜zÔ*Ð*å*ð	
ð 
ˆð �zŠz˜(Ñ#Ô#ð 	OØ,˜vœ}Ð=Ð=¨}Ð=Ð=ÔBÔNˆF�8ÑØ�zŠz˜.Ñ)Ô)ð 	Ø%7 VÔ%7ð &ð &Øð&ð &ä”;ð �>Ñ"ð ˆs	   ¥* ªAN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r"   r   ó    r!   r   r      sO   € € € € € ðGð GðR ð!¨$ð !°4ð !ð !ð !ñ „Xð!ð !ð !r'   r   N)r&   Útypingr   Úlangchain_core.utilsr   r   r   Ú&langchain_community.chat_models.openair   Ú!langchain_community.llms.moonshotr   r	   r   r   r'   r!   ú<module>r,      s»   ðØ *Ð *à Ð Ð Ð Ð Ð ðð ð ð ð ð ð ð ð ð ð >Ð =Ð =Ð =Ð =Ð =Ø WÐ WÐ WÐ WÐ WÐ WÐ WÐ Wðlð lð lð lð l�> :ñ lô lð lð lð lr'   