Skip to content

Commit

Permalink
fix: fix url path issue
Browse files Browse the repository at this point in the history
  • Loading branch information
phodal committed Aug 25, 2023
1 parent 991552a commit b4c2001
Show file tree
Hide file tree
Showing 8 changed files with 64 additions and 28 deletions.
3 changes: 2 additions & 1 deletion gradle/libs.versions.toml
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@ github-api = "org.kohsuke:github-api:1.314"
kotlinx-serialization-json = "org.jetbrains.kotlinx:kotlinx-serialization-json:1.5.0"

retrofit2-converter-jackson = "com.squareup.retrofit2:converter-jackson:2.9.0"
retrofit2-converter-gson = "com.squareup.retrofit2:converter-gson:2.9.0"
jackson-module-kotlin = "com.fasterxml.jackson.module:jackson-module-kotlin:2.14.2"
jackson-databind = "com.fasterxml.jackson.core:jackson-databind:2.14.2"

Expand All @@ -60,5 +61,5 @@ grammarKit = { id = "org.jetbrains.grammarkit", version = "2022.2.2" }
serialization = { id = "org.jetbrains.kotlin.plugin.serialization", version.ref = "kotlin" }

[bundles]
openai = ["openai-gpt3", "retrofit2-converter-jackson", "jackson-databind", "okhttp", "okhttp-sse"]
openai = ["openai-gpt3", "retrofit2-converter-jackson", "retrofit2-converter-gson", "jackson-databind", "okhttp", "okhttp-sse"]
markdown = ["commonmark-core", "commonmark-gfm-tables"]
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,7 @@ import cc.unitmesh.devti.provider.context.ChatContextItem
import cc.unitmesh.devti.provider.context.ChatContextProvider
import cc.unitmesh.devti.provider.context.ChatCreationContext
import com.intellij.openapi.project.Project
import com.intellij.openapi.project.modules
import com.jetbrains.python.PythonLanguage
import com.jetbrains.python.packaging.PyPackage
import com.jetbrains.python.packaging.tryCreateCustomPackageManager
import com.jetbrains.python.sdk.configuration.PyProjectSdkConfigurationExtension

class PythonFrameworkContextProvider : ChatContextProvider {
override fun isApplicable(project: Project, creationContext: ChatCreationContext): Boolean {
Expand Down
42 changes: 42 additions & 0 deletions src/main/kotlin/cc/unitmesh/devti/counit/CoUnitPreProcessor.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
package cc.unitmesh.devti.counit

import cc.unitmesh.devti.LLMCoroutineScope
import cc.unitmesh.devti.gui.chat.ChatCodingPanel
import cc.unitmesh.devti.gui.chat.ChatContext
import cc.unitmesh.devti.llms.LlmProviderFactory
import cc.unitmesh.devti.provider.ContextPrompter
import cc.unitmesh.devti.settings.configurable.coUnitSettings
import com.intellij.openapi.application.ApplicationManager
import com.intellij.openapi.components.Service
import com.intellij.openapi.project.Project
import kotlinx.coroutines.launch

@Service(Service.Level.PROJECT)
class CoUnitPreProcessor(val project: Project) {
private val llmProviderFactory = LlmProviderFactory()

fun isCoUnit(input: String): Boolean {
return project.coUnitSettings.enableCoUnit && input.startsWith("/counit")
}

fun handleChat(prompter: ContextPrompter, ui: ChatCodingPanel, context: ChatContext?) {
val originRequest = prompter.requestPrompt()
ui.addMessage(originRequest, true, originRequest)

// originRequest is starsWith /counit, should remove it
val request = originRequest.removePrefix("/counit").trim()

val response = CoUnitPromptGenerator(project).findIntention(request)
?: throw Exception("CoUnit response is null, please check your CoUnit server address")

ui.addMessage(response, true, response)

ApplicationManager.getApplication().executeOnPooledThread {
val response = llmProviderFactory.connector(project).stream(response, "")
LLMCoroutineScope.scope(project).launch {
ui.updateMessage(response)
}
}
}
}

Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,13 @@ import cc.unitmesh.devti.settings.configurable.coUnitSettings
import com.intellij.openapi.components.Service
import com.intellij.openapi.project.Project
import retrofit2.Retrofit
import retrofit2.converter.gson.GsonConverterFactory

@Service(Service.Level.PROJECT)
class CoUnitPromptGenerator(val project: Project) {
var retrofit = Retrofit.Builder()
private var retrofit = Retrofit.Builder()
.baseUrl(project.coUnitSettings.serverAddress)
.addConverterFactory(GsonConverterFactory.create())
.build()

var service: CoUnitApi = retrofit.create(CoUnitApi::class.java)
Expand Down
13 changes: 0 additions & 13 deletions src/main/kotlin/cc/unitmesh/devti/counit/PreProcessor.kt

This file was deleted.

6 changes: 3 additions & 3 deletions src/main/kotlin/cc/unitmesh/devti/counit/client/CoUnitApi.kt
Original file line number Diff line number Diff line change
Expand Up @@ -8,12 +8,12 @@ import retrofit2.http.POST
import retrofit2.http.Query

interface CoUnitApi {
@GET("/api/prompt/explain")
@GET("/api/agent/prompt/explain")
fun explainQuery(@Query("q") q: String): Call<PromptResult>

@POST("/api/prompt/functions/matching")
@POST("/api/agent/prompt/functions/matching")
fun toolPrompter(@Query("q") q: String): Call<PromptResult>

@GET("/api/prompt/functions/list")
@GET("/api/agent/prompt/functions/list")
fun functions(): Call<List<Tool>>
}
19 changes: 14 additions & 5 deletions src/main/kotlin/cc/unitmesh/devti/gui/chat/ChatCodingService.kt
Original file line number Diff line number Diff line change
@@ -1,17 +1,19 @@
package cc.unitmesh.devti.gui.chat

import cc.unitmesh.devti.AutoDevBundle
import cc.unitmesh.devti.LLMCoroutineScope
import cc.unitmesh.devti.counit.CoUnitPreProcessor
import cc.unitmesh.devti.llms.LlmProviderFactory
import cc.unitmesh.devti.parser.PostCodeProcessor
import cc.unitmesh.devti.provider.ContextPrompter
import com.intellij.openapi.application.ApplicationManager
import com.intellij.openapi.components.service
import com.intellij.openapi.project.Project
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.launch

class ChatCodingService(var actionType: ChatActionType, val project: Project) {
private val llmProviderFactory = LlmProviderFactory()
private val counitProcessor = project.service<CoUnitPreProcessor>()

val action = actionType.instruction()

Expand All @@ -22,12 +24,19 @@ class ChatCodingService(var actionType: ChatActionType, val project: Project) {

fun handlePromptAndResponse(
ui: ChatCodingPanel,
prompt: ContextPrompter,
prompter: ContextPrompter,
context: ChatContext? = null
) {
val requestPrompt = prompt.requestPrompt()
ui.addMessage(requestPrompt, true, prompt.displayPrompt())
ui.addMessage(AutoDevBundle.message("devti.loading"))
val requestPrompt = prompter.requestPrompt()

counitProcessor.isCoUnit(requestPrompt).let {
if (it) {
counitProcessor.handleChat(prompter, ui, context)
return
}
}

ui.addMessage(requestPrompt, true, prompter.displayPrompt())

ApplicationManager.getApplication().executeOnPooledThread {
val response = this.makeChatBotRequest(requestPrompt)
Expand Down
1 change: 0 additions & 1 deletion src/main/resources/messages/AutoDevBundle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,6 @@ autodev.flow=AutoDev Flow
devti.chat.send=Send
devti.chat.new=New Chat
devti.chat.replaceSelection=Replace Selection
devti.loading=Loading...
chat.label.initial.text='Enter' to start, 'Shift+Enter' for a new line
code.complete.intention.write.action=Generate code
intentions.assistant.name=AutoDev AI AutoAction
Expand Down

0 comments on commit b4c2001

Please sign in to comment.