Mind-Reframe / ai-core /app /models /requests.py
cuongpm-cs's picture
Initial commit
f171e60
Raw
History Blame Contribute Delete
2.81 kB
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"
}
}