aboutsummaryrefslogtreecommitdiff
path: root/.venv/lib/python3.12/site-packages/litellm/llms/deepseek/chat/transformation.py
diff options
context:
space:
mode:
Diffstat (limited to '.venv/lib/python3.12/site-packages/litellm/llms/deepseek/chat/transformation.py')
-rw-r--r--.venv/lib/python3.12/site-packages/litellm/llms/deepseek/chat/transformation.py55
1 files changed, 55 insertions, 0 deletions
diff --git a/.venv/lib/python3.12/site-packages/litellm/llms/deepseek/chat/transformation.py b/.venv/lib/python3.12/site-packages/litellm/llms/deepseek/chat/transformation.py
new file mode 100644
index 00000000..180cf7dc
--- /dev/null
+++ b/.venv/lib/python3.12/site-packages/litellm/llms/deepseek/chat/transformation.py
@@ -0,0 +1,55 @@
+"""
+Translates from OpenAI's `/v1/chat/completions` to DeepSeek's `/v1/chat/completions`
+"""
+
+from typing import List, Optional, Tuple
+
+from litellm.litellm_core_utils.prompt_templates.common_utils import (
+ handle_messages_with_content_list_to_str_conversion,
+)
+from litellm.secret_managers.main import get_secret_str
+from litellm.types.llms.openai import AllMessageValues
+
+from ...openai.chat.gpt_transformation import OpenAIGPTConfig
+
+
+class DeepSeekChatConfig(OpenAIGPTConfig):
+
+ def _transform_messages(
+ self, messages: List[AllMessageValues], model: str
+ ) -> List[AllMessageValues]:
+ """
+ DeepSeek does not support content in list format.
+ """
+ messages = handle_messages_with_content_list_to_str_conversion(messages)
+ return super()._transform_messages(messages=messages, model=model)
+
+ def _get_openai_compatible_provider_info(
+ self, api_base: Optional[str], api_key: Optional[str]
+ ) -> Tuple[Optional[str], Optional[str]]:
+ api_base = (
+ api_base
+ or get_secret_str("DEEPSEEK_API_BASE")
+ or "https://api.deepseek.com/beta"
+ ) # type: ignore
+ dynamic_api_key = api_key or get_secret_str("DEEPSEEK_API_KEY")
+ return api_base, dynamic_api_key
+
+ def get_complete_url(
+ self,
+ api_base: Optional[str],
+ model: str,
+ optional_params: dict,
+ litellm_params: dict,
+ stream: Optional[bool] = None,
+ ) -> str:
+ """
+ If api_base is not provided, use the default DeepSeek /chat/completions endpoint.
+ """
+ if not api_base:
+ api_base = "https://api.deepseek.com/beta"
+
+ if not api_base.endswith("/chat/completions"):
+ api_base = f"{api_base}/chat/completions"
+
+ return api_base