Skip to content
This repository was archived by the owner on Feb 28, 2026. It is now read-only.

Commit 7c7d8b9

Browse files
committed
updated gpt models and fixed flow bugs
1 parent cb658bb commit 7c7d8b9

17 files changed

Lines changed: 187 additions & 64 deletions

File tree

frontend/desktop/package.json.md5

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
a24ece3a3d86e13594977247e3352385
1+
371e648509f99cc686955a6284995fb5

frontend/desktop/src/components/settingfragments/advanced.tsx

Lines changed: 22 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -1,68 +1,58 @@
11
import React, { FunctionComponent, useEffect, useState } from 'react'
22
import Constants from '../../constants'
33
import eventService from '../../events/eventService'
4-
5-
const ModelOptions = [
6-
{ value: "gpt-4-32k-0314" },
7-
{ value: "gpt-4-32k" },
8-
{ value: "gpt-4-0314" },
9-
{ value: "gpt-4" },
10-
{ value: "gpt-3.5-turbo-0301" },
11-
{ value: "gpt-3.5-turbo" },
12-
{ value: "text-davinci-003" },
13-
{ value: "text-davinci-002" },
14-
{ value: "text-curie-001" },
15-
{ value: "text-babbage-001" },
16-
{ value: "text-ada-001" },
17-
{ value: "text-davinci-001" },
18-
{ value: "davinci-instruct-beta" },
19-
{ value: "davinci" },
20-
{ value: "curie-instruct-beta" },
21-
{ value: "curie" },
22-
{ value: "ada" },
23-
{ value: "babbage" },
24-
]
4+
import toast from 'react-hot-toast'
255

266
const AdvancedSettings: FunctionComponent<{}> = () => {
7+
278
const [openAIKey, setOpenAIKey] = useState<string>("")
289
const [openAIModel, setOpenAIModel] = useState<string>("")
10+
const [modelOptions, setModelOptions] = useState<{ value: string }[]>([])
2911

3012
useEffect(() => {
3113
(async () => {
32-
let result = await eventService.getSingleSetting(Constants.SETTING_KEYS.OPENAI_KEY)
14+
const result = await eventService.listSupportedAIModels()
15+
setModelOptions(result.data.map(model => ({ value: model })))
16+
})();
17+
(async () => {
18+
const result = await eventService.getSingleSetting(Constants.SETTING_KEYS.OPENAI_KEY)
3319
setOpenAIKey(result.data)
34-
})(),
35-
(async () => {
36-
let result = await eventService.getSingleSetting(Constants.SETTING_KEYS.OPENAI_MODEL)
37-
setOpenAIModel(result.data)
38-
})()
20+
})();
21+
(async () => {
22+
const result = await eventService.getSingleSetting(Constants.SETTING_KEYS.OPENAI_MODEL)
23+
setOpenAIModel(result.data)
24+
})();
3925
}, [])
4026

4127

4228
const updateOpenAIKey = async () => {
4329
const result = await eventService.updateSingleSetting(Constants.SETTING_KEYS.OPENAI_KEY, openAIKey)
44-
if (result.success)
30+
if (result.success) {
4531
setOpenAIKey(openAIKey)
32+
toast.success("saved")
33+
}
4634
}
4735

4836
const updateOpenAIModel = async () => {
4937
const result = await eventService.updateSingleSetting(Constants.SETTING_KEYS.OPENAI_MODEL, openAIModel)
5038
if (result.success)
5139
setOpenAIModel(openAIModel)
40+
toast.success("saved")
5241
}
5342

5443
const handleModelChange = (e: React.ChangeEvent<HTMLInputElement | HTMLSelectElement>) => {
55-
const value = e.target.value;
56-
setOpenAIModel(value);
44+
const value = e.target.value
45+
setOpenAIModel(value)
5746
}
47+
5848
return (
5949
<React.Fragment>
6050
<h1>Advanced Settings</h1>
6151
<br />
6252
<h2>OpenAI Key</h2>
6353
<p>Update OpenAI API key to enable Generate SQL tool.</p>
6454
<div className="buttons has-addons">
65-
<div className="field has-addons">
55+
<div className="field has-addons" style={{ minWidth: 550 }}>
6656
<p className="control is-expanded">
6757
<input
6858
className="input"
@@ -84,7 +74,7 @@ const AdvancedSettings: FunctionComponent<{}> = () => {
8474
<p className="control">
8575
<span className="select">
8676
<select value={openAIModel} onChange={e => handleModelChange(e)}>
87-
{ModelOptions.map((e, idx) => {
77+
{modelOptions.map((e, idx) => {
8878
return <option value={e.value} key={idx}> {e.value} </option>
8979
})}
9080
</select>

frontend/desktop/src/events/constants.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -142,6 +142,10 @@ const Events: EventType = {
142142
REQUEST: "event:ai:gensql",
143143
RESPONSE: "response:ai:gensql"
144144
},
145+
AI_LIST_SUPPORTEDMODELS: {
146+
REQUEST: "event:ai:listmodels",
147+
RESPONSE: "response:ai:listmodels"
148+
},
145149
}
146150

147151
export default Events

frontend/desktop/src/events/eventService.ts

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -210,6 +210,12 @@ const runGenerateSQL = async function (dbConnId: string, text: string): Promise<
210210
return response
211211
}
212212

213+
const listSupportedAIModels = async function (): Promise<ApiResult<string[]>> {
214+
const response = responseEvent<ApiResult<string[]>>(Events.AI_LIST_SUPPORTEDMODELS.RESPONSE)
215+
EventsEmit(Events.AI_LIST_SUPPORTEDMODELS.REQUEST, Events.AI_LIST_SUPPORTEDMODELS.RESPONSE)
216+
return response
217+
}
218+
213219
export default {
214220
getHealthCheck,
215221
getProjects,
@@ -244,5 +250,6 @@ export default {
244250
closeTab,
245251
runConsoleCommand,
246252
checkConnection,
247-
runGenerateSQL
253+
runGenerateSQL,
254+
listSupportedAIModels
248255
}

frontend/server/src/components/settingfragments/advanced.tsx

Lines changed: 44 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,27 @@
11
import React, { FunctionComponent, useEffect, useState } from 'react'
22
import Constants from '../../constants'
33
import apiService from '../../network/apiService'
4+
import toast from 'react-hot-toast'
45

56
const AdvancedSettings: FunctionComponent<{}> = () => {
67

7-
88
const [openAIKey, setOpenAIKey] = useState<string>("")
9+
const [openAIModel, setOpenAIModel] = useState<string>("")
10+
const [modelOptions, setModelOptions] = useState<{ value: string }[]>([])
911

1012
useEffect(() => {
1113
(async () => {
12-
let result = await apiService.getSingleSetting(Constants.SETTING_KEYS.OPENAI_KEY)
14+
const result = await apiService.listSupportedAIModels()
15+
setModelOptions(result.data.map(model => ({ value: model })))
16+
})();
17+
(async () => {
18+
const result = await apiService.getSingleSetting(Constants.SETTING_KEYS.OPENAI_KEY)
1319
setOpenAIKey(result.data)
14-
})()
20+
})();
21+
(async () => {
22+
const result = await apiService.getSingleSetting(Constants.SETTING_KEYS.OPENAI_MODEL)
23+
setOpenAIModel(result.data)
24+
})();
1525
}, [])
1626

1727
const updateOpenAIKey = async () => {
@@ -20,14 +30,26 @@ const AdvancedSettings: FunctionComponent<{}> = () => {
2030
setOpenAIKey(openAIKey)
2131
}
2232

33+
const updateOpenAIModel = async () => {
34+
const result = await apiService.updateSingleSetting(Constants.SETTING_KEYS.OPENAI_MODEL, openAIModel)
35+
if (result.success)
36+
setOpenAIModel(openAIModel)
37+
toast.success("saved")
38+
}
39+
40+
const handleModelChange = (e: React.ChangeEvent<HTMLInputElement | HTMLSelectElement>) => {
41+
const value = e.target.value
42+
setOpenAIModel(value)
43+
}
44+
2345
return (
2446
<React.Fragment>
2547
<h1>Advanced Settings</h1>
2648
<br />
2749
<h2>OpenAI Key</h2>
2850
<p>Update OpenAI API key to enable Generate SQL tool.</p>
2951
<div className="buttons has-addons">
30-
<div className="field has-addons">
52+
<div className="field has-addons" style={{ minWidth: 550 }}>
3153
<p className="control is-expanded">
3254
<input
3355
className="input"
@@ -43,6 +65,24 @@ const AdvancedSettings: FunctionComponent<{}> = () => {
4365
</p>
4466
</div>
4567
</div>
68+
<h2>OpenAI Model</h2>
69+
<p>Update OpenAI Model to enable Generate SQL tool.</p>
70+
<div className="field has-addons">
71+
<p className="control">
72+
<span className="select">
73+
<select value={openAIModel} onChange={e => handleModelChange(e)}>
74+
{modelOptions.map((e, idx) => {
75+
return <option value={e.value} key={idx}> {e.value} </option>
76+
})}
77+
</select>
78+
</span>
79+
</p>
80+
<p className="control">
81+
<button className="button" onClick={() => updateOpenAIModel()}>
82+
<i className="fas fa-check" />
83+
</button>
84+
</p>
85+
</div>
4686
<br />
4787
</React.Fragment>
4888
)

frontend/server/src/constants.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,7 @@ const Constants: ConstantsType = {
8888
TELEMETRY_ENABLED: "TELEMETRY_ENABLED",
8989
LOGS_EXPIRE: "LOGS_EXPIRE",
9090
OPENAI_KEY: "OPENAI_KEY",
91+
OPENAI_MODEL: "OPENAI_MODEL"
9192
},
9293
ROLES: {
9394
ADMIN: "Admin"

frontend/server/src/network/apiService.ts

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -306,7 +306,11 @@ const generateSQL = async function (dbConnectionId: string, text: string): Promi
306306
.then(res => res.data)
307307
}
308308

309-
309+
const listSupportedAIModels = async function (): Promise<ApiResult<string[]>> {
310+
return await Request.apiInstance
311+
.get<any, AxiosResponse<ApiResult<string[]>>>(`/ai/listmodels`)
312+
.then(res => res.data)
313+
}
310314

311315
export default {
312316
getHealthCheck,
@@ -356,5 +360,6 @@ export default {
356360
addRole,
357361
deleteRole,
358362
updateRolePermission,
359-
generateSQL
363+
generateSQL,
364+
listSupportedAIModels
360365
}

go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ require (
1313
github.com/jackc/pgx/v4 v4.17.2
1414
github.com/joho/godotenv v1.4.0
1515
github.com/posthog/posthog-go v0.0.0-20221221115252-24dfed35d71a
16-
github.com/sashabaranov/go-openai v1.9.4
16+
github.com/sashabaranov/go-openai v1.17.2
1717
github.com/tdewolff/parse/v2 v2.6.5
1818
github.com/wailsapp/wails/v2 v2.4.1
1919
github.com/xwb1989/sqlparser v0.0.0-20180606152119-120387863bf2

go.sum

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -355,8 +355,8 @@ github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQD
355355
github.com/ryanuber/columnize v2.1.0+incompatible/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts=
356356
github.com/samber/lo v1.27.1 h1:sTXwkRiIFIQG+G0HeAvOEnGjqWeWtI9cg5/n51KrxPg=
357357
github.com/samber/lo v1.27.1/go.mod h1:it33p9UtPMS7z72fP4gw/EIfQB2eI8ke7GR2wc6+Rhg=
358-
github.com/sashabaranov/go-openai v1.9.4 h1:KanoCEoowAI45jVXlenMCckutSRr39qOmSi9MyPBfZM=
359-
github.com/sashabaranov/go-openai v1.9.4/go.mod h1:lj5b/K+zjTSFxVLijLSTDZuP7adOgerWeFyZLUhAKRg=
358+
github.com/sashabaranov/go-openai v1.17.2 h1:Uj1Msqh43S9XhjUXYyOqOHMiRQtgQXCo5O0FeWZz7tU=
359+
github.com/sashabaranov/go-openai v1.17.2/go.mod h1:lj5b/K+zjTSFxVLijLSTDZuP7adOgerWeFyZLUhAKRg=
360360
github.com/satori/go.uuid v1.2.0/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0=
361361
github.com/savsgio/dictpool v0.0.0-20221023140959-7bf2e61cea94 h1:rmMl4fXJhKMNWl+K+r/fq4FbbKI+Ia2m9hYBLm2h4G4=
362362
github.com/savsgio/dictpool v0.0.0-20221023140959-7bf2e61cea94/go.mod h1:90zrgN3D/WJsDd1iXHT96alCoN2KJo6/4x1DZC3wZs8=

internal/common/controllers/ai.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,3 +32,7 @@ func (AIController) GenerateSQL(dbConnectionID, text string) (string, error) {
3232

3333
return ai.GenerateSQL(dbConn.Type, text, datamodels)
3434
}
35+
36+
func (AIController) GetModels() []string {
37+
return ai.ListSupportedOpenAiModels()
38+
}

0 commit comments

Comments
 (0)