Skip to content

Commit 54e93bf

Browse files
committed
refactor(clients): remove host, proxyUrl and timeout properties from LLMClientConfiguration
1 parent 1dfcca1 commit 54e93bf

File tree

9 files changed

+74
-61
lines changed

9 files changed

+74
-61
lines changed

src/main/kotlin/com/github/blarc/ai/commits/intellij/plugin/settings/clients/LLMClientConfiguration.kt

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,6 @@ import javax.swing.Icon
99

1010
abstract class LLMClientConfiguration(
1111
@Attribute var name: String,
12-
@Attribute var host: String,
13-
@Attribute var proxyUrl: String?,
14-
@Attribute var timeout: Int,
1512
@Attribute var modelId: String,
1613
@Attribute var temperature: String,
1714
) : Cloneable, Comparable<LLMClientConfiguration> {

src/main/kotlin/com/github/blarc/ai/commits/intellij/plugin/settings/clients/LLMClientPanel.kt

Lines changed: 5 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -9,23 +9,21 @@ import com.intellij.ui.components.JBLabel
99
import com.intellij.ui.components.JBTextField
1010
import com.intellij.ui.dsl.builder.*
1111
import com.intellij.ui.util.minimumWidth
12+
import kotlin.reflect.KMutableProperty0
1213

1314

1415
abstract class LLMClientPanel(
1516
private val clientConfiguration: LLMClientConfiguration,
1617
) {
1718

1819
val hostComboBox = ComboBox(clientConfiguration.getHosts().toTypedArray())
19-
val proxyTextField = JBTextField()
2020
val socketTimeoutTextField = JBTextField()
2121
val modelComboBox = ComboBox(clientConfiguration.getModelIds().toTypedArray())
2222
val temperatureTextField = JBTextField()
2323
val verifyLabel = JBLabel()
2424

2525
open fun create() = panel {
2626
nameRow()
27-
hostRow()
28-
timeoutRow()
2927
modelIdRow()
3028
temperatureRow()
3129
verifyRow()
@@ -42,41 +40,26 @@ abstract class LLMClientPanel(
4240
}
4341
}
4442

45-
open fun Panel.hostRow() {
43+
open fun Panel.hostRow(property: MutableProperty<String?>) {
4644
row {
4745
label(message("settings.llmClient.host"))
4846
.widthGroup("label")
4947
cell(hostComboBox)
5048
.applyToComponent {
5149
isEditable = true
5250
}
53-
.bindItem(clientConfiguration::host.toNullableProperty())
51+
.bindItem(property)
5452
.widthGroup("input")
5553
.onApply { clientConfiguration.addHost(hostComboBox.item) }
5654
}
5755
}
5856

59-
open fun Panel.proxyRow() {
60-
row {
61-
label(message("settings.llmClient.proxy"))
62-
.widthGroup("label")
63-
cell(proxyTextField)
64-
.applyToComponent { minimumWidth = 400 }
65-
.bindText(clientConfiguration::proxyUrl.toNonNullableProperty(""))
66-
.resizableColumn()
67-
.widthGroup("input")
68-
}
69-
row {
70-
comment(message("settings.llmClient.proxy.comment"))
71-
}
72-
}
73-
74-
open fun Panel.timeoutRow() {
57+
open fun Panel.timeoutRow(property: KMutableProperty0<Int>) {
7558
row {
7659
label(message("settings.llmClient.timeout")).widthGroup("label")
7760
cell(socketTimeoutTextField)
7861
.applyToComponent { minimumWidth = 400 }
79-
.bindIntText(clientConfiguration::timeout)
62+
.bindIntText(property)
8063
.resizableColumn()
8164
.widthGroup("input")
8265
.validationOnInput { isInt(it.text) }

src/main/kotlin/com/github/blarc/ai/commits/intellij/plugin/settings/clients/LLMClientTable.kt

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package com.github.blarc.ai.commits.intellij.plugin.settings.clients
33
import com.github.blarc.ai.commits.intellij.plugin.AICommitsBundle.message
44
import com.github.blarc.ai.commits.intellij.plugin.createColumn
55
import com.github.blarc.ai.commits.intellij.plugin.settings.AppSettings2
6+
import com.github.blarc.ai.commits.intellij.plugin.settings.clients.gemini.GeminiClientConfiguration
67
import com.github.blarc.ai.commits.intellij.plugin.settings.clients.ollama.OllamaClientConfiguration
78
import com.github.blarc.ai.commits.intellij.plugin.settings.clients.openAi.OpenAiClientConfiguration
89
import com.github.blarc.ai.commits.intellij.plugin.settings.clients.qianfan.QianfanClientConfiguration
@@ -48,8 +49,8 @@ class LLMClientTable {
4849
private fun createTableModel(): ListTableModel<LLMClientConfiguration> = ListTableModel(
4950
arrayOf(
5051
createColumn<LLMClientConfiguration>(message("settings.llmClient.name")) { llmClient -> llmClient.name },
51-
createColumn(message("settings.llmClient.host")) { llmClient -> llmClient.host },
52-
createColumn(message("settings.llmClient.modelId")) { llmClient -> llmClient.modelId }
52+
createColumn(message("settings.llmClient.modelId")) { llmClient -> llmClient.modelId },
53+
createColumn(message("settings.llmClient.temperature")) { llmClient -> llmClient.temperature }
5354
),
5455
llmClients.toList()
5556
)
@@ -136,7 +137,8 @@ class LLMClientTable {
136137
listOf(
137138
OpenAiClientConfiguration(),
138139
OllamaClientConfiguration(),
139-
QianfanClientConfiguration()
140+
QianfanClientConfiguration(),
141+
GeminiClientConfiguration()
140142
)
141143
} else {
142144
listOf(newLLMClientConfiguration)

src/main/kotlin/com/github/blarc/ai/commits/intellij/plugin/settings/clients/ollama/OllamaClientConfiguration.kt

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,17 +6,20 @@ import com.github.blarc.ai.commits.intellij.plugin.settings.clients.LLMClientSha
66
import com.intellij.openapi.project.Project
77
import com.intellij.openapi.ui.ComboBox
88
import com.intellij.openapi.vcs.ui.CommitMessage
9+
import com.intellij.util.xmlb.annotations.Attribute
910
import javax.swing.Icon
1011

1112
class OllamaClientConfiguration : LLMClientConfiguration(
1213
"Ollama",
13-
"http://localhost:11434/",
14-
null,
15-
30,
1614
"llama3",
1715
"0.7"
1816
) {
1917

18+
@Attribute
19+
var host: String = "http://localhost:11434/"
20+
@Attribute
21+
var timeout: Int = 30
22+
2023
companion object {
2124
const val CLIENT_NAME = "Ollama"
2225
}
@@ -46,7 +49,6 @@ class OllamaClientConfiguration : LLMClientConfiguration(
4649
copy.id = id
4750
copy.name = name
4851
copy.host = host
49-
copy.proxyUrl = proxyUrl
5052
copy.timeout = timeout
5153
copy.modelId = modelId
5254
copy.temperature = temperature

src/main/kotlin/com/github/blarc/ai/commits/intellij/plugin/settings/clients/ollama/OllamaClientPanel.kt

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package com.github.blarc.ai.commits.intellij.plugin.settings.clients.ollama
22

33
import com.github.blarc.ai.commits.intellij.plugin.settings.clients.LLMClientPanel
4+
import com.intellij.ui.dsl.builder.panel
5+
import com.intellij.ui.dsl.builder.toNullableProperty
46

57
class OllamaClientPanel private constructor(
68
private val clientConfiguration: OllamaClientConfiguration,
@@ -9,6 +11,15 @@ class OllamaClientPanel private constructor(
911

1012
constructor(configuration: OllamaClientConfiguration): this(configuration, OllamaClientService.getInstance())
1113

14+
override fun create() = panel {
15+
nameRow()
16+
hostRow(clientConfiguration::host.toNullableProperty())
17+
timeoutRow(clientConfiguration::timeout)
18+
modelIdRow()
19+
temperatureRow()
20+
verifyRow()
21+
}
22+
1223
override fun verifyConfiguration() {
1324
// Configuration passed to panel is already a copy of the original or a new configuration
1425
clientConfiguration.host = hostComboBox.item

src/main/kotlin/com/github/blarc/ai/commits/intellij/plugin/settings/clients/openAi/OpenAiClientConfiguration.kt

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,18 +4,25 @@ import com.github.blarc.ai.commits.intellij.plugin.Icons
44
import com.github.blarc.ai.commits.intellij.plugin.settings.clients.LLMClientConfiguration
55
import com.intellij.openapi.project.Project
66
import com.intellij.openapi.vcs.ui.CommitMessage
7+
import com.intellij.util.xmlb.annotations.Attribute
78
import com.intellij.util.xmlb.annotations.Transient
89
import javax.swing.Icon
910

1011
class OpenAiClientConfiguration : LLMClientConfiguration(
1112
"OpenAI",
12-
"https://api.openai.com/v1",
13-
null,
14-
30,
1513
"gpt-3.5-turbo",
1614
"0.7"
1715
) {
16+
17+
@Attribute
18+
var host: String = "https://api.openai.com/v1"
19+
@Attribute
20+
var timeout: Int = 30
21+
@Attribute
22+
var proxyUrl: String? = null
23+
@Attribute
1824
var organizationId: String? = null
25+
@Attribute
1926
var tokenIsStored: Boolean = false
2027
@Transient
2128
var token: String? = null

src/main/kotlin/com/github/blarc/ai/commits/intellij/plugin/settings/clients/openAi/OpenAiClientPanel.kt

Lines changed: 31 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -4,50 +4,63 @@ import com.github.blarc.ai.commits.intellij.plugin.AICommitsBundle.message
44
import com.github.blarc.ai.commits.intellij.plugin.emptyText
55
import com.github.blarc.ai.commits.intellij.plugin.settings.clients.LLMClientPanel
66
import com.intellij.ui.components.JBPasswordField
7-
import com.intellij.ui.dsl.builder.AlignX
8-
import com.intellij.ui.dsl.builder.bindText
9-
import com.intellij.ui.dsl.builder.panel
10-
import com.intellij.ui.dsl.builder.toNonNullableProperty
7+
import com.intellij.ui.components.JBTextField
8+
import com.intellij.ui.dsl.builder.*
9+
import com.intellij.ui.util.minimumWidth
1110

1211
class OpenAiClientPanel(private val clientConfiguration: OpenAiClientConfiguration) : LLMClientPanel(clientConfiguration) {
13-
12+
private val proxyTextField = JBTextField()
1413
private val tokenPasswordField = JBPasswordField()
1514

1615
override fun create() = panel {
1716
nameRow()
18-
hostRow()
17+
hostRow(clientConfiguration::host.toNullableProperty())
1918
proxyRow()
20-
timeoutRow()
19+
timeoutRow(clientConfiguration::timeout)
20+
tokenRow()
21+
modelIdRow()
22+
organizationIdRow()
23+
temperatureRow()
24+
verifyRow()
25+
26+
}
27+
28+
private fun Panel.proxyRow() {
29+
row {
30+
label(message("settings.llmClient.proxy"))
31+
.widthGroup("label")
32+
cell(proxyTextField)
33+
.applyToComponent { minimumWidth = 400 }
34+
.bindText(clientConfiguration::proxyUrl.toNonNullableProperty(""))
35+
.resizableColumn()
36+
.widthGroup("input")
37+
.comment(message("settings.llmClient.proxy.comment"))
38+
}
39+
}
2140

41+
private fun Panel.tokenRow() {
2242
row {
2343
label(message("settings.llmClient.token"))
2444
.widthGroup("label")
2545
cell(tokenPasswordField)
26-
.bindText(getter = {""}, setter = {
46+
.bindText(getter = { "" }, setter = {
2747
OpenAiClientService.getInstance().saveToken(clientConfiguration, it)
2848
})
2949
.emptyText(if (clientConfiguration.tokenIsStored) message("settings.openAI.token.stored") else message("settings.openAI.token.example"))
3050
.resizableColumn()
3151
.widthGroup("input")
52+
.comment(message("settings.openAi.token.comment"))
3253
}
33-
row {
34-
comment(message("settings.openAi.token.comment"))
35-
.align(AlignX.LEFT)
36-
}
37-
38-
modelIdRow()
54+
}
3955

56+
private fun Panel.organizationIdRow() {
4057
row {
4158
label(message("settings.openAi.organizationId"))
4259
.widthGroup("label")
4360
textField()
4461
.bindText(clientConfiguration::organizationId.toNonNullableProperty(""))
4562
.widthGroup("input")
4663
}
47-
48-
temperatureRow()
49-
verifyRow()
50-
5164
}
5265

5366
override fun verifyConfiguration() {

src/main/kotlin/com/github/blarc/ai/commits/intellij/plugin/settings/clients/qianfan/QianfanClientConfiguration.kt

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,13 +12,14 @@ import javax.swing.Icon
1212

1313
class QianfanClientConfiguration : LLMClientConfiguration(
1414
"Qianfan",
15-
"https://aip.baidubce.com",
16-
null,
17-
30,
1815
QianfanChatModelNameEnum.ERNIE_SPEED_128K.modelName,
1916
"0.7"
2017
) {
18+
@Attribute
19+
var host: String = "https://aip.baidubce.com"
20+
@Attribute
2121
var apiKeyIsStored : Boolean = false
22+
@Attribute
2223
var secretKeyIsStored: Boolean = false
2324
@Transient
2425
var apiKey: String = ""
@@ -64,8 +65,6 @@ class QianfanClientConfiguration : LLMClientConfiguration(
6465
copy.apiKeyId = apiKeyId
6566
copy.name = name
6667
copy.host = host
67-
copy.proxyUrl = proxyUrl
68-
copy.timeout = timeout
6968
copy.modelId = modelId
7069
copy.temperature = temperature
7170
copy.apiKeyIsStored = apiKeyIsStored

src/main/kotlin/com/github/blarc/ai/commits/intellij/plugin/settings/clients/qianfan/QianfanClientPanel.kt

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import com.github.blarc.ai.commits.intellij.plugin.settings.clients.LLMClientPan
55
import com.intellij.ui.components.JBPasswordField
66
import com.intellij.ui.dsl.builder.bindText
77
import com.intellij.ui.dsl.builder.panel
8+
import com.intellij.ui.dsl.builder.toNullableProperty
89

910
class QianfanClientPanel(private val clientConfiguration: QianfanClientConfiguration) : LLMClientPanel(clientConfiguration) {
1011

@@ -13,7 +14,7 @@ class QianfanClientPanel(private val clientConfiguration: QianfanClientConfigura
1314

1415
override fun create() = panel {
1516
nameRow()
16-
hostRow()
17+
hostRow(clientConfiguration::host.toNullableProperty())
1718
modelIdRow()
1819

1920
row {
@@ -46,8 +47,6 @@ class QianfanClientPanel(private val clientConfiguration: QianfanClientConfigura
4647
override fun verifyConfiguration() {
4748

4849
clientConfiguration.host = hostComboBox.item
49-
// clientConfiguration.proxyUrl = proxyTextField.text
50-
// clientConfiguration.timeout = socketTimeoutTextField.text.toInt()
5150
clientConfiguration.modelId = modelComboBox.item
5251
clientConfiguration.temperature = temperatureTextField.text
5352
clientConfiguration.apiKey = String(apiKeyField.password)

0 commit comments

Comments
 (0)