package com.xly.util; import cn.hutool.json.JSONUtil; import com.xly.entity.ToolMeta; import java.util.*; public class AIModelDataFormatter { public static String formatDataForAI(ToolMeta meta, Integer TotalCount, List> rows, Set headers) { StringBuilder response = new StringBuilder(); // 3. **关键:先显示用户友好的表格** response.append("## 查询结果(共").append(TotalCount).append("条)\n\n"); response.append(buildMarkdownTable(rows, headers)); response.append("\n"); // 4. 机器可读的结构化数据(只出现一次!) response.append("\n"); response.append(buildMachineReadableData(rows,headers)); response.append("\n\n\n"); return response.toString(); } /** * 构建Markdown表格 */ public static String buildMarkdownTable(List> rows, Set headers) { StringBuilder table = new StringBuilder(); // 表头 table.append("| 序号 | "); for (String header : headers) { table.append(header).append(" | "); } table.append("\n|"); table.append("---|".repeat(headers.size() + 1)); table.append("\n"); // 表格数据 for (int i = 0; i < rows.size(); i++) { Map row = rows.get(i); table.append("| ").append(i + 1).append(" | "); for (String header : headers) { Object value = row.get(header); table.append(value != null ? value : "—").append(" | "); } table.append("\n"); } return table.toString(); } /** * 构建机器可读数据 */ public static String buildMachineReadableData(List> rows, Set headers) { List> dataList = new ArrayList<>(); for (int i = 0; i < rows.size(); i++) { Map row = rows.get(i); Map item = new LinkedHashMap<>(); item.put("序号", i + 1); for (String header : headers) { Object value = row.get(header); item.put(header,value); } dataList.add(item); } return JSONUtil.toJsonStr(dataList); } }