Skip to content

Commit eeb7cd2

Browse files
committed
merge main
2 parents 6a73f11 + 306a202 commit eeb7cd2

12 files changed

Lines changed: 54 additions & 588 deletions

File tree

chat2db-client/src/blocks/Setting/AiSetting/aiTypeConfig.ts

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@ const AITypeName = {
1414
[AIType.TONGYIQIANWENAI]: i18n('setting.tab.aiType.tongyiqianwen'),
1515
[AIType.OPENAI]: 'Open AI',
1616
[AIType.AZUREAI]: 'Azure AI',
17-
[AIType.DIFYCHAT]: 'Dify AI',
1817
[AIType.RESTAI]: i18n('setting.tab.custom'),
1918
};
2019

@@ -54,10 +53,6 @@ const AIFormConfig: Record<AIType, IAiConfigBooleans> = {
5453
apiHost: true,
5554
model: true,
5655
},
57-
[AIType.DIFYCHAT]: {
58-
apiKey: true,
59-
apiHost: true,
60-
},
6156
[AIType.RESTAI]: {
6257
apiKey: true,
6358
apiHost: true,

chat2db-client/src/typings/ai.ts

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,12 @@
11
export enum AIType {
22
CHAT2DBAI = 'CHAT2DBAI',
33
ZHIPUAI = 'ZHIPUAI',
4-
BAICHUANAI = 'BAICHUANAI',
5-
WENXINAI = 'WENXINAI',
4+
BAICHUANAI='BAICHUANAI',
5+
WENXINAI='WENXINAI',
66
// TONGYIQIANWENAI='TONGYIQIANWENAI',
77
OPENAI = 'OPENAI',
88
AZUREAI = 'AZUREAI',
99
RESTAI = 'RESTAI',
10-
DIFYCHAT = 'DIFYCHAT',
11-
1210
}
1311

1412
export interface IRemainingUse {

chat2db-server/chat2db-server-domain/chat2db-server-domain-api/src/main/java/ai/chat2db/server/domain/api/enums/AiSqlSourceEnum.java

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -62,11 +62,6 @@ public enum AiSqlSourceEnum implements BaseEnum<String> {
6262
*/
6363
FASTCHATAI("FAST CHAT AI"),
6464

65-
/**
66-
* FAST CHAT AI
67-
*/
68-
DIFYCHAT("DIFY CHAT AI"),
69-
7065
;
7166

7267
final String description;

chat2db-server/chat2db-server-web/chat2db-server-web-api/src/main/java/ai/chat2db/server/web/api/controller/ai/ChatController.java

Lines changed: 32 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -27,9 +27,6 @@
2727
import ai.chat2db.server.web.api.controller.ai.claude.model.ClaudeChatMessage;
2828
import ai.chat2db.server.web.api.controller.ai.config.LocalCache;
2929
import ai.chat2db.server.web.api.controller.ai.converter.ChatConverter;
30-
import ai.chat2db.server.web.api.controller.ai.dify.client.DifyChatAIClient;
31-
import ai.chat2db.server.web.api.controller.ai.dify.listener.DifyChatAIEventSourceListener;
32-
import ai.chat2db.server.web.api.controller.ai.dify.model.DifyChatConstant;
3330
import ai.chat2db.server.web.api.controller.ai.enums.PromptType;
3431
import ai.chat2db.server.web.api.controller.ai.fastchat.client.FastChatAIClient;
3532
import ai.chat2db.server.web.api.controller.ai.fastchat.embeddings.FastChatEmbeddingResponse;
@@ -135,7 +132,7 @@ public class ChatController {
135132
/**
136133
* 自定义模型流式输出接口DEMO
137134
* <p>
138-
* Note:使用自己本地的流式输出的自定义AI,接口输入和输出需与该样例保持一致
135+
* Note:使用自己本地的流式输出的自定义AI,接口输入和输出需与该样例保持一致
139136
* </p>
140137
*
141138
* @param queryRequest
@@ -174,7 +171,7 @@ public SseEmitter customChat(@RequestBody ChatRequest queryRequest) throws IOExc
174171
/**
175172
* 自定义模型非流式输出接口DEMO
176173
* <p>
177-
* Note:使用自己本地的飞流式输出自定义AI,接口输入和输出需与该样例保持一致
174+
* Note:使用自己本地的飞流式输出自定义AI,接口输入和输出需与该样例保持一致
178175
* </p>
179176
*
180177
* @param queryRequest
@@ -199,7 +196,7 @@ public String customNonStreamChat(@RequestBody ChatRequest queryRequest) throws
199196
@GetMapping("/chat")
200197
@CrossOrigin
201198
public SseEmitter completions(ChatQueryRequest queryRequest, @RequestHeader Map<String, String> headers)
202-
throws IOException {
199+
throws IOException {
203200
//默认30秒超时,设置为0L则永不超时
204201
SseEmitter sseEmitter = new SseEmitter(CHAT_TIMEOUT);
205202
String uid = headers.get("uid");
@@ -233,14 +230,14 @@ public SseEmitter distributeAISql(ChatQueryRequest queryRequest, SseEmitter sseE
233230
}
234231
uid = aiSqlSourceEnum.getCode() + uid;
235232
switch (Objects.requireNonNull(aiSqlSourceEnum)) {
236-
case OPENAI:
233+
case OPENAI :
237234
return chatWithOpenAi(queryRequest, sseEmitter, uid);
238235
case CHAT2DBAI:
239236
return chatWithChat2dbAi(queryRequest, sseEmitter, uid);
240-
case RESTAI:
237+
case RESTAI :
241238
case FASTCHATAI:
242239
return chatWithFastChatAi(queryRequest, sseEmitter, uid);
243-
case AZUREAI:
240+
case AZUREAI :
244241
return chatWithAzureAi(queryRequest, sseEmitter, uid);
245242
case CLAUDEAI:
246243
return chatWithClaudeAi(queryRequest, sseEmitter, uid);
@@ -252,35 +249,10 @@ public SseEmitter distributeAISql(ChatQueryRequest queryRequest, SseEmitter sseE
252249
return chatWithTongyiChatAi(queryRequest, sseEmitter, uid);
253250
case ZHIPUAI:
254251
return chatWithZhipuChatAi(queryRequest, sseEmitter, uid);
255-
case DIFYCHAT:
256-
return chatWithDifyChatAi(queryRequest, sseEmitter, uid);
257252
}
258253
return chatWithOpenAi(queryRequest, sseEmitter, uid);
259254
}
260255

261-
private SseEmitter chatWithDifyChatAi(ChatQueryRequest queryRequest, SseEmitter sseEmitter, String uid) throws IOException {
262-
String prompt = buildPrompt(queryRequest);
263-
if (prompt.length() / TOKEN_CONVERT_CHAR_LENGTH > MAX_PROMPT_LENGTH) {
264-
log.error("exceed max token length:{},input length:{}", MAX_PROMPT_LENGTH,
265-
prompt.length() / TOKEN_CONVERT_CHAR_LENGTH);
266-
throw new ParamBusinessException();
267-
}
268-
269-
prompt = prompt.replaceAll("#", "");
270-
log.info(prompt);
271-
272-
Message currentMessage = Message.builder().content(prompt).role(Message.Role.USER).build();
273-
List<Message> messages = new ArrayList<>();
274-
messages.add(currentMessage);
275-
buildSseEmitter(sseEmitter, uid);
276-
277-
DifyChatAIEventSourceListener eventSourceListener = new DifyChatAIEventSourceListener(sseEmitter, uid);
278-
String conversationId = (String) LocalCache.CACHE.get(DifyChatConstant.CONVERSATION_CACHE_PREFIX + uid);
279-
DifyChatAIClient.getInstance().streamCompletions(messages, eventSourceListener, uid, conversationId);
280-
LocalCache.CACHE.put(uid, JSONUtil.toJsonStr(messages), LocalCache.TIMEOUT);
281-
return sseEmitter;
282-
}
283-
284256
/**
285257
* 使用自定义AI接口进行聊天
286258
*
@@ -304,11 +276,11 @@ private SseEmitter chatWithRestAi(ChatQueryRequest prompt, SseEmitter sseEmitter
304276
* @throws IOException
305277
*/
306278
private SseEmitter chatWithOpenAi(ChatQueryRequest queryRequest, SseEmitter sseEmitter, String uid)
307-
throws IOException {
279+
throws IOException {
308280
String prompt = buildPrompt(queryRequest);
309281
if (prompt.length() / TOKEN_CONVERT_CHAR_LENGTH > MAX_PROMPT_LENGTH) {
310282
log.error("提示语超出最大长度:{},输入长度:{}, 请重新输入", MAX_PROMPT_LENGTH,
311-
prompt.length() / TOKEN_CONVERT_CHAR_LENGTH);
283+
prompt.length() / TOKEN_CONVERT_CHAR_LENGTH);
312284
throw new ParamBusinessException();
313285
}
314286

@@ -335,11 +307,11 @@ private SseEmitter chatWithOpenAi(ChatQueryRequest queryRequest, SseEmitter sseE
335307
* @throws IOException
336308
*/
337309
private SseEmitter chatWithChat2dbAi(ChatQueryRequest queryRequest, SseEmitter sseEmitter, String uid)
338-
throws IOException {
310+
throws IOException {
339311
String prompt = buildPrompt(queryRequest);
340312
if (prompt.length() / TOKEN_CONVERT_CHAR_LENGTH > MAX_PROMPT_LENGTH) {
341313
log.error("exceed max token length:{},input length:{}", MAX_PROMPT_LENGTH,
342-
prompt.length() / TOKEN_CONVERT_CHAR_LENGTH);
314+
prompt.length() / TOKEN_CONVERT_CHAR_LENGTH);
343315
throw new ParamBusinessException();
344316
}
345317

@@ -372,7 +344,7 @@ private SseEmitter chatWithAzureAi(ChatQueryRequest queryRequest, SseEmitter sse
372344
prompt.length() / TOKEN_CONVERT_CHAR_LENGTH);
373345
throw new ParamBusinessException();
374346
}
375-
List<AzureChatMessage> messages = (List<AzureChatMessage>) LocalCache.CACHE.get(uid);
347+
List<AzureChatMessage> messages = (List<AzureChatMessage>)LocalCache.CACHE.get(uid);
376348
if (CollectionUtils.isNotEmpty(messages)) {
377349
if (messages.size() >= contextLength) {
378350
messages = messages.subList(1, contextLength);
@@ -391,7 +363,6 @@ private SseEmitter chatWithAzureAi(ChatQueryRequest queryRequest, SseEmitter sse
391363
return sseEmitter;
392364
}
393365

394-
395366
/**
396367
* chat with fast chat openai
397368
*
@@ -484,7 +455,7 @@ private SseEmitter chatWithBaichuanAi(ChatQueryRequest queryRequest, SseEmitter
484455
* @return
485456
*/
486457
private List<FastChatMessage> getFastChatMessage(String uid, String prompt) {
487-
List<FastChatMessage> messages = (List<FastChatMessage>) LocalCache.CACHE.get(uid);
458+
List<FastChatMessage> messages = (List<FastChatMessage>)LocalCache.CACHE.get(uid);
488459
if (CollectionUtils.isNotEmpty(messages)) {
489460
if (messages.size() >= contextLength) {
490461
messages = messages.subList(1, contextLength);
@@ -560,17 +531,17 @@ private SseEmitter buildSseEmitter(SseEmitter sseEmitter, String uid) throws IOE
560531
log.info(LocalDateTime.now() + ", uid#" + uid + ", on completion");
561532
});
562533
sseEmitter.onTimeout(
563-
() -> log.info(LocalDateTime.now() + ", uid#" + uid + ", on timeout#" + sseEmitter.getTimeout()));
534+
() -> log.info(LocalDateTime.now() + ", uid#" + uid + ", on timeout#" + sseEmitter.getTimeout()));
564535
sseEmitter.onError(
565-
throwable -> {
566-
try {
567-
log.info(LocalDateTime.now() + ", uid#" + "765431" + ", on error#" + throwable.toString());
568-
sseEmitter.send(SseEmitter.event().id("765431").name("发生异常!").data(throwable.getMessage())
569-
.reconnectTime(3000));
570-
} catch (IOException e) {
571-
e.printStackTrace();
572-
}
536+
throwable -> {
537+
try {
538+
log.info(LocalDateTime.now() + ", uid#" + "765431" + ", on error#" + throwable.toString());
539+
sseEmitter.send(SseEmitter.event().id("765431").name("发生异常!").data(throwable.getMessage())
540+
.reconnectTime(3000));
541+
} catch (IOException e) {
542+
e.printStackTrace();
573543
}
544+
}
574545
);
575546
return sseEmitter;
576547
}
@@ -583,13 +554,13 @@ private SseEmitter buildSseEmitter(SseEmitter sseEmitter, String uid) throws IOE
583554
* @return
584555
*/
585556
private String buildTableColumn(TableQueryParam tableQueryParam,
586-
List<String> tableNames) {
557+
List<String> tableNames) {
587558
if (CollectionUtils.isEmpty(tableNames)) {
588559
return "";
589560
}
590561
List<String> schemaContent = Lists.newArrayList();
591562
try {
592-
schemaContent = tableNames.stream().map(tableName -> {
563+
schemaContent = tableNames.stream().map(tableName -> {
593564
tableQueryParam.setTableName(tableName);
594565
return queryTableDdl(tableName, tableQueryParam);
595566
}).collect(Collectors.toList());
@@ -639,19 +610,19 @@ private String buildPrompt(ChatQueryRequest queryRequest) {
639610
}
640611
String prompt = queryRequest.getMessage();
641612
String promptType = StringUtils.isBlank(queryRequest.getPromptType()) ? PromptType.NL_2_SQL.getCode()
642-
: queryRequest.getPromptType();
613+
: queryRequest.getPromptType();
643614
PromptType pType = EasyEnumUtils.getEnum(PromptType.class, promptType);
644615
String ext = StringUtils.isNotBlank(queryRequest.getExt()) ? queryRequest.getExt() : "";
645616
String schemaProperty = StringUtils.isNotEmpty(properties) ? String.format(
646-
"### 请根据以下table properties和SQL input%s. %s\n#\n### %s SQL tables, with their properties:\n#\n# "
647-
+ "%s\n#\n#\n### SQL input: %s", pType.getDescription(), ext, dataSourceType,
648-
properties, prompt) : String.format("### 请根据以下SQL input%s. %s\n#\n### SQL input: %s",
649-
pType.getDescription(), ext, prompt);
617+
"### 请根据以下table properties和SQL input%s. %s\n#\n### %s SQL tables, with their properties:\n#\n# "
618+
+ "%s\n#\n#\n### SQL input: %s", pType.getDescription(), ext, dataSourceType,
619+
properties, prompt) : String.format("### 请根据以下SQL input%s. %s\n#\n### SQL input: %s",
620+
pType.getDescription(), ext, prompt);
650621
switch (pType) {
651622
case SQL_2_SQL:
652623
schemaProperty = StringUtils.isNotBlank(queryRequest.getDestSqlType()) ? String.format(
653-
"%s\n#\n### 目标SQL类型: %s", schemaProperty, queryRequest.getDestSqlType()) : String.format(
654-
"%s\n#\n### 目标SQL类型: %s", schemaProperty, dataSourceType);
624+
"%s\n#\n### 目标SQL类型: %s", schemaProperty, queryRequest.getDestSqlType()) : String.format(
625+
"%s\n#\n### 目标SQL类型: %s", schemaProperty, dataSourceType);
655626
default:
656627
break;
657628
}
@@ -740,7 +711,7 @@ public String queryDatabaseSchema(ChatQueryRequest queryRequest) {
740711
DataResult<TableSchemaResponse> result = gatewayClientService.schemaVectorSearch(tableSchemaRequest);
741712
List<String> schemas = Lists.newArrayList();
742713
if (Objects.nonNull(result.getData()) && CollectionUtils.isNotEmpty(result.getData().getTableSchemas())) {
743-
for (TableSchema data : result.getData().getTableSchemas()) {
714+
for(TableSchema data: result.getData().getTableSchemas()){
744715
schemas.add(data.getTableSchema());
745716
}
746717
}
@@ -780,7 +751,7 @@ public String querySchemaByEs(ChatQueryRequest queryRequest) {
780751
DataResult<EsTableSchemaResponse> result = gatewayClientService.schemaEsSearch(tableSchemaRequest);
781752
List<String> schemas = Lists.newArrayList();
782753
if (Objects.nonNull(result.getData()) && CollectionUtils.isNotEmpty(result.getData().getTableSchemas())) {
783-
for (EsTableSchema data : result.getData().getTableSchemas()) {
754+
for(EsTableSchema data: result.getData().getTableSchemas()){
784755
schemas.add(data.getTableSchemaContent());
785756
}
786757
}

chat2db-server/chat2db-server-web/chat2db-server-web-api/src/main/java/ai/chat2db/server/web/api/controller/ai/chat2db/model/DifyChatCompletionsOptions.java

Lines changed: 0 additions & 40 deletions
This file was deleted.

0 commit comments

Comments
 (0)