From e2ec8ac2e6dcccf86db9da99992bab0c6677f10c Mon Sep 17 00:00:00 2001 From: josc146 Date: Sat, 23 Mar 2024 16:08:04 +0800 Subject: [PATCH] claude 3 api support (#642) --- src/config/index.mjs | 21 ++++++++++++-- src/popup/sections/GeneralPart.jsx | 6 ++-- src/services/apis/claude-api.mjs | 44 ++++++++++++++---------------- 3 files changed, 41 insertions(+), 30 deletions(-) diff --git a/src/config/index.mjs b/src/config/index.mjs index 269721d..1a4deb5 100644 --- a/src/config/index.mjs +++ b/src/config/index.mjs @@ -48,7 +48,14 @@ export const chatgptApiModelKeys = [ ] export const customApiModelKeys = ['customModel'] export const azureOpenAiApiModelKeys = ['azureOpenAi'] -export const claudeApiModelKeys = ['claude2Api'] +export const claudeApiModelKeys = [ + 'claude12Api', + 'claude2Api', + 'claude21Api', + 'claude3HaikuApi', + 'claude3SonnetApi', + 'claude3OpusApi', +] export const chatglmApiModelKeys = ['chatglmTurbo'] export const githubThirdPartyApiModelKeys = ['waylaidwandererApi'] export const poeWebModelKeys = [ @@ -101,7 +108,15 @@ export const Models = { }, claude2WebFree: { value: '', desc: 'Claude.ai (Web)' }, - claude2Api: { value: '', desc: 'Claude.ai (API, Claude 2)' }, + claude12Api: { value: 'claude-instant-1.2', desc: 'Claude.ai (API, Claude Instant 1.2)' }, + claude2Api: { value: 'claude-2.0', desc: 'Claude.ai (API, Claude 2)' }, + claude21Api: { value: 'claude-2.1', desc: 'Claude.ai (API, Claude 2.1)' }, + claude3HaikuApi: { + value: 'claude-3-haiku-20240307', + desc: 'Claude.ai (API, Claude 3 Haiku)', + }, + claude3SonnetApi: { value: 'claude-3-sonnet-20240229', desc: 'Claude.ai (API, Claude 3 Sonnet)' }, + claude3OpusApi: { value: 'claude-3-opus-20240229', desc: 'Claude.ai (API, Claude 3 Opus)' }, bingFree4: { value: '', desc: 'Bing (Web, GPT-4)' }, bingFreeSydney: { value: '', desc: 'Bing (Web, GPT-4, Sydney)' }, @@ -343,7 +358,7 @@ export function isUsingAzureOpenAi(configOrSession) { return azureOpenAiApiModelKeys.includes(configOrSession.modelName) } -export function isUsingClaude2Api(configOrSession) { +export function isUsingClaudeApi(configOrSession) { return claudeApiModelKeys.includes(configOrSession.modelName) } diff --git a/src/popup/sections/GeneralPart.jsx b/src/popup/sections/GeneralPart.jsx index 0dfa5fd..750c762 100644 --- a/src/popup/sections/GeneralPart.jsx +++ b/src/popup/sections/GeneralPart.jsx @@ -5,7 +5,7 @@ import { isUsingOpenAiApiKey, isUsingAzureOpenAi, isUsingChatGLMApi, - isUsingClaude2Api, + isUsingClaudeApi, isUsingCustomModel, isUsingCustomNameOnlyModel, isUsingGithubThirdPartyApi, @@ -145,7 +145,7 @@ export function GeneralPart({ config, updateConfig }) { isUsingMultiModeModel(config) || isUsingCustomModel(config) || isUsingAzureOpenAi(config) || - isUsingClaude2Api(config) || + isUsingClaudeApi(config) || isUsingCustomNameOnlyModel(config) || isUsingMoonshotApi(config) ? 'width: 50%;' @@ -264,7 +264,7 @@ export function GeneralPart({ config, updateConfig }) { }} /> )} - {isUsingClaude2Api(config) && ( + {isUsingClaudeApi(config) && (