Source code for cyber_query_ai.models

"""Data classes for the CyberQueryAI application."""

from enum import StrEnum, auto

from pydantic import BaseModel, Field
from python_template_server.models import BaseResponse, TemplateServerConfig


# Application Server Configuration Models
[docs] class CyberQueryAIModelConfig(BaseModel): """Model configuration for the CyberQueryAI application.""" model: str = Field(default="mistral", description="AI model to use for queries") embedding_model: str = Field(default="bge-m3", description="Embedding model to use")
[docs] class CyberQueryAIConfig(TemplateServerConfig): """Configuration settings for the CyberQueryAI application.""" model: CyberQueryAIModelConfig = Field(default_factory=CyberQueryAIModelConfig, description="Model configuration")
# Request schemas
[docs] class RoleType(StrEnum): """Role types for chat messages.""" USER = auto() ASSISTANT = auto()
[docs] class ChatMessageModel(BaseModel): """Chat message model for conversation history.""" role: RoleType content: str
[docs] class PostChatRequest(BaseModel): """Request model for chat endpoint.""" message: str history: list[ChatMessageModel] = []
[docs] class PostPromptRequest(BaseModel): """Request model with prompt.""" prompt: str
# Response schemas
[docs] class GetApiConfigResponse(BaseResponse): """Response model for API config endpoint.""" model: CyberQueryAIModelConfig version: str
[docs] class PostChatResponse(BaseResponse): """Response model for chat endpoint.""" model_message: str
[docs] class PostCodeGenerationResponse(BaseResponse): """Response model for code generation.""" generated_code: str explanation: str language: str
[docs] class PostCodeExplanationResponse(BaseResponse): """Response model for code explanation endpoint.""" explanation: str
[docs] class ExploitModel(BaseModel): """Exploit model for cybersecurity exploits.""" title: str link: str severity: str description: str
[docs] class PostExploitSearchResponse(BaseResponse): """Response model for exploit search endpoint.""" exploits: list[ExploitModel] explanation: str