首次提交:初始化项目代码
This commit is contained in:
@@ -0,0 +1,76 @@
|
||||
// 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
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user