// 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 } }