From 77c09526359faacac2a6c7cdc2d3bc8ade22f611 Mon Sep 17 00:00:00 2001 From: kangfenmao Date: Tue, 13 Aug 2024 18:02:00 +0800 Subject: [PATCH] feat: add stepfun provider --- .../src/assets/images/models/step.jpg | Bin 0 -> 6388 bytes .../src/assets/images/providers/stepfun.png | Bin 0 -> 6221 bytes src/renderer/src/config/models.ts | 16 +++++++++++++++ src/renderer/src/config/provider.ts | 19 +++++++++++++++++- src/renderer/src/hooks/useTopic.ts | 4 ++++ src/renderer/src/i18n/index.ts | 6 ++++-- src/renderer/src/pages/home/Messages.tsx | 6 ++++-- src/renderer/src/store/llm.ts | 17 ++++++++++++---- src/renderer/src/store/migrate.ts | 9 +++++++++ 9 files changed, 68 insertions(+), 9 deletions(-) create mode 100644 src/renderer/src/assets/images/models/step.jpg create mode 100644 src/renderer/src/assets/images/providers/stepfun.png diff --git a/src/renderer/src/assets/images/models/step.jpg b/src/renderer/src/assets/images/models/step.jpg new file mode 100644 index 0000000000000000000000000000000000000000..404ff226fafba3fa023afccd861723f648d1d4ee GIT binary patch literal 6388 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 literal 0 HcmV?d00001 diff --git a/src/renderer/src/assets/images/providers/stepfun.png b/src/renderer/src/assets/images/providers/stepfun.png new file mode 100644 index 0000000000000000000000000000000000000000..ae77e540c2a03dda45f1777e4df50422209eec21 GIT binary patch literal 6221 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 literal 0 HcmV?d00001 diff --git a/src/renderer/src/config/models.ts b/src/renderer/src/config/models.ts index c8569bf8..023632c7 100644 --- a/src/renderer/src/config/models.ts +++ b/src/renderer/src/config/models.ts @@ -336,6 +336,22 @@ export const SYSTEM_MODELS: Record = { enabled: true } ], + stepfun: [ + { + id: 'step-1-8k', + provider: 'stepfun', + name: 'Step 1 8K', + group: 'Step 1', + enabled: true + }, + { + id: 'step-1-flash', + provider: 'stepfun', + name: 'Step 1 Flash', + group: 'Step 1', + enabled: true + } + ], aihubmix: [ { id: 'gpt-4o-mini', diff --git a/src/renderer/src/config/provider.ts b/src/renderer/src/config/provider.ts index 6d912179..ac33db57 100644 --- a/src/renderer/src/config/provider.ts +++ b/src/renderer/src/config/provider.ts @@ -11,6 +11,7 @@ import MicrosoftModelLogo from '@renderer/assets/images/models/microsoft.png' import MixtralModelLogo from '@renderer/assets/images/models/mixtral.jpeg' import PalmModelLogo from '@renderer/assets/images/models/palm.svg' import QwenModelLogo from '@renderer/assets/images/models/qwen.png' +import StepModelLogo from '@renderer/assets/images/models/step.jpg' import YiModelLogo from '@renderer/assets/images/models/yi.svg' import AiHubMixProviderLogo from '@renderer/assets/images/providers/aihubmix.jpg' import AnthropicProviderLogo from '@renderer/assets/images/providers/anthropic.jpeg' @@ -25,6 +26,7 @@ import OllamaProviderLogo from '@renderer/assets/images/providers/ollama.png' import OpenAiProviderLogo from '@renderer/assets/images/providers/openai.jpeg' import OpenRouterProviderLogo from '@renderer/assets/images/providers/openrouter.png' import SiliconFlowProviderLogo from '@renderer/assets/images/providers/silicon.png' +import StepFunProviderLogo from '@renderer/assets/images/providers/stepfun.png' import YiProviderLogo from '@renderer/assets/images/providers/yi.svg' import ZhipuProviderLogo from '@renderer/assets/images/providers/zhipu.png' @@ -58,6 +60,8 @@ export function getProviderLogo(providerId: string) { return AiHubMixProviderLogo case 'gemini': return GeminiProviderLogo + case 'stepfun': + return StepFunProviderLogo default: return undefined } @@ -85,7 +89,8 @@ export function getModelLogo(modelId: string) { gemini: GeminiModelLogo, embedding: EmbeddingModelLogo, bison: PalmModelLogo, - palm: PalmModelLogo + palm: PalmModelLogo, + step: StepModelLogo } for (const key in logoMap) { @@ -264,5 +269,17 @@ export const PROVIDER_CONFIG = { docs: 'https://ai.google.dev/gemini-api/docs', models: 'https://ai.google.dev/gemini-api/docs/models/gemini' } + }, + stepfun: { + api: { + url: 'https://api.stepfun.com', + editable: false + }, + websites: { + official: 'https://platform.stepfun.com/', + apiKey: 'https://platform.stepfun.com/interface-key', + docs: 'https://platform.stepfun.com/docs/overview/concept', + models: 'https://platform.stepfun.com/docs/llm/text' + } } } diff --git a/src/renderer/src/hooks/useTopic.ts b/src/renderer/src/hooks/useTopic.ts index 3bf2fa24..7704aa56 100644 --- a/src/renderer/src/hooks/useTopic.ts +++ b/src/renderer/src/hooks/useTopic.ts @@ -16,3 +16,7 @@ export function useActiveTopic(assistant: Assistant) { return { activeTopic, setActiveTopic } } + +export function getTopic(assistant: Assistant, topicId: string) { + return assistant?.topics.find((topic) => topic.id === topicId) +} diff --git a/src/renderer/src/i18n/index.ts b/src/renderer/src/i18n/index.ts index fe22c8c0..899ef148 100644 --- a/src/renderer/src/i18n/index.ts +++ b/src/renderer/src/i18n/index.ts @@ -118,7 +118,8 @@ const resources = { baichuan: 'Baichuan', dashscope: 'DashScope', anthropic: 'Anthropic', - aihubmix: 'AiHubMix' + aihubmix: 'AiHubMix', + stepfun: 'StepFun' }, settings: { title: 'Settings', @@ -336,7 +337,8 @@ const resources = { baichuan: '百川', dashscope: '阿里云灵积', anthropic: 'Anthropic', - aihubmix: 'AiHubMix' + aihubmix: 'AiHubMix', + stepfun: '阶跃星辰' }, settings: { title: '设置', diff --git a/src/renderer/src/pages/home/Messages.tsx b/src/renderer/src/pages/home/Messages.tsx index b7018b52..9a6720f2 100644 --- a/src/renderer/src/pages/home/Messages.tsx +++ b/src/renderer/src/pages/home/Messages.tsx @@ -1,5 +1,6 @@ import { useAssistant } from '@renderer/hooks/useAssistant' import { useProviderByAssistant } from '@renderer/hooks/useProvider' +import { getTopic } from '@renderer/hooks/useTopic' import { fetchChatCompletion, fetchMessagesSummary } from '@renderer/services/api' import { EVENT_NAMES, EventEmitter } from '@renderer/services/event' import { estimateHistoryTokenCount, filterMessages } from '@renderer/services/messages' @@ -50,9 +51,10 @@ const Messages: FC = ({ assistant, topic }) => { ) const autoRenameTopic = useCallback(async () => { - if (topic.name === t('chat.default.topic.name') && messages.length >= 2) { + const _topic = getTopic(assistant, topic.id) + if (_topic && _topic.name === t('chat.default.topic.name') && messages.length >= 2) { const summaryText = await fetchMessagesSummary({ messages, assistant }) - summaryText && updateTopic({ ...topic, name: summaryText }) + summaryText && updateTopic({ ..._topic, name: summaryText }) } }, [assistant, messages, topic, updateTopic]) diff --git a/src/renderer/src/store/llm.ts b/src/renderer/src/store/llm.ts index a8ad36cc..86bc5b24 100644 --- a/src/renderer/src/store/llm.ts +++ b/src/renderer/src/store/llm.ts @@ -104,11 +104,11 @@ const initialState: LlmState = { enabled: false }, { - id: 'anthropic', - name: 'Anthropic', + id: 'stepfun', + name: 'StepFun', apiKey: '', - apiHost: 'https://api.anthropic.com/', - models: SYSTEM_MODELS.anthropic.filter((m) => m.enabled), + apiHost: 'https://api.stepfun.com', + models: SYSTEM_MODELS.stepfun.filter((m) => m.enabled), isSystem: true, enabled: false }, @@ -139,6 +139,15 @@ const initialState: LlmState = { isSystem: true, enabled: false }, + { + id: 'anthropic', + name: 'Anthropic', + apiKey: '', + apiHost: 'https://api.anthropic.com/', + models: SYSTEM_MODELS.anthropic.filter((m) => m.enabled), + isSystem: true, + enabled: false + }, { id: 'ollama', name: 'Ollama', diff --git a/src/renderer/src/store/migrate.ts b/src/renderer/src/store/migrate.ts index b678ab6a..a6bb4b6c 100644 --- a/src/renderer/src/store/migrate.ts +++ b/src/renderer/src/store/migrate.ts @@ -312,6 +312,15 @@ const migrateConfig = { models: SYSTEM_MODELS.gemini.filter((m) => m.enabled), isSystem: true, enabled: false + }, + { + id: 'stepfun', + name: 'StepFun', + apiKey: '', + apiHost: 'https://api.stepfun.com', + models: SYSTEM_MODELS.stepfun.filter((m) => m.enabled), + isSystem: true, + enabled: false } ] }