From 32e3060b1994fc3175fda3c99a97fd8b123b4739 Mon Sep 17 00:00:00 2001 From: kwaroran Date: Thu, 4 Jan 2024 02:32:53 +0900 Subject: [PATCH] [feat] better openrouter support --- src/lib/Others/WelcomeRisu.svelte | 3 ++- src/lib/Setting/Pages/BotSettings.svelte | 4 +++- src/ts/model/openrouter.ts | 30 ++++++++++++++++++++++-- src/ts/process/request.ts | 9 +++++-- src/ts/storage/database.ts | 1 + 5 files changed, 41 insertions(+), 6 deletions(-) diff --git a/src/lib/Others/WelcomeRisu.svelte b/src/lib/Others/WelcomeRisu.svelte index 82cb787c..d3404b1d 100644 --- a/src/lib/Others/WelcomeRisu.svelte +++ b/src/lib/Others/WelcomeRisu.svelte @@ -66,7 +66,8 @@ if(provider === 'openrouter'){ $DataBase.aiModel = 'openrouter' $DataBase.subModel = 'openrouter' - $DataBase.openrouterRequestModel = 'openrouter/auto' + $DataBase.openrouterRequestModel = 'risu/free' + $DataBase.maxContext = 6000 } if(provider === 'horde'){ $DataBase.aiModel = 'horde:::auto' diff --git a/src/lib/Setting/Pages/BotSettings.svelte b/src/lib/Setting/Pages/BotSettings.svelte index eef8a05a..8435108c 100644 --- a/src/lib/Setting/Pages/BotSettings.svelte +++ b/src/lib/Setting/Pages/BotSettings.svelte @@ -209,8 +209,10 @@ Claude v1 100k Claude v1.2 {:else} + Free Auto + Openrouter Auto {#each m as model} - {model} + {model.name} {/each} {/if} diff --git a/src/ts/model/openrouter.ts b/src/ts/model/openrouter.ts index 172530c9..860b3694 100644 --- a/src/ts/model/openrouter.ts +++ b/src/ts/model/openrouter.ts @@ -13,10 +13,36 @@ export async function openRouterModels() { headers: headers }) const res = await (await aim).json() - return res.data.map((v:any) => { - return v.id + return res.data.map((model: any) => { + let name = model.name + let price = model.pricing.prompt + if(price > 0){ + name += ` - $${(price*1000).toFixed(5)}/1k` + } + else{ + name += " - Free" + } + return { + id: model.id, + name: name, + price: price, + context_length: model.context_length, + } + }).sort((a: any, b: any) => { + return a.price - b.price + }).filter((model: any) => { + return model.price >= 0 }) } catch (error) { return [] } +} + +export async function getFreeOpenRouterModel(){ + const models = await openRouterModels() + return models.filter((model: any) => { + return model.name.endsWith("Free") + }).sort((a: any, b: any) => { + return b.context_length - a.context_length + })[0].id ?? '' } \ No newline at end of file diff --git a/src/ts/process/request.ts b/src/ts/process/request.ts index 85bbe68b..dfed1ca5 100644 --- a/src/ts/process/request.ts +++ b/src/ts/process/request.ts @@ -20,6 +20,7 @@ import { cloneDeep } from "lodash"; import { supportsInlayImage } from "../image"; import { OaifixEmdash } from "../plugins/fixer"; import { Capacitor } from "@capacitor/core"; +import { getFreeOpenRouterModel } from "../model/openrouter"; @@ -279,11 +280,15 @@ export async function requestChatDataMain(arg:requestDataArgument, model:'model' const oaiFunctionCall = oaiFunctions ? (arg.useEmotion ? {"name": "set_emotion"} : "auto") : undefined let requestModel = (aiModel === 'reverse_proxy' || aiModel === 'openrouter') ? db.proxyRequestModel : aiModel - + let openrouterRequestModel = db.openrouterRequestModel if(aiModel === 'reverse_proxy' && db.proxyRequestModel === 'custom'){ requestModel = db.customProxyRequestModel } + if(aiModel === 'openrouter' && db.openrouterRequestModel === 'risu/free'){ + openrouterRequestModel = await getFreeOpenRouterModel() + } + if(aiModel.startsWith('mistral')){ requestModel = aiModel @@ -384,7 +389,7 @@ export async function requestChatDataMain(arg:requestDataArgument, model:'model' db.cipherChat = false let body = ({ - model: aiModel === 'openrouter' ? db.openrouterRequestModel : + model: aiModel === 'openrouter' ? openrouterRequestModel : requestModel === 'gpt35' ? 'gpt-3.5-turbo' : requestModel === 'gpt35_0613' ? 'gpt-3.5-turbo-0613' : requestModel === 'gpt35_16k' ? 'gpt-3.5-turbo-16k' diff --git a/src/ts/storage/database.ts b/src/ts/storage/database.ts index 34c0a91b..0308f681 100644 --- a/src/ts/storage/database.ts +++ b/src/ts/storage/database.ts @@ -370,6 +370,7 @@ export function setDatabase(data:Database){ utilOverride: false } data.keiServerURL ??= '' + data.top_k ??= 0 changeLanguage(data.language) DataBase.set(data)