dashboard-nanobot/backend/models/bot.py

51 lines
2.4 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

from typing import Optional
from sqlmodel import Field, SQLModel
from datetime import datetime
class BotInstance(SQLModel, table=True):
id: str = Field(primary_key=True)
name: str
avatar_model: str = Field(default="base")
avatar_skin: Optional[str] = Field(default="blue_suit")
system_prompt: Optional[str] = Field(default=None)
soul_md: Optional[str] = Field(default=None)
agents_md: Optional[str] = Field(default=None)
user_md: Optional[str] = Field(default=None)
tools_md: Optional[str] = Field(default=None)
tools_config_json: Optional[str] = Field(default=None) # JSON string for runtime tools config
identity_md: Optional[str] = Field(default=None)
llm_provider: str
llm_model: str
api_key: str # Encrypted
api_base: Optional[str] = Field(default=None)
temperature: float = Field(default=0.2)
top_p: float = Field(default=1.0)
max_tokens: int = Field(default=8192)
presence_penalty: float = Field(default=0.0)
frequency_penalty: float = Field(default=0.0)
send_progress: bool = Field(default=False)
send_tool_hints: bool = Field(default=False)
workspace_dir: str = Field(unique=True)
docker_status: str = Field(default="STOPPED", index=True)
current_state: Optional[str] = Field(default="IDLE")
last_action: Optional[str] = Field(default=None)
image_tag: str = Field(default="nanobot-base:v0.1.4") # 记录该机器人使用的镜像版本
created_at: datetime = Field(default_factory=datetime.utcnow)
updated_at: datetime = Field(default_factory=datetime.utcnow)
class BotMessage(SQLModel, table=True):
id: Optional[int] = Field(default=None, primary_key=True)
bot_id: str = Field(foreign_key="botinstance.id", index=True)
role: str = Field(index=True) # user | assistant | system
text: str
media_json: Optional[str] = Field(default=None) # JSON string list of workspace-relative file paths
created_at: datetime = Field(default_factory=datetime.utcnow, index=True)
class NanobotImage(SQLModel, table=True):
tag: str = Field(primary_key=True) # e.g., nanobot-base:v0.1.4
image_id: Optional[str] = Field(default=None) # Docker 内部的 Image ID
version: str # e.g., 0.1.4
status: str = Field(default="READY") # READY, BUILDING, ERROR
source_dir: Optional[str] = Field(default=None) # 本地来源标识(如 manual
created_at: datetime = Field(default_factory=datetime.utcnow)