diff --git a/src/renderer/src/i18n/locales/en-us.json b/src/renderer/src/i18n/locales/en-us.json index bbe77bbb..2c5b046d 100644 --- a/src/renderer/src/i18n/locales/en-us.json +++ b/src/renderer/src/i18n/locales/en-us.json @@ -6,6 +6,8 @@ "add.name.placeholder": "Enter name", "add.prompt": "Prompt", "add.prompt.placeholder": "Enter prompt", + "add.knowledge_base": "Knowledge Base", + "add.knowledge_base.placeholder": "Select Knowledge Base", "add.title": "Create Agent", "delete.popup.content": "Are you sure you want to delete this agent?", "edit.message.add.title": "Add", @@ -51,6 +53,7 @@ "settings.model": "Model Settings", "settings.preset_messages": "Preset Messages", "settings.prompt": "Prompt Settings", + "settings.knowledge_base": "Knowledge Base Settings", "title": "Assistants" }, "button": { @@ -134,6 +137,7 @@ "copy": "Copy", "cut": "Cut", "default": "Default", + "knowledge_base": "Knowledge Base", "delete": "Delete", "description": "Description", "docs": "Docs", diff --git a/src/renderer/src/i18n/locales/ja-jp.json b/src/renderer/src/i18n/locales/ja-jp.json index abeb2781..14845b85 100644 --- a/src/renderer/src/i18n/locales/ja-jp.json +++ b/src/renderer/src/i18n/locales/ja-jp.json @@ -6,6 +6,8 @@ "add.name.placeholder": "名前を入力", "add.prompt": "プロンプト", "add.prompt.placeholder": "プロンプトを入力", + "add.knowledge_base": "ナレッジベース", + "add.knowledge_base.placeholder": "ナレッジベースを選択", "add.title": "エージェントを作成", "delete.popup.content": "このエージェントを削除してもよろしいですか?", "edit.message.add.title": "追加", @@ -46,6 +48,7 @@ "settings.model": "モデル設定", "settings.preset_messages": "プリセットメッセージ", "settings.prompt": "プロンプト設定", + "settings.knowledge_base": "ナレッジベース設定", "title": "アシスタント" }, "button": { @@ -129,6 +132,7 @@ "copy": "コピー", "cut": "切り取り", "default": "デフォルト", + "knowledge_base": "ナレッジベース", "delete": "削除", "description": "説明", "docs": "ドキュメント", diff --git a/src/renderer/src/i18n/locales/ru-ru.json b/src/renderer/src/i18n/locales/ru-ru.json index d533a648..4bfdde00 100644 --- a/src/renderer/src/i18n/locales/ru-ru.json +++ b/src/renderer/src/i18n/locales/ru-ru.json @@ -6,6 +6,8 @@ "add.name.placeholder": "Введите имя", "add.prompt": "Промпт", "add.prompt.placeholder": "Введите промпт", + "add.knowledge_base": "База знаний", + "add.knowledge_base.placeholder": "Выберите базу знаний", "add.title": "Создать агента", "delete.popup.content": "Вы уверены, что хотите удалить этого агента?", "edit.message.add.title": "Добавить", @@ -46,6 +48,7 @@ "settings.model": "Настройки модели", "settings.preset_messages": "Предустановленные сообщения", "settings.prompt": "Настройки промптов", + "settings.knowledge_base": "Настройки базы знаний", "title": "Ассистенты" }, "button": { @@ -129,6 +132,7 @@ "copy": "Копировать", "cut": "Вырезать", "default": "По умолчанию", + "knowledge_base": "База знаний", "delete": "Удалить", "description": "Описание", "docs": "Документы", diff --git a/src/renderer/src/i18n/locales/zh-cn.json b/src/renderer/src/i18n/locales/zh-cn.json index a9c72405..a155dd72 100644 --- a/src/renderer/src/i18n/locales/zh-cn.json +++ b/src/renderer/src/i18n/locales/zh-cn.json @@ -6,6 +6,8 @@ "add.name.placeholder": "输入名称", "add.prompt": "提示词", "add.prompt.placeholder": "输入提示词", + "add.knowledge_base": "知识库", + "add.knowledge_base.placeholder": "选择知识库", "add.title": "创建智能体", "delete.popup.content": "确定要删除此智能体吗?", "edit.message.add.title": "添加", @@ -51,6 +53,7 @@ "settings.model": "模型设置", "settings.preset_messages": "预设消息", "settings.prompt": "提示词设置", + "settings.knowledge_base": "知识库设置", "title": "助手" }, "button": { @@ -134,6 +137,7 @@ "copy": "复制", "cut": "剪切", "default": "默认", + "knowledge_base": "知识库", "delete": "删除", "description": "描述", "docs": "文档", diff --git a/src/renderer/src/i18n/locales/zh-tw.json b/src/renderer/src/i18n/locales/zh-tw.json index 23ab18b4..78713eff 100644 --- a/src/renderer/src/i18n/locales/zh-tw.json +++ b/src/renderer/src/i18n/locales/zh-tw.json @@ -6,6 +6,8 @@ "add.name.placeholder": "輸入名稱", "add.prompt": "提示詞", "add.prompt.placeholder": "輸入提示詞", + "add.knowledge_base": "知識庫", + "add.knowledge_base.placeholder": "選擇知識庫", "add.title": "创建智能體", "delete.popup.content": "確定要刪除此智能體嗎?", "edit.message.add.title": "添加", @@ -51,6 +53,7 @@ "settings.model": "模型設定", "settings.preset_messages": "預設訊息", "settings.prompt": "提示詞設定", + "settings.knowledge_base": "知識庫設定", "title": "助手" }, "button": { @@ -134,6 +137,7 @@ "copy": "複製", "cut": "剪下", "default": "預設", + "knowledge_base": "知識庫", "delete": "刪除", "description": "描述", "docs": "文件", diff --git a/src/renderer/src/pages/agents/components/AddAgentPopup.tsx b/src/renderer/src/pages/agents/components/AddAgentPopup.tsx index e2f15b93..35e30c44 100644 --- a/src/renderer/src/pages/agents/components/AddAgentPopup.tsx +++ b/src/renderer/src/pages/agents/components/AddAgentPopup.tsx @@ -1,15 +1,16 @@ import 'emoji-picker-element' -import { LoadingOutlined, ThunderboltOutlined } from '@ant-design/icons' +import { CheckOutlined, LoadingOutlined, ThunderboltOutlined } from '@ant-design/icons' import EmojiPicker from '@renderer/components/EmojiPicker' import { TopView } from '@renderer/components/TopView' import { AGENT_PROMPT } from '@renderer/config/prompts' import { useAgents } from '@renderer/hooks/useAgents' import { fetchGenerate } from '@renderer/services/ApiService' import { getDefaultModel } from '@renderer/services/AssistantService' +import { useAppSelector } from '@renderer/store' import { Agent } from '@renderer/types' import { getLeadingEmoji, uuid } from '@renderer/utils' -import { Button, Form, FormInstance, Input, Modal, Popover } from 'antd' +import { Button, Form, FormInstance, Input, Modal, Popover, Select, SelectProps } from 'antd' import TextArea from 'antd/es/input/TextArea' import { useRef, useState } from 'react' import { useTranslation } from 'react-i18next' @@ -22,6 +23,7 @@ type FieldType = { id: string name: string prompt: string + knowledge_base_id: string } const PopupContainer: React.FC = ({ resolve }) => { @@ -32,6 +34,15 @@ const PopupContainer: React.FC = ({ resolve }) => { const formRef = useRef(null) const [emoji, setEmoji] = useState('') const [loading, setLoading] = useState(false) + const knowledgeState = useAppSelector((state) => state.knowledge) + const knowledgeOptions: SelectProps['options'] = [] + + knowledgeState.bases.forEach((base) => { + knowledgeOptions.push({ + label: base.name, + value: base.id + }) + }) const onFinish = (values: FieldType) => { const _emoji = emoji || getLeadingEmoji(values.name) @@ -43,6 +54,7 @@ const PopupContainer: React.FC = ({ resolve }) => { const _agent: Agent = { id: uuid(), name: values.name, + knowledge_base: knowledgeState.bases.find((t) => t.id === values.knowledge_base_id), emoji: _emoji, prompt: values.prompt, defaultModel: getDefaultModel(), @@ -133,6 +145,14 @@ const PopupContainer: React.FC = ({ resolve }) => { disabled={loading} /> + + } + options={knowledgeOptions} + onChange={(value) => onUpdate(value)} + /> + + ) +} + +const Container = styled.div` + display: flex; + flex: 1; + flex-direction: column; + overflow: hidden; + padding: 5px; +` + +export default AssistantKnowledgeBaseSettings diff --git a/src/renderer/src/pages/settings/AssistantSettings/index.tsx b/src/renderer/src/pages/settings/AssistantSettings/index.tsx index 49477b76..008ff9c5 100644 --- a/src/renderer/src/pages/settings/AssistantSettings/index.tsx +++ b/src/renderer/src/pages/settings/AssistantSettings/index.tsx @@ -8,6 +8,7 @@ import { useState } from 'react' import { useTranslation } from 'react-i18next' import styled from 'styled-components' +import AssistantKnowledgeBaseSettings from './AssistantKnowledgeBaseSettings' import AssistantMessagesSettings from './AssistantMessagesSettings' import AssistantModelSettings from './AssistantModelSettings' import AssistantPromptSettings from './AssistantPromptSettings' @@ -57,6 +58,10 @@ const AssistantSettingPopupContainer: React.FC = ({ resolve, ...props }) { key: 'messages', label: t('assistants.settings.preset_messages') + }, + { + key: 'knowledge_base', + label: t('assistants.settings.knowledge_base') } ] @@ -115,6 +120,13 @@ const AssistantSettingPopupContainer: React.FC = ({ resolve, ...props }) updateAssistantSettings={updateAssistantSettings} /> )} + {menu === 'knowledge_base' && ( + + )} diff --git a/src/renderer/src/types/index.ts b/src/renderer/src/types/index.ts index 473d808f..8376c8b7 100644 --- a/src/renderer/src/types/index.ts +++ b/src/renderer/src/types/index.ts @@ -5,6 +5,7 @@ export type Assistant = { id: string name: string prompt: string + knowledge_base?: KnowledgeBase topics: Topic[] type: string emoji?: string