Skip to content

Commit cfc9aee

Browse files
committed
refactor: Adjust android and iOS sample to use ChatCompletion entrypoint
1 parent a15d586 commit cfc9aee

File tree

4 files changed

+20
-14
lines changed

4 files changed

+20
-14
lines changed

sample/android/src/main/java/co/yml/ychat/android/MainViewModel.kt

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,15 @@ import kotlinx.coroutines.launch
1111

1212
class MainViewModel(private val chatGpt: YChat) : ViewModel() {
1313

14+
private val chatCompletions by lazy {
15+
chatGpt.chatCompletions()
16+
.setMaxTokens(MAX_TOKENS)
17+
.addMessage(
18+
role = "assistant",
19+
content = "You are a helpful assistant."
20+
)
21+
}
22+
1423
private val _items = mutableStateListOf<MessageItem>()
1524
val items = _items
1625

@@ -47,11 +56,7 @@ class MainViewModel(private val chatGpt: YChat) : ViewModel() {
4756

4857
private suspend fun requestCompletion(message: String): String {
4958
return try {
50-
chatGpt.completion()
51-
.setInput(message)
52-
.saveHistory(false)
53-
.setMaxTokens(MAX_TOKENS)
54-
.execute()
59+
chatCompletions.execute(message).last().content
5560
} catch (e: Exception) {
5661
e.message ?: ERROR
5762
}

sample/ios/YChatApp/Features/Completion/ViewModel/CompletionViewModel.swift

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,14 @@ import YChat
1010
import Foundation
1111

1212
internal final class CompletionViewModel: ObservableObject {
13-
private var chatGpt: YChat {
13+
private var chatCompletions: ChatCompletions =
1414
YChatCompanion.shared.create(apiKey: Config.apiKey)
15-
}
15+
.chatCompletions()
16+
.setMaxTokens(tokens: 1024)
17+
.addMessage(
18+
role: "assistant",
19+
content: "You are a helpful assistant."
20+
)
1621

1722
@Published
1823
var message: String = ""
@@ -32,11 +37,7 @@ internal final class CompletionViewModel: ObservableObject {
3237
cleanLastMessage()
3338
addLoading()
3439
do {
35-
let result = try await chatGpt.completion()
36-
.setInput(input: input)
37-
.setMaxTokens(tokens: 1024)
38-
.saveHistory(isSaveHistory: false)
39-
.execute()
40+
let result = try await chatCompletions.execute(content: input)[0].content
4041
removeLoading()
4142
addAIMessage(message: result)
4243
} catch {

ychat/src/commonMain/kotlin/co/yml/ychat/data/dto/ChatCompletionsChoiceDto.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,5 +10,5 @@ internal data class ChatCompletionsChoiceDto(
1010
@SerialName("message")
1111
val message: ChatMessageDto,
1212
@SerialName("finish_reason")
13-
val finishReason: String,
13+
val finishReason: String?,
1414
)

ychat/src/commonMain/kotlin/co/yml/ychat/entrypoint/impl/ChatCompletionsImpl.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ internal class ChatCompletionsImpl(
5050
}
5151

5252
override suspend fun execute(content: String): List<ChatMessage> {
53-
params.messages.add(ChatMessage("user", content))
53+
addMessage("user", content)
5454
return chatCompletionsUseCase.requestChatCompletions(params)
5555
.also { params.messages.addAll(it) }
5656
}

0 commit comments

Comments
 (0)