Skip to content

Commit

Permalink
feat: add proxy for items
Browse files Browse the repository at this point in the history
  • Loading branch information
phodal committed Apr 21, 2023
1 parent e6ef839 commit ddb5c20
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 1 deletion.
Expand Up @@ -5,23 +5,46 @@ import cc.unitmesh.devti.connector.CodeCopilot
import cc.unitmesh.devti.connector.DevtiFlowAction
import cc.unitmesh.devti.kanban.SimpleProjectInfo
import cc.unitmesh.devti.prompt.parseCodeFromString
import cc.unitmesh.devti.settings.DevtiSettingsState
import com.intellij.openapi.diagnostic.Logger
import com.intellij.openapi.diagnostic.logger
import com.intellij.openapi.util.NlsSafe
import com.intellij.psi.codeStyle.arrangement.std.StdArrangementSettingsToken.token
import com.theokanning.openai.OpenAiApi
import com.theokanning.openai.completion.chat.ChatCompletionRequest
import com.theokanning.openai.completion.chat.ChatMessage
import com.theokanning.openai.completion.chat.ChatMessageRole
import com.theokanning.openai.service.OpenAiService
import com.theokanning.openai.service.OpenAiService.defaultClient
import com.theokanning.openai.service.OpenAiService.defaultObjectMapper
import com.theokanning.openai.service.OpenAiService.defaultRetrofit
import kotlinx.coroutines.runBlocking
import java.net.InetSocketAddress
import java.net.Proxy
import java.time.Duration


class OpenCodeCopilot(val openAIKey: String, val version: String) : CodeCopilot, DevtiFlowAction {

Check notice on line 27 in src/main/kotlin/cc/unitmesh/devti/connector/openai/OpenCodeCopilot.kt

View workflow job for this annotation

GitHub Actions / Build

Class member can have 'private' visibility

Property 'openAIKey' could be private

Check warning on line 27 in src/main/kotlin/cc/unitmesh/devti/connector/openai/OpenCodeCopilot.kt

View workflow job for this annotation

GitHub Actions / Build

Constructor parameter is never used as a property

Constructor parameter is never used as a property
private val promptGenerator = PromptGenerator()
private lateinit var service: OpenAiService

private val timeout = Duration.ofSeconds(600)

init {
service = OpenAiService(openAIKey, Duration.ofSeconds(600))
val openAiProxy = DevtiSettingsState.getInstance()?.openAiProxy
if (openAiProxy.isNullOrEmpty()) {
service = OpenAiService(openAIKey, timeout)
} else {
val mapper = defaultObjectMapper()
val proxy = Proxy(Proxy.Type.HTTP, InetSocketAddress(openAiProxy, 80))
val client = defaultClient(openAIKey, timeout)
.newBuilder()
.proxy(proxy)
.build()
val retrofit = defaultRetrofit(client, mapper)
val api = retrofit.create(OpenAiApi::class.java)
service = OpenAiService(api);
}
}

private fun prompt(instruction: String): String {
Expand Down
Expand Up @@ -28,6 +28,7 @@ class DevtiSettingsConfigurable : Configurable {
var modified = !mySettingsComponent!!.openAiKey.equals(settings.openAiKey)
modified = modified or (!mySettingsComponent!!.githubToken.equals(settings.githubToken))
modified = modified or (!mySettingsComponent!!.openAiVersion.equals(settings.openAiVersion))
modified = modified or (!mySettingsComponent!!.openAiProxy.equals(settings.openAiProxy))
return modified
}

Expand All @@ -36,13 +37,15 @@ class DevtiSettingsConfigurable : Configurable {
settings.openAiKey = mySettingsComponent!!.getOpenAiKey()
settings.githubToken = mySettingsComponent!!.getGithubToken()
settings.openAiVersion = mySettingsComponent!!.getOpenAiVersion()
settings.openAiProxy = mySettingsComponent!!.getOpenAiProxy()
}

override fun reset() {
val settings: DevtiSettingsState = DevtiSettingsState.getInstance()!!
mySettingsComponent!!.setOpenAiKey(settings.openAiKey)
mySettingsComponent!!.setGithubToken(settings.githubToken)
mySettingsComponent!!.setOpenAiVersion(settings.openAiVersion)
mySettingsComponent!!.setOpenAiProxy(settings.openAiProxy)
}

override fun disposeUIResources() {
Expand Down

0 comments on commit ddb5c20

Please sign in to comment.