模块介绍 / 今日规划 / 下班日报 / 团队摘要 生成成功后没有上报,也几乎不写「AI」日志。
流结束时的 usage 用了非阻塞发送,通道一满就被丢掉;很多服务商默认还不在流里带 usage。 现在每次真正打到模型的调用都会: 在本地日志(分类 AI,消息 AI 调用完成)写下 scene / prompt / completion / cached 登录后同步上报到后台日汇总
This commit is contained in:
@@ -22,9 +22,23 @@ type Chunk struct {
|
||||
type Usage struct {
|
||||
PromptTokens int64
|
||||
CompletionTokens int64
|
||||
CachedTokens int64 // 提示缓存命中(服务商返回时才有)
|
||||
Estimated bool
|
||||
}
|
||||
|
||||
// EstimateUsage 在服务商未回 usage 时按字符粗估(约 4 字符 ≈ 1 token)。
|
||||
func EstimateUsage(messages []Message, completion string) *Usage {
|
||||
n := 0
|
||||
for _, m := range messages {
|
||||
n += len(m.Content)
|
||||
}
|
||||
return &Usage{
|
||||
PromptTokens: int64((n + 3) / 4),
|
||||
CompletionTokens: int64((len(completion) + 3) / 4),
|
||||
Estimated: true,
|
||||
}
|
||||
}
|
||||
|
||||
// Provider 是 AI 服务商的统一抽象。
|
||||
type Provider interface {
|
||||
Name() string
|
||||
|
||||
Reference in New Issue
Block a user