package model import "time" // Role 消息角色 type Role string const ( RoleSystem Role = "system" RoleUser Role = "user" RoleAssistant Role = "assistant" RoleTool Role = "tool" ) // LLMMessage 发送给LLM的消息 type LLMMessage struct { Role Role `json:"role"` Content string `json:"content"` Images []string `json:"images,omitempty"` // 图片 base64 data URL 列表 (多模态) VideoURLs []string `json:"video_urls,omitempty"` // 视频 URL 列表 (多模态) Name string `json:"name,omitempty"` // 可选发送者名称 ToolCallID string `json:"tool_call_id,omitempty"` // 工具调用关联ID (tool role 消息关联调用) ToolCalls []ToolCall `json:"tool_calls,omitempty"` // 助手消息中的工具调用列表 ReasoningContent string `json:"reasoning_content,omitempty"` // DeepSeek 思考链内容(需回传) } // ImageContent is a multimodal content part for images. type ImageContent struct { Type string `json:"type"` Text string `json:"text,omitempty"` ImageURL *ImageURL `json:"image_url,omitempty"` } // ImageURL holds an image URL (can be a data: URL or http: URL). type ImageURL struct { URL string `json:"url"` Detail string `json:"detail,omitempty"` // low, high, auto } // VideoURLContent holds a video URL for multimodal video understanding. type VideoURLContent struct { VideoURL *VideoURL `json:"video_url,omitempty"` } // VideoURL holds a video URL. type VideoURL struct { URL string `json:"url"` } // ChatMessage 数据库存储的对话消息 type ChatMessage struct { ID string `json:"id" db:"id"` SessionID string `json:"session_id" db:"session_id"` UserID string `json:"user_id" db:"user_id"` Role Role `json:"role" db:"role"` Content string `json:"content" db:"content"` Mode string `json:"mode" db:"mode"` // text | voice_msg | voice_assistant CreatedAt time.Time `json:"created_at" db:"created_at"` } // LLMResponse LLM返回的响应 type LLMResponse struct { Content string `json:"content"` FinishReason string `json:"finish_reason"` // stop | length | tool_calls ToolCalls []ToolCall `json:"tool_calls,omitempty"` Usage Usage `json:"usage,omitempty"` ReasoningContent string `json:"reasoning_content,omitempty"` // DeepSeek 思考链内容 } // ToolCall 工具调用 type ToolCall struct { ID string `json:"id"` Name string `json:"name"` Arguments string `json:"arguments"` } // Usage token用量统计 type Usage struct { PromptTokens int `json:"prompt_tokens"` CompletionTokens int `json:"completion_tokens"` TotalTokens int `json:"total_tokens"` }