[feat] openrouter apis
This commit is contained in:
@@ -350,4 +350,5 @@ export const languageEnglish = {
|
|||||||
animationSpeed: "Animation Speed",
|
animationSpeed: "Animation Speed",
|
||||||
screenshot: "Screenshot",
|
screenshot: "Screenshot",
|
||||||
screenshotSaved: "Screenshot Saved",
|
screenshotSaved: "Screenshot Saved",
|
||||||
|
inputBotGenerationPrompt: "Input Bot Generation Prompt",
|
||||||
}
|
}
|
||||||
@@ -339,7 +339,7 @@
|
|||||||
class="mr-2 bg-gray-500 flex justify-center items-center text-white w-12 h-12 rounded-md hover:bg-green-500 transition-colors"><MenuIcon />
|
class="mr-2 bg-gray-500 flex justify-center items-center text-white w-12 h-12 rounded-md hover:bg-green-500 transition-colors"><MenuIcon />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{#if $DataBase.useAutoTranslateInput && $DataBase.useExperimental}
|
{#if $DataBase.useAutoTranslateInput}
|
||||||
<div class="flex items-center mt-2 mb-2 w-full">
|
<div class="flex items-center mt-2 mb-2 w-full">
|
||||||
<label for='messageInputTranslate' class="text-neutral-200 ml-4">
|
<label for='messageInputTranslate' class="text-neutral-200 ml-4">
|
||||||
<LanguagesIcon />
|
<LanguagesIcon />
|
||||||
|
|||||||
@@ -18,6 +18,7 @@
|
|||||||
import Button from "src/lib/UI/GUI/Button.svelte";
|
import Button from "src/lib/UI/GUI/Button.svelte";
|
||||||
import SelectInput from "src/lib/UI/GUI/SelectInput.svelte";
|
import SelectInput from "src/lib/UI/GUI/SelectInput.svelte";
|
||||||
import OptionInput from "src/lib/UI/GUI/OptionInput.svelte";
|
import OptionInput from "src/lib/UI/GUI/OptionInput.svelte";
|
||||||
|
import { openRouterModels } from "src/ts/model/openrouter";
|
||||||
|
|
||||||
let tokens = {
|
let tokens = {
|
||||||
mainPrompt: 0,
|
mainPrompt: 0,
|
||||||
@@ -145,18 +146,30 @@
|
|||||||
<TextInput marginBottom={false} size={"sm"} bind:value={$DataBase.openrouterKey} />
|
<TextInput marginBottom={false} size={"sm"} bind:value={$DataBase.openrouterKey} />
|
||||||
|
|
||||||
<span class="text-neutral-200 mt-4">Openrouter Model</span>
|
<span class="text-neutral-200 mt-4">Openrouter Model</span>
|
||||||
<SelectInput className="mt-2 mb-4" bind:value={$DataBase.openrouterRequestModel}>
|
{#await openRouterModels()}
|
||||||
<OptionInput value="openai/gpt-3.5-turbo">GPT 3.5</OptionInput>
|
<SelectInput className="mt-2 mb-4" value="">
|
||||||
<OptionInput value="openai/gpt-3.5-turbo-16k">GPT 3.5 16k</OptionInput>
|
<OptionInput value="">Loading..</OptionInput>
|
||||||
<OptionInput value="openai/gpt-4">GPT-4</OptionInput>
|
</SelectInput>
|
||||||
<OptionInput value="openai/gpt-4-32k">GPT-4 32k</OptionInput>
|
{:then m}
|
||||||
<OptionInput value="anthropic/claude-2">Claude 2</OptionInput>
|
<SelectInput className="mt-2 mb-4" bind:value={$DataBase.openrouterRequestModel}>
|
||||||
<OptionInput value="anthropic/claude-instant-v1">Claude Instant v1</OptionInput>
|
{#if (!m) || (m.length === 0)}
|
||||||
<OptionInput value="anthropic/claude-instant-v1-100k">Claude Instant v1 100k</OptionInput>
|
<OptionInput value="openai/gpt-3.5-turbo">GPT 3.5</OptionInput>
|
||||||
<OptionInput value="anthropic/claude-v1">Claude v1</OptionInput>
|
<OptionInput value="openai/gpt-3.5-turbo-16k">GPT 3.5 16k</OptionInput>
|
||||||
<OptionInput value="anthropic/claude-v1-100k">Claude v1 100k</OptionInput>
|
<OptionInput value="openai/gpt-4">GPT-4</OptionInput>
|
||||||
<OptionInput value="anthropic/claude-1.2">Claude v1.2</OptionInput>
|
<OptionInput value="openai/gpt-4-32k">GPT-4 32k</OptionInput>
|
||||||
</SelectInput>
|
<OptionInput value="anthropic/claude-2">Claude 2</OptionInput>
|
||||||
|
<OptionInput value="anthropic/claude-instant-v1">Claude Instant v1</OptionInput>
|
||||||
|
<OptionInput value="anthropic/claude-instant-v1-100k">Claude Instant v1 100k</OptionInput>
|
||||||
|
<OptionInput value="anthropic/claude-v1">Claude v1</OptionInput>
|
||||||
|
<OptionInput value="anthropic/claude-v1-100k">Claude v1 100k</OptionInput>
|
||||||
|
<OptionInput value="anthropic/claude-1.2">Claude v1.2</OptionInput>
|
||||||
|
{:else}
|
||||||
|
{#each m as model}
|
||||||
|
<OptionInput value={model}>{model}</OptionInput>
|
||||||
|
{/each}
|
||||||
|
{/if}
|
||||||
|
</SelectInput>
|
||||||
|
{/await}
|
||||||
{/if}
|
{/if}
|
||||||
{#if $DataBase.aiModel.startsWith('gpt') || $DataBase.subModel.startsWith('gpt')}
|
{#if $DataBase.aiModel.startsWith('gpt') || $DataBase.subModel.startsWith('gpt')}
|
||||||
<span class="text-neutral-200">OpenAI {language.apiKey} <Help key="oaiapikey"/></span>
|
<span class="text-neutral-200">OpenAI {language.apiKey} <Help key="oaiapikey"/></span>
|
||||||
|
|||||||
@@ -37,7 +37,7 @@
|
|||||||
import { v4 } from "uuid";
|
import { v4 } from "uuid";
|
||||||
import { checkCharOrder } from "src/ts/storage/globalApi";
|
import { checkCharOrder } from "src/ts/storage/globalApi";
|
||||||
import { doingChat } from "src/ts/process";
|
import { doingChat } from "src/ts/process";
|
||||||
import { BotCreator } from "src/ts/copyright/creator";
|
import { BotCreator } from "src/ts/creation/creator";
|
||||||
import Button from "../UI/GUI/Button.svelte";
|
import Button from "../UI/GUI/Button.svelte";
|
||||||
import { fly } from "svelte/transition";
|
import { fly } from "svelte/transition";
|
||||||
let openPresetList = false;
|
let openPresetList = false;
|
||||||
|
|||||||
@@ -27,7 +27,7 @@
|
|||||||
<label
|
<label
|
||||||
class="flex items-center space-x-2 cursor-pointer text-white"
|
class="flex items-center space-x-2 cursor-pointer text-white"
|
||||||
class:mr-2={margin}
|
class:mr-2={margin}
|
||||||
aria-describedby="{name}"
|
aria-describedby="{name} {check ? 'abled' : 'disabled'}"
|
||||||
>
|
>
|
||||||
<input
|
<input
|
||||||
class="hidden"
|
class="hidden"
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import { CCLicenseData } from "src/ts/copyright/license";
|
import { CCLicenseData } from "src/ts/creation/license";
|
||||||
import { tooltip } from "src/ts/gui/tooltip";
|
import { tooltip } from "src/ts/gui/tooltip";
|
||||||
import { openURL } from "src/ts/storage/globalApi";
|
import { openURL } from "src/ts/storage/globalApi";
|
||||||
|
|
||||||
|
|||||||
@@ -85,7 +85,7 @@
|
|||||||
import TextAreaInput from "../GUI/TextAreaInput.svelte";
|
import TextAreaInput from "../GUI/TextAreaInput.svelte";
|
||||||
import Button from "../GUI/Button.svelte";
|
import Button from "../GUI/Button.svelte";
|
||||||
import SelectInput from "../GUI/SelectInput.svelte";
|
import SelectInput from "../GUI/SelectInput.svelte";
|
||||||
import { CCLicenseData } from "src/ts/copyright/license";
|
import { CCLicenseData } from "src/ts/creation/license";
|
||||||
import OptionInput from "../GUI/OptionInput.svelte";
|
import OptionInput from "../GUI/OptionInput.svelte";
|
||||||
export let close = () => {}
|
export let close = () => {}
|
||||||
export let char:character
|
export let char:character
|
||||||
|
|||||||
@@ -200,7 +200,7 @@ async function createBotFromWebMain(prompt:string):Promise<{ ok: false; data:str
|
|||||||
content: rqv
|
content: rqv
|
||||||
},{
|
},{
|
||||||
role: 'system',
|
role: 'system',
|
||||||
content: "\n\n*Name*:\n*Age*:\n*gender*: \n*race*:\n*Hair style, color*:\n*color, shape of eye*:\n*Personality*:\n*Dress*:\n*Height (cm)*:\n*weight(kg)*:\n*Job*:\n*Specialty*:\n*Features*: \n*Likes*:\n*Dislikes*:\n*Character's background*: \n\n[[This is a format that you must convert to. output the latest information If there is older information. If it is unknown, output as unknown. only output the converted result. now, output the converted result.]]"
|
content: "\n\n*Name*:\n*Age*:\n*gender*: \n*race*:\n*Hair style, color*:\n*color, shape of eye*:\n*Personality*:\n*Dress*:\n*Height (cm)*:\n*weight(kg)*:\n*Job*:\n*Specialty*:\n*Features*: \n*Likes*:\n*Dislikes*:\n*Character's background*: \n*Other informations*: \n\n[[This is a format that you must convert to. output the latest information If there is older information. If it is unknown, output as unknown. only output the converted result. now, output the converted result.]]"
|
||||||
}],
|
}],
|
||||||
maxTokens: 600,
|
maxTokens: 600,
|
||||||
temperature: 0,
|
temperature: 0,
|
||||||
@@ -230,6 +230,14 @@ async function createBotFromWebMain(prompt:string):Promise<{ ok: false; data:str
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async function createBotByAI() {
|
||||||
|
let search = await alertInput(language.inputBotGenerationPrompt)
|
||||||
|
if(search.length < 3){
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
async function createFirstMsg(charDesc:string) {
|
async function createFirstMsg(charDesc:string) {
|
||||||
const v = await requestChatData({
|
const v = await requestChatData({
|
||||||
formated: [{
|
formated: [{
|
||||||
11
src/ts/model/openrouter.ts
Normal file
11
src/ts/model/openrouter.ts
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
export async function openRouterModels() {
|
||||||
|
try {
|
||||||
|
const aim = fetch("https://openrouter.ai/api/v1/models")
|
||||||
|
const res = await (await aim).json()
|
||||||
|
return res.data.map((v:any) => {
|
||||||
|
return v.id
|
||||||
|
})
|
||||||
|
} catch (error) {
|
||||||
|
return []
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user