Skip to content

Commit e503072

Browse files
committed
添加自动菜单,解决解释sql时没有数据库名的bug,解决解释sql时openai超时的问题
1 parent 462efdb commit e503072

File tree

5 files changed

+33
-11
lines changed

5 files changed

+33
-11
lines changed

chat2db-client/src/components/ConsoleEditor/components/ChatInput/index.tsx

+3-4
Original file line numberDiff line numberDiff line change
@@ -42,18 +42,17 @@ const ChatInput = (props: IProps) => {
4242
};
4343

4444
const renderSelectTable = () => {
45-
const { tables, onSelectTableSyncModel, selectedTables, onSelectTables } = props;
45+
const { tables, onSelectTableSyncModel, selectedTables, onSelectTables,syncTableModel } = props;
4646
const options = (tables || []).map((t) => ({ value: t, label: t }));
4747
return (
4848
<div className={styles.aiSelectedTable}>
4949
<Radio.Group
5050
onChange={(v) => onSelectTableSyncModel(v.target.value)}
51-
// value={syncTableModel}
52-
value={SyncModelType.MANUAL}
51+
value={syncTableModel}
5352
style={{ marginBottom: '8px' }}
5453
>
5554
<Space direction="horizontal">
56-
{/* <Radio value={SyncModelType.AUTO}>自动</Radio> */}
55+
<Radio value={SyncModelType.AUTO}>自动</Radio>
5756
<Radio value={SyncModelType.MANUAL}>手动</Radio>
5857
</Space>
5958
</Radio.Group>

chat2db-client/src/components/ConsoleEditor/components/SelectBoundInfo/index.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -186,7 +186,7 @@ const SelectBoundInfo = memo((props: IProps) => {
186186
boundInfo.databaseName,
187187
boundInfo.schemaName,
188188
);
189-
setSelectedTables(tableNameListTemp.slice(0, 1));
189+
//setSelectedTables(tableNameListTemp.slice(0, 1));
190190
}
191191
}, [allTableList, isActive]);
192192

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

+11-3
Original file line numberDiff line numberDiff line change
@@ -293,7 +293,7 @@ private SseEmitter chatWithOpenAi(ChatQueryRequest queryRequest, SseEmitter sseE
293293
messages.add(currentMessage);
294294
buildSseEmitter(sseEmitter, uid);
295295
ConnectInfo connectInfo = Chat2DBContext.getConnectInfo();
296-
OpenAIEventSourceListener openAIEventSourceListener = new OpenAIEventSourceListener(sseEmitter, messages, connectInfo);
296+
OpenAIEventSourceListener openAIEventSourceListener = new OpenAIEventSourceListener(sseEmitter, messages, connectInfo, queryRequest);
297297
ToolsFunction function = ToolsFunction.builder()
298298
.name("get_table_columns")
299299
.description("获取指定表的字段名,类型")
@@ -799,8 +799,16 @@ public String queryDatabaseSchema(ChatQueryRequest queryRequest) {
799799
*/
800800
public String queryDatabaseSchema2(ChatQueryRequest queryRequest) {
801801
MetaData metaSchema = Chat2DBContext.getMetaData();
802-
List<Table> tables = metaSchema.tables(Chat2DBContext.getConnection(), queryRequest.getDatabaseName(), queryRequest.getSchemaName(), null);
803-
return tables.stream().map(Table::getName).collect(Collectors.joining(","));
802+
try {
803+
List<Table> tables = metaSchema.tables(Chat2DBContext.getConnection(), queryRequest.getDatabaseName(), queryRequest.getSchemaName(), null);
804+
return tables.stream()
805+
.map(table -> StringUtils.isBlank(table.getComment()) ? table.getName()
806+
: table.getName() + "(" + table.getComment() + ")")
807+
.collect(Collectors.joining(","));
808+
} catch (Exception e) {
809+
log.error("query table error:{}, do nothing", e.getMessage());
810+
return "";
811+
}
804812
}
805813

806814
/**

chat2db-server/chat2db-server-web/chat2db-server-web-api/src/main/java/ai/chat2db/server/web/api/controller/ai/openai/client/OpenAIClient.java

+12-1
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import java.net.InetSocketAddress;
55
import java.net.Proxy;
66
import java.util.Objects;
7+
import java.util.concurrent.TimeUnit;
78

89
import ai.chat2db.server.domain.api.model.Config;
910
import ai.chat2db.server.domain.api.service.ConfigService;
@@ -93,7 +94,17 @@ public static void refresh() {
9394
log.info("refresh openai apikey:{}", maskApiKey(apikey));
9495
if (Objects.nonNull(host) && Objects.nonNull(port)) {
9596
Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress(host, port));
96-
OkHttpClient okHttpClient = new OkHttpClient.Builder().proxy(proxy).build();
97+
OkHttpClient okHttpClient = new OkHttpClient.Builder()
98+
// 设置连接超时为10秒
99+
.connectTimeout(10, TimeUnit.SECONDS)
100+
// 设置读取超时为30秒
101+
.readTimeout(30, TimeUnit.SECONDS)
102+
// 设置写入超时为15秒
103+
.writeTimeout(15, TimeUnit.SECONDS)
104+
// 设置整个调用的超时为1分钟
105+
.callTimeout(1, TimeUnit.MINUTES)
106+
.proxy(proxy)
107+
.build();
97108
OPEN_AI_STREAM_CLIENT = OpenAiStreamClient.builder().apiHost(apiHost).apiKey(
98109
Lists.newArrayList(apikey)).okHttpClient(okHttpClient).build();
99110
} else {

chat2db-server/chat2db-server-web/chat2db-server-web-api/src/main/java/ai/chat2db/server/web/api/controller/ai/openai/listener/OpenAIEventSourceListener.java

+6-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package ai.chat2db.server.web.api.controller.ai.openai.listener;
22

33
import ai.chat2db.server.web.api.controller.ai.openai.client.OpenAIClient;
4+
import ai.chat2db.server.web.api.controller.ai.request.ChatQueryRequest;
45
import ai.chat2db.server.web.api.controller.ai.response.ChatCompletionResponse;
56
import ai.chat2db.spi.MetaData;
67
import ai.chat2db.spi.sql.Chat2DBContext;
@@ -39,13 +40,16 @@ public class OpenAIEventSourceListener extends EventSourceListener {
3940

4041
private final ConnectInfo connectInfo;
4142

43+
private final ChatQueryRequest queryRequest;
44+
4245
private List<ToolCalls> toolCalls = new ArrayList<>();
4346

4447

45-
public OpenAIEventSourceListener(SseEmitter sseEmitter, List<Message> messages, ConnectInfo connectInfo) {
48+
public OpenAIEventSourceListener(SseEmitter sseEmitter, List<Message> messages, ConnectInfo connectInfo, ChatQueryRequest queryRequest) {
4649
this.sseEmitter = sseEmitter;
4750
this.messages = messages;
4851
this.connectInfo = connectInfo;
52+
this.queryRequest = queryRequest;
4953
}
5054

5155
public static List<ToolCalls> mergeToolCallsLists(List<ToolCalls> list1, List<ToolCalls> list2) {
@@ -142,7 +146,7 @@ public void onEvent(EventSource eventSource, String id, String type, String data
142146
JSONObject arguments = JSONObject.parse(function.getArguments());
143147
if ("get_table_columns".equals(functionName)) {
144148
MetaData metaSchema = Chat2DBContext.getMetaData();
145-
String ddl = metaSchema.tableDDL(Chat2DBContext.getConnection(), connectInfo.getDatabaseName(), connectInfo.getSchemaName(), arguments.getString("table_name"));
149+
String ddl = metaSchema.tableDDL(Chat2DBContext.getConnection(), queryRequest.getDatabaseName(), queryRequest.getSchemaName(), arguments.getString("table_name"));
146150
messages.add(Message.builder().role(BaseMessage.Role.TOOL)
147151
.toolCallId(callId)
148152
.name(functionName)

0 commit comments

Comments
 (0)