[feat] better openrouter support
This commit is contained in:
@@ -66,7 +66,8 @@
|
|||||||
if(provider === 'openrouter'){
|
if(provider === 'openrouter'){
|
||||||
$DataBase.aiModel = 'openrouter'
|
$DataBase.aiModel = 'openrouter'
|
||||||
$DataBase.subModel = 'openrouter'
|
$DataBase.subModel = 'openrouter'
|
||||||
$DataBase.openrouterRequestModel = 'openrouter/auto'
|
$DataBase.openrouterRequestModel = 'risu/free'
|
||||||
|
$DataBase.maxContext = 6000
|
||||||
}
|
}
|
||||||
if(provider === 'horde'){
|
if(provider === 'horde'){
|
||||||
$DataBase.aiModel = 'horde:::auto'
|
$DataBase.aiModel = 'horde:::auto'
|
||||||
|
|||||||
@@ -209,8 +209,10 @@
|
|||||||
<OptionInput value="anthropic/claude-v1-100k">Claude v1 100k</OptionInput>
|
<OptionInput value="anthropic/claude-v1-100k">Claude v1 100k</OptionInput>
|
||||||
<OptionInput value="anthropic/claude-1.2">Claude v1.2</OptionInput>
|
<OptionInput value="anthropic/claude-1.2">Claude v1.2</OptionInput>
|
||||||
{:else}
|
{:else}
|
||||||
|
<OptionInput value={"risu/free"}>Free Auto</OptionInput>
|
||||||
|
<OptionInput value={"openrouter/auto"}>Openrouter Auto</OptionInput>
|
||||||
{#each m as model}
|
{#each m as model}
|
||||||
<OptionInput value={model}>{model}</OptionInput>
|
<OptionInput value={model.id}>{model.name}</OptionInput>
|
||||||
{/each}
|
{/each}
|
||||||
{/if}
|
{/if}
|
||||||
</SelectInput>
|
</SelectInput>
|
||||||
|
|||||||
@@ -13,10 +13,36 @@ export async function openRouterModels() {
|
|||||||
headers: headers
|
headers: headers
|
||||||
})
|
})
|
||||||
const res = await (await aim).json()
|
const res = await (await aim).json()
|
||||||
return res.data.map((v:any) => {
|
return res.data.map((model: any) => {
|
||||||
return v.id
|
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) {
|
} catch (error) {
|
||||||
return []
|
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 ?? ''
|
||||||
|
}
|
||||||
@@ -20,6 +20,7 @@ import { cloneDeep } from "lodash";
|
|||||||
import { supportsInlayImage } from "../image";
|
import { supportsInlayImage } from "../image";
|
||||||
import { OaifixEmdash } from "../plugins/fixer";
|
import { OaifixEmdash } from "../plugins/fixer";
|
||||||
import { Capacitor } from "@capacitor/core";
|
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
|
const oaiFunctionCall = oaiFunctions ? (arg.useEmotion ? {"name": "set_emotion"} : "auto") : undefined
|
||||||
let requestModel = (aiModel === 'reverse_proxy' || aiModel === 'openrouter') ? db.proxyRequestModel : aiModel
|
let requestModel = (aiModel === 'reverse_proxy' || aiModel === 'openrouter') ? db.proxyRequestModel : aiModel
|
||||||
|
let openrouterRequestModel = db.openrouterRequestModel
|
||||||
if(aiModel === 'reverse_proxy' && db.proxyRequestModel === 'custom'){
|
if(aiModel === 'reverse_proxy' && db.proxyRequestModel === 'custom'){
|
||||||
requestModel = db.customProxyRequestModel
|
requestModel = db.customProxyRequestModel
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(aiModel === 'openrouter' && db.openrouterRequestModel === 'risu/free'){
|
||||||
|
openrouterRequestModel = await getFreeOpenRouterModel()
|
||||||
|
}
|
||||||
|
|
||||||
if(aiModel.startsWith('mistral')){
|
if(aiModel.startsWith('mistral')){
|
||||||
requestModel = aiModel
|
requestModel = aiModel
|
||||||
|
|
||||||
@@ -384,7 +389,7 @@ export async function requestChatDataMain(arg:requestDataArgument, model:'model'
|
|||||||
|
|
||||||
db.cipherChat = false
|
db.cipherChat = false
|
||||||
let body = ({
|
let body = ({
|
||||||
model: aiModel === 'openrouter' ? db.openrouterRequestModel :
|
model: aiModel === 'openrouter' ? openrouterRequestModel :
|
||||||
requestModel === 'gpt35' ? 'gpt-3.5-turbo'
|
requestModel === 'gpt35' ? 'gpt-3.5-turbo'
|
||||||
: requestModel === 'gpt35_0613' ? 'gpt-3.5-turbo-0613'
|
: requestModel === 'gpt35_0613' ? 'gpt-3.5-turbo-0613'
|
||||||
: requestModel === 'gpt35_16k' ? 'gpt-3.5-turbo-16k'
|
: requestModel === 'gpt35_16k' ? 'gpt-3.5-turbo-16k'
|
||||||
|
|||||||
@@ -370,6 +370,7 @@ export function setDatabase(data:Database){
|
|||||||
utilOverride: false
|
utilOverride: false
|
||||||
}
|
}
|
||||||
data.keiServerURL ??= ''
|
data.keiServerURL ??= ''
|
||||||
|
data.top_k ??= 0
|
||||||
|
|
||||||
changeLanguage(data.language)
|
changeLanguage(data.language)
|
||||||
DataBase.set(data)
|
DataBase.set(data)
|
||||||
|
|||||||
Reference in New Issue
Block a user