diff --git a/Yi.Abp.Net8/module/ai-stock/Yi.Framework.Stock.Domain/Managers/NewsManager.cs b/Yi.Abp.Net8/module/ai-stock/Yi.Framework.Stock.Domain/Managers/NewsManager.cs
index c725a035..7e9ff774 100644
--- a/Yi.Abp.Net8/module/ai-stock/Yi.Framework.Stock.Domain/Managers/NewsManager.cs
+++ b/Yi.Abp.Net8/module/ai-stock/Yi.Framework.Stock.Domain/Managers/NewsManager.cs
@@ -4,6 +4,7 @@ using Yi.Framework.Stock.Domain.Entities;
using Yi.Framework.Stock.Domain.Managers.SemanticKernel;
using Yi.Framework.Stock.Domain.Managers.SemanticKernel.Plugins;
using System.Text;
+using System.IO;
namespace Yi.Framework.Stock.Domain.Managers;
@@ -64,23 +65,9 @@ public class NewsManager:DomainService
newsContext.AppendLine("目前没有最近的新闻记录。");
}
- var question = $$"""
- 基于以下最近的新闻背景,生成一条新的股市相关新闻。
-
- {{newsContext}}
-
- 请生成一条有关联性的新闻,包含以下要素:
- 1. 新闻标题:吸引人且与股市、金融或经济相关
- 2. 新闻内容:详细且符合逻辑的报道,篇幅适中
- 3. 新闻简介:简明扼要的总结
- 4. 新闻来源:提供一个可信的媒体或机构名称
-
- 注意:
- - 新闻内容应当与前面的新闻有一定关联性
- - 内容应当暗示可能对股市产生某种影响(积极或消极)
- - 行业焦点可以包括娱乐、科技、能源、金融等多个领域
- - 只需生成一次即可
- """;
+ var promptPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "wwwroot", "stock", "newsPrompt.txt");
+ var question = await File.ReadAllTextAsync(promptPath);
+ question = question.Replace("{{newsContext}}", newsContext.ToString());
await _skClient.ChatCompletionAsync(question, ("NewsPlugins","save_news"));
}
diff --git a/Yi.Abp.Net8/module/ai-stock/Yi.Framework.Stock.Domain/Managers/StockMarketManager.cs b/Yi.Abp.Net8/module/ai-stock/Yi.Framework.Stock.Domain/Managers/StockMarketManager.cs
index 44d0f96b..c5637966 100644
--- a/Yi.Abp.Net8/module/ai-stock/Yi.Framework.Stock.Domain/Managers/StockMarketManager.cs
+++ b/Yi.Abp.Net8/module/ai-stock/Yi.Framework.Stock.Domain/Managers/StockMarketManager.cs
@@ -12,6 +12,7 @@ using Yi.Framework.Stock.Domain.Managers.SemanticKernel;
using Yi.Framework.Stock.Domain.Managers.SemanticKernel.Plugins;
using Microsoft.Extensions.Hosting;
using System.Text;
+using System.IO;
namespace Yi.Framework.Stock.Domain.Managers
{
@@ -422,35 +423,18 @@ namespace Yi.Framework.Stock.Domain.Managers
{
if (stockPrices.TryGetValue(stock.Id, out var price))
{
- stocksContext.AppendLine($"{stock.MarketName}:id:{stock.Id} 最后一次价格:{price:F2}");
+ stocksContext.AppendLine($"{stock.MarketName}:id:{stock.Id},简介:{stock.Description} 最后一次价格:{price:F2}");
}
}
- var question = $$"""
- 根据最近的新闻和当前股票价格,预测多家股票未来24小时的价格走势
-
- {{newsContext}}
-
- {{stocksContext}}
-
- 请分析上述新闻对各个股票可能产生的影响,并预测每支股票未来24小时的价格变动:
- 1. 考虑新闻中提到的行业、公司或经济趋势
- 2. 分析这些因素对不同股票的积极或消极影响
- 3. 根据分析生成合理的价格波动
-
- 对每支股票,请返回:
- - 股票id
- - 一个长度为24的价格数组,表示未来24小时(每小时整点)的预测价格
-
- 价格变动应当符合以下规则:
- - 相邻时间点的价格波动通常不超过前值的20%
- - 考虑市场开盘和收盘时间可能带来的较大波动
- - 不同股票之间的相关性(如同行业股票可能有类似走势)
- - 部分股票可能对某些新闻更敏感
-
- 请确保数据格式正确,以便系统能够自动处理。
- """;
-
+ // 从文件读取问题模板
+ string promptTemplate = File.ReadAllText(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "wwwroot", "stock", "marketPrompt.txt"));
+
+ // 替换变量
+ string question = promptTemplate
+ .Replace("{{newsContext}}", newsContext.ToString())
+ .Replace("{{stocksContext}}", stocksContext.ToString());
+
await _skClient.ChatCompletionAsync(question, ("StockPlugins", "save_stocks"));
}
}
diff --git a/Yi.Abp.Net8/src/Yi.Abp.Web/Yi.Abp.Web.csproj b/Yi.Abp.Net8/src/Yi.Abp.Web/Yi.Abp.Web.csproj
index eb81b112..83941d49 100644
--- a/Yi.Abp.Net8/src/Yi.Abp.Web/Yi.Abp.Web.csproj
+++ b/Yi.Abp.Net8/src/Yi.Abp.Web/Yi.Abp.Web.csproj
@@ -53,6 +53,9 @@
Always
+
+ Always
+
diff --git a/Yi.Abp.Net8/src/Yi.Abp.Web/wwwroot/stock/marketPrompt.txt b/Yi.Abp.Net8/src/Yi.Abp.Web/wwwroot/stock/marketPrompt.txt
new file mode 100644
index 00000000..43bac9d3
--- /dev/null
+++ b/Yi.Abp.Net8/src/Yi.Abp.Web/wwwroot/stock/marketPrompt.txt
@@ -0,0 +1,23 @@
+根据最近的新闻和当前股票价格,预测多家股票未来24小时的价格走势
+
+{{newsContext}}
+
+{{stocksContext}}
+
+请分析上述新闻对各个股票可能产生的影响,并预测每支股票未来24小时的价格变动:
+1. 考虑新闻中提到的行业、公司或经济趋势
+2. 分析这些因素对不同股票的积极或消极影响
+3. 根据分析生成合理的价格波动
+4. 股票的简介是该股票行业、类型等信息准确的定位
+
+对每支股票,请返回:
+- 股票id
+- 一个长度为24的价格数组,表示未来24小时(每小时整点)的预测价格
+
+价格变动应当符合以下规则:
+- 相邻时间点的价格波动通常不超过前值的20%
+- 考虑市场开盘和收盘时间可能带来的较大波动
+- 不同股票之间的相关性(如同行业股票可能有类似走势)
+- 部分股票可能对某些新闻更敏感
+
+请确保数据格式正确,以便系统能够自动处理。
\ No newline at end of file
diff --git a/Yi.Abp.Net8/src/Yi.Abp.Web/wwwroot/stock/newsPrompt.txt b/Yi.Abp.Net8/src/Yi.Abp.Web/wwwroot/stock/newsPrompt.txt
new file mode 100644
index 00000000..a4cec731
--- /dev/null
+++ b/Yi.Abp.Net8/src/Yi.Abp.Web/wwwroot/stock/newsPrompt.txt
@@ -0,0 +1,15 @@
+基于以下最近的新闻背景,生成一条新的股市相关新闻。
+
+{{newsContext}}
+
+请生成一条有关联性的新闻,包含以下要素:
+1. 新闻标题:吸引人且与股市、金融或经济相关
+2. 新闻内容:详细且符合逻辑的报道,篇幅适中
+3. 新闻简介:简明扼要的总结
+4. 新闻来源:提供一个可信的媒体或机构名称
+
+注意:
+- 新闻内容应当与前面的新闻有一定关联性
+- 内容应当暗示可能对股市产生某种影响(积极或消极)
+- 行业焦点可以包括娱乐、科技、能源、金融等多个领域
+- 只需生成一次即可
\ No newline at end of file