Team Ai
Datasetpublic

codekingpro/portable-devtools

sourceHugging Faceupdated 5mo agoView on Hugging Face
1likes14kdownloads
moonshot.py188 linesDownload Raw Back to chat_models
1"""Wrapper around Moonshot chat models."""2 3from typing import Dict4 5from langchain_core.utils import (6    convert_to_secret_str,7    get_from_dict_or_env,8    pre_init,9)10 11from langchain_community.chat_models import ChatOpenAI12from langchain_community.llms.moonshot import MOONSHOT_SERVICE_URL_BASE, MoonshotCommon13 14 15class MoonshotChat(MoonshotCommon, ChatOpenAI):  # type: ignore[misc]16    """Moonshot chat model integration.17 18    Setup:19        Install ``openai`` and set environment variables ``MOONSHOT_API_KEY``.20 21        .. code-block:: bash22 23            pip install openai24            export MOONSHOT_API_KEY="your-api-key"25 26    Key init args — completion params:27        model: str28            Name of Moonshot model to use.29        temperature: float30            Sampling temperature.31        max_tokens: Optional[int]32            Max number of tokens to generate.33 34    Key init args — client params:35        api_key: Optional[str]36            Moonshot API KEY. If not passed in will be read from env var MOONSHOT_API_KEY.37        api_base: Optional[str]38            Base URL for API requests.39 40    See full list of supported init args and their descriptions in the params section.41 42    Instantiate:43        .. code-block:: python44 45            from langchain_community.chat_models import MoonshotChat46 47            chat = MoonshotChat(48                temperature=0.5,49                api_key="your-api-key",50                model="moonshot-v1-8k",51                # api_base="...",52                # other params...53            )54 55    Invoke:56        .. code-block:: python57 58            messages = [59                ("system", "你是一名专业的翻译家,可以将用户的中文翻译为英文。"),60                ("human", "我喜欢编程。"),61            ]62            chat.invoke(messages)63 64        .. code-block:: python65 66            AIMessage(67                content='I like programming.',68                additional_kwargs={},69                response_metadata={70                    'token_usage': {71                        'completion_tokens': 5,72                        'prompt_tokens': 27,73                        'total_tokens': 3274                    },75                    'model_name': 'moonshot-v1-8k',76                    'system_fingerprint': None,77                    'finish_reason': 'stop',78                    'logprobs': None79                },80                id='run-71c03f4e-6628-41d5-beb6-d2559ae68266-0'81            )82 83    Stream:84        .. code-block:: python85 86            for chunk in chat.stream(messages):87                print(chunk)88 89        .. code-block:: python90 91            content='' additional_kwargs={} response_metadata={} id='run-80d77096-8b83-4c39-a84d-71d9c746da92'92            content='I' additional_kwargs={} response_metadata={} id='run-80d77096-8b83-4c39-a84d-71d9c746da92'93            content=' like' additional_kwargs={} response_metadata={} id='run-80d77096-8b83-4c39-a84d-71d9c746da92'94            content=' programming' additional_kwargs={} response_metadata={} id='run-80d77096-8b83-4c39-a84d-71d9c746da92'95            content='.' additional_kwargs={} response_metadata={} id='run-80d77096-8b83-4c39-a84d-71d9c746da92'96            content='' additional_kwargs={} response_metadata={'finish_reason': 'stop'} id='run-80d77096-8b83-4c39-a84d-71d9c746da92'97 98        .. code-block:: python99 100            stream = chat.stream(messages)101            full = next(stream)102            for chunk in stream:103                full += chunk104            full105 106        .. code-block:: python107 108            AIMessageChunk(109                content='I like programming.',110                additional_kwargs={},111                response_metadata={'finish_reason': 'stop'},112                id='run-10c80976-7aa5-4ff7-ba3e-1251665557ef'113            )114 115    Async:116        .. code-block:: python117 118            await chat.ainvoke(messages)119 120            # stream:121            # async for chunk in chat.astream(messages):122            #    print(chunk)123 124            # batch:125            # await chat.abatch([messages])126 127        .. code-block:: python128 129            [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')]130 131    Response metadata132        .. code-block:: python133 134            ai_msg = chat.invoke(messages)135            ai_msg.response_metadata136 137        .. code-block:: python138 139            {140                'token_usage': {141                    'completion_tokens': 5,142                    'prompt_tokens': 27,143                    'total_tokens': 32144                },145                'model_name': 'moonshot-v1-8k',146                'system_fingerprint': None,147                'finish_reason': 'stop',148                'logprobs': None149            }150 151    """  # noqa: E501152 153    @pre_init154    def validate_environment(cls, values: Dict) -> Dict:155        """Validate that the environment is set up correctly."""156        values["moonshot_api_key"] = convert_to_secret_str(157            get_from_dict_or_env(158                values,159                ["moonshot_api_key", "api_key", "openai_api_key"],160                "MOONSHOT_API_KEY",161            )162        )163 164        try:165            import openai166 167        except ImportError:168            raise ImportError(169                "Could not import openai python package. "170                "Please install it with `pip install openai`."171            )172 173        client_params = {174            "api_key": values["moonshot_api_key"].get_secret_value(),175            "base_url": values["base_url"]176            if "base_url" in values177            else MOONSHOT_SERVICE_URL_BASE,178        }179 180        if not values.get("client"):181            values["client"] = openai.OpenAI(**client_params).chat.completions182        if not values.get("async_client"):183            values["async_client"] = openai.AsyncOpenAI(184                **client_params185            ).chat.completions186 187        return values188 
codekingpro/portable-devtools · Team Ai