38 lines
1018 B
Go
38 lines
1018 B
Go
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"
|
||
}
|
||
|
||
// Chunk 流式推理的一个增量片段。
|
||
type Chunk struct {
|
||
Delta string // 增量文本
|
||
Done bool // 是否结束
|
||
TokensUsed *TokenUsage // 仅 Done=true 时有值
|
||
Model string // 实际使用的模型名
|
||
}
|
||
|
||
// TokenUsage 用量统计。
|
||
type TokenUsage struct {
|
||
Prompt int
|
||
Completion int
|
||
Total int
|
||
}
|