Commit 4c86757c authored by alex yao's avatar alex yao

feat:图表插件更换GLM4

parent 1a849352
...@@ -36,7 +36,7 @@ public class ChartGenerateFunction extends AbstractLargeModelFunction { ...@@ -36,7 +36,7 @@ public class ChartGenerateFunction extends AbstractLargeModelFunction {
private LLMService llmService; private LLMService llmService;
private final Logger logger = LoggerFactory.getLogger(ChartGenerateFunction.class); private final Logger logger = LoggerFactory.getLogger(ChartGenerateFunction.class);
private final String MODEL = "deepseek-v3"; private final String MODEL = "glm-4-plus";
private final String DESC = "根据用户问题和现有数据生成mermaid图表,如生成饼状图,折线图,散点图,柱状图,流程图等"; private final String DESC = "根据用户问题和现有数据生成mermaid图表,如生成饼状图,折线图,散点图,柱状图,流程图等";
...@@ -83,10 +83,32 @@ public class ChartGenerateFunction extends AbstractLargeModelFunction { ...@@ -83,10 +83,32 @@ public class ChartGenerateFunction extends AbstractLargeModelFunction {
"请以Mermaid格式返回配置, 思考好了之后再输出,不要输出其他内容,如解释或注释。\n" + "请以Mermaid格式返回配置, 思考好了之后再输出,不要输出其他内容,如解释或注释。\n" +
"\n" + "\n" +
"**示例**\n" + "**示例**\n" +
"目标生成折线图:\n" + "**示例1**\n" +
"问题:帮我将一下数据生成折线图:\n" +
"输入数据:请求类型 处理部门 平均处理时间 优先级 技术问题 技术部 2小时 高 账单问题 财务部 1工作日 中 其他 客服部 30分钟 低\n" +
"主题:不同类型请求在各部门的平均处理时间对比\n" +
"图形类型 :柱状图\n" +
"输出:\n" +
"```mermaid\n" + "```mermaid\n" +
"xychart-beta\n" + "xychart-beta\n" +
" line [+1.3, .6, 2.4, -.34]\n" + " title \"不同类型请求在各部门的平均处理时间对比\"\n" +
" x-axis \"请求类型\" [\"技术问题\", \"账单问题\", \"其他\"]\n" +
" y-axis \"处理时间\" 0-->10\n" +
" bar [2, 8, 0.5]```\n" +
"```" +
"\n" +
"**示例2**\n" +
"问题: 帮我将一下数据生成折线图\n" +
"输入数据: 2022-03-15 500000.00 定金 银行转账 YXSK20220315001 1 购房定金 2022-04-01 1500000.00 首付 银行转账 YXSK20220401001 1 首付款30% 2022-10-01 2450000.00 尾款 银行转账 YXSK20221001001 1 银行按揭放款 2022-04-20 500000.00 定金 银行转账 YXSK20220420001 2 购房定金 2022-05-05 1500000.00 首付 银行转账 YXSK20220505001 2 首付款30% 2022-11-01 2550000.00 尾款 银行转账 YXSK20221101001 2 银行按揭放款\n" +
"主题:购房款项支付情况\n" +
"图形类型 :折线图\n" +
"输出:\n" +
"```mermaid\n" +
"xychart-beta\n" +
" title \"购房款项支付情况\"\n" +
" x-axis \"日期\" [\"2022-03-15\", \"2022-04-01\", \"2022-04-20\", \"2022-05-05\", \"2022-10-01\", \"2022-11-01\"]\n" +
" y-axis \"金额(元)\" 0-->3000000\n" +
" line [500000, 1500000, 500000, 1500000, 2450000, 2550000]" +
"```"; "```";
@Override @Override
......
...@@ -50,20 +50,27 @@ public class ChartGenerateFunctionTest { ...@@ -50,20 +50,27 @@ public class ChartGenerateFunctionTest {
"2. 使用与数据类型匹配的图表子类型(如堆积柱状图、面积折线图等)\n" + "2. 使用与数据类型匹配的图表子类型(如堆积柱状图、面积折线图等)\n" +
"3. 坐标轴需要包含单位说明\n" + "3. 坐标轴需要包含单位说明\n" +
"4. 使用最简单的方式生成,不要样式\n" + "4. 使用最简单的方式生成,不要样式\n" +
"5. 实际使用中用户的数据和要求不同,不能直接使用例子进行输出,要按照用户要求的图表进行\n"+ "5. 实际使用中用户的数据和要求不同,不能直接使用例子进行输出,要按照用户要求的图表进行\n" +
"\n" + "\n" +
"**输出要求**:\n" + "**输出要求**:\n" +
"- 仅返回可直接用于Markdown的Mermaid配置\n" + "- 仅返回可直接用于Markdown的Mermaid配置\n" +
"- 包含完整的Mermaid配置项\n" + "- 包含完整的Mermaid配置项\n" +
"- 严格遵循Mermaid的语法\n" + "- 严格遵循Mermaid的语法\n" +
"- 注意中文标题需要带双引号\n" + "- 注意中文标题需要带双引号\n" +
"- 若需要换行则使用</br>代替换行符\n" +
"请以Mermaid格式返回配置, 思考好了之后再输出,不要输出其他内容,如解释或注释。\n" + "请以Mermaid格式返回配置, 思考好了之后再输出,不要输出其他内容,如解释或注释。\n" +
"\n" + "\n" +
"**示例**\n" + "**示例**\n" +
"目标生成折线图:\n" + "问题:帮我将一下数据生成折线图:\n" +
"输入数据:请求类型 处理部门 平均处理时间 优先级 技术问题 技术部 2小时 高 账单问题 财务部 1工作日 中 其他 客服部 30分钟 低\n"+
"主题:不同类型请求在各部门的平均处理时间对比\n"+
"图形类型 :柱状图\n"+
"```mermaid\n" + "```mermaid\n" +
"xychart-beta\n" + "xychart-beta\n" +
" line [+1.3, .6, 2.4, -.34]\n" + " title \"不同类型请求在各部门的平均处理时间对比\"\n" +
" x-axis \"请求类型\" [\"技术问题\", \"账单问题\", \"其他\"]\n" +
" y-axis \"处理时间\" 0-->10\n" +
" bar [2, 8, 0.5]" +
"```"; "```";
@Resource @Resource
...@@ -77,10 +84,10 @@ public class ChartGenerateFunctionTest { ...@@ -77,10 +84,10 @@ public class ChartGenerateFunctionTest {
// String json = "{\"chart_type\": \"折线图\", \"data\": \"2022-03-15 500000.00 定金 银行转账 YXSK20220315001 1 购房定金 2022-04-01 1500000.00 首付 银行转账 YXSK20220401001 1 首付款30% 2022-10-01 2450000.00 尾款 银行转账 YXSK20221001001 1 银行按揭放款 2022-04-20 500000.00 定金 银行转账 YXSK20220420001 2 购房定金 2022-05-05 1500000.00 首付 银行转账 YXSK20220505001 2 首付款30% 2022-11-01 2550000.00 尾款 银行转账 YXSK20221101001 2 银行按揭放款\", \"question\": \"帮我将一下数据生成折线图\", \"theme\": \"购房款项支付情况\"}'}"; // String json = "{\"chart_type\": \"折线图\", \"data\": \"2022-03-15 500000.00 定金 银行转账 YXSK20220315001 1 购房定金 2022-04-01 1500000.00 首付 银行转账 YXSK20220401001 1 首付款30% 2022-10-01 2450000.00 尾款 银行转账 YXSK20221001001 1 银行按揭放款 2022-04-20 500000.00 定金 银行转账 YXSK20220420001 2 购房定金 2022-05-05 1500000.00 首付 银行转账 YXSK20220505001 2 首付款30% 2022-11-01 2550000.00 尾款 银行转账 YXSK20221101001 2 银行按揭放款\", \"question\": \"帮我将一下数据生成折线图\", \"theme\": \"购房款项支付情况\"}'}";
JSONObject jsonObject = new JSONObject(); JSONObject jsonObject = new JSONObject();
jsonObject.put("question", "根据以上数据生成流程图"); jsonObject.put("question", "帮我将一下数据生成折线图");
jsonObject.put("chart_type", "流程图"); jsonObject.put("chart_type", "折线图");
jsonObject.put("theme", "请求处理流程"); jsonObject.put("theme", "购房款项支付情况");
jsonObject.put("data", "请求类型 处理部门 平均处理时间 优先级 技术问题 技术部 2小时 高 账单问题 财务部 1工作日 中 其他 客服部 30分钟 低"); jsonObject.put("data", "2022-03-15 500000.00 定金 银行转账 YXSK20220315001 1 购房定金 2022-04-01 1500000.00 首付 银行转账 YXSK20220401001 1 首付款30% 2022-10-01 2450000.00 尾款 银行转账 YXSK20221001001 1 银行按揭放款 2022-04-20 500000.00 定金 银行转账 YXSK20220420001 2 购房定金 2022-05-05 1500000.00 首付 银行转账 YXSK20220505001 2 首付款30% 2022-11-01 2550000.00 尾款 银行转账 YXSK20221101001 2 银行按揭放款");
String content = jsonObject.toJSONString(); String content = jsonObject.toJSONString();
String identifier = "test_function"; String identifier = "test_function";
...@@ -97,7 +104,8 @@ public class ChartGenerateFunctionTest { ...@@ -97,7 +104,8 @@ public class ChartGenerateFunctionTest {
String[] strings = new String[]{"chart_generate"}; String[] strings = new String[]{"chart_generate"};
List<Tool> tools = AgentApplicationTools.buildFunctionConfig(new ArrayList<>(), "N", "test", "test" List<Tool> tools = AgentApplicationTools.buildFunctionConfig(new ArrayList<>(), "N", "test", "test"
, strings, "N"); , strings, "N");
FunctionCallResult functionCallResult = llmService.functionCall("请求类型 处理部门 平均处理时间 优先级\n" + FunctionCallResult functionCallResult = llmService.functionCall("\n" +
"请求类型 处理部门 平均处理时间 优先级\n" +
"技术问题 技术部 2小时 高\n" + "技术问题 技术部 2小时 高\n" +
"账单问题 财务部 1工作日 中\n" + "账单问题 财务部 1工作日 中\n" +
"其他 客服部 30分钟 低\n" + "其他 客服部 30分钟 低\n" +
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment