From e5e9ca00155f5cf81ca808ef47e7459d2680953a Mon Sep 17 00:00:00 2001 From: balibabu Date: Wed, 26 Feb 2025 10:20:40 +0800 Subject: [PATCH] Feat: Add Tavily Api Key to chat configuration modal. #5198 (#5347) ### What problem does this PR solve? Feat: Add Tavily Api Key to chat configuration modal. #5198 ### Type of change - [x] New Feature (non-breaking change which adds functionality) --- web/src/components/message-item/index.tsx | 1 + web/src/interfaces/database/chat.ts | 1 + web/src/locales/en.ts | 4 ++++ web/src/locales/zh-traditional.ts | 10 ++++++-- web/src/locales/zh.ts | 4 ++++ .../assistant-setting.tsx | 12 +++++++++- web/src/pages/chat/markdown-content/index.tsx | 24 ++++++++++++++----- 7 files changed, 47 insertions(+), 9 deletions(-) diff --git a/web/src/components/message-item/index.tsx b/web/src/components/message-item/index.tsx index 2443903625b..664f46afb0a 100644 --- a/web/src/components/message-item/index.tsx +++ b/web/src/components/message-item/index.tsx @@ -176,6 +176,7 @@ const MessageItem = ({ documentId={item.doc_id} documentName={item.doc_name} prefix="document" + link={item.url} > {item.doc_name} diff --git a/web/src/interfaces/database/chat.ts b/web/src/interfaces/database/chat.ts index 8f824a28730..7b3d0e3351d 100644 --- a/web/src/interfaces/database/chat.ts +++ b/web/src/interfaces/database/chat.ts @@ -107,6 +107,7 @@ export interface Docagg { count: number; doc_id: string; doc_name: string; + url?: string; } // interface Chunk { diff --git a/web/src/locales/en.ts b/web/src/locales/en.ts index 367751df8a0..6e98370cd84 100644 --- a/web/src/locales/en.ts +++ b/web/src/locales/en.ts @@ -531,6 +531,10 @@ This procedure will improve precision of retrieval by adding more information to reasoning: 'Reasoning', reasoningTip: 'It will trigger reasoning process like Deepseek-R1/OpenAI o1. Integrates an agentic search process into the reasoning workflow, allowing models itself to dynamically retrieve external knowledge whenever they encounter uncertain information.', + tavilyApiKeyTip: + 'If API key is set correctly, it will utilize Tavily to do web search as a supplement to knowledge bases.', + tavilyApiKeyMessage: 'Please enter your Tavily Api Key', + tavilyApiKeyHelp: 'How to get it?', }, setting: { profile: 'Profile', diff --git a/web/src/locales/zh-traditional.ts b/web/src/locales/zh-traditional.ts index de93d259a34..c5df5a151fa 100644 --- a/web/src/locales/zh-traditional.ts +++ b/web/src/locales/zh-traditional.ts @@ -148,7 +148,8 @@ export default { selectFiles: '選擇文件', changeSpecificCategory: '更改特定類別', uploadTitle: '點擊或拖拽文件至此區域即可上傳', - uploadDescription: '支持單次或批量上傳。單個檔案大小不超過10MB,最多上傳128份檔案。', + uploadDescription: + '支持單次或批量上傳。單個檔案大小不超過10MB,最多上傳128份檔案。', chunk: '解析塊', bulk: '批量', cancel: '取消', @@ -510,6 +511,10 @@ export default { reasoning: '推理', reasoningTip: '它將觸發類似Deepseek-R1/OpenAI o1的推理過程。將代理搜尋過程整合到推理工作流程中,使得模型本身能夠在遇到不確定資訊時動態地檢索外部知識。', + tavilyApiKeyTip: + '如果 API 金鑰設定正確,它將利用 Tavily 進行網路搜尋作為知識庫的補充。', + tavilyApiKeyMessage: '請輸入你的 Tavily Api Key', + tavilyApiKeyHelp: '如何獲取?', }, setting: { profile: '概述', @@ -703,7 +708,8 @@ export default { newFolder: '新建文件夾', uploadFile: '上傳文件', uploadTitle: '點擊或拖拽文件至此區域即可上傳', - uploadDescription: '支持單次或批量上傳。單個檔案大小不超過10MB,最多上傳128份檔案。', + uploadDescription: + '支持單次或批量上傳。單個檔案大小不超過10MB,最多上傳128份檔案。', file: '文件', directory: '文件夾', local: '本地上傳', diff --git a/web/src/locales/zh.ts b/web/src/locales/zh.ts index c63d7c03d8a..29322154425 100644 --- a/web/src/locales/zh.ts +++ b/web/src/locales/zh.ts @@ -527,6 +527,10 @@ General:实体和关系提取提示来自 GitHub - microsoft/graphrag:基于 reasoning: '推理', reasoningTip: '它将像Deepseek-R1 / OpenAI o1一样触发推理过程。将代理搜索过程集成到推理工作流中,允许模型本身在遇到不确定信息时动态地检索外部知识。', + tavilyApiKeyTip: + '如果 API 密钥设置正确,它将利用 Tavily 进行网络搜索作为知识库的补充。', + tavilyApiKeyMessage: '请输入你的 Tavily Api Key', + tavilyApiKeyHelp: '如何获取?', }, setting: { profile: '概要', diff --git a/web/src/pages/chat/chat-configuration-modal/assistant-setting.tsx b/web/src/pages/chat/chat-configuration-modal/assistant-setting.tsx index 1af1d7c2741..d6e41e94c2c 100644 --- a/web/src/pages/chat/chat-configuration-modal/assistant-setting.tsx +++ b/web/src/pages/chat/chat-configuration-modal/assistant-setting.tsx @@ -2,7 +2,7 @@ import KnowledgeBaseItem from '@/components/knowledge-base-item'; import { useTranslate } from '@/hooks/common-hooks'; import { useFetchTenantInfo } from '@/hooks/user-setting-hooks'; import { PlusOutlined } from '@ant-design/icons'; -import { Form, Input, message, Select, Switch, Upload } from 'antd'; +import { Form, Input, message, Select, Switch, Typography, Upload } from 'antd'; import classNames from 'classnames'; import { useCallback } from 'react'; import { ISegmentedContentProps } from '../interface'; @@ -147,6 +147,16 @@ const AssistantSetting = ({ > + +
+ + + + + {t('tavilyApiKeyHelp')} + +
+
() => { - if (!isPdf) { - return; - } - clickDocumentButton?.(documentId, chunk); - }, + ( + documentId: string, + chunk: IReferenceChunk, + isPdf: boolean, + documentUrl?: string, + ) => + () => { + if (!isPdf) { + if (!documentUrl) { + return; + } + window.open(documentUrl, '_blank'); + } else { + clickDocumentButton?.(documentId, chunk); + } + }, [clickDocumentButton], ); @@ -93,6 +103,7 @@ const MarkdownContent = ({ (x) => x?.doc_id === chunkItem?.document_id, ); const documentId = document?.doc_id; + const documentUrl = document?.url; const fileThumbnail = documentId ? fileThumbnails[documentId] : ''; const fileExtension = documentId ? getExtension(document?.doc_name) : ''; const imageId = chunkItem?.image_id; @@ -146,6 +157,7 @@ const MarkdownContent = ({ documentId, chunkItem, fileExtension === 'pdf', + documentUrl, )} > {document?.doc_name}