This commit is contained in:
yanweidong
2026-02-03 14:40:20 +08:00
parent 827ec7bf5a
commit 57e303a012
5 changed files with 76 additions and 293 deletions

View File

@@ -1,11 +1,16 @@
package rule
import (
"context"
"encoding/json"
"fmt"
"os"
"strings"
"git.apinb.com/bsm-sdk/core/utils"
"git.apinb.com/quant/gostock/internal/config"
"git.apinb.com/quant/gostock/internal/logic/deepseek"
"github.com/go-deepseek/deepseek"
"github.com/go-deepseek/deepseek/request"
)
var (
@@ -20,16 +25,31 @@ func (r *RuleFactory) RunAi(code string) {
return
}
c := deepseek.Config{
APIKey: config.Spec.DeepSeekApiKey, // 替换为你的API Key
BaseURL: "https://api.deepseek.com",
Model: "deepseek-chat", // 或 "deepseek-coder"
MaxTokens: 2000,
Temperature: 0.7,
content, err := os.ReadFile(mdPath)
if err != nil {
r.Model.AiScrore = -1
r.Model.AddDesc(fmt.Sprintf("%s markdown 读取错误,%v", mdPath, err))
return
}
prompt := "你是一名资深量化投研分析师。请根据markdown格式的附件内容给出详细总结与买入评分0-10输出JSON字段summary(500字内中文总结)、score(0-10数字)、action(买入/谨慎/观望)、risk(一句风险提示)。"
result, err := deepseek.ProcessMarkdownQA(c, mdPath, prompt)
client, _ := deepseek.NewClient(config.Spec.DeepSeekApiKey)
//prompt := "你是一名资深量化投研分析师,分析" + code + "这个股票该股票的详细数据在https://markdata.apinb.com/" + code + ".md 读取这个markdown格式的内容根据内容中的行情财报技术指标等数据(倒序最新在最前面给出基本面总结技术面总结舆论总结等更多方面的总结并输出买入评分0-10整数输出JSON字段summary(500字内中文总结)、score(0-10数字)、action(买入/谨慎/观望)、risk(一句风险提示)。"
prompt := "你是一名资深量化投研分析师,分析" + code + "这个股票根据内容中的行情财报技术指标等数据给出基本面总结技术面总结舆论总结等更多方面的总结并输出买入评分0-10整数输出JSON字段summary(中文总结)、summary_2025(2025年财报总结)、summary_base(基本面分析总结)、summary_tech(技术面分析总结)、score(0-10数字)、support_level(支撑位价格)、resis_level(阻力位价格)、action(买入/谨慎/观望)、risk(一句风险提示)。\r\n"
prompt += "内容如下:\r\n"
prompt += string(content)
chatReq := &request.ChatCompletionsRequest{
Model: deepseek.DEEPSEEK_CHAT_MODEL,
Stream: false,
Messages: []*request.Message{
{
Role: "system",
Content: prompt, // set your input message
},
},
}
chatResp, err := client.CallChatCompletionsChat(context.Background(), chatReq)
if err != nil {
r.Model.AiScrore = -1
r.Model.AddDesc(fmt.Sprintf("处理失败: %v", err))
@@ -37,6 +57,27 @@ func (r *RuleFactory) RunAi(code string) {
}
// 输出JSON格式的结果
fmt.Println(string(result))
jsonBodys := strings.ReplaceAll(chatResp.Choices[0].Message.Content, "```json", "")
jsonBodys = strings.ReplaceAll(jsonBodys, "```", "")
var result map[string]any
err = json.Unmarshal([]byte(jsonBodys), &result)
if err != nil {
r.Model.AiScrore = -1
r.Model.AddDesc(fmt.Sprintf("Unmarshal: %v", err))
return
}
r.Model.AiSummary = result["summary"].(string)
r.Model.AiSummary2025 = result["summary_2025"].(string)
r.Model.AiSummaryBase = result["summary_base"].(string)
r.Model.AiSummaryTech = result["summary_tech"].(string)
r.Model.AiScrore = int(result["score"].(float64))
r.Model.AiSupportLevel = result["support_level"].(float64)
r.Model.AiResisLevel = result["resis_level"].(float64)
r.Model.AiAction = result["action"].(string)
r.Model.AiRisk = result["risk"].(string)
return
}