package llm import ( "context" "github.com/hhs/camtalk/internal/models" ) // Service 多模态大模型服务契约。 type Service interface { // ChatStream 流式推理,返回增量文本的 channel。 // 调用方必须消费 channel 直到 Done=true,否则需 cancel ctx 以释放连接。 ChatStream(ctx context.Context, req Request) (<-chan Chunk, error) } // Request 推理请求。 type Request struct { Image []byte // JPEG 图片(已从 Base64 解码) Text string // 用户语音识别后的文本 History []models.Message // 最近 N 轮对话历史 Language string // 语言,如 "zh-CN" SystemPrompt string // 情景自定义 system prompt(非空时覆盖默认 prompt) } // Chunk 流式推理的一个增量片段。 type Chunk struct { Delta string // 增量文本 Done bool // 是否结束 TokensUsed *TokenUsage // 仅 Done=true 时有值 Model string // 实际使用的模型名 } // TokenUsage 用量统计。 type TokenUsage struct { Prompt int Completion int Total int }