1 line
3.4 KiB
JSON
1 line
3.4 KiB
JSON
{"repo": "bald0wang/whale-cli", "files": {"code/chapter-05/full/llm/client.py": {"47969b0265e36c62f7996ddf4410ea83b2607fd9": {"t": 1785745990.5414703, "n": 1459, "h": "ac5abbb5b0af9d1e", "c": "\"\"\"LLM client — OpenAI 兼容接口的薄封装。\n\n配置优先级:构造函数参数 > 环境变量(LLM_API_KEY / LLM_BASE_URL / LLM_MODEL)。\n\"\"\"\n\nfrom __future__ import annotations\n\nimport os\nfrom typing import Any, Dict, List, Optional\n\nfrom openai import OpenAI\n\n\nclass LLMClient:\n def __init__(\n self,\n api_key: Optional[str] = None,\n base_url: Optional[str] = None,\n model: Optional[str] = None,\n temperature: float = 0.3,\n ):\n self.api_key = api_key or os.getenv(\"LLM_API_KEY\", \"\")\n self.base_url = base_url or os.getenv(\"LLM_BASE_URL\", \"https://api.deepseek.com\")\n self.model = model or os.getenv(\"LLM_MODEL\", \"deepseek-v4-flash\")\n self.temperature = temperature\n\n if not self.api_key:\n raise ValueError(\"LLM_API_KEY 环境变量未设置\")\n\n self.client = OpenAI(api_key=self.api_key, base_url=self.base_url)\n\n def chat(\n self,\n messages: List[Dict[str, Any]],\n tools: Optional[List[Any]] = None,\n *,\n temperature: Optional[float] = None,\n ):\n api_tools = [t.schema for t in tools] if tools else None\n\n kwargs: Dict[str, Any] = {\n \"model\": self.model,\n \"messages\": messages,\n \"temperature\": self.temperature if temperature is None else temperature,\n }\n if api_tools:\n kwargs[\"tools\"] = api_tools\n\n response = self.client.chat.completions.create(**kwargs)\n return response.choices[0].message\n"}, "c3bd8c019b76d876d00c5b12e77b3534705f1f19": {"t": 1785758583.1838312, "n": 1459, "h": "ac5abbb5b0af9d1e", "c": "\"\"\"LLM client — OpenAI 兼容接口的薄封装。\n\n配置优先级:构造函数参数 > 环境变量(LLM_API_KEY / LLM_BASE_URL / LLM_MODEL)。\n\"\"\"\n\nfrom __future__ import annotations\n\nimport os\nfrom typing import Any, Dict, List, Optional\n\nfrom openai import OpenAI\n\n\nclass LLMClient:\n def __init__(\n self,\n api_key: Optional[str] = None,\n base_url: Optional[str] = None,\n model: Optional[str] = None,\n temperature: float = 0.3,\n ):\n self.api_key = api_key or os.getenv(\"LLM_API_KEY\", \"\")\n self.base_url = base_url or os.getenv(\"LLM_BASE_URL\", \"https://api.deepseek.com\")\n self.model = model or os.getenv(\"LLM_MODEL\", \"deepseek-v4-flash\")\n self.temperature = temperature\n\n if not self.api_key:\n raise ValueError(\"LLM_API_KEY 环境变量未设置\")\n\n self.client = OpenAI(api_key=self.api_key, base_url=self.base_url)\n\n def chat(\n self,\n messages: List[Dict[str, Any]],\n tools: Optional[List[Any]] = None,\n *,\n temperature: Optional[float] = None,\n ):\n api_tools = [t.schema for t in tools] if tools else None\n\n kwargs: Dict[str, Any] = {\n \"model\": self.model,\n \"messages\": messages,\n \"temperature\": self.temperature if temperature is None else temperature,\n }\n if api_tools:\n kwargs[\"tools\"] = api_tools\n\n response = self.client.chat.completions.create(**kwargs)\n return response.choices[0].message\n"}}}} |