Browse Source

修改模型,和提示词

Gaokun Wang 4 months ago
parent
commit
c8e5f39f91

+ 20 - 6
eco-ai/ai-text-sql-biz/src/main/java/org/eco/vip/ai/text2sql/service/Text2SqlService.java

@@ -120,10 +120,16 @@ public class Text2SqlService implements IText2SqlService {
             map = text2SqlMapper.selectTableDdlDm(DBaseHelper.getSchema(), tableName);
         }
         String ddl = map.get("create table");
-        question= ddl + "\n" + question + ",根据需求生成" + DBaseHelper.getDbType() + "的查询SQL.\n" +
-                "1.严格按照要求,select 后面字段严格按照ddl表结构里面的给出,from 后面的条件不要自己发挥\n" +
-                "2.只输出sql语句不需要任何格式样式,就是一串sql.\n" +
-                "3.不需要带Schema:" + DBaseHelper.getSchema();
+        question = "你是一个专业的SQL生成助手,请严格按照以下提供的表DDL生成查询语句。\nDLL:\n" + ddl + "\n条件:\n" + question + ",根据需求生成" + DBaseHelper.getDbType() + "的查询SQL.\n" +
+                "1.解析用户提供的表DDL,提取所有字段名称;\n" +
+                "2.生成的查询语句必须仅包含这些字段,不可添加其他字段;\n" +
+                "3. 如果用户未明确指定查询逻辑,默认生成基础SELECT语句.\n" +
+                "4.不需要带Schema:" + DBaseHelper.getSchema() + "\n" +
+                "5.只输出SQL";
+//        question= ddl + "\n" + question + ",根据需求生成" + DBaseHelper.getDbType() + "的查询SQL.\n" +
+//                "1.生成的查询语句必须仅包含这些字段,不可添加其他字段,from 后面的条件不要自己发挥\n" +
+//                "2.只输出sql语句不需要任何格式样式,就是一串sql.\n" +
+//                "3.不需要带Schema:" + DBaseHelper.getSchema();
         log.info("\nquestion ____________________:\n{}", question);
         return ContentVo.builder().content(question).
                 tableName(tableName).build();
@@ -131,11 +137,19 @@ public class Text2SqlService implements IText2SqlService {
     }
 
     private String cleanRawSql(String rawSql) {
-        // 1. 去除代码块标记(如 ```sql)和语言标识
+//        // 1. 去除代码块标记(如 ```sql)和语言标识
         String cleaned = rawSql.replaceAll("(?i).*```sql\\s*", "")
                 .replaceAll("\\s*```.*", "")
                 .trim();
-
+//        String cleaned = rawSql.trim();
+//        if (rawSql.contains("```")) {
+//            cleaned = rawSql.replaceAll("(?i).*```sql\\s*", "")
+//                    .replaceAll("\\s*```.*", "")
+//                    .trim();
+//            Pattern pattern = Pattern.compile("```([\\s\\S]*?)```");
+//            Matcher matcher = pattern.matcher(cleaned);
+//            cleaned = matcher.group(1).trim();
+//        }
         // 2. 去除末尾分号(MySQL允许不带分号执行)
         cleaned = cleaned.replaceAll(";\\s*$", "");
         return cleaned;

+ 1 - 1
eco-start/src/main/resources/application-local.yml

@@ -21,7 +21,7 @@ mybatis-flex:
       driver-class-name: dm.jdbc.driver.DmDriver
       url: jdbc:dm://127.0.0.1:5236?schema=lqbz&useUnicode=true&characterEncoding=utf8&useSSL=true&autoReconnect=true&reWriteBatchedInserts=true
       username: SYSDBA
-      password: SYSDBA123
+      password: SYSdba123
       # 最大连接池数量
       maximum-pool-size: 50
       # 最小空闲线程数量

+ 1 - 1
eco-start/src/main/resources/application.yml

@@ -113,7 +113,7 @@ logging:
 --- #
 deepseek:
   api-key: local-ollama  # 必填项:你的 API 密钥
-  model: qwen2.5:3b
+  model: qwen2.5-coder:3b
   base-url: http://127.0.0.1:11434/v1  # 可选,默认为官方 API 地址
 # 向量模型链接信息
 embedding: