diff --git a/src/lib/Setting/Pages/BotSettings.svelte b/src/lib/Setting/Pages/BotSettings.svelte
index 700d719e..92f2c597 100644
--- a/src/lib/Setting/Pages/BotSettings.svelte
+++ b/src/lib/Setting/Pages/BotSettings.svelte
@@ -79,6 +79,13 @@
$DataBase.maxContext = 4000
$DataBase.maxResponse = 500
}
+ else if(v.startsWith('claude')){
+ $DataBase.maxContext = 7500
+ $DataBase.maxResponse = 500
+ if(v.endsWith('100k')){
+ $DataBase.maxContext = 99500
+ }
+ }
else{
$DataBase.maxContext = 1500
$DataBase.maxResponse = 200
@@ -94,6 +101,11 @@
Palm2 {language.apiKey}
{/if}
+
+{#if $DataBase.aiModel.startsWith('claude') || $DataBase.subModel.startsWith('claude')}
+ Claude {language.apiKey}
+
+{/if}
{#if $DataBase.aiModel === 'gpt35' || $DataBase.aiModel === 'gpt4' || $DataBase.subModel === 'gpt4' || $DataBase.subModel === 'gpt35'|| $DataBase.aiModel === 'gpt4_32k' || $DataBase.subModel === 'gpt4_32k'}
OpenAI {language.apiKey}
diff --git a/src/lib/UI/ModelList.svelte b/src/lib/UI/ModelList.svelte
index fb89d73a..ddcd9d8a 100644
--- a/src/lib/UI/ModelList.svelte
+++ b/src/lib/UI/ModelList.svelte
@@ -31,7 +31,7 @@
if(name.startsWith("horde:::")){
return name.replace(":::", " ")
}
- return ''
+ return name
}
}
@@ -55,6 +55,12 @@
+
+
+
+
+
+
diff --git a/src/ts/process/request.ts b/src/ts/process/request.ts
index 14167231..7ebc7917 100644
--- a/src/ts/process/request.ts
+++ b/src/ts/process/request.ts
@@ -48,7 +48,8 @@ export async function requestChatDataMain(arg:requestDataArgument, model:'model'
const db = get(DataBase)
let result = ''
let formated = arg.formated
- let maxTokens = db.maxResponse
+ let maxTokens = arg.maxTokens ??db.maxResponse
+ let temperature = arg.temperature ?? (db.temperature / 100)
let bias = arg.bias
let currentChar = arg.currentChar
const replacer = model === 'model' ? db.forceReplaceUrl : db.forceReplaceUrl2
@@ -70,7 +71,7 @@ export async function requestChatDataMain(arg:requestDataArgument, model:'model'
model: aiModel === 'gpt35' ? 'gpt-3.5-turbo'
: aiModel === 'gpt4' ? 'gpt-4' : 'gpt-4-32k',
messages: formated,
- temperature: arg.temperature ?? (db.temperature / 100),
+ temperature: temperature,
max_tokens: arg.maxTokens ?? maxTokens,
presence_penalty: arg.PresensePenalty ?? (db.PresensePenalty / 100),
frequency_penalty: arg.frequencyPenalty ?? (db.frequencyPenalty / 100),
@@ -460,6 +461,65 @@ export async function requestChatDataMain(arg:requestDataArgument, model:'model'
}
}
default:{
+ if(aiModel.startsWith('claude')){
+ for(let i=0;i {
+ let prefix = ''
+ switch (v.role){
+ case "assistant":
+ prefix = "\n\nAssistant: "
+ break
+ case "user":
+ prefix = "\n\nHuman: "
+ break
+ case "system":
+ prefix = "\n\nSystem: "
+ break
+ }
+ return prefix + v.content
+ }).join('') + '\n\nAssistant: '
+
+ console.log(requestPrompt)
+
+ const da = await globalFetch('https://api.anthropic.com/v1/complete', {
+ method: "POST",
+ body: {
+ prompt : "\n\nHuman: " + requestPrompt,
+ model: aiModel,
+ max_tokens_to_sample: maxTokens,
+ stop_sequences: ["\n\nHuman:", "\n\nSystem:", "\n\nAssistant:"],
+ temperature: temperature,
+ },
+ headers: {
+ "Content-Type": "application/json",
+ "x-api-key": db.claudeAPIKey
+ }
+ })
+
+ if((!da.ok) || (da.data.error)){
+ return {
+ type: 'fail',
+ result: `${JSON.stringify(da.data)}`
+ }
+ }
+
+ const res = da.data
+
+ console.log(res)
+ return {
+ type: "success",
+ result: res.completion,
+ }
+
+ }
if(aiModel.startsWith("horde:::")){
const proompt = stringlizeChat(formated, currentChar?.name ?? '')
diff --git a/src/ts/storage/database.ts b/src/ts/storage/database.ts
index 7bcb1ec9..044901b9 100644
--- a/src/ts/storage/database.ts
+++ b/src/ts/storage/database.ts
@@ -500,7 +500,8 @@ export interface Database{
koboldURL:string
advancedBotSettings:boolean
useAutoSuggestions:boolean
- autoSuggestPrompt:string
+ autoSuggestPrompt:string,
+ claudeAPIKey:string
}
interface hordeConfig{