From 651fbbf91d3ea36a1ad7fc44306c8034d2aada86 Mon Sep 17 00:00:00 2001 From: kuku <kuku@kuku.me> Date: Tue, 24 Sep 2024 10:37:54 +0800 Subject: [PATCH] custom openai model and host --- .../kuku/telegram/entity/BotConfigEntity.kt | 2 ++ .../telegram/extension/OpenaiExtension.kt | 9 ++++++--- .../kuku/telegram/extension/PushExtension.kt | 3 +-- .../telegram/extension/SettingExtension.kt | 20 ++++++++++++++++++- 4 files changed, 28 insertions(+), 6 deletions(-) diff --git a/src/main/kotlin/me/kuku/telegram/entity/BotConfigEntity.kt b/src/main/kotlin/me/kuku/telegram/entity/BotConfigEntity.kt index 6b9c856..3425c38 100644 --- a/src/main/kotlin/me/kuku/telegram/entity/BotConfigEntity.kt +++ b/src/main/kotlin/me/kuku/telegram/entity/BotConfigEntity.kt @@ -21,6 +21,8 @@ class BotConfigEntity { var updatePush: Status = Status.OFF var openaiToken: String = "" + var openaiUrl: String = "" + var openaiModel: String = "" fun twoCaptchaKey() = twoCaptchaKey.ifEmpty { null } } diff --git a/src/main/kotlin/me/kuku/telegram/extension/OpenaiExtension.kt b/src/main/kotlin/me/kuku/telegram/extension/OpenaiExtension.kt index c28e43e..d72849a 100644 --- a/src/main/kotlin/me/kuku/telegram/extension/OpenaiExtension.kt +++ b/src/main/kotlin/me/kuku/telegram/extension/OpenaiExtension.kt @@ -3,6 +3,7 @@ package me.kuku.telegram.extension import com.aallam.openai.api.chat.* import com.aallam.openai.api.model.ModelId import com.aallam.openai.client.OpenAI +import com.aallam.openai.client.OpenAIHost import com.pengrad.telegrambot.model.PhotoSize import com.pengrad.telegrambot.model.request.ParseMode import com.pengrad.telegrambot.request.EditMessageText @@ -57,8 +58,10 @@ class OpenaiExtension( val botConfigEntity = botConfigService.find() if (botConfigEntity.openaiToken.ifEmpty { "" }.isEmpty()) error("not setting openai token") + val openaiHost = if (botConfigEntity.openaiUrl.isEmpty()) OpenAIHost.OpenAI else OpenAIHost(botConfigEntity.openaiUrl) + val openaiModel = botConfigEntity.openaiModel.ifEmpty { "gpt-4o-mini" } - val openai = OpenAI(botConfigEntity.openaiToken) + val openai = OpenAI(botConfigEntity.openaiToken, host = openaiHost) val chatMessage = ChatMessage( role = ChatRole.User, @@ -73,7 +76,7 @@ class OpenaiExtension( cacheBody.add(chatMessage) val request = ChatCompletionRequest( - model = ModelId("gpt-4o-mini"), + model = ModelId(openaiModel), messages = cacheBody, streamOptions = streamOptions { includeUsage = true @@ -85,7 +88,7 @@ class OpenaiExtension( val sendMessageObject = response.message() val sendMessageId = sendMessageObject.messageId() var openaiText = "" - var prefix = ">model: gpt\\-4o\\-mini\n" + var prefix = ">model: ${openaiModel.replace("-", "\\-")}\n" var alreadySendText = "" var i = 5 openai.chatCompletions(request).onEach { diff --git a/src/main/kotlin/me/kuku/telegram/extension/PushExtension.kt b/src/main/kotlin/me/kuku/telegram/extension/PushExtension.kt index df4f22f..c043739 100644 --- a/src/main/kotlin/me/kuku/telegram/extension/PushExtension.kt +++ b/src/main/kotlin/me/kuku/telegram/extension/PushExtension.kt @@ -166,8 +166,7 @@ class PushBody { } enum class Type { - TEXT, IMAGE, VIDEO, FILE - } + TEXT, IMAGE, VIDEO, FILE } } diff --git a/src/main/kotlin/me/kuku/telegram/extension/SettingExtension.kt b/src/main/kotlin/me/kuku/telegram/extension/SettingExtension.kt index 4b58740..35a7595 100644 --- a/src/main/kotlin/me/kuku/telegram/extension/SettingExtension.kt +++ b/src/main/kotlin/me/kuku/telegram/extension/SettingExtension.kt @@ -24,13 +24,15 @@ class SettingExtension( val clearLog = inlineKeyboardButton("清空日志", "settingsClearLog") val updatePush = inlineKeyboardButton("${init().updatePush}github更新推送", "githubUpdatePushSwitch") val openai = inlineKeyboardButton("设置openai的token", "openaiToken") + val openaiUrl = inlineKeyboardButton("设置openai的url", "openaiUrl") + val openaiModel = inlineKeyboardButton("设置openai的model", "openaiModel") return InlineKeyboardMarkup( arrayOf(blackSetting, adminSetting), arrayOf(url), arrayOf(twoCaptcha), arrayOf(sendLog, clearLog), arrayOf(updatePush), - arrayOf(openai) + arrayOf(openai, openaiUrl, openaiModel) ) } @@ -157,6 +159,22 @@ class SettingExtension( botConfigService.save(entity) editMessageText("设置openai的token成功") } + callback("openaiUrl") { + editMessageText("请发送openai的url") + val url = nextMessage().text() + val entity = init() + entity.openaiUrl = url + botConfigService.save(entity) + editMessageText("设置openai的url成功") + } + callback("openaiModel") { + editMessageText("请发送openai的model") + val model = nextMessage().text() + val entity = init() + entity.openaiModel = model + botConfigService.save(entity) + editMessageText("设置openai的model成功") + } } fun TelegramSubscribe.log() {