Files

1 line
4.8 KiB
JSON

{"repo": "charanbalaji2005/atlas-", "files": {"founderos/configs/llm_config.py": {"70cc081ffd5ce99de10f8771adf8d09a79ebf654": {"t": 1785674648.0713906, "n": 4443, "h": "eefb48e00c1c2329", "c": "#!/usr/bin/env python\n# -*- coding: utf-8 -*-\n\"\"\"\n@Time : 2024/1/4 16:33\n@Author : alexanderwu\n@File : llm_config.py\n\"\"\"\n\nfrom enum import Enum\nfrom typing import Optional\n\nfrom pydantic import field_validator\n\nfrom founderos.configs.compress_msg_config import CompressType\nfrom founderos.const import CONFIG_ROOT, LLM_API_TIMEOUT, METAGPT_ROOT\nfrom founderos.utils.yaml_model import YamlModel\n\n\nclass LLMType(Enum):\n OPENAI = \"openai\"\n ANTHROPIC = \"anthropic\"\n CLAUDE = \"claude\" # alias name of anthropic\n SPARK = \"spark\"\n ZHIPUAI = \"zhipuai\"\n FIREWORKS = \"fireworks\"\n OPEN_LLM = \"open_llm\"\n GEMINI = \"gemini\"\n METAGPT = \"founderos\"\n AZURE = \"azure\"\n OLLAMA = \"ollama\" # /chat at ollama api\n OLLAMA_GENERATE = \"ollama.generate\" # /generate at ollama api\n OLLAMA_EMBEDDINGS = \"ollama.embeddings\" # /embeddings at ollama api\n OLLAMA_EMBED = \"ollama.embed\" # /embed at ollama api\n QIANFAN = \"qianfan\" # Baidu BCE\n DASHSCOPE = \"dashscope\" # Aliyun LingJi DashScope\n MOONSHOT = \"moonshot\"\n MISTRAL = \"mistral\"\n YI = \"yi\" # lingyiwanwu\n OPEN_ROUTER = \"open_router\"\n DEEPSEEK = \"deepseek\"\n SILICONFLOW = \"siliconflow\"\n OPENROUTER = \"openrouter\"\n OPENROUTER_REASONING = \"openrouter_reasoning\"\n BEDROCK = \"bedrock\"\n ARK = \"ark\" # https://www.volcengine.com/docs/82379/1263482#python-sdk\n LLAMA_API = \"llama_api\"\n\n def __missing__(self, key):\n return self.OPENAI\n\n\nclass LLMConfig(YamlModel):\n \"\"\"Config for LLM\n\n OpenAI: https://github.com/openai/openai-python/blob/main/src/openai/resources/chat/completions.py#L681\n Optional Fields in pydantic: https://docs.pydantic.dev/latest/migration/#required-optional-and-nullable-fields\n \"\"\"\n\n api_key: str = \"sk-\"\n api_type: LLMType = LLMType.OPENAI\n base_url: str = \"https://api.openai.com/v1\"\n api_version: Optional[str] = None\n\n model: Optional[str] = None # also stands for DEPLOYMENT_NAME\n pricing_plan: Optional[str] = None # Cost Settlement Plan Parameters.\n\n # For Cloud Service Provider like Baidu/ Alibaba\n access_key: Optional[str] = None\n secret_key: Optional[str] = None\n session_token: Optional[str] = None\n endpoint: Optional[str] = None # for self-deployed model on the cloud\n\n # For Spark(Xunfei), maybe remove later\n app_id: Optional[str] = None\n api_secret: Optional[str] = None\n domain: Optional[str] = None\n\n # For Chat Completion\n max_token: int = 4096\n temperature: float = 0.0\n top_p: float = 1.0\n top_k: int = 0\n repetition_penalty: float = 1.0\n stop: Optional[str] = None\n presence_penalty: float = 0.0\n frequency_penalty: float = 0.0\n best_of: Optional[int] = None\n n: Optional[int] = None\n stream: bool = True\n seed: Optional[int] = None\n # https://cookbook.openai.com/examples/using_logprobs\n logprobs: Optional[bool] = None\n top_logprobs: Optional[int] = None\n timeout: int = 600\n context_length: Optional[int] = None # Max input tokens\n\n # For Amazon Bedrock\n region_name: str = None\n\n # For Network\n proxy: Optional[str] = None\n\n # Cost Control\n calc_usage: bool = True\n\n # Compress request messages under token limit\n compress_type: CompressType = CompressType.NO_COMPRESS\n\n # For Messages Control\n use_system_prompt: bool = True\n\n # reasoning / thinking switch\n reasoning: bool = False\n reasoning_max_token: int = 4000 # reasoning budget tokens to generate, usually smaller than max_token\n\n @field_validator(\"api_key\")\n @classmethod\n def check_llm_key(cls, v):\n if v in [\"\", None, \"YOUR_API_KEY\"]:\n repo_config_path = METAGPT_ROOT / \"config/config2.yaml\"\n root_config_path = CONFIG_ROOT / \"config2.yaml\"\n if root_config_path.exists():\n raise ValueError(\n f\"Please set your API key in {root_config_path}. If you also set your config in {repo_config_path}, \\n\"\n f\"the former will overwrite the latter. This may cause unexpected result.\\n\"\n )\n elif repo_config_path.exists():\n raise ValueError(f\"Please set your API key in {repo_config_path}\")\n else:\n raise ValueError(\"Please set your API key in config2.yaml\")\n return v\n\n @field_validator(\"timeout\")\n @classmethod\n def check_timeout(cls, v):\n return v or LLM_API_TIMEOUT\n"}}}}