diff --git a/src/background/index.mjs b/src/background/index.mjs
index 235e662..a396cc6 100644
--- a/src/background/index.mjs
+++ b/src/background/index.mjs
@@ -11,10 +11,12 @@ import {
} from '../services/apis/openai-api'
import { generateAnswersWithCustomApi } from '../services/apis/custom-api.mjs'
import { generateAnswersWithAzureOpenaiApi } from '../services/apis/azure-openai-api.mjs'
+import { generateAnswersWithClaudeApi } from '../services/apis/claude-api.mjs'
import { generateAnswersWithWaylaidwandererApi } from '../services/apis/waylaidwanderer-api.mjs'
import { generateAnswersWithPoeWebApi } from '../services/apis/poe-web.mjs'
import {
azureOpenAiApiModelKeys,
+ claudeApiModelKeys,
bardWebModelKeys,
bingWebModelKeys,
chatgptApiModelKeys,
@@ -111,6 +113,8 @@ async function executeApi(session, port, config) {
await generateAnswersWithCustomApi(port, session.question, session, '', config.customModelName)
} else if (azureOpenAiApiModelKeys.includes(session.modelName)) {
await generateAnswersWithAzureOpenaiApi(port, session.question, session)
+ } else if (claudeApiModelKeys.includes(session.modelName)) {
+ await generateAnswersWithClaudeApi(port, session.question, session)
} else if (githubThirdPartyApiModelKeys.includes(session.modelName)) {
await generateAnswersWithWaylaidwandererApi(port, session.question, session)
} else if (poeWebModelKeys.includes(session.modelName)) {
diff --git a/src/config/index.mjs b/src/config/index.mjs
index 31c3092..ba6955d 100644
--- a/src/config/index.mjs
+++ b/src/config/index.mjs
@@ -44,6 +44,7 @@ export const chatgptApiModelKeys = [
]
export const customApiModelKeys = ['customModel']
export const azureOpenAiApiModelKeys = ['azureOpenAi']
+export const claudeApiModelKeys = ['claude2Api']
export const githubThirdPartyApiModelKeys = ['waylaidwandererApi']
export const poeWebModelKeys = [
'poeAiWebSage', //poe.com/Assistant
@@ -83,6 +84,7 @@ export const Models = {
desc: 'ChatGPT (GPT-3.5-turbo-16k 0613)',
},
claude2WebFree: { value: 'claude-2', desc: 'Claude.ai (Web, Claude 2)' },
+ claude2Api: { value: '', desc: 'Claude.ai (API, Claude 2)' },
bingFree4: { value: '', desc: 'Bing (Web, GPT-4)' },
bingFreeSydney: { value: '', desc: 'Bing (Web, GPT-4, Sydney)' },
bardWebFree: { value: '', desc: 'Bard (Web)' },
@@ -149,6 +151,7 @@ export const defaultConfig = {
poeCustomBotName: '',
+ claudeApiKey: '',
/** @type {keyof ModelMode}*/
modelMode: 'balanced',
@@ -175,6 +178,7 @@ export const defaultConfig = {
alwaysCreateNewConversationWindow: false,
activeApiModes: [
+ // 'claude2Api',
'chatgptFree35',
'chatgptFree35Mobile',
// 'chatgptPlus4',
@@ -288,6 +292,9 @@ export function isUsingAzureOpenAi(configOrSession) {
return azureOpenAiApiModelKeys.includes(configOrSession.modelName)
}
+export function isUsingClaude2Api(configOrSession) {
+ return claudeApiModelKeys.includes(configOrSession.modelName)
+}
export function isUsingGithubThirdPartyApi(configOrSession) {
return githubThirdPartyApiModelKeys.includes(configOrSession.modelName)
}
diff --git a/src/popup/sections/GeneralPart.jsx b/src/popup/sections/GeneralPart.jsx
index 27b0d1b..e14406a 100644
--- a/src/popup/sections/GeneralPart.jsx
+++ b/src/popup/sections/GeneralPart.jsx
@@ -4,6 +4,7 @@ import { openUrl } from '../../utils/index.mjs'
import {
isUsingApiKey,
isUsingAzureOpenAi,
+ isUsingClaude2Api,
isUsingCustomModel,
isUsingCustomNameOnlyModel,
isUsingGithubThirdPartyApi,
@@ -142,6 +143,7 @@ export function GeneralPart({ config, updateConfig }) {
isUsingMultiModeModel(config) ||
isUsingCustomModel(config) ||
isUsingAzureOpenAi(config) ||
+ isUsingClaude2Api(config) ||
isUsingCustomNameOnlyModel(config)
? 'width: 50%;'
: undefined
@@ -259,6 +261,18 @@ export function GeneralPart({ config, updateConfig }) {
}}
/>
)}
+ {isUsingClaude2Api(config) && (
+ {
+ const apiKey = e.target.value
+ updateConfig({ claudeApiKey: apiKey })
+ }}
+ />
+ )}
{isUsingCustomModel(config) && (
({}))
+ throw new Error(
+ !isEmpty(error) ? JSON.stringify(error) : `${resp.status} ${resp.statusText}`,
+ )
+ },
+ },
+ )
+}