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}`, + ) + }, + }, + ) +}