From ecbbbd98f12a6db5cab2422c8b450b66f70e1000 Mon Sep 17 00:00:00 2001 From: renzhiyuan <465386466@qq.com> Date: Tue, 22 Sep 2026 01:39:43 +0800 Subject: [PATCH] 1 --- 1.jpg | Bin 316704 -> 0 bytes Dockerfile | 6 +- README.md | 140 ------------- cmd/server/wire.go | 2 - go.mod | 1 - go.sum | 8 +- internal/biz/advice_advicer.go | 4 +- internal/biz/advice_chat.go | 195 ++++-------------- internal/biz/advice_client.go | 6 +- internal/biz/advice_file.go | 77 +++---- internal/biz/advice_project.go | 142 ++++++++++++- internal/biz/advice_skill.go | 6 +- internal/biz/llm_service/third_party/hsyq.go | 142 ------------- .../biz/llm_service/third_party/openai.go | 37 ++++ internal/biz/provider_set.go | 4 +- internal/data/impl/advice_admin_impl.go | 2 +- internal/data/model/ai_advice_project.gen.go | 16 +- internal/data/mongo_model/common.go | 22 ++ internal/entitys/advicer_data.go | 25 +++ internal/server/http.go | 10 +- internal/server/router/advicer.go | 10 + internal/server/router/router.go | 38 ++-- internal/services/advice/advicer_test.go | 6 +- internal/services/advice/file.go | 43 ++++ internal/services/advice/project.go | 20 ++ internal/services/advice/provider_set.go | 1 + 26 files changed, 418 insertions(+), 545 deletions(-) delete mode 100644 1.jpg delete mode 100644 README.md delete mode 100644 internal/biz/llm_service/third_party/hsyq.go diff --git a/1.jpg b/1.jpg deleted file mode 100644 index c98e4c54be47d6206b9d6fdb2b8cf310737d7905..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 316704 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 z¨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 /etc/apk/repositories \ # 设置工作目录 WORKDIR /app -# 将编译好的二进制文件从构建阶段复制到运行阶段 +# 复制编译好的二进制文件从构建阶段复制到运行阶段 COPY --from=builder /app/server ./server # 复制配置文件夹 COPY --from=builder /app/config ./config +# 复制前端静态页面 +COPY --from=builder /app/web ./web +# 创建上传目录(聊天记录等文件) +RUN mkdir -p upload ENV TZ=Asia/Shanghai diff --git a/README.md b/README.md deleted file mode 100644 index 2cae5d7..0000000 --- a/README.md +++ /dev/null @@ -1,140 +0,0 @@ -# AI Scheduler - 智能路由调度系统 - -基于Go语言开发的智能AI助手,支持Function Calling和工具调用,可以智能路由用户请求到合适的工具进行处理。 - -## 功能特性 - -- 🤖 **智能对话**: 基于Ollama的AI对话能力 -- 🔧 **工具调用**: 支持天气查询、计算器等工具 -- 🎯 **智能路由**: 自动判断是否需要调用工具 -- 📚 **API文档**: 集成Swagger文档 -- ⚡ **高性能**: 基于Fiber框架的Websocket服务 -- 🏗️ **依赖注入**: 使用Wire进行依赖管理 - -## 项目结构 - -``` -ai_scheduler/ -├── cmd/ # 应用程序入口 -│ └── main.go -├── internal/ # 内部包 -│ ├── config/ # 配置管理 -│ ├── handlers/ # HTTP处理器 -│ ├── models/ # 数据模型 -│ ├── services/ # 业务服务 -│ ├── tools/ # 工具实现 -│ └── wire/ # 依赖注入 -├── pkg/ # 公共包 -│ ├── ollama/ # Ollama客户端 -│ └── types/ # 类型定义 -├── docs/ # API文档 -├── config.yaml # 配置文件 -└── go.mod # Go模块 -``` - -## 快速开始 - -### 1. 环境要求 - -- Go 1.23+ -- Ollama服务运行中 - -### 2. 安装依赖 - -```bash -go mod tidy -``` - -### 3. 配置文件 - -编辑 `config.yaml` 文件,确保Ollama服务地址正确: - -```yaml -server: - port: "8080" - host: "localhost" - -ollama: - base_url: "http://localhost:11434" - model: "llama2" - timeout: 30s - -tools: - weather: - enabled: true - mock_data: true - calculator: - enabled: true - mock_data: false - -logging: - level: "info" - format: "json" -``` - -### 4. 启动服务 - -```json -go run cmd/main.go -``` - -服务启动后,可以访问: - -- API服务: http://localhost:8080/api/v1/chat -- Swagger文档: http://localhost:8080/swagger/index.html -- 健康检查: http://localhost:8080/health - -## API使用示例 - -### 聊天接口 - -```bash -curl -X POST http://localhost:8080/api/v1/chat \ - -H "Content-Type: application/json" \ - -d '{ - "message": "北京今天天气怎么样?", - "model": "llama2" - }' -``` - -### 计算器示例 - -```bash -curl -X POST http://localhost:8080/api/v1/chat \ - -H "Content-Type: application/json" \ - -d '{ - "message": "计算 15 + 25 * 3", - "model": "llama2" - }' -``` - -## 支持的工具 - -### 1. 天气查询工具 -- 功能:查询指定城市的天气信息 -- 示例:"北京今天天气怎么样?" - -### 2. 计算器工具 -- 功能:执行数学计算 -- 支持:加减乘除、幂运算 -- 示例:"计算 2 + 3 * 4" - -## 开发说明 - -### 添加新工具 - -1. 在 `internal/tools/` 目录下创建新工具文件 -2. 实现 `types.Tool` 接口 -3. 在 `tools.Manager` 中注册新工具 - -### 配置管理 - -配置文件使用Viper加载,支持环境变量覆盖。 - -### 依赖注入 - -使用Google Wire进行依赖注入,修改依赖关系后需要重新生成代码。 - -## 许可证 - -MIT License \ No newline at end of file diff --git a/cmd/server/wire.go b/cmd/server/wire.go index 56f5868..7ee4a39 100644 --- a/cmd/server/wire.go +++ b/cmd/server/wire.go @@ -23,13 +23,11 @@ import ( func InitializeApp(context.Context, *config.Config, log.AllLogger) (*server.Servers, func(), error) { panic(wire.Build( server.ProviderSetServer, - pkg.ProviderSetClient, advice.ProviderService, biz.ProviderSetBiz, impl.ProviderImpl, utils.ProviderUtils, - mongo_model.ProviderSetMongo, )) diff --git a/go.mod b/go.mod index f42c49e..32d3a27 100644 --- a/go.mod +++ b/go.mod @@ -85,7 +85,6 @@ require ( github.com/hashicorp/hcl v1.0.0 // indirect github.com/jinzhu/inflection v1.0.0 // indirect github.com/jinzhu/now v1.1.5 // indirect - github.com/jmespath/go-jmespath v0.4.0 // indirect github.com/json-iterator/go v1.1.12 // indirect github.com/klauspost/compress v1.17.9 // indirect github.com/klauspost/cpuid/v2 v2.4.0 // indirect diff --git a/go.sum b/go.sum index 1d4eaa7..eb9516b 100644 --- a/go.sum +++ b/go.sum @@ -280,6 +280,8 @@ github.com/google/pprof v0.0.0-20201023163331-3e6fc7fc9c4c/go.mod h1:kpwsk12EmLe github.com/google/pprof v0.0.0-20201203190320-1bf35d6f28c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20201218002935-b9804c9f04c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= +github.com/google/subcommands v1.2.0 h1:vWQspBTo2nEqTUFita5/KeEWlUL8kQObDFbub/EN9oE= +github.com/google/subcommands v1.2.0/go.mod h1:ZjhPrFU+Olkh9WazFPsl27BQ4UPiG37m3yTrtFlrHVk= github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= @@ -309,9 +311,7 @@ github.com/jinzhu/inflection v1.0.0 h1:K317FqzuhWc8YvSVlFMCCUb36O/S9MCKRDI7QkRKD github.com/jinzhu/inflection v1.0.0/go.mod h1:h+uFLlag+Qp1Va5pdKtLDYj+kHp5pxUVkryuEj+Srlc= github.com/jinzhu/now v1.1.5 h1:/o9tlHleP7gOFmsnYNz3RGnqzefHA47wQpKrrdTIwXQ= github.com/jinzhu/now v1.1.5/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8= -github.com/jmespath/go-jmespath v0.4.0 h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9YPoQUg= github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo= -github.com/jmespath/go-jmespath/internal/testify v1.5.1 h1:shLQSRRSCCPj3f2gpwzGwWFoC7ycTf1rcQZHOlsJ6N8= github.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfCI6z80xFu9LTZmf1ZRjMHUOPmWr69U= github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y= github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= @@ -583,6 +583,8 @@ golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.28.0 h1:gQBtGhjxykdjY9YhZpSlZIsbnaE2+PgjfLWUQTnoZ1U= +golang.org/x/mod v0.28.0/go.mod h1:yfB/L0NOf/kmEbXjzCPOx1iK1fRutOydrCMsqRhEBxI= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -790,6 +792,8 @@ golang.org/x/tools v0.0.0-20210108195828-e2f9c7f1fc8e/go.mod h1:emZCQorbCU4vsT4f golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= +golang.org/x/tools v0.37.0 h1:DVSRzp7FwePZW356yEAChSdNcQo6Nsp+fex1SUW09lE= +golang.org/x/tools v0.37.0/go.mod h1:MBN5QPQtLMHVdvsbtarmTNukZDdgwdwlO5qGacAzF0w= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= diff --git a/internal/biz/advice_advicer.go b/internal/biz/advice_advicer.go index a5ddcf8..05ef207 100644 --- a/internal/biz/advice_advicer.go +++ b/internal/biz/advice_advicer.go @@ -116,7 +116,7 @@ func (a *AdviceAdvicerBiz) VersionUpdate(ctx context.Context, param *entitys.Adv return res.Err() } -func (a *AdviceAdvicerBiz) VersionList(ctx context.Context, param *entitys.AdvicerVersionListReq) (list []mongo_model.AdvicerVersionMongo, err error) { +func (a *AdviceAdvicerBiz) VersionList(ctx context.Context, param *entitys.AdvicerVersionListReq) (list []mongo_model.AdvicerVersionItem, err error) { filter := bson.M{} // 1. advicer_id 条件 if param.AdvicerId != 0 { @@ -149,7 +149,7 @@ func (a *AdviceAdvicerBiz) VersionList(ctx context.Context, param *entitys.Advic } // 遍历结果 for cursor.Next(ctx) { - var advicerVersion mongo_model.AdvicerVersionMongo + var advicerVersion mongo_model.AdvicerVersionItem if err := cursor.Decode(&advicerVersion); err != nil { return nil, err } diff --git a/internal/biz/advice_chat.go b/internal/biz/advice_chat.go index 946b53f..b628a1e 100644 --- a/internal/biz/advice_chat.go +++ b/internal/biz/advice_chat.go @@ -16,9 +16,7 @@ import ( "fmt" "github.com/google/uuid" - "github.com/volcengine/volcengine-go-sdk/service/arkruntime/model" - "github.com/volcengine/volcengine-go-sdk/service/arkruntime/model/responses" - "github.com/volcengine/volcengine-go-sdk/volcengine" + "github.com/sashabaranov/go-openai" "go.mongodb.org/mongo-driver/bson" "go.mongodb.org/mongo-driver/mongo/options" "xorm.io/builder" @@ -28,7 +26,7 @@ import ( ) type AdviceChatBiz struct { - hsyq *third_party.Hsyq + openai *third_party.OpenAi rdb *utils.Rdb aiAdviceSessionImpl *impl.AiAdviceSessionImpl aiAdviceModelSupImpl *impl.AiAdviceModelSupImpl @@ -37,7 +35,7 @@ type AdviceChatBiz struct { } func NewAdviceChatBiz( - hsyq *third_party.Hsyq, + openai *third_party.OpenAi, rdb *utils.Rdb, aiAdviceSessionImpl *impl.AiAdviceSessionImpl, aiAdviceModelSupImpl *impl.AiAdviceModelSupImpl, @@ -45,7 +43,7 @@ func NewAdviceChatBiz( mongo *pkg.Mongo, ) *AdviceChatBiz { return &AdviceChatBiz{ - hsyq: hsyq, + openai: openai, rdb: rdb, aiAdviceSessionImpl: aiAdviceSessionImpl, aiAdviceModelSupImpl: aiAdviceModelSupImpl, @@ -56,26 +54,17 @@ func NewAdviceChatBiz( func (a *AdviceChatBiz) contextCache(ctx context.Context, chatData *entitys.ChatData, req *entitys.AdvicerChatRegistReq, projectInfo *entitys.AdvicerProjectInfoRes) (promptJson string, contextCache string, err error) { switch constants.Mode(projectInfo.ModelInfo.Mode) { - case constants.ModeResponse: + case constants.ModeResponse, constants.ModeContext: + //ModeContext依赖火山专有Context缓存API,统一降级为Responses存储+PreviousResponseID续写 prompt, err := a.buildBasePromptResponse(ctx, chatData, req) if err != nil { return "", "", err } - cache, err := a.hsyq.CreateResponse(ctx, projectInfo.ModelInfo.Key, projectInfo.ModelInfo.ChatModel, prompt, "", true) - if err != nil { - return "", "", err - } - contextCache = cache.Id - promptJson = pkg.JsonStringIgonErr(prompt) - case constants.ModeContext: - prompt, err := a.buildBasePromptContext(ctx, chatData, req) - if err != nil { - return "", "", err - } - contextCache, err = a.hsyq.CreateContextCache(ctx, projectInfo.ModelInfo.Key, projectInfo.ModelInfo.ChatModel, prompt) + cache, err := a.openai.CreateResponseMessages(ctx, projectInfo.ModelInfo.Key, projectInfo.ModelInfo.URL, projectInfo.ModelInfo.ChatModel, prompt, "") if err != nil { return "", "", err } + contextCache = cache.ID promptJson = pkg.JsonStringIgonErr(prompt) default: return "", "", fmt.Errorf("未知的mode类型:%d", projectInfo.ModelInfo.Mode) @@ -133,24 +122,28 @@ func (a *AdviceChatBiz) Chat(ctx context.Context, chat *entitys.AdvicerChatReq) if modelInfo.SupID == 0 { return assistant, errors.New("未找到模型信息") } - //basePromptJson, err := a.getChatDataFromStringSessionId(ctx, chat.SessionId) - //if err != nil { - // return nil, err - //} chatHis, err := a.getChatHis(ctx, session.SessionID, 6) + if err != nil { + return assistant, err + } prompt, err := a.buildChatPromptResponse(ctx, chat, &session, chatHis) if err != nil { return assistant, err } - resContent, err := a.callLlmResponse(ctx, prompt, modelInfo.Key, modelInfo.ChatModel, session.ContextCache) + resContent, err := a.callLlmResponse(ctx, prompt, modelInfo.Key, modelInfo.URL, modelInfo.ChatModel, session.ContextCache) if err != nil { return assistant, err } - result := resContent.Output[0].GetOutputMessage().Content[0].GetText().GetText() + result := resContent.GetOutputText() if err = json.Unmarshal([]byte(result), &assistant); err != nil { return assistant, err } + var inToken, outToken int64 + if resContent.Usage != nil { + inToken = int64(resContent.Usage.InputTokens) + outToken = int64(resContent.Usage.OutputTokens) + } chatCtx, cancel := context.WithCancel(context.Background()) go func(session dbmodel.AiAdviceSession) { defer cancel() @@ -158,8 +151,8 @@ func (a *AdviceChatBiz) Chat(ctx context.Context, chat *entitys.AdvicerChatReq) SessionId: chat.SessionId, User: chat.Content, Assistant: assistant, - InToken: resContent.Usage.InputTokens, - OutToken: resContent.Usage.OutputTokens, + InToken: inToken, + OutToken: outToken, CreatAt: time.Now(), }) if assistant.MissionStatus == "fail" || assistant.MissionStatus == "complete" { @@ -173,34 +166,21 @@ func (a *AdviceChatBiz) Chat(ctx context.Context, chat *entitys.AdvicerChatReq) return } -func (a *AdviceChatBiz) buildChatPromptResponse(ctx context.Context, chat *entitys.AdvicerChatReq, session *dbmodel.AiAdviceSession, chatList []mongo_model.AdvicerChatHisMongoEntity) ([]*responses.InputItem, error) { - - var message = make([]*responses.InputItem, 3) - message[0] = &responses.InputItem{ - Union: &responses.InputItem_EasyMessage{ - EasyMessage: &responses.ItemEasyMessage{ - Role: responses.MessageRole_system, - Content: &responses.MessageContent{Union: &responses.MessageContent_StringValue{StringValue: a.taskPrompt(session)}}, - }, +func (a *AdviceChatBiz) buildChatPromptResponse(ctx context.Context, chat *entitys.AdvicerChatReq, session *dbmodel.AiAdviceSession, chatList []mongo_model.AdvicerChatHisMongoEntity) ([]openai.ResponseInputMessage, error) { + message := []openai.ResponseInputMessage{ + { + Role: openai.ChatMessageRoleSystem, + Content: a.taskPrompt(session), + }, + { + Role: openai.ChatMessageRoleSystem, + Content: "历史聊天记录:\n" + pkg.JsonStringIgonErr(chatList), + }, + { + Role: openai.ChatMessageRoleUser, + Content: chat.Content, }, } - message[1] = &responses.InputItem{ - Union: &responses.InputItem_EasyMessage{ - EasyMessage: &responses.ItemEasyMessage{ - Role: responses.MessageRole_system, - Content: &responses.MessageContent{Union: &responses.MessageContent_StringValue{StringValue: "历史聊天记录:\n" + pkg.JsonStringIgonErr(chatList)}}, - }, - }, - } - message[2] = &responses.InputItem{ - Union: &responses.InputItem_EasyMessage{ - EasyMessage: &responses.ItemEasyMessage{ - Role: responses.MessageRole_user, - Content: &responses.MessageContent{Union: &responses.MessageContent_StringValue{StringValue: chat.Content}}, - }, - }, - } - return message, nil } func (a *AdviceChatBiz) getChatHis(ctx context.Context, sessionId string, limit int64) (chatList []mongo_model.AdvicerChatHisMongoEntity, err error) { @@ -225,100 +205,29 @@ func (a *AdviceChatBiz) getChatHis(ctx context.Context, sessionId string, limit return } -func (a *AdviceChatBiz) buildChatPrompt(ctx context.Context, chat *entitys.AdvicerChatReq, session *dbmodel.AiAdviceSession, modelInfo *dbmodel.AiAdviceModelSup) (model.ContextChatCompletionRequest, error) { - var message = make([]*model.ChatCompletionMessage, 2) - message[0] = &model.ChatCompletionMessage{ - Role: model.ChatMessageRoleUser, - Content: &model.ChatCompletionMessageContent{ - StringValue: volcengine.String(chat.Content), - }, - } - message[1] = &model.ChatCompletionMessage{ - Role: model.ChatMessageRoleAssistant, - Content: &model.ChatCompletionMessageContent{ - StringValue: volcengine.String(a.taskPrompt(session)), - }, - } - - req := model.ContextChatCompletionRequest{ - ContextID: session.ContextCache, - Model: modelInfo.ChatModel, - Messages: message, - Stream: false, - } - return req, nil -} - func (a *AdviceChatBiz) taskPrompt(session *dbmodel.AiAdviceSession) string { - //type mission struct { - // missionName string - // status string - // missionCompleteDesc string - //} - //var m = &mission{ - // missionName: session.Mission, - // status: pkg.Ter(session.MissionStatus == 1, "进行中", "已完成"), - // missionCompleteDesc: session.MissionCompleteDesc, - //} - //missionJon, _ := json.Marshal(m) return "[当前时间]" + time.Now().Format("2006-01-02 15:04:05") } -func (a *AdviceChatBiz) buildBasePromptContext(ctx context.Context, chatData *entitys.ChatData, req *entitys.AdvicerChatRegistReq) ([]*model.ChatCompletionMessage, error) { - var message = make([]*model.ChatCompletionMessage, 2) - message[0] = &model.ChatCompletionMessage{ - Role: model.ChatMessageRoleSystem, - Content: &model.ChatCompletionMessageContent{ - StringValue: volcengine.String(a.sysPrompt(chatData, req)), +func (a *AdviceChatBiz) buildBasePromptResponse(ctx context.Context, chatData *entitys.ChatData, req *entitys.AdvicerChatRegistReq) ([]openai.ResponseInputMessage, error) { + message := []openai.ResponseInputMessage{ + { + Role: openai.ChatMessageRoleSystem, + Content: a.sysPrompt(chatData, req), }, - } - message[1] = &model.ChatCompletionMessage{ - Role: model.ChatMessageRoleSystem, - Content: &model.ChatCompletionMessageContent{ - StringValue: volcengine.String(a.assistantPrompt(chatData)), + { + Role: openai.ChatMessageRoleSystem, + Content: a.assistantPrompt(chatData), }, } return message, nil } -func (a *AdviceChatBiz) buildBasePromptResponse(ctx context.Context, chatData *entitys.ChatData, req *entitys.AdvicerChatRegistReq) ([]*responses.InputItem, error) { - var message = make([]*responses.InputItem, 2) - message[0] = &responses.InputItem{ - Union: &responses.InputItem_EasyMessage{ - EasyMessage: &responses.ItemEasyMessage{ - Role: responses.MessageRole_system, - Content: &responses.MessageContent{Union: &responses.MessageContent_StringValue{StringValue: a.sysPrompt(chatData, req)}}, - }, - }, - } - message[1] = &responses.InputItem{ - Union: &responses.InputItem_EasyMessage{ - EasyMessage: &responses.ItemEasyMessage{ - Role: responses.MessageRole_system, - Content: &responses.MessageContent{Union: &responses.MessageContent_StringValue{StringValue: a.assistantPrompt(chatData)}}, - }, - }, - } - return message, nil -} - -func (a *AdviceChatBiz) setContent(ctx context.Context, basePromptJson string, content string, session *dbmodel.AiAdviceSession) ([]*model.ChatCompletionMessage, error) { - promptJson := strings.ReplaceAll(basePromptJson, "{{chat_content}}", content) - var basePrompt []*model.ChatCompletionMessage - err := json.Unmarshal([]byte(promptJson), &basePrompt) - if err != nil { - return nil, err - } - - return basePrompt, nil -} - func (a *AdviceChatBiz) sysPrompt(chatData *entitys.ChatData, req *entitys.AdvicerChatRegistReq) string { var prompt strings.Builder prompt.WriteString(constants.BasePrompt) prompt.WriteString(req.Mission) prompt.WriteString(constants.BasePrompt2) - return prompt.String() } @@ -327,26 +236,8 @@ func (a *AdviceChatBiz) assistantPrompt(chatData *entitys.ChatData) string { return pkg.JsonStringIgonErr(chatData) } -func (a *AdviceChatBiz) getChatDataFromStringSessionId(ctx context.Context, sessionId string) (basePromptJson string, err error) { - cache := a.rdb.Rdb.Get(ctx, sessionId) - if cache.Err() != nil { - err = cache.Err() - return - } - - return cache.Val(), cache.Err() -} - -func (a *AdviceChatBiz) callLlm(ctx context.Context, request model.ContextChatCompletionRequest, key string) (string, error) { - res, err := a.hsyq.ChatWithRequest(ctx, key, request) - if err != nil { - return "", err - } - return *res.Choices[0].Message.Content.StringValue, nil -} - -func (a *AdviceChatBiz) callLlmResponse(ctx context.Context, request []*responses.InputItem, key string, modelName string, id string) (*responses.ResponseObject, error) { - res, err := a.hsyq.CreateResponse(ctx, key, modelName, request, id, false) +func (a *AdviceChatBiz) callLlmResponse(ctx context.Context, request []openai.ResponseInputMessage, key string, url string, modelName string, id string) (*openai.CreateResponseResponse, error) { + res, err := a.openai.CreateResponseMessages(ctx, key, url, modelName, request, id) if err != nil { return nil, err } diff --git a/internal/biz/advice_client.go b/internal/biz/advice_client.go index 391f585..38cb4e2 100644 --- a/internal/biz/advice_client.go +++ b/internal/biz/advice_client.go @@ -73,11 +73,11 @@ func (a *AdviceClientBiz) Update(ctx context.Context, param *entitys.AdvicerrCli return res.Err() } -func (a *AdviceClientBiz) List(ctx context.Context, param *entitys.AdvicerClientListReq) (list []mongo_model.AdvicerClientMongo, err error) { +func (a *AdviceClientBiz) List(ctx context.Context, param *entitys.AdvicerClientListReq) (list []mongo_model.AdvicerClientItem, err error) { filter := bson.M{} // 1. advicer_id 条件 if param.AdvicerId != 0 { - filter["AdvicerId"] = param.AdvicerId + filter["advicerId"] = param.AdvicerId } if param.ProjectId != 0 { @@ -99,7 +99,7 @@ func (a *AdviceClientBiz) List(ctx context.Context, param *entitys.AdvicerClient } // 遍历结果 for cursor.Next(ctx) { - var advicerVersion mongo_model.AdvicerClientMongo + var advicerVersion mongo_model.AdvicerClientItem if err := cursor.Decode(&advicerVersion); err != nil { return nil, err } diff --git a/internal/biz/advice_file.go b/internal/biz/advice_file.go index 6ccba98..669d824 100644 --- a/internal/biz/advice_file.go +++ b/internal/biz/advice_file.go @@ -12,19 +12,15 @@ import ( "os" "strings" "time" - - "github.com/volcengine/volcengine-go-sdk/service/arkruntime/model" - "github.com/volcengine/volcengine-go-sdk/service/arkruntime/model/responses" - "github.com/volcengine/volcengine-go-sdk/volcengine" ) type AdviceFileBiz struct { - hsyq *third_party.Hsyq + openai *third_party.OpenAi } -func NewAdviceFileBiz(hsyq *third_party.Hsyq) *AdviceFileBiz { +func NewAdviceFileBiz(openai *third_party.OpenAi) *AdviceFileBiz { return &AdviceFileBiz{ - hsyq: hsyq, + openai: openai, } } @@ -53,20 +49,22 @@ func (a *AdviceFileBiz) WordAna(ctx context.Context, wordContent string, project } timeSte := time.Now().Format("200601021504") dir := "./cache/" + timeSte - os.Mkdir(dir, 0755) + //缓存文件仅用于排查问题,写入失败不影响主流程 + _ = os.MkdirAll(dir, 0755) + //获取示例 examples := a.getAllExamples() //构建提示词 prompt := a.buildSimplePrompt(wordContent, examples) - os.WriteFile(dir+"/requset.json", []byte(prompt), 0644) + _ = os.WriteFile(dir+"/requset.json", []byte(prompt), 0644) //llm提取信息 anaContent, err := a.callLlm2(ctx, prompt, &projectInfo.ModelInfo) if err != nil { return nil, err } - os.WriteFile(dir+"/res.json", []byte(anaContent), 0644) + _ = os.WriteFile(dir+"/res.json", []byte(anaContent), 0644) //格式整理 data, err := a.parseResponse(ctx, []byte(anaContent)) @@ -76,8 +74,8 @@ func (a *AdviceFileBiz) WordAna(ctx context.Context, wordContent string, project //组装数据 resData := a.cateData(data) - os.WriteFile("./cache/"+timeSte+"/extracted.json", pkg.JsonByteIgonErr(resData), 0644) - return resData, err + _ = os.WriteFile(dir+"/extracted.json", pkg.JsonByteIgonErr(resData), 0644) + return resData, nil } func (a *AdviceFileBiz) cateData(data map[string]mongo_model.AdviceData) map[mongo_model.AdviceRole]map[string]mongo_model.AdviceData { @@ -113,8 +111,9 @@ func (a *AdviceFileBiz) parseResponse(ctx context.Context, responseByte []byte) return } for k, v := range result { + //跳过预定义之外的字段,避免模型输出的额外说明导致整体解析中断 if _, ok := DataMap[k]; !ok { - return + continue } var vbyte []byte if vbyte, err = json.Marshal(v); err != nil { @@ -123,56 +122,30 @@ func (a *AdviceFileBiz) parseResponse(ctx context.Context, responseByte []byte) newData := DataMap[k].Copy() if err = json.Unmarshal(vbyte, newData); err != nil { + err = fmt.Errorf("字段%s解析失败: %w", k, err) return } resultOutPut[k] = newData } + if len(resultOutPut) == 0 { + err = fmt.Errorf("响应中未包含有效数据") + return + } return } -//func (a *AdviceFileBiz) fixJson(ctx context.Context, json []byte) ([]byte, error) { -// prompt := "你是一个专业的JSON修复专家。请帮我修复以下错误的JSON格式。\n\n要求:\n1. 保持原有数据的结构和内容不变\n2. 修复JSON语法错误\n3. 输出格式化的正确JSON\n4. 简要说明修复了哪些问题\n\n错误的JSON:\n" + string(json) + "\n\n请直接输出修复后的JSON。" -// call, err := a.callLlm(ctx, prompt, jsonModel) -// if err != nil { -// return nil, err -// } -// -// return []byte(call), nil -//} - -func (a *AdviceFileBiz) callLlm(ctx context.Context, prompt string, modelInfo *dbmodel.AiAdviceModelSup) (string, error) { - var message = make([]*model.ChatCompletionMessage, 1) - message[0] = &model.ChatCompletionMessage{ - Role: model.ChatMessageRoleUser, - Content: &model.ChatCompletionMessageContent{ - StringValue: volcengine.String(prompt), - }, - } - res, err := a.hsyq.Chat(ctx, modelInfo.Key, modelInfo.FileModel, message) - if err != nil { - return "", err - } - - return *res.Choices[0].Message.Content.StringValue, nil -} - +// callLlm2 调用Responses接口提取文件信息 +// 走json_object格式输出,保证返回内容可直接反序列化 func (a *AdviceFileBiz) callLlm2(ctx context.Context, prompt string, modelInfo *dbmodel.AiAdviceModelSup) (string, error) { - var message = make([]*responses.InputItem, 3) - message[0] = &responses.InputItem{ - Union: &responses.InputItem_EasyMessage{ - EasyMessage: &responses.ItemEasyMessage{ - Role: responses.MessageRole_system, - Content: &responses.MessageContent{Union: &responses.MessageContent_StringValue{StringValue: prompt}}, - }, - }, - } - res, err := a.hsyq.CreateResponse(ctx, modelInfo.Key, modelInfo.FileModel, message, "", false) + content, err := a.openai.RequestResponsesJson(ctx, modelInfo.Key, modelInfo.URL, modelInfo.FileModel, prompt) if err != nil { - return "", err + return "", fmt.Errorf("文件分析模型调用失败: %w", err) } - - return res.Output[0].GetOutputMessage().Content[0].GetText().GetText(), nil + if strings.TrimSpace(content) == "" { + return "", fmt.Errorf("文件分析模型返回内容为空") + } + return content, nil } func (a *AdviceFileBiz) getAllExamples() map[string]mongo_model.AdviceData { diff --git a/internal/biz/advice_project.go b/internal/biz/advice_project.go index 9b1a433..743f93a 100644 --- a/internal/biz/advice_project.go +++ b/internal/biz/advice_project.go @@ -1,11 +1,14 @@ package biz import ( + errorcode "ai_scheduler/internal/data/error" "ai_scheduler/internal/data/impl" "ai_scheduler/internal/data/model" "ai_scheduler/internal/data/mongo_model" "ai_scheduler/internal/entitys" "ai_scheduler/internal/pkg" + "ai_scheduler/tmpl/dataTemp" + "errors" "fmt" "time" @@ -13,6 +16,7 @@ import ( "go.mongodb.org/mongo-driver/bson" "go.mongodb.org/mongo-driver/bson/primitive" + "go.mongodb.org/mongo-driver/mongo" "xorm.io/builder" ) @@ -20,6 +24,7 @@ type AdviceProjectBiz struct { AdvicerProjectMongo *mongo_model.AdvicerProjectMongo adviceProjectImpl *impl.AdviceProjectImpl aiAdviceModelSupImpl *impl.AiAdviceModelSupImpl + industryImpl *impl.AdviceIndustryImpl mongo *pkg.Mongo } @@ -27,6 +32,7 @@ func NewAdviceProjectBiz( advicerProjectMongo *mongo_model.AdvicerProjectMongo, adviceProjectImpl *impl.AdviceProjectImpl, aiAdviceModelSupImpl *impl.AiAdviceModelSupImpl, + industryImpl *impl.AdviceIndustryImpl, mongo *pkg.Mongo, ) *AdviceProjectBiz { return &AdviceProjectBiz{ @@ -34,14 +40,21 @@ func NewAdviceProjectBiz( mongo: mongo, adviceProjectImpl: adviceProjectImpl, aiAdviceModelSupImpl: aiAdviceModelSupImpl, + industryImpl: industryImpl, } } +// BaseAdd 新建项目基础信息;IndustryId>0 时自动复制行业模板的维度内容 func (a *AdviceProjectBiz) BaseAdd(ctx context.Context, param *entitys.AdvicerProjectBaseAddReq) (res *entitys.AdvicerProjectBaseAddRes, err error) { add := &model.AiAdviceProject{ Name: param.Name, ModelSupID: param.ModelSupId, } + if param.IndustryId > 0 { + if err = a.fillTemplateFromIndustry(ctx, add, param.IndustryId); err != nil { + return nil, err + } + } err = a.adviceProjectImpl.AddWithData(add) if err != nil { return nil, err @@ -51,19 +64,127 @@ func (a *AdviceProjectBiz) BaseAdd(ctx context.Context, param *entitys.AdvicerPr }, err } +// BaseUpdate 更新项目基础信息与项目级模板字段(仅更新传入非空字段) func (a *AdviceProjectBiz) BaseUpdate(ctx context.Context, param *entitys.AdvicerProjectBaseUpdateReq) (err error) { if param.ProjectId == 0 { - return + return errorcode.ParamErr("projectId is empty") + } + updates := make(map[string]interface{}) + if param.Name != "" { + updates["name"] = param.Name + } + if param.ModelSupId != 0 { + updates["model_sup_id"] = param.ModelSupId + } + if param.Desc != "" { + updates["template_desc"] = param.Desc + } + if param.AdvicerDesc != "" { + updates["template_advicer_desc"] = param.AdvicerDesc + } + if param.ClientDimension != "" { + updates["client_dimension"] = param.ClientDimension + } + if param.ProjectDimension != "" { + updates["project_dimension"] = param.ProjectDimension + } + if param.AdvicerDimension != "" { + updates["advicer_dimension"] = param.AdvicerDimension + } + if param.TalkSkillDimension != "" { + updates["talk_skill_dimension"] = param.TalkSkillDimension + } + if param.RuleDimension != "" { + updates["rule_dimension"] = param.RuleDimension + } + // IndustryId>0 时重新从行业模板复制(覆盖模板字段) + if param.IndustryId > 0 { + var industry model.AiAdviceIndustryTemp + if err = a.industryImpl.GetByKey(ctx, "industry_id", param.IndustryId, &industry); err != nil { + return err + } + if industry.IndustryId == 0 { + return errorcode.ParamErr("行业模板不存在") + } + a.mergeIndustryTemplate(updates, &industry) + } + if len(updates) == 0 { + return nil } cond := builder.NewCond() cond = cond.And(builder.Eq{"project_id": param.ProjectId}) - err = a.adviceProjectImpl.UpdateByCond(&cond, &model.AiAdviceProject{ - Name: param.Name, - ModelSupID: param.ModelSupId, - }) + err = a.adviceProjectImpl.UpdateByCond(&cond, updates) return err } +// TemplateCopy 重新应用行业模板(全量覆盖项目模板字段) +func (a *AdviceProjectBiz) TemplateCopy(ctx context.Context, param *entitys.AdvicerProjectTemplateCopyReq) (err error) { + if param.ProjectId == 0 { + return errorcode.ParamErr("projectId is empty") + } + if param.IndustryId == 0 { + return errorcode.ParamErr("industryId is empty") + } + var industry model.AiAdviceIndustryTemp + if err = a.industryImpl.GetByKey(ctx, "industry_id", param.IndustryId, &industry); err != nil { + return err + } + if industry.IndustryId == 0 { + return errorcode.ParamErr("行业模板不存在") + } + updates := make(map[string]interface{}) + a.mergeIndustryTemplate(updates, &industry) + cond := builder.NewCond() + cond = cond.And(builder.Eq{"project_id": param.ProjectId}) + return a.adviceProjectImpl.UpdateByCond(&cond, updates) +} + +// fillTemplateFromIndustry 从行业模板复制维度内容到项目实体 +func (a *AdviceProjectBiz) fillTemplateFromIndustry(ctx context.Context, project *model.AiAdviceProject, industryId int32) error { + var industry model.AiAdviceIndustryTemp + if err := a.industryImpl.GetByKey(ctx, "industry_id", industryId, &industry); err != nil { + return err + } + if industry.IndustryId == 0 { + return errorcode.ParamErr("行业模板不存在") + } + project.IndustryID = industry.IndustryId + project.TemplateDesc = industry.Desc + project.TemplateAdvicerDesc = industry.AdvicerDesc + project.ClientDimension = industry.ClientDimension + project.ProjectDimension = industry.ProjectDimension + project.AdvicerDimension = industry.AdvicerDimension + project.TalkSkillDimension = industry.TalkSkillDimension + project.RuleDimension = industry.RuleDimension + return nil +} + +// mergeIndustryTemplate 将行业模板内容合并到更新 map(全量覆盖语义) +func (a *AdviceProjectBiz) mergeIndustryTemplate(updates map[string]interface{}, industry *model.AiAdviceIndustryTemp) { + updates["industry_id"] = industry.IndustryId + updates["template_desc"] = industry.Desc + updates["template_advicer_desc"] = industry.AdvicerDesc + updates["client_dimension"] = industry.ClientDimension + updates["project_dimension"] = industry.ProjectDimension + updates["advicer_dimension"] = industry.AdvicerDimension + updates["talk_skill_dimension"] = industry.TalkSkillDimension + updates["rule_dimension"] = industry.RuleDimension +} + +// List 分页查询项目列表 +func (a *AdviceProjectBiz) List(ctx context.Context, param *entitys.AdvicerProjectListReq) (list []model.AiAdviceProject, total int64, err error) { + list = make([]model.AiAdviceProject, 0) + cond := builder.NewCond() + if param.Name != "" { + cond = cond.And(builder.Like{"name", "%" + param.Name + "%"}) + } + page, err := a.adviceProjectImpl.GetListToStruct(ctx, &cond, &dataTemp.ReqPageBo{Page: param.Page, Limit: param.PageSize}, &list, "") + if err != nil { + return nil, 0, err + } + return list, page.Total, nil +} + func (a *AdviceProjectBiz) Add(ctx context.Context, param *entitys.AdvicerProjectAddReq) (id interface{}, err error) { res, err := a.mongo.Co(a.AdvicerProjectMongo).InsertOne(ctx, &mongo_model.AdvicerProjectMongo{ @@ -115,7 +236,12 @@ func (a *AdviceProjectBiz) Info(ctx context.Context, param *entitys.AdvicerProje if err != nil { return nil, err } - baseInfo, err := a.BaseInfo(configInfo.ProjectId) + baseProjectId := configInfo.ProjectId + // mongo 中暂无配置记录时,回退用请求参数中的 projectId 查询基础信息 + if baseProjectId == 0 { + baseProjectId = param.ProjectId + } + baseInfo, err := a.BaseInfo(baseProjectId) if err != nil { return nil, err } @@ -173,12 +299,12 @@ func (a *AdviceProjectBiz) ConfigInfo(ctx context.Context, param *entitys.Advice } res := a.mongo.Co(a.AdvicerProjectMongo).FindOne(ctx, filter) - if res.Err() != nil { + if res.Err() != nil && !errors.Is(res.Err(), mongo.ErrNoDocuments) { return info, res.Err() } // 遍历结果 - if err := res.Decode(&info); err != nil { + if err := res.Decode(&info); err != nil && !errors.Is(err, mongo.ErrNoDocuments) { return info, err } diff --git a/internal/biz/advice_skill.go b/internal/biz/advice_skill.go index eeb682f..410b84f 100644 --- a/internal/biz/advice_skill.go +++ b/internal/biz/advice_skill.go @@ -75,11 +75,11 @@ func (a *AdviceSkillBiz) VersionUpdate(ctx context.Context, param *entitys.Advic return res.Err() } -func (a *AdviceSkillBiz) VersionList(ctx context.Context, param *entitys.AdvicerTalkSkillListReq) (list []mongo_model.AdvicerTalkSkillMongo, err error) { +func (a *AdviceSkillBiz) VersionList(ctx context.Context, param *entitys.AdvicerTalkSkillListReq) (list []mongo_model.AdvicerTalkSkillItem, err error) { filter := bson.M{} // 1. advicer_id 条件 if param.AdvicerId != 0 { - filter["AdvicerId"] = param.AdvicerId + filter["advicerId"] = param.AdvicerId } if param.ProjectId != 0 { @@ -112,7 +112,7 @@ func (a *AdviceSkillBiz) VersionList(ctx context.Context, param *entitys.Advicer } // 遍历结果 for cursor.Next(ctx) { - var advicerVersion mongo_model.AdvicerTalkSkillMongo + var advicerVersion mongo_model.AdvicerTalkSkillItem if err := cursor.Decode(&advicerVersion); err != nil { return nil, err } diff --git a/internal/biz/llm_service/third_party/hsyq.go b/internal/biz/llm_service/third_party/hsyq.go deleted file mode 100644 index 8b73b9f..0000000 --- a/internal/biz/llm_service/third_party/hsyq.go +++ /dev/null @@ -1,142 +0,0 @@ -package third_party - -import ( - "context" - - "time" - - "github.com/gofiber/fiber/v2/log" - "github.com/volcengine/volcengine-go-sdk/service/arkruntime" - "github.com/volcengine/volcengine-go-sdk/service/arkruntime/model" - "github.com/volcengine/volcengine-go-sdk/service/arkruntime/model/responses" - "github.com/volcengine/volcengine-go-sdk/volcengine" -) - -type Hsyq struct { - mapClient map[string]*arkruntime.Client -} - -func NewHsyq() *Hsyq { - return &Hsyq{ - mapClient: make(map[string]*arkruntime.Client), - } -} - -func (h *Hsyq) getClient(key string) *arkruntime.Client { - var client *arkruntime.Client - if _, ok := h.mapClient[key]; ok { - client = h.mapClient[key] - } else { - client = arkruntime.NewClientWithApiKey( - key, - arkruntime.WithRegion("cn-beijing"), - arkruntime.WithTimeout(2*time.Minute), - arkruntime.WithRetryTimes(2), - ) - h.mapClient[key] = client - } - return client -} - -// 火山引擎 -func (h *Hsyq) Chat(ctx context.Context, key string, modelName string, prompt []*model.ChatCompletionMessage) (model.ChatCompletionResponse, error) { - req := model.CreateChatCompletionRequest{ - Model: modelName, - Messages: prompt, - Stream: new(bool), - Thinking: &model.Thinking{Type: model.ThinkingTypeDisabled}, - } - - resp, err := h.getClient(key).CreateChatCompletion(ctx, req) - if err != nil { - return model.ChatCompletionResponse{ID: ""}, err - } - log.Info("token用量:", resp.Usage.TotalTokens, "输入:", resp.Usage.PromptTokens, "输出:", resp.Usage.CompletionTokens) - return resp, err -} - -// 火山引擎 -func (h *Hsyq) ChatWithRequest(ctx context.Context, key string, request model.ContextChatCompletionRequest) (model.ChatCompletionResponse, error) { - - resp, err := h.getClient(key).CreateContextChatCompletion(ctx, request) - if err != nil { - return model.ChatCompletionResponse{ID: ""}, err - } - log.Info("token用量:", resp.Usage.TotalTokens, "输入:", resp.Usage.PromptTokens, "输出:", resp.Usage.CompletionTokens) - return resp, err -} - -func (h *Hsyq) CreateContextCache(ctx context.Context, key string, modelName string, prompt []*model.ChatCompletionMessage) (string, error) { - req := model.CreateContextRequest{ - Model: modelName, - Messages: prompt, - TTL: volcengine.Int(3600), - Mode: model.ContextModeSession, - TruncationStrategy: &model.TruncationStrategy{Type: model.TruncationStrategyTypeRollingTokens}, - } - - resp, err := h.getClient(key).CreateContext(ctx, req) - if err != nil { - return "", err - } - log.Info("token用量:", resp.Usage.TotalTokens, "输入:", resp.Usage.PromptTokens, "输出:", resp.Usage.CompletionTokens) - return resp.ID, err -} - -func (h *Hsyq) CreateResponse(ctx context.Context, key string, modelName string, prompt []*responses.InputItem, id string, isRegis bool) (*responses.ResponseObject, error) { - - req := &responses.ResponsesRequest{ - Model: modelName, - Input: &responses.ResponsesInput{ - Union: &responses.ResponsesInput_ListValue{ - ListValue: &responses.InputItemList{ListValue: prompt}, - }, - }, - Stream: new(bool), - Reasoning: &responses.ResponsesReasoning{Effort: responses.ReasoningEffort_minimal}, - Thinking: &responses.ResponsesThinking{Type: responses.ThinkingType_disabled.Enum()}, - Text: &responses.ResponsesText{Format: &responses.TextFormat{Type: responses.TextType_json_object}}, - } - if isRegis { - prefix := true - req.Caching = &responses.ResponsesCaching{Type: responses.CacheType_enabled.Enum(), Prefix: &prefix} - req.ExpireAt = volcengine.Int64(time.Now().Unix() + 3600) - } - if len(id) != 0 { - req.PreviousResponseId = &id - //req.Text = &responses.ResponsesText{ - // Format: &responses.TextFormat{ - // Type: responses.TextType_json_object, - // Schema: - // } - //} - } - resp, err := h.getClient(key).CreateResponses(ctx, req) - if err != nil { - return nil, err - } - log.Info("token用量:", resp.Usage.TotalTokens, "输入:", resp.Usage.InputTokens, "输出:", resp.Usage.OutputTokens) - return resp, err -} - -func (h *Hsyq) RequestHsyqJson(ctx context.Context, key string, modelName string, prompt []*responses.InputItem) (*responses.ResponseObject, error) { - req := responses.ResponsesRequest{ - Model: modelName, - Input: &responses.ResponsesInput{ - Union: &responses.ResponsesInput_ListValue{ - ListValue: &responses.InputItemList{ListValue: prompt}, - }, - }, - Stream: new(bool), - - Thinking: &responses.ResponsesThinking{Type: responses.ThinkingType_disabled.Enum()}, - Text: &responses.ResponsesText{Format: &responses.TextFormat{Type: responses.TextType_json_object}}, - } - - resp, err := h.getClient(key).CreateResponses(ctx, &req) - if err != nil { - return resp, err - } - log.Info("token用量:", resp.Usage.TotalTokens) - return resp, err -} diff --git a/internal/biz/llm_service/third_party/openai.go b/internal/biz/llm_service/third_party/openai.go index 6782009..26dabbb 100644 --- a/internal/biz/llm_service/third_party/openai.go +++ b/internal/biz/llm_service/third_party/openai.go @@ -84,6 +84,43 @@ func (o *OpenAi) CreateResponse( return &resp, nil } +// CreateResponseMessages 对应 Hsyq.CreateResponse 的多消息版本 +// json_object格式输出;响应需存储后才能通过 PreviousResponseID 续写 +// id 不为空时走 PreviousResponseID 续写对话 +func (o *OpenAi) CreateResponseMessages( + ctx context.Context, + key string, + url string, + modelName string, + input []openai.ResponseInputMessage, + id string, +) (*openai.CreateResponseResponse, error) { + store := true + req := openai.CreateResponseRequest{ + Model: modelName, + Input: input, + Store: &store, + Text: &openai.ResponseTextConfig{ + Format: &openai.ResponseTextFormat{ + Type: "json_object", + }, + }, + } + + if len(id) != 0 { + req.PreviousResponseID = id + } + + resp, err := o.getClient(key, url).CreateResponse(ctx, req) + if err != nil { + return nil, err + } + if resp.Usage != nil { + log.Info("token用量:", resp.Usage.TotalTokens, "输入:", resp.Usage.InputTokens, "输出:", resp.Usage.OutputTokens) + } + return &resp, nil +} + // RequestResponsesJson 对应 Hsyq.RequestHsyqJson // 通过 Text.Format 指定 JSON 输出,直接返回文字内容 func (o *OpenAi) RequestResponsesJson( diff --git a/internal/biz/provider_set.go b/internal/biz/provider_set.go index 5cf6729..5ab75d7 100644 --- a/internal/biz/provider_set.go +++ b/internal/biz/provider_set.go @@ -7,12 +7,12 @@ import ( ) var ProviderSetBiz = wire.NewSet( - + third_party.NewOpenAi, NewAdviceFileBiz, - third_party.NewHsyq, NewAdviceAdvicerBiz, NewAdviceSkillBiz, NewAdviceProjectBiz, + NewAdviceModelSupBiz, NewAdviceClientBiz, NewAdviceChatBiz, NewAdvicerIndustryBiz, diff --git a/internal/data/impl/advice_admin_impl.go b/internal/data/impl/advice_admin_impl.go index c18885d..304652e 100644 --- a/internal/data/impl/advice_admin_impl.go +++ b/internal/data/impl/advice_admin_impl.go @@ -30,7 +30,7 @@ func (a *AdviceAdminImpl) GetByAccount(ctx context.Context, account string) (*mo var admin model.AiAdviceAdmin err := a.Db.WithContext(ctx). Model(&model.AiAdviceAdmin{}). - Where("account = ?", account). + Where("account = ? and type=1", account). First(&admin).Error if err != nil { return nil, err diff --git a/internal/data/model/ai_advice_project.gen.go b/internal/data/model/ai_advice_project.gen.go index 15573c6..a57fa4b 100644 --- a/internal/data/model/ai_advice_project.gen.go +++ b/internal/data/model/ai_advice_project.gen.go @@ -12,10 +12,18 @@ const TableNameAiAdviceProject = "ai_advice_project" // AiAdviceProject mapped from table type AiAdviceProject struct { - ProjectID int32 `gorm:"column:project_id;primaryKey;autoIncrement:true" json:"project_id"` - Name string `gorm:"column:name;not null;comment:姓名" json:"name"` // 姓名 - ModelSupID int32 `gorm:"column:model_sup_id;not null;comment:模型提供方配置,关联advicer_model_sup" json:"model_sup_id"` // 模型提供方配置,关联advicer_model_sup - CreateAt time.Time `gorm:"column:create_at;default:CURRENT_TIMESTAMP" json:"create_at"` + ProjectID int32 `gorm:"column:project_id;primaryKey;autoIncrement:true" json:"project_id"` + Name string `gorm:"column:name;not null;comment:姓名" json:"name"` // 姓名 + ModelSupID int32 `gorm:"column:model_sup_id;not null;comment:模型提供方配置,关联advicer_model_sup" json:"model_sup_id"` // 模型提供方配置,关联advicer_model_sup + IndustryID int32 `gorm:"column:industry_id;not null;default:0;comment:来源行业模板ID" json:"industry_id"` // 来源行业模板ID(ai_advice_industry_temp.industry_id),0=未关联 + TemplateDesc string `gorm:"column:template_desc;type:text;comment:行业/项目介绍(模板副本)" json:"desc"` // 行业/项目介绍(模板副本) + TemplateAdvicerDesc string `gorm:"column:template_advicer_desc;type:text;comment:销售作用说明(模板副本)" json:"advicer_desc"` // 销售作用说明(模板副本) + ClientDimension string `gorm:"column:client_dimension;type:text;comment:客户维度(模板副本)" json:"client_dimension"` // 客户维度(模板副本) + ProjectDimension string `gorm:"column:project_dimension;type:text;comment:项目维度(模板副本)" json:"project_dimension"` // 项目维度(模板副本) + AdvicerDimension string `gorm:"column:advicer_dimension;type:text;comment:顾问维度(模板副本)" json:"advicer_dimension"` // 顾问维度(模板副本) + TalkSkillDimension string `gorm:"column:talk_skill_dimension;type:text;comment:聊天技巧维度(模板副本)" json:"talk_skill_dimension"` // 聊天技巧维度(模板副本) + RuleDimension string `gorm:"column:rule_dimension;type:text;comment:风控维度(模板副本)" json:"rule_dimension"` // 风控维度(模板副本) + CreateAt time.Time `gorm:"column:create_at;default:CURRENT_TIMESTAMP" json:"create_at"` } // TableName AiAdviceProject's table name diff --git a/internal/data/mongo_model/common.go b/internal/data/mongo_model/common.go index 3b20438..21d8f8a 100644 --- a/internal/data/mongo_model/common.go +++ b/internal/data/mongo_model/common.go @@ -1,5 +1,27 @@ package mongo_model +import "go.mongodb.org/mongo-driver/bson/primitive" + +// 以下 Item 包装类型用于列表查询返回记录 _id(原始模型不包含 _id 字段) + +// AdvicerVersionItem 销售版本(含 _id) +type AdvicerVersionItem struct { + Id primitive.ObjectID `bson:"_id" json:"id"` + AdvicerVersionMongo `bson:",inline"` +} + +// AdvicerTalkSkillItem 聊天技巧(含 _id) +type AdvicerTalkSkillItem struct { + Id primitive.ObjectID `bson:"_id" json:"id"` + AdvicerTalkSkillMongo `bson:",inline"` +} + +// AdvicerClientItem 客户(含 _id) +type AdvicerClientItem struct { + Id primitive.ObjectID `bson:"_id" json:"id"` + AdvicerClientMongo `bson:",inline"` +} + type AdviceRole string const ( diff --git a/internal/entitys/advicer_data.go b/internal/entitys/advicer_data.go index 78383d6..d791c87 100644 --- a/internal/entitys/advicer_data.go +++ b/internal/entitys/advicer_data.go @@ -103,6 +103,8 @@ type AdvicerTalkSkillInfoReq struct { type AdvicerProjectBaseAddReq struct { Name string `json:"name"` ModelSupId int32 `json:"modelSupId"` + // IndustryId 来源行业模板ID(>0 时自动复制该行业模板的维度内容) + IndustryId int32 `json:"industryId"` } type AdvicerProjectBaseAddRes struct { @@ -113,6 +115,29 @@ type AdvicerProjectBaseUpdateReq struct { ProjectId int32 `json:"projectId"` Name string `json:"name"` ModelSupId int32 `json:"modelSupId"` + // IndustryId >0 时重新从该行业模板复制维度内容(覆盖现有模板字段) + IndustryId int32 `json:"industryId"` + // 以下为项目级模板字段(可选,传入非空值时更新) + Desc string `json:"desc"` + AdvicerDesc string `json:"advicer_desc"` + ClientDimension string `json:"client_dimension"` + ProjectDimension string `json:"project_dimension"` + AdvicerDimension string `json:"advicer_dimension"` + TalkSkillDimension string `json:"talk_skill_dimension"` + RuleDimension string `json:"rule_dimension"` +} + +// AdvicerProjectListReq 查询项目列表 +type AdvicerProjectListReq struct { + Name string `json:"name"` + Page int `json:"page"` + PageSize int `json:"page_size"` +} + +// AdvicerProjectTemplateCopyReq 重新应用行业模板(覆盖项目模板字段) +type AdvicerProjectTemplateCopyReq struct { + ProjectId int32 `json:"projectId"` + IndustryId int32 `json:"industryId"` } type AdvicerProjectAddReq struct { diff --git a/internal/server/http.go b/internal/server/http.go index bedfea6..35c9461 100644 --- a/internal/server/http.go +++ b/internal/server/http.go @@ -23,17 +23,23 @@ func NewHTTPServer( adviceClient *advice.ClientService, industry *advice.IndustryService, admin *advice.AdminService, + modelSup *advice.ModelSupService, ) *fiber.App { //构建 server app := initRoute() // 提供静态前端:/ -> web/index.html, /admin.html, /project.html + // 上传文件静态托管:/upload/...(聊天记录等) + app.Static("/upload", "./upload") app.Static("/", "./web") - router.SetupRoutes(cfg, app, adviceFile, adviceData, adviceChat, adviceProject, adviceTalkSkill, adviceClient, industry, admin) + router.SetupRoutes(cfg, app, adviceFile, adviceData, adviceChat, adviceProject, adviceTalkSkill, adviceClient, industry, admin, modelSup) return app } func initRoute() *fiber.App { - app := fiber.New() + app := fiber.New(fiber.Config{ + // 提升请求体上限,支持上传聊天记录文件(默认 4MB) + BodyLimit: 32 * 1024 * 1024, + }) app.Use( recover.New(), logger.New(), diff --git a/internal/server/router/advicer.go b/internal/server/router/advicer.go index 39f9045..9ecb30a 100644 --- a/internal/server/router/advicer.go +++ b/internal/server/router/advicer.go @@ -19,6 +19,7 @@ func AdvicerRouterRegist( adviceClient *advice.ClientService, industry *advice.IndustryService, admin *advice.AdminService, + modelSup *advice.ModelSupService, ) { advicer := r.Group("advice/admin") // 登录放行 @@ -29,6 +30,7 @@ func AdvicerRouterRegist( advicer.Post("del", Vali(admin.Del, &entitys.AdvicerAdminDelReq{})) advicer.Post("file/word/ana", adviceFile.WordAna) + advicer.Post("file/upload", adviceFile.Upload) //销售 advicer.Post("advicer/add", adviceData.AdvicerUpdate) advicer.Post("advicer/update", adviceData.AdvicerUpdate) @@ -50,6 +52,8 @@ func AdvicerRouterRegist( advicer.Post("project/info/add", adviceProject.Add) advicer.Post("project/info/update", adviceProject.Update) advicer.Post("project/info", adviceProject.Info) + advicer.Post("project/list", adviceProject.List) + advicer.Post("project/template/copy", adviceProject.TemplateCopy) //客户 advicer.Post("client/add", adviceClient.Add) @@ -67,4 +71,10 @@ func AdvicerRouterRegist( advicer.Post("industry/generate", Vali(industry.Generate, &entitys.AdvicerIndustryGenerateReq{})) advicer.Post("industry/list", Vali(industry.List, &entitys.AdvicerIndustryListReq{})) advicer.Post("industry/del", Vali(industry.Del, &entitys.AdvicerIndustryDelReq{})) + + //模型配置 + advicer.Post("modelsup/add", modelSup.Add) + advicer.Post("modelsup/update", modelSup.Update) + advicer.Post("modelsup/list", modelSup.List) + advicer.Post("modelsup/del", modelSup.Del) } diff --git a/internal/server/router/router.go b/internal/server/router/router.go index de618d2..3d38960 100644 --- a/internal/server/router/router.go +++ b/internal/server/router/router.go @@ -4,6 +4,7 @@ import ( "ai_scheduler/internal/config" errorcode "ai_scheduler/internal/data/error" errors "ai_scheduler/internal/data/error" + "ai_scheduler/internal/middleware" "ai_scheduler/internal/pkg" "ai_scheduler/internal/services/advice" "encoding/json" @@ -17,13 +18,13 @@ import ( // SetupRoutes 设置路由 func SetupRoutes(cfg *config.Config, app *fiber.App, adviceFile *advice.FileService, adviceData *advice.AdvicerService, adviceChat *advice.ChatService, adviceProject *advice.ProjectService, adviceTalkSkill *advice.TalkSkillService, adviceClient *advice.ClientService, - industry *advice.IndustryService, admin *advice.AdminService, + industry *advice.IndustryService, admin *advice.AdminService, modelSup *advice.ModelSupService, ) { app.Use(func(c *fiber.Ctx) error { // 设置 CORS 头 c.Set("Access-Control-Allow-Origin", "*") c.Set("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, OPTIONS") - c.Set("Access-Control-Allow-Headers", "Content-Type, Authorization") + c.Set("Access-Control-Allow-Headers", "Content-Type, Authorization, X-finder-TOKEN") // AI能力调用路由,设置不同的 CORS 头 if strings.HasPrefix(c.Path(), "/api/v1/capability") { @@ -46,8 +47,14 @@ func SetupRoutes(cfg *config.Config, app *fiber.App, adviceFile *advice.FileServ return nil }) + // 微信项目路由:/api/v1/project/wx/*(通过 X-finder-TOKEN 转发,不走 JWT) + projectR := r.Group("project") + WxRegist(projectR) + // 管理后台路由(需要登录): /api/v1/admin/... adminR := r.Group("admin") + // 登录接口放行,其余接口校验 JWT 登录态 + adminR.Use(middleware.AuthMiddleware(cfg.JwtSecret, "/api/v1/admin/advice/admin/login")) AdvicerRouterRegist( cfg, adminR, @@ -59,32 +66,11 @@ func SetupRoutes(cfg *config.Config, app *fiber.App, adviceFile *advice.FileServ adviceClient, industry, admin, - 1, // requiredType = 1 for management backend - "/api/v1/admin/advice/admin/login", + modelSup, ) - // 项目后台路由: /api/v1/project/... - projectR := r.Group("project") - AdvicerRouterRegist( - cfg, - projectR, - adviceFile, - adviceData, - adviceChat, - adviceProject, - adviceTalkSkill, - adviceClient, - industry, - admin, - 2, // requiredType = 2 for project backend - "/api/v1/project/advice/admin/login", - ) - - // 把微信能力注册到项目后台下 - WxRegist(projectR) } - func registerResponse(router fiber.Router) { // 自定义返回 router.Use(func(c *fiber.Ctx) error { @@ -121,7 +107,9 @@ func registerCommon(c *fiber.Ctx, err error) error { body := c.Response().Body() if c.Locals("skip_response_wrap") == true { - return c.JSON(string(body)) + // handler 已自行写入原始 JSON(如微信代理透传上游 data),原样输出不做包装 + c.Set(fiber.HeaderContentType, fiber.MIMEApplicationJSONCharsetUTF8) + return c.Send(body) } var rawData json.RawMessage if len(body) > 0 { diff --git a/internal/services/advice/advicer_test.go b/internal/services/advice/advicer_test.go index cd89b7a..03b7a79 100644 --- a/internal/services/advice/advicer_test.go +++ b/internal/services/advice/advicer_test.go @@ -123,15 +123,15 @@ func Run(ctx context.Context, reqBody []byte) { advicerTalkSkillMongo := mongo_model.NewAdvicerTalkSkillMongo() advicerClientMongo := mongo_model.NewAdvicerClientMongo() advicerProjectMongo := mongo_model.NewAdvicerProjectMongo() - hsyq := third_party.NewHsyq() + openai := third_party.NewOpenAi() adviceProjectImpl := impl.NewAdviceProjectImpl(db) mongo, _ := pkg.NewMongoDb(ctx, configConfig) adviceAdvicerBiz := biz.NewAdviceAdvicerBiz(advicerImpl, advicerVersionMongo, mongo) - adviceChatBiz := biz.NewAdviceChatBiz(hsyq, rdb, aiAdviceSessionImpl, aiAdviceModelSupImpl, advicerChatHisMongo, mongo) + adviceChatBiz := biz.NewAdviceChatBiz(openai, rdb, aiAdviceSessionImpl, aiAdviceModelSupImpl, advicerChatHisMongo, mongo) skillBiz := biz.NewAdviceSkillBiz(advicerTalkSkillMongo, mongo) clientBiz := biz.NewAdviceClientBiz(advicerClientMongo, mongo) - adviceFileBiz := biz.NewAdviceFileBiz(hsyq) + adviceFileBiz := biz.NewAdviceFileBiz(openai) adviceProjectBiz := biz.NewAdviceProjectBiz(advicerProjectMongo, adviceProjectImpl, aiAdviceModelSupImpl, mongo) adviceClientBiz := biz.NewAdviceClientBiz(advicerClientMongo, mongo) adviceSkillBiz := biz.NewAdviceSkillBiz(advicerTalkSkillMongo, mongo) diff --git a/internal/services/advice/file.go b/internal/services/advice/file.go index f2a7c7b..c61c8f7 100644 --- a/internal/services/advice/file.go +++ b/internal/services/advice/file.go @@ -9,10 +9,15 @@ import ( "ai_scheduler/internal/pkg/file_download" "context" "errors" + "os" + "path/filepath" + "strings" + "time" "net/url" "github.com/gofiber/fiber/v2" + "github.com/google/uuid" ) // FileService 文件处理 @@ -88,3 +93,41 @@ func (a *FileService) WordAnat(path string) ([]byte, error) { return pkg.JsonByteIgonErr(ana), err } + +// Upload 本地上传文件(聊天记录等),返回可直接访问的 URL +func (a *FileService) Upload(c *fiber.Ctx) error { + file, err := c.FormFile("file") + if err != nil { + return errorcode.ParamErr("file 不能为空") + } + if file.Size > 32*1024*1024 { + return errorcode.ParamErr("文件过大,最大支持 32MB") + } + ext := strings.ToLower(filepath.Ext(file.Filename)) + allowed := map[string]bool{ + ".doc": true, ".docx": true, ".pdf": true, ".txt": true, ".md": true, + ".xls": true, ".xlsx": true, ".csv": true, ".json": true, + } + if !allowed[ext] { + return errorcode.ParamErr("不支持的文件类型: " + ext) + } + // 按日期分目录存储 + day := time.Now().Format("20060102") + dir := filepath.Join("upload", day) + if err = os.MkdirAll(dir, 0755); err != nil { + return err + } + saveName := uuid.NewString() + ext + dst := filepath.Join(dir, saveName) + if err = c.SaveFile(file, dst); err != nil { + return err + } + relPath := "/" + filepath.ToSlash(dst) + res := &entitys.FileUploadRes{ + Path: relPath, + Url: c.Protocol() + "://" + c.Hostname() + relPath, + Name: file.Filename, + Size: file.Size, + } + return pkg.HandleResponse(c, res, nil) +} diff --git a/internal/services/advice/project.go b/internal/services/advice/project.go index 9c28c49..07f72f1 100644 --- a/internal/services/advice/project.go +++ b/internal/services/advice/project.go @@ -72,3 +72,23 @@ func (d *ProjectService) Info(c *fiber.Ctx) error { list, err := d.adviceProjectBiz.Info(c.UserContext(), req) return pkg.HandleResponse(c, list, err) } + +// List 项目分页列表 +func (d *ProjectService) List(c *fiber.Ctx) error { + req := &entitys.AdvicerProjectListReq{} + if err := c.BodyParser(req); err != nil { + return err + } + list, total, err := d.adviceProjectBiz.List(c.UserContext(), req) + return pkg.SuccessWithPageMsg(c, list, total, req.Page, req.PageSize, err) +} + +// TemplateCopy 重新复制行业模板到项目(覆盖项目模板字段) +func (d *ProjectService) TemplateCopy(c *fiber.Ctx) error { + req := &entitys.AdvicerProjectTemplateCopyReq{} + if err := c.BodyParser(req); err != nil { + return err + } + err := d.adviceProjectBiz.TemplateCopy(c.UserContext(), req) + return pkg.HandleResponse(c, nil, err) +} diff --git a/internal/services/advice/provider_set.go b/internal/services/advice/provider_set.go index bff0381..c800cfd 100644 --- a/internal/services/advice/provider_set.go +++ b/internal/services/advice/provider_set.go @@ -13,5 +13,6 @@ var ProviderService = wire.NewSet( NewFileService, NewIndustryService, NewProjectService, + NewModelSupService, NewTalkSkillService, )