Spaces:
Sleeping
Sleeping
| from pydantic import BaseModel, Field | |
| from typing import Optional, List, Dict, Any | |
| from enum import Enum | |
| class LLMProvider(str, Enum): | |
| OPENAI = "openai" | |
| GROQ = "groq" | |
| class MessageRole(str, Enum): | |
| SYSTEM = "system" | |
| USER = "user" | |
| ASSISTANT = "assistant" | |
| class Message(BaseModel): | |
| role: MessageRole | |
| content: str | |
| class Config: | |
| json_schema_extra = { | |
| "example": { | |
| "role": "user", | |
| "content": "Hello, how are you?" | |
| } | |
| } | |
| class ChatRequest(BaseModel): | |
| messages: List[Message] = Field( | |
| ..., | |
| description = "List các message trong conversation", | |
| min_length = 1 | |
| ) | |
| provider: LLMProvider = Field( | |
| default=LLMProvider.OPENAI, | |
| description="LLM provider để sử dụng" | |
| ) | |
| model: Optional[str] = Field( | |
| default=None, | |
| description="Model cụ thể" | |
| ) | |
| temperature: float = Field( | |
| default=0.7, | |
| ge=0.0, | |
| le=2.0, | |
| description="Creativity level of the response (0-2)" | |
| ) | |
| max_tokens: Optional[int] = Field( | |
| default=1000, | |
| ge=1, | |
| le=4000, | |
| description="Max token in the response (1-4000)" | |
| ) | |
| stream: bool = Field( | |
| default=False, | |
| description="Enable streaming response" | |
| ) | |
| class Config: | |
| json_schoma_extra = { | |
| "example": { | |
| "messages": [ | |
| {"rold": "user", "content": "Hello, how are you?"} | |
| ], | |
| "provider": "openai", | |
| "model": "gpt-4o-mini", | |
| "temperature": 0.5, | |
| "max_tokens": 1000, | |
| # "stream": True | |
| } | |
| } | |
| class CompletionRequest(BaseModel): | |
| prompt: str = Field( | |
| ..., | |
| description="Prompt text to generate completion", | |
| min_length=1 | |
| ) | |
| provider: LLMProvider = Field( | |
| default=LLMProvider.OPENAI, | |
| description="LLM provider để sử dụng" | |
| ) | |
| model: Optional[str] = Field( | |
| default=None, | |
| description="Model cụ thể" | |
| ) | |
| temperature: float = Field( | |
| default=0.7, | |
| ge=0.0, | |
| le=2.0 | |
| ) | |
| max_tokens: Optional[int] = Field( | |
| default=500, | |
| ge=1, | |
| le=4000 | |
| ) | |
| system_prompt: Optional[str] = Field( | |
| default=None, | |
| description="System prompt để định hướng behavior" | |
| ) | |
| class Config: | |
| json_schema_extra = { | |
| "example": { | |
| "prompt": "Viết một đoạn giới thiệu về AI", | |
| "provider": "openai", | |
| "temperature": 0.5, | |
| "max_tokens": 1000, | |
| "system_prompt": "Bạn là một chuyên gia về AI" | |
| } | |
| } |