50 lines
1.5 KiB
Python
50 lines
1.5 KiB
Python
# api/deepseek_api.py
|
|
|
|
import logging
|
|
from typing import List, Dict, Any, Optional
|
|
from .openai_api import send_openai_request # Re-use the openai compatible request sender
|
|
|
|
logger = logging.getLogger(__name__)
|
|
|
|
async def send_deepseek_request(
|
|
api_url: Optional[str],
|
|
base64_images: Optional[List[str]],
|
|
model: str,
|
|
system_message: str,
|
|
user_message: str,
|
|
messages: List[Dict[str, Any]],
|
|
api_key: Optional[str],
|
|
seed: Optional[int] = None,
|
|
temperature: float = 0.7,
|
|
max_tokens: int = 1024,
|
|
top_p: float = 0.9,
|
|
repeat_penalty: float = 1.1,
|
|
tools: Optional[Any] = None,
|
|
tool_choice: Optional[Any] = None,
|
|
**kwargs, # absorb extra arguments
|
|
) -> Dict[str, Any]:
|
|
"""
|
|
Sends a request to the DeepSeek API using the OpenAI-compatible endpoint.
|
|
"""
|
|
deepseek_api_url = api_url or "https://api.deepseek.com/v1/chat/completions"
|
|
|
|
logger.info(f"Sending request to DeepSeek API: model={model}")
|
|
|
|
# DeepSeek API is OpenAI-compatible, so we can reuse the same request function.
|
|
return await send_openai_request(
|
|
api_url=deepseek_api_url,
|
|
base64_images=base64_images,
|
|
model=model,
|
|
system_message=system_message,
|
|
user_message=user_message,
|
|
messages=messages,
|
|
api_key=api_key,
|
|
seed=seed,
|
|
temperature=temperature,
|
|
max_tokens=max_tokens,
|
|
top_p=top_p,
|
|
repeat_penalty=repeat_penalty,
|
|
tools=tools,
|
|
tool_choice=tool_choice,
|
|
)
|