feat: 定义 LLM Service 接口(ChatStream + Request/Chunk/TokenUsage)
This commit is contained in:
37
backend/internal/ai/llm/llm.go
Normal file
37
backend/internal/ai/llm/llm.go
Normal file
@@ -0,0 +1,37 @@
|
|||||||
|
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
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user