Add from modellist

This commit is contained in:
Kwaroran
2025-05-24 19:17:11 +09:00
parent 6e5cf5eb48
commit 9d3d786b10
2 changed files with 81 additions and 7 deletions

View File

@@ -598,7 +598,6 @@ export const LLMModels: LLMModel[] = [
LLMFlags.hasFirstSystemPrompt,
LLMFlags.hasStreaming
],
recommended: true,
parameters: ClaudeParameters,
tokenizer: LLMTokenizer.Claude
},
@@ -619,6 +618,40 @@ export const LLMModels: LLMModel[] = [
parameters: [...ClaudeParameters, 'thinking_tokens'],
tokenizer: LLMTokenizer.Claude
},
{
name: "Claude 4 Sonnet (20250514)",
id: 'claude-sonnet-4-20250514',
shortName: "4 Sonnet",
provider: LLMProvider.Anthropic,
format: LLMFormat.Anthropic,
flags: [
LLMFlags.hasPrefill,
LLMFlags.hasImageInput,
LLMFlags.hasFirstSystemPrompt,
LLMFlags.hasStreaming,
LLMFlags.claudeThinking
],
recommended: true,
parameters: [...ClaudeParameters, 'thinking_tokens'],
tokenizer: LLMTokenizer.Claude
},
{
name: "Claude 4 Opus (20250514)",
id: 'claude-opus-4-20250514',
shortName: "4 Opus",
provider: LLMProvider.Anthropic,
format: LLMFormat.Anthropic,
flags: [
LLMFlags.hasPrefill,
LLMFlags.hasImageInput,
LLMFlags.hasFirstSystemPrompt,
LLMFlags.hasStreaming,
LLMFlags.claudeThinking
],
recommended: true,
parameters: [...ClaudeParameters, 'thinking_tokens'],
tokenizer: LLMTokenizer.Claude
},
{
name: "Claude 3.5 Haiku",
id: 'claude-3-5-haiku-latest',
@@ -1057,6 +1090,26 @@ export const LLMModels: LLMModel[] = [
parameters: ['temperature', 'top_k', 'top_p', 'presence_penalty', 'frequency_penalty'],
tokenizer: LLMTokenizer.GoogleCloud,
},
{
name: "Gemini Flash 2.5 Preview (05/20)",
id: 'gemini-2.5-flash-preview-05-20',
provider: LLMProvider.GoogleCloud,
format: LLMFormat.GoogleCloud,
flags: [LLMFlags.geminiBlockOff,LLMFlags.hasImageInput, LLMFlags.poolSupported, LLMFlags.hasAudioInput, LLMFlags.hasVideoInput, LLMFlags.hasStreaming, LLMFlags.requiresAlternateRole, LLMFlags.geminiThinking],
parameters: ['temperature', 'top_k', 'top_p', 'presence_penalty', 'frequency_penalty'],
tokenizer: LLMTokenizer.GoogleCloud,
recommended: true
},
// {
// name: "Gemini Flash 2.5 PRO TTS",
// id: 'gemini-2.5-pro-tts',
// provider: LLMProvider.GoogleCloud,
// format: LLMFormat.GoogleCloud,
// flags: [LLMFlags.geminiBlockOff,LLMFlags.hasImageInput, LLMFlags.poolSupported, LLMFlags.hasAudioInput, LLMFlags.hasVideoInput, LLMFlags.hasStreaming, LLMFlags.requiresAlternateRole, LLMFlags.geminiThinking, LLMFlags.hasAudioOutput],
// parameters: ['temperature', 'top_k', 'top_p', 'presence_penalty', 'frequency_penalty'],
// tokenizer: LLMTokenizer.GoogleCloud,
// recommended: true
// },
{
name: "Gemini Flash 2.0 Thinking 1219",
id: 'gemini-2.0-flash-thinking-exp-1219',

View File

@@ -11,7 +11,7 @@ import { risuChatParser } from "../parser.svelte";
import { SignatureV4 } from "@smithy/signature-v4";
import { HttpRequest } from "@smithy/protocol-http";
import { Sha256 } from "@aws-crypto/sha256-js";
import { supportsInlayImage, writeInlayImage } from "./files/inlays";
import { setInlayAsset, supportsInlayImage, writeInlayImage } from "./files/inlays";
import { Capacitor } from "@capacitor/core";
import { getFreeOpenRouterModel } from "../model/openrouter";
import { runTransformers } from "./transformers";
@@ -2167,6 +2167,12 @@ async function requestGoogleCloudVertex(arg:RequestDataArgumentExtended):Promise
delete body.systemInstruction
}
if(arg.modelInfo.flags.includes(LLMFlags.hasAudioOutput)){
body.generation_config.responseModalities = [
'TEXT', 'AUDIO'
]
arg.useStreaming = false
}
if(arg.imageResponse){
body.generation_config.responseModalities = [
'TEXT', 'IMAGE'
@@ -2515,11 +2521,26 @@ async function requestGoogleCloudVertex(arg:RequestDataArgumentExtended):Promise
if(part.inlineData){
const imgHTML = new Image()
const id = crypto.randomUUID()
imgHTML.src = `data:${part.inlineData.mimeType};base64,${part.inlineData.data}`
await writeInlayImage(imgHTML, {
id: id
})
rDatas[rDatas.length-1] += (`\n{{inlayeddata::${id}}}\n`)
if(part.inlineData.mimeType.startsWith('image/')){
imgHTML.src = `data:${part.inlineData.mimeType};base64,${part.inlineData.data}`
await writeInlayImage(imgHTML, {
id: id
})
rDatas[rDatas.length-1] += (`\n{{inlayeddata::${id}}}\n`)
}
else{
const id = v4()
await setInlayAsset(id, {
name: 'gemini-audio',
type: 'audio',
data: `data:${part.inlineData.mimeType};base64,${part.inlineData.data}`,
height: 0,
width: 0,
ext: part.inlineData.mimeType.split('/')[1],
})
}
}
}
}