diff --git a/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/parser/llm/OnePassSCSqlGenStrategy.java b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/parser/llm/OnePassSCSqlGenStrategy.java index a41be00ab..68f6fe39a 100644 --- a/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/parser/llm/OnePassSCSqlGenStrategy.java +++ b/headless/chat/src/main/java/com/tencent/supersonic/headless/chat/parser/llm/OnePassSCSqlGenStrategy.java @@ -37,8 +37,8 @@ public class OnePassSCSqlGenStrategy extends SqlGenStrategy { + "please convert it to a SQL query so that relevant data could be returned " + "by executing the SQL query against underlying database." + "\n#Rules:" + "\n1.SQL columns and values must be mentioned in the `Schema`, DO NOT hallucinate." - + "\n2.ALWAYS specify date filter using `>`,`<`,`>=`,`<=` operator." - + "\n3.DO NOT include date filter in the where clause if not explicitly expressed in the `Question`." + + "\n2.ALWAYS specify time range using `>`,`<`,`>=`,`<=` operator." + + "\n3.DO NOT include time range in the where clause if not explicitly expressed in the `Question`." + "\n4.DO NOT calculate date range using functions." + "\n5.ALWAYS use `with` statement if nested aggregation is needed." + "\n6.ALWAYS enclose alias declared by `AS` command in underscores." diff --git a/launchers/standalone/src/main/java/com/tencent/supersonic/demo/S2BaseDemo.java b/launchers/standalone/src/main/java/com/tencent/supersonic/demo/S2BaseDemo.java index bf69e5a4f..fa94e706f 100644 --- a/launchers/standalone/src/main/java/com/tencent/supersonic/demo/S2BaseDemo.java +++ b/launchers/standalone/src/main/java/com/tencent/supersonic/demo/S2BaseDemo.java @@ -119,8 +119,8 @@ public abstract class S2BaseDemo implements CommandLineRunner { } String url = dataSourceProperties.getUrl(); DatabaseReq databaseReq = new DatabaseReq(); - databaseReq.setName("H2数据库DEMO"); - databaseReq.setDescription("样例数据库实例仅用于体验,正式使用请切换持久化数据库"); + databaseReq.setName("S2数据库DEMO"); + databaseReq.setDescription("样例数据库实例仅用于体验"); if (StringUtils.isNotBlank(url) && url.toLowerCase().contains(DataType.MYSQL.getFeature().toLowerCase())) { databaseReq.setType(DataType.MYSQL.getFeature()); diff --git a/launchers/standalone/src/main/resources/application-local.yaml b/launchers/standalone/src/main/resources/application-local.yaml index 7c2737f4a..6cc6e76cc 100644 --- a/launchers/standalone/src/main/resources/application-local.yaml +++ b/launchers/standalone/src/main/resources/application-local.yaml @@ -11,4 +11,20 @@ spring: h2: console: path: /h2-console/semantic - enabled: true \ No newline at end of file + enabled: true + +### Comment out following lines if using MySQL +#spring: +# datasource: +# driver-class-name: com.mysql.cj.jdbc.Driver +# url: jdbc:mysql://localhost:3306/s2_database?user=root +# username: root +# password: +# sql: +# init: +# schema-locations: classpath:db/schema-mysql.sql,classpath:db/schema-mysql-demo.sql +# data-locations: classpath:db/data-mysql.sql,classpath:db/data-mysql-demo.sql +# h2: +# console: +# path: /h2-console/semantic +# enabled: true \ No newline at end of file diff --git a/launchers/standalone/src/main/resources/config.update/sql-update.sql b/launchers/standalone/src/main/resources/config.update/sql-update.sql index 17c43e127..c9e6c84f9 100644 --- a/launchers/standalone/src/main/resources/config.update/sql-update.sql +++ b/launchers/standalone/src/main/resources/config.update/sql-update.sql @@ -396,5 +396,5 @@ ALTER TABLE s2_agent DROP COLUMN `enable_memory_review`; alter table s2_agent add column `enable_feedback` tinyint DEFAULT 1; --20241116 -alter table s2_agent add column `admin` varchar(1000); -alter table s2_agent add column `viewer` varchar(1000); \ No newline at end of file +alter table s2_agent add column `admin` varchar(1000) COLLATE utf8_unicode_ci DEFAULT NULL; +alter table s2_agent add column `viewer` varchar(1000) COLLATE utf8_unicode_ci DEFAULT NULL; \ No newline at end of file diff --git a/launchers/standalone/src/main/resources/db/data-mysql-demo.sql b/launchers/standalone/src/main/resources/db/data-mysql-demo.sql index d438213fe..b4d29935d 100644 --- a/launchers/standalone/src/main/resources/db/data-mysql-demo.sql +++ b/launchers/standalone/src/main/resources/db/data-mysql-demo.sql @@ -1,4 +1,4 @@ --------S2VisitsDemo +-- S2VisitsDemo insert into s2_user_department (user_name, department) values ('jack','HR'); insert into s2_user_department (user_name, department) values ('tom','sales'); insert into s2_user_department (user_name, department) values ('lucy','marketing'); @@ -1019,7 +1019,7 @@ INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES ( INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATE_SUB(CURRENT_DATE(), INTERVAL 15 DAY), 'lucy', '0.8124302447925607', 'p4'); INSERT INTO s2_stay_time_statis (imp_date, user_name, stay_hours, page) VALUES (DATE_SUB(CURRENT_DATE(), INTERVAL 8 DAY), 'lucy', '0.039935860913407284', 'p2'); --------S2ArtistDemo +-- S2ArtistDemo INSERT INTO singer (singer_name, act_area, song_name, genre, js_play_cnt, down_cnt, favor_cnt) VALUES ('周杰伦', '港台', '青花瓷', '国风', 1000000, 1000000, 1000000); diff --git a/launchers/standalone/src/main/resources/db/schema-mysql-demo.sql b/launchers/standalone/src/main/resources/db/schema-mysql-demo.sql index 904286964..194dba2fb 100644 --- a/launchers/standalone/src/main/resources/db/schema-mysql-demo.sql +++ b/launchers/standalone/src/main/resources/db/schema-mysql-demo.sql @@ -1,4 +1,4 @@ --------S2VisitsDemo +-- S2VisitsDemo CREATE TABLE IF NOT EXISTS `s2_user_department` ( `user_name` varchar(200) NOT NULL, `department` varchar(200) NOT NULL @@ -27,7 +27,7 @@ CREATE TABLE IF NOT EXISTS `singer` ( `favor_cnt` bigint DEFAULT NULL )ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; --------S2ArtistDemo +-- S2ArtistDemo CREATE TABLE IF NOT EXISTS `genre` ( `g_name` varchar(20) NOT NULL , -- genre name `rating` INT , diff --git a/launchers/standalone/src/main/resources/db/schema-mysql.sql b/launchers/standalone/src/main/resources/db/schema-mysql.sql index 2ea501551..7d13ad998 100644 --- a/launchers/standalone/src/main/resources/db/schema-mysql.sql +++ b/launchers/standalone/src/main/resources/db/schema-mysql.sql @@ -15,6 +15,8 @@ CREATE TABLE IF NOT EXISTS `s2_agent` ( `created_at` datetime DEFAULT NULL, `updated_by` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL, `updated_at` datetime DEFAULT NULL, + `admin` varchar(1000) COLLATE utf8_unicode_ci DEFAULT NULL, + `viewer` varchar(1000) COLLATE utf8_unicode_ci DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; diff --git a/launchers/standalone/src/test/java/com/tencent/supersonic/util/LLMConfigUtils.java b/launchers/standalone/src/test/java/com/tencent/supersonic/util/LLMConfigUtils.java index f95056482..88d855e02 100644 --- a/launchers/standalone/src/test/java/com/tencent/supersonic/util/LLMConfigUtils.java +++ b/launchers/standalone/src/test/java/com/tencent/supersonic/util/LLMConfigUtils.java @@ -11,7 +11,12 @@ public class LLMConfigUtils { OPENAI_GLM(false), OLLAMA_LLAMA3(true), OLLAMA_QWEN2(true), - OLLAMA_QWEN25(true); + OLLAMA_QWEN25_7B(true), + OLLAMA_QWEN25_14B(true), + OLLAMA_QWEN25_CODE_7B(true), + OLLAMA_QWEN25_CODE_3B(true), + OLLAMA_GLM4(true); + public boolean isOllam; @@ -35,10 +40,26 @@ public class LLMConfigUtils { baseUrl = "http://localhost:11434"; modelName = "qwen2:7b"; break; - case OLLAMA_QWEN25: + case OLLAMA_QWEN25_7B: baseUrl = "http://localhost:11434"; modelName = "qwen2.5:7b"; break; + case OLLAMA_QWEN25_14B: + baseUrl = "http://localhost:11434"; + modelName = "qwen2.5:14b"; + break; + case OLLAMA_QWEN25_CODE_7B: + baseUrl = "http://localhost:11434"; + modelName = "qwen2.5-coder:7b"; + break; + case OLLAMA_QWEN25_CODE_3B: + baseUrl = "http://localhost:11434"; + modelName = "qwen2.5-coder:3b"; + break; + case OLLAMA_GLM4: + baseUrl = "http://localhost:11434"; + modelName = "glm4:latest"; + break; case OPENAI_GLM: baseUrl = "https://open.bigmodel.cn/api/pas/v4/"; apiKey = "REPLACE_WITH_YOUR_KEY"; diff --git a/launchers/standalone/src/test/resources/application-local.yaml b/launchers/standalone/src/test/resources/application-local.yaml index 2ceb32c1e..6cc6e76cc 100644 --- a/launchers/standalone/src/test/resources/application-local.yaml +++ b/launchers/standalone/src/test/resources/application-local.yaml @@ -1,7 +1,7 @@ spring: datasource: driver-class-name: org.h2.Driver - url: jdbc:h2:mem:semantic;DATABASE_TO_UPPER=false;QUERY_TIMEOUT=100 + url: jdbc:h2:mem:semantic;DATABASE_TO_UPPER=false;QUERY_TIMEOUT=30 username: root password: semantic sql: @@ -11,4 +11,20 @@ spring: h2: console: path: /h2-console/semantic - enabled: true \ No newline at end of file + enabled: true + +### Comment out following lines if using MySQL +#spring: +# datasource: +# driver-class-name: com.mysql.cj.jdbc.Driver +# url: jdbc:mysql://localhost:3306/s2_database?user=root +# username: root +# password: +# sql: +# init: +# schema-locations: classpath:db/schema-mysql.sql,classpath:db/schema-mysql-demo.sql +# data-locations: classpath:db/data-mysql.sql,classpath:db/data-mysql-demo.sql +# h2: +# console: +# path: /h2-console/semantic +# enabled: true \ No newline at end of file