Spaces:
Running
Running
from typing import List, Dict, Optional, Union, Literal, Any | |
from pydantic import BaseModel, Field | |
# openAI 请求 | |
class ChatCompletionRequest(BaseModel): | |
model: str | |
messages: List[Dict[str, Any]] | |
temperature: float = 0.7 | |
top_p: Optional[float] = None | |
top_k: Optional[float] = None | |
n: int = 1 | |
stream: bool = False | |
stop: Optional[Union[str, List[str]]] = None | |
max_tokens: Optional[int] = None | |
presence_penalty: Optional[float] = 0.0 | |
frequency_penalty: Optional[float] = 0.0 | |
seed: Optional[int] = None | |
logprobs: Optional[int] = None | |
response_logprobs: Optional[bool] = None | |
thinking_budget: Optional[int] = None | |
reasoning_effort : Optional[str] = None | |
# 函数调用 | |
tools: Optional[List[Dict[str, Any]]] = None | |
tool_choice: Optional[Union[Literal["none", "auto"], Dict[str, Any]]] = "auto" | |
# gemini 请求 | |
class ChatRequestGemini(BaseModel): | |
contents: List[Dict[str, Any]] | |
system_instruction: Optional[Dict[str, Any]]= None | |
systemInstruction: Optional[Dict[str, Any]]= None | |
safetySettings: Optional[List[Dict[str, Any]]] = None | |
generationConfig: Optional[Dict[str, Any]] = None | |
tools: Optional[List[Dict[str, Any]]] = None | |
# AI模型请求包装 | |
class AIRequest(BaseModel): | |
payload: Optional[ChatRequestGemini] = None | |
model: Optional[str] = None | |
stream: bool = False | |
format_type: Optional[str] = "gemini" | |
class Usage(BaseModel): | |
prompt_tokens: int = 0 | |
completion_tokens: int = 0 | |
total_tokens: int = 0 | |
class ChatCompletionResponse(BaseModel): | |
id: str | |
object: Literal["chat.completion"] | |
created: int | |
model: str | |
choices: List[Any] | |
usage: Usage = Field(default_factory=Usage) | |
class ErrorResponse(BaseModel): | |
message: str | |
type: str | |
param: Optional[str] = None | |
code: Optional[str] = None | |
class ModelList(BaseModel): | |
object: str = "list" | |
data: List[Dict[str, Any]] | |
class ChatResponseGemini(BaseModel): | |
candidates: Optional[List[Any]] = None | |
promptFeedback: Optional[Any] = None | |
usageMetadata: Optional[Dict[str, int]] = None | |