Files
resume/internal/ai/provider.go
T

76 lines
1.9 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
// Package ai AI 供应商适配层,定义统一的 LLM 调用接口
// 支持通义千问、DeepSeek、豆包、讯飞星火等多家大模型
package ai
import (
"context"
"resume-platform/pkg/config"
)
// Provider AI 服务提供者接口,所有大模型供应商需实现此接口
type Provider interface {
// Generate 调用大模型生成文本
Generate(ctx context.Context, prompt string, opts ...Option) (string, error)
// GetName 获取供应商名称
GetName() string
}
// Option 调用选项函数类型,用于可选参数配置
type Option func(*Options)
// Options AI 调用可选参数
type Options struct {
MaxTokens int // 最大生成token数
Temperature float64 // 温度(随机性)
TopP float64 // 核采样参数
}
// WithMaxTokens 设置最大生成 token 数
// @param maxTokens 最大token数
// @return Option 选项函数
// @author sunct
func WithMaxTokens(maxTokens int) Option {
return func(o *Options) {
o.MaxTokens = maxTokens
}
}
// WithTemperature 设置生成温度
// @param temp 温度值(0~1
// @return Option 选项函数
// @author sunct
func WithTemperature(temp float64) Option {
return func(o *Options) {
o.Temperature = temp
}
}
// WithTopP 设置核采样参数
// @param topP 核采样值
// @return Option 选项函数
// @author sunct
func WithTopP(topP float64) Option {
return func(o *Options) {
o.TopP = topP
}
}
// NewProvider AI 供应商工厂函数,根据配置创建对应供应商实例
// @param cfg AI 配置
// @return Provider 供应商实例
// @return error 创建错误
// @author sunct
func NewProvider(cfg *config.AIConfig) (Provider, error) {
switch cfg.Provider {
case "spark":
return NewSparkProvider(&cfg.Spark), nil
case "tongyi":
return NewTongyiProvider(&cfg.Tongyi), nil
case "doubao":
return NewDoubaoProvider(&cfg.Doubao), nil
case "deepseek":
return NewDeepSeekProvider(&cfg.DeepSeek), nil
default:
return NewSparkProvider(&cfg.Spark), nil
}
}