From ad4f52239b58d51db6180d35491e0f79ac0f58e3 Mon Sep 17 00:00:00 2001 From: kwaroran Date: Thu, 20 Mar 2025 12:08:34 +0900 Subject: [PATCH] Add OAI response API --- src/lang/en.ts | 1 + src/lib/Setting/Pages/BotSettings.svelte | 12 ++ src/ts/model/modellist.ts | 18 ++- src/ts/process/request.ts | 162 +++++++++++++++++++++++ src/ts/storage/database.svelte.ts | 5 + t.py | 29 ++++ 6 files changed, 226 insertions(+), 1 deletion(-) create mode 100644 t.py diff --git a/src/lang/en.ts b/src/lang/en.ts index 9f64d919..530eab03 100644 --- a/src/lang/en.ts +++ b/src/lang/en.ts @@ -1078,4 +1078,5 @@ export const languageEnglish = { seperateModelsForAxModels: "Seperate Models for Auxiliary Models", axModelsDef: "Ax Models Definition", doNotChangeSeperateModels: "Do Not Change Seperate Models", + tools: "Tools", } diff --git a/src/lib/Setting/Pages/BotSettings.svelte b/src/lib/Setting/Pages/BotSettings.svelte index 86527e00..597c0d91 100644 --- a/src/lib/Setting/Pages/BotSettings.svelte +++ b/src/lib/Setting/Pages/BotSettings.svelte @@ -30,6 +30,7 @@ import { getModelInfo, LLMFlags, LLMFormat, LLMProvider } from "src/ts/model/modellist"; import CheckInput from "src/lib/UI/GUI/CheckInput.svelte"; import RegexList from "src/lib/SideBars/Scripts/RegexList.svelte"; + import { includes } from "lodash"; let tokens = $state({ mainPrompt: 0, @@ -653,6 +654,17 @@ + + + { + if(DBState.db.modelTools.includes('search')){ + DBState.db.modelTools = DBState.db.modelTools.filter((tool) => tool !== 'search') + } + else{ + DBState.db.modelTools.push('search') + } + }} /> + diff --git a/src/ts/model/modellist.ts b/src/ts/model/modellist.ts index 9fb1e68e..c75163c6 100644 --- a/src/ts/model/modellist.ts +++ b/src/ts/model/modellist.ts @@ -62,7 +62,8 @@ export enum LLMFormat{ Kobold, Ollama, Horde, - AWSBedrockClaude + AWSBedrockClaude, + OpenAIResponseAPI } export enum LLMTokenizer{ @@ -1391,6 +1392,21 @@ for(let model of LLMModels){ model.fullName ??= model.provider !== LLMProvider.AsIs ? `${ProviderNames.get(model.provider) ?? ''} ${model.name}`.trim() : model.name } +for(let i=0; i{ + + const formated = arg.formated + const db = getDatabase() + const aiModel = arg.aiModel + const maxTokens = arg.maxTokens + + const items:OAIResponseItem[] = [] + + for(let i=0;i m.type === 'message') as OAIResponseOutputItem)?.content?.find(m => m.type === 'output_text')?.text + + if(!text){ + return { + type: 'fail', + result: JSON.stringify(response.data) + } + } + return { + type: 'success', + result: text + } + + +} async function requestNovelAI(arg:RequestDataArgumentExtended):Promise{ const formated = arg.formated const db = getDatabase() diff --git a/src/ts/storage/database.svelte.ts b/src/ts/storage/database.svelte.ts index 20b0aa1b..4c860504 100644 --- a/src/ts/storage/database.svelte.ts +++ b/src/ts/storage/database.svelte.ts @@ -496,6 +496,7 @@ export function setDatabase(data:Database){ model: data.hypaCustomSettings?.model ?? "", } data.doNotChangeSeperateModels ??= false + data.modelTools ??= [] changeLanguage(data.language) setDatabaseLite(data) } @@ -941,6 +942,7 @@ export interface Database{ otherAx: string } doNotChangeSeperateModels:boolean + modelTools: string[] } interface SeparateParameters{ @@ -1283,6 +1285,7 @@ export interface botPreset{ translate: string otherAx: string } + modelTools?:string[] } @@ -1602,6 +1605,7 @@ export function saveCurrentPreset(){ outputImageModal: db.outputImageModal ?? false, seperateModelsForAxModels: db.doNotChangeSeperateModels ? false : db.seperateModelsForAxModels ?? false, seperateModels: db.doNotChangeSeperateModels ? null : safeStructuredClone(db.seperateModels), + modelTools: safeStructuredClone(db.modelTools), } db.botPresets = pres setDatabase(db) @@ -1723,6 +1727,7 @@ export function setPreset(db:Database, newPres: botPreset){ otherAx: '' } } + db.modelTools = safeStructuredClone(newPres.modelTools ?? []) return db } diff --git a/t.py b/t.py new file mode 100644 index 00000000..08d94a09 --- /dev/null +++ b/t.py @@ -0,0 +1,29 @@ + +En2De = { + "hello": "Hallo", + "world": "Welt", + "python": "Python", + "is": "ist", + "a": "ein", + "programming": "Programmier", + "language": "Sprache", + "that": "das", + "lets": "lässt", + "you": "dich", + "work": "arbeiten", + "quickly": "schnell", + "and": "und", + "integrate": "integrieren", + "systems": "Systeme", + "more": "mehr", + "effectively": "effektiv", +} + +def translate(text): + return " ".join(En2De.get(word, word) for word in text.split()) + +if __name__ == "__main__": + text = "hello world python is a programming language that lets you work quickly and integrate systems more effectively" + print(translate(text)) + +