summaryrefslogtreecommitdiff
path: root/backend/app/schemas.py
diff options
context:
space:
mode:
authorblackhao <13851610112@163.com>2025-12-05 20:40:40 -0600
committerblackhao <13851610112@163.com>2025-12-05 20:40:40 -0600
commitd9868550e66fe8aaa7fff55a8e24b871ee51e3b1 (patch)
tree147757f77def085c5649c4d930d5a51ff44a1e3d /backend/app/schemas.py
parentd87c364dc43ca241fadc9dccbad9ec8896c93a1e (diff)
init: add project files and ignore secrets
Diffstat (limited to 'backend/app/schemas.py')
-rw-r--r--backend/app/schemas.py52
1 files changed, 52 insertions, 0 deletions
diff --git a/backend/app/schemas.py b/backend/app/schemas.py
new file mode 100644
index 0000000..ac90bc1
--- /dev/null
+++ b/backend/app/schemas.py
@@ -0,0 +1,52 @@
+from pydantic import BaseModel, Field
+from typing import List, Optional, Dict, Any, Union
+from enum import Enum
+import time
+
+class Role(str, Enum):
+ USER = "user"
+ ASSISTANT = "assistant"
+ SYSTEM = "system"
+
+class Message(BaseModel):
+ id: str = Field(..., description="Unique ID for the message")
+ role: Role
+ content: str
+ timestamp: float = Field(default_factory=time.time)
+ # Metadata to track where this message came from
+ source_node_id: Optional[str] = None
+ model_used: Optional[str] = None
+
+class Context(BaseModel):
+ messages: List[Message] = []
+
+class ModelProvider(str, Enum):
+ OPENAI = "openai"
+ GOOGLE = "google"
+
+class LLMConfig(BaseModel):
+ provider: ModelProvider
+ model_name: str
+ temperature: float = 0.7
+ max_tokens: int = 1000
+ system_prompt: Optional[str] = None
+ api_key: Optional[str] = None # Optional override, usually from env
+
+class MergeStrategy(str, Enum):
+ RAW = "raw"
+ SMART = "smart"
+
+class NodeRunRequest(BaseModel):
+ node_id: str
+ incoming_contexts: List[Context] = []
+ user_prompt: str
+ config: LLMConfig
+ merge_strategy: MergeStrategy = MergeStrategy.SMART
+
+class NodeRunResponse(BaseModel):
+ node_id: str
+ output_context: Context
+ response_content: str
+ raw_response: Optional[Dict[str, Any]] = None
+ usage: Optional[Dict[str, Any]] = None
+