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