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