Coverage for agentos/llm/deepseek_provider.py: 60%
15 statements
« prev ^ index » next coverage.py v7.14.3, created at 2026-07-06 10:59 +0800
« prev ^ index » next coverage.py v7.14.3, created at 2026-07-06 10:59 +0800
1"""
2DeepSeek Provider — 基于 OpenAIProvider 子类化,仅换 base_url。
3DeepSeek API 完全兼容 OpenAI Chat Completions 格式。
4v1.3.36: 首个实现,支持 Function Calling。
5"""
7from __future__ import annotations
10from agentos.llm.openai_provider import OpenAIProvider
12__all__ = ["DeepSeekProvider"]
14# USD per 1M tokens (DeepSeek pricing as of 2025-06)
15_DEEPSEEK_PRICING: dict[str, tuple[float, float]] = {
16 "deepseek-chat": (0.27, 1.10),
17 "deepseek-reasoner": (0.55, 2.19),
18}
21class DeepSeekProvider(OpenAIProvider):
22 """DeepSeek Provider — OpenAI 兼容,零额外代码。
24 用法:
25 provider = DeepSeekProvider(api_key="sk-...")
26 result = provider.chat([Message(role=MessageRole.USER, content="Hello")])
27 """
29 _pricing_injected: bool = False
31 def __init__(
32 self,
33 model: str = "deepseek-chat",
34 api_key: str = "",
35 base_url: str = "https://api.deepseek.com/v1",
36 timeout: float = 120.0,
37 ):
38 super().__init__(model=model, api_key=api_key, base_url=base_url, timeout=timeout)
39 if not self._pricing_injected:
40 from agentos.llm.openai_provider import _PRICING
41 _PRICING.update(_DEEPSEEK_PRICING)
42 DeepSeekProvider._pricing_injected = True
44 @property
45 def provider_name(self) -> str:
46 return "deepseek"