Add backend model files for AI data structures
This commit is contained in:
parent
d9d5b41041
commit
44679bf307
1
backend/app/models/__init__.py
Normal file
1
backend/app/models/__init__.py
Normal file
@ -0,0 +1 @@
|
||||
# Pydantic models and data structures
|
115
backend/app/models/ai.py
Normal file
115
backend/app/models/ai.py
Normal file
@ -0,0 +1,115 @@
|
||||
"""
|
||||
Pydantic models for AI-related API requests and responses
|
||||
"""
|
||||
|
||||
from typing import List, Optional, Dict, Any
|
||||
from pydantic import BaseModel, Field
|
||||
from enum import Enum
|
||||
|
||||
class AICommand(str, Enum):
|
||||
"""Supported AI commands"""
|
||||
EXPLAIN = "explain"
|
||||
REFACTOR = "refactor"
|
||||
FIX = "fix"
|
||||
COMPLETE = "complete"
|
||||
COMMENT = "comment"
|
||||
TEST = "test"
|
||||
OPTIMIZE = "optimize"
|
||||
DOCUMENT = "document"
|
||||
|
||||
class LanguageType(str, Enum):
|
||||
"""Supported programming languages"""
|
||||
PYTHON = "python"
|
||||
JAVASCRIPT = "javascript"
|
||||
TYPESCRIPT = "typescript"
|
||||
JAVA = "java"
|
||||
GO = "go"
|
||||
RUST = "rust"
|
||||
CPP = "cpp"
|
||||
C = "c"
|
||||
CSHARP = "csharp"
|
||||
PHP = "php"
|
||||
RUBY = "ruby"
|
||||
SWIFT = "swift"
|
||||
KOTLIN = "kotlin"
|
||||
SCALA = "scala"
|
||||
HTML = "html"
|
||||
CSS = "css"
|
||||
SQL = "sql"
|
||||
SHELL = "shell"
|
||||
MARKDOWN = "markdown"
|
||||
YAML = "yaml"
|
||||
JSON = "json"
|
||||
XML = "xml"
|
||||
|
||||
class AIRequest(BaseModel):
|
||||
"""Base AI request model"""
|
||||
command: AICommand
|
||||
code: str = Field(..., description="The code to process")
|
||||
language: Optional[LanguageType] = Field(None, description="Programming language")
|
||||
context: Optional[str] = Field(None, description="Additional context")
|
||||
file_path: Optional[str] = Field(None, description="File path for context")
|
||||
selection: Optional[Dict[str, int]] = Field(None, description="Code selection range")
|
||||
model: Optional[str] = Field(None, description="LLM model to use")
|
||||
|
||||
class AIResponse(BaseModel):
|
||||
"""AI response model"""
|
||||
success: bool
|
||||
result: str
|
||||
suggestions: Optional[List[str]] = None
|
||||
metadata: Optional[Dict[str, Any]] = None
|
||||
execution_time: Optional[float] = None
|
||||
model_used: Optional[str] = None
|
||||
|
||||
class CodeCompletionRequest(BaseModel):
|
||||
"""Code completion specific request"""
|
||||
code: str = Field(..., description="Code context for completion")
|
||||
cursor_position: int = Field(..., description="Cursor position in code")
|
||||
language: Optional[LanguageType] = None
|
||||
max_tokens: Optional[int] = Field(50, description="Maximum tokens to generate")
|
||||
|
||||
class CodeCompletionResponse(BaseModel):
|
||||
"""Code completion response"""
|
||||
success: bool
|
||||
completions: List[str]
|
||||
cursor_position: int
|
||||
execution_time: Optional[float] = None
|
||||
|
||||
class ExplainRequest(BaseModel):
|
||||
"""Code explanation request"""
|
||||
code: str = Field(..., description="Code to explain")
|
||||
language: Optional[LanguageType] = None
|
||||
detail_level: Optional[str] = Field("medium", description="Detail level: brief, medium, detailed")
|
||||
|
||||
class RefactorRequest(BaseModel):
|
||||
"""Code refactoring request"""
|
||||
code: str = Field(..., description="Code to refactor")
|
||||
language: Optional[LanguageType] = None
|
||||
refactor_type: Optional[str] = Field("general", description="Type of refactoring")
|
||||
|
||||
class FixRequest(BaseModel):
|
||||
"""Code fix request"""
|
||||
code: str = Field(..., description="Code with issues to fix")
|
||||
language: Optional[LanguageType] = None
|
||||
error_message: Optional[str] = Field(None, description="Error message if available")
|
||||
|
||||
class MultiFileRequest(BaseModel):
|
||||
"""Multi-file analysis request"""
|
||||
files: List[Dict[str, str]] = Field(..., description="List of files with path and content")
|
||||
command: AICommand
|
||||
context: Optional[str] = None
|
||||
focus_file: Optional[str] = Field(None, description="Primary file to focus on")
|
||||
|
||||
class ModelInfo(BaseModel):
|
||||
"""Model information"""
|
||||
name: str
|
||||
size: str
|
||||
description: Optional[str] = None
|
||||
capabilities: List[str] = []
|
||||
is_available: bool = True
|
||||
|
||||
class ModelListResponse(BaseModel):
|
||||
"""Model list response"""
|
||||
models: List[ModelInfo]
|
||||
default_model: str
|
||||
current_model: Optional[str] = None
|
Loading…
x
Reference in New Issue
Block a user