thread-master/apps/backend/internal/module/ai/options.go

45 lines
919 B
Go

package ai
import "context"
type ctxKey int
const (
ctxMaxTokens ctxKey = iota + 1
ctxTemperature
)
// WithMaxTokens 限制 completion 輸出上限(靈感短聊用小值可明顯加速)。
func WithMaxTokens(ctx context.Context, n int) context.Context {
if n <= 0 {
return ctx
}
return context.WithValue(ctx, ctxMaxTokens, n)
}
// MaxTokensFrom returns 0 if unset.
func MaxTokensFrom(ctx context.Context) int {
if ctx == nil {
return 0
}
v, _ := ctx.Value(ctxMaxTokens).(int)
return v
}
// WithTemperature sets sampling temperature when > 0.
func WithTemperature(ctx context.Context, t float64) context.Context {
if t <= 0 {
return ctx
}
return context.WithValue(ctx, ctxTemperature, t)
}
// TemperatureFrom returns 0 if unset (caller uses default).
func TemperatureFrom(ctx context.Context) float64 {
if ctx == nil {
return 0
}
v, _ := ctx.Value(ctxTemperature).(float64)
return v
}