fix backend stuff
This commit is contained in:
+5
-6
@@ -1,20 +1,23 @@
|
||||
package ru.shadowsparky.chat.backend.domain
|
||||
|
||||
import org.koin.core.annotation.Factory
|
||||
import ru.shadowsparky.backend.data.EnvFetcher
|
||||
import ru.shadowsparky.chat.domain.ChatRoles
|
||||
import ru.shadowsparky.chat.domain.Message
|
||||
|
||||
@Factory
|
||||
class ProcessUserMessageUseCase(
|
||||
private val storage: MessageStorage,
|
||||
private val chatService: ChatService
|
||||
private val chatService: ChatService,
|
||||
private val envFetcher: EnvFetcher
|
||||
) {
|
||||
suspend fun execute(userId: Long): Message {
|
||||
val history = storage.query(userId, null, limit = 10).toList()
|
||||
val sortedHistory = history.sortedBy { it.timestamp }
|
||||
val systemMessage = Message(
|
||||
role = ChatRoles.SYSTEM,
|
||||
content = SYSTEM_PROMPT,
|
||||
content = envFetcher.get("CHAT_SYSTEM_PROMPT").trim('"')
|
||||
.ifEmpty { error("System prompt not set") },
|
||||
timestamp = System.currentTimeMillis()
|
||||
)
|
||||
val fullContext = listOf(systemMessage) + sortedHistory
|
||||
@@ -27,8 +30,4 @@ class ProcessUserMessageUseCase(
|
||||
val messageId = storage.insert(userId, aiMessage)
|
||||
return aiMessage.copy(id = messageId)
|
||||
}
|
||||
|
||||
companion object {
|
||||
private const val SYSTEM_PROMPT = "Ты ИИ-помощник приложения \"Свиное рыло\". Ищи юзерам фильмы и сериалы. Правила: 1. Называй юзера \"свинорылец\" (Пример: \"Здорово, свинорылец!\"). 2. Общайся по-свойски, с юмором, иронично. 3. Если юзер сомневается, задай 2 наводящих вопроса. 4. Выдавай строго до 5 позиций максимум, даже если просят больше. Описание короткое (1-2 предложения). 5. Каждое название фильма/сериала ВСЕГДА строго оборачивай в теги [MOVIE]Название[/MOVIE]. 6. На нерелевантные темы не общайся, переводи разговор на кино в свиной тематике."
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user