@@ -5,37 +5,35 @@ import cc.unitmesh.devti.kanban.SimpleProjectInfo
5
5
import cc.unitmesh.devti.prompt.AiExecutor
6
6
import cc.unitmesh.devti.prompt.DevtiFlowAction
7
7
import cc.unitmesh.devti.prompt.parseCodeFromString
8
- import com.aallam.openai.api.BetaOpenAI
9
- import com.aallam.openai.api.chat.ChatCompletion
10
- import com.aallam.openai.api.chat.ChatCompletionRequest
11
- import com.aallam.openai.api.chat.ChatMessage
12
- import com.aallam.openai.api.chat.ChatRole
13
- import com.aallam.openai.api.model.ModelId
14
- import com.aallam.openai.client.OpenAI
15
8
import com.intellij.openapi.diagnostic.Logger
16
9
import com.intellij.openapi.diagnostic.logger
17
10
import com.intellij.openapi.util.NlsSafe
11
+ import com.theokanning.openai.completion.chat.ChatCompletionRequest
12
+ import com.theokanning.openai.completion.chat.ChatMessage
13
+ import com.theokanning.openai.completion.chat.ChatMessageRole
14
+ import com.theokanning.openai.service.OpenAiService
18
15
import kotlinx.coroutines.runBlocking
19
16
17
+
20
18
class OpenAIExecutor (val openAIKey : String , val version : String ) : AiExecutor, DevtiFlowAction {
21
- private val openAI: OpenAI = OpenAI (openAIKey)
22
19
private val promptGenerator = PromptGenerator ()
20
+ var service: OpenAiService = OpenAiService (openAIKey)
23
21
24
- @OptIn(BetaOpenAI ::class )
25
22
override suspend fun prompt (prompt : String ): String {
26
- val chatCompletionRequest = ChatCompletionRequest (
27
- model = ModelId (version),
28
- temperature = 0.0 ,
29
- messages = listOf (
30
- ChatMessage (
31
- role = ChatRole . User ,
32
- content = prompt
33
- )
34
- )
35
- )
23
+ val messages : MutableList < ChatMessage > = ArrayList ()
24
+ val systemMessage = ChatMessage ( ChatMessageRole . USER .value(), prompt)
25
+ messages.add(systemMessage)
26
+
27
+ val completionRequest = ChatCompletionRequest .builder()
28
+ .model(version)
29
+ .temperature( 0.0 )
30
+ .messages(messages )
31
+ .build( )
32
+
36
33
37
- val completion: ChatCompletion = openAI.chatCompletion(chatCompletionRequest)
38
- return completion.choices.first().message?.content ? : " "
34
+ val completion = service.createChatCompletion(completionRequest)
35
+ return completion
36
+ .choices[0 ].message.content
39
37
}
40
38
41
39
override fun fillStoryDetail (project : SimpleProjectInfo , story : String ): String {
0 commit comments