From bb32ddfe468c466e2f5ed976829c7fad8f4db921 Mon Sep 17 00:00:00 2001 From: balibabu Date: Thu, 18 Jul 2024 15:45:34 +0800 Subject: [PATCH] feat: add PubMed operator #918 (#1589) ### What problem does this PR solve? feat: modify the translation of baiduDescription #918 feat: add PubMed operator #918 ### Type of change - [x] New Feature (non-breaking change which adds functionality) --- web/src/assets/svg/pubmed.svg | 6 ++++ web/src/locales/en.ts | 10 ++++-- web/src/locales/zh-traditional.ts | 5 ++- web/src/locales/zh.ts | 9 ++++-- web/src/pages/flow/constant.tsx | 17 ++++++++++ web/src/pages/flow/flow-drawer/index.tsx | 2 ++ web/src/pages/flow/hooks.ts | 2 ++ web/src/pages/flow/pubmed-form/index.tsx | 31 +++++++++++++++++++ .../setting-model/api-key-modal/index.tsx | 2 +- 9 files changed, 76 insertions(+), 8 deletions(-) create mode 100644 web/src/assets/svg/pubmed.svg create mode 100644 web/src/pages/flow/pubmed-form/index.tsx diff --git a/web/src/assets/svg/pubmed.svg b/web/src/assets/svg/pubmed.svg new file mode 100644 index 0000000000..6a17fa89c4 --- /dev/null +++ b/web/src/assets/svg/pubmed.svg @@ -0,0 +1,6 @@ + + + + \ No newline at end of file diff --git a/web/src/locales/en.ts b/web/src/locales/en.ts index d0caafe423..658f0e51b5 100644 --- a/web/src/locales/en.ts +++ b/web/src/locales/en.ts @@ -579,7 +579,7 @@ The above is the content you need to summarize.`, messageDescription: 'This component is used to send user static information. You can prepare several messages which will be chosen randomly.', keywordDescription: `This component is used to extract keywords from user's question. Top N specifies the number of keywords you need to extract.`, - wikipediaDescription: `This component is used to get search result from https://www.wikipedia.org/. Typically, it performs as a supplement to knowledgebases. Top N specifies the number of search results you need to adopt.`, + wikipediaDescription: `This component is used to get search result from https://www.wikipedia.org/. Typically, it performs as a supplement to knowledgebases. Top N specifies the number of search results you need to adapt.`, promptText: `Please summarize the following paragraphs. Be careful with the numbers, do not make things up. Paragraphs as following: {input} The above is the content you need to summarize.`, @@ -602,10 +602,10 @@ The above is the content you need to summarize.`, keywordExtract: 'Keyword', keywordExtractDescription: `This component is used to extract keywords from user's question. Top N specifies the number of keywords you need to extract.`, baidu: 'Baidu', - baiduDescription: `This component is used to get search result from www.baidu.com. Typically, it performs as a supplement to knowledgebases. Top N specifies the number of search results you need to adopt.`, + baiduDescription: `This component is used to get search result from www.baidu.com. Typically, it performs as a supplement to knowledgebases. Top N specifies the number of search results you need to adapt.`, duckDuckGo: 'DuckDuckGo', duckDuckGoDescription: - 'This component is used to get search result from www.duckduckgo.com. Typically, it performs as a supplement to knowledgebases. Top N specifies the number of search results you need to adopt.', + 'This component is used to get search result from www.duckduckgo.com. Typically, it performs as a supplement to knowledgebases. Top N specifies the number of search results you need to adapt.', channel: 'Channel', channelTip: `Perform text search or news search on the component's input`, text: 'Text', @@ -614,6 +614,10 @@ The above is the content you need to summarize.`, messageHistoryWindowSizeTip: 'The window size of conversation history that needed to be seen by LLM. The larger the better. But be careful with the maximum content length of LLM.', wikipedia: 'Wikipedia', + pubMed: 'PubMed', + email: 'Email', + emailTip: + 'This component is used to get search result from https://pubmed.ncbi.nlm.nih.gov/. Typically, it performs as a supplement to knowledgebases. Top N specifies the number of search results you need to adapt. E-mail is a required field.', }, footer: { profile: 'All rights reserved @ React', diff --git a/web/src/locales/zh-traditional.ts b/web/src/locales/zh-traditional.ts index e70c126677..40e6fbb1ab 100644 --- a/web/src/locales/zh-traditional.ts +++ b/web/src/locales/zh-traditional.ts @@ -541,7 +541,7 @@ export default { messageDescription: '此元件用於向使用者發送靜態訊息。您可以準備幾條訊息,這些訊息將隨機選擇。', keywordDescription: `該組件用於從用戶的問題中提取關鍵字。 Top N指定需要提取的關鍵字數量。`, - wikipediaDescription: `此元件用於從 https://www.wikipedia.org/ 取得搜尋結果。通常,它充當知識庫的補充。 Top N 指定您需要採用的搜尋結果的數量。`, + wikipediaDescription: `此元件用於從 https://www.wikipedia.org/ 取得搜尋結果。通常,它作為知識庫的補充。 Top N 指定您需要調整的搜尋結果數。`, promptText: `請總結以下段落。注意數字,不要胡編亂造。段落如下: {input} 以上就是你需要總結的內容。`, @@ -575,6 +575,9 @@ export default { messageHistoryWindowSizeTip: 'LLM需要查看的對話記錄的視窗大小。越大越好。但要注意LLM的最大內容長度。', wikipedia: '維基百科', + email: '信箱', + emailTip: + '此元件用於從 https://pubmed.ncbi.nlm.nih.gov/ 取得搜尋結果。通常,它充當知識庫的補充。 Top N 指定您需要適應的搜尋結果的數量。電子郵件是必填欄位。', }, footer: { profile: '“保留所有權利 @ react”', diff --git a/web/src/locales/zh.ts b/web/src/locales/zh.ts index 6aa730b91a..116c9613c1 100644 --- a/web/src/locales/zh.ts +++ b/web/src/locales/zh.ts @@ -559,7 +559,7 @@ export default { messageDescription: '此组件用于向用户发送静态信息。您可以准备几条消息,这些消息将被随机选择。', keywordDescription: `该组件用于从用户的问题中提取关键词。Top N指定需要提取的关键词数量。`, - wikipediaDescription: `此组件用于从 https://www.wikipedia.org/ 获取搜索结果。通常,它作为知识库的补充。Top N 指定您需要采用的搜索结果数量。`, + wikipediaDescription: `此组件用于从 https://www.wikipedia.org/ 获取搜索结果。通常,它作为知识库的补充。Top N 指定您需要调整的搜索结果数量。`, promptText: `请总结以下段落。注意数字,不要胡编乱造。段落如下: {input} 以上就是你需要总结的内容。`, @@ -581,10 +581,10 @@ export default { keywordExtract: '关键词', keywordExtractDescription: `该组件用于从用户的问题中提取关键词。Top N指定需要提取的关键词数量。`, baidu: '百度', - baiduDescription: `该组件用于获取www.baidu.com的搜索结果,一般作为知识库的补充,Top N指定需要采纳的搜索结果数量。`, + baiduDescription: `此元件用於取得www.baidu.com的搜尋結果。通常作為知識庫的補充。 Top N指定您需要適配的搜尋結果數。`, duckDuckGo: 'DuckDuckGo', duckDuckGoDescription: - '此组件用于从 www.duckduckgo.com 获取搜索结果。通常,它作为知识库的补充。Top N 指定您需要采用的搜索结果数量。', + '此元件用於從 www.duckduckgo.com 取得搜尋結果。通常,它作為知識庫的補充。 Top N 指定您需要調整的搜尋結果數。', channel: '频道', channelTip: '针对该组件的输入进行文本搜索或新闻搜索', text: '文本', @@ -593,6 +593,9 @@ export default { messageHistoryWindowSizeTip: 'LLM 需要查看的对话历史窗口大小。越大越好。但要注意 LLM 的最大内容长度。', wikipedia: '维基百科', + email: '邮箱', + emailTip: + '此组件用于从 https://pubmed.ncbi.nlm.nih.gov/ 获取搜索结果。通常,它作为知识库的补充。Top N 指定您需要调整的搜索结果数。电子邮件是必填字段。', }, footer: { profile: 'All rights reserved @ React', diff --git a/web/src/pages/flow/constant.tsx b/web/src/pages/flow/constant.tsx index 461c7bed05..6975e20e6a 100644 --- a/web/src/pages/flow/constant.tsx +++ b/web/src/pages/flow/constant.tsx @@ -1,7 +1,9 @@ import { ReactComponent as BaiduIcon } from '@/assets/svg/baidu.svg'; import { ReactComponent as DuckIcon } from '@/assets/svg/duck.svg'; import { ReactComponent as KeywordIcon } from '@/assets/svg/keyword.svg'; +import { ReactComponent as PubMedIcon } from '@/assets/svg/pubmed.svg'; import { ReactComponent as WikipediaIcon } from '@/assets/svg/wikipedia.svg'; + import { variableEnabledFieldMap } from '@/constants/chat'; import i18n from '@/locales/config'; @@ -35,6 +37,7 @@ export enum Operator { Baidu = 'Baidu', DuckDuckGo = 'DuckDuckGo', Wikipedia = 'Wikipedia', + PubMed = 'PubMed', } export const operatorIconMap = { @@ -50,6 +53,7 @@ export const operatorIconMap = { [Operator.DuckDuckGo]: DuckIcon, [Operator.Baidu]: BaiduIcon, [Operator.Wikipedia]: WikipediaIcon, + [Operator.PubMed]: PubMedIcon, }; export const operatorMap = { @@ -113,6 +117,9 @@ export const operatorMap = { [Operator.Wikipedia]: { backgroundColor: '#dee0e2', }, + [Operator.PubMed]: { + backgroundColor: '#a2ccf0', + }, }; export const componentMenuList = [ @@ -149,6 +156,9 @@ export const componentMenuList = [ { name: Operator.Wikipedia, }, + { + name: Operator.PubMed, + }, ]; export const initialRetrievalValues = { @@ -221,6 +231,11 @@ export const initialWikipediaValues = { language: 'en', }; +export const initialPubMedValues = { + top_n: 10, + email: '', +}; + export const CategorizeAnchorPointPositions = [ { top: 1, right: 34 }, { top: 8, right: 18 }, @@ -280,6 +295,7 @@ export const RestrictedUpstreamMap = { [Operator.Baidu]: [Operator.Begin, Operator.Retrieval], [Operator.DuckDuckGo]: [Operator.Begin, Operator.Retrieval], [Operator.Wikipedia]: [Operator.Begin, Operator.Retrieval], + [Operator.PubMed]: [Operator.Begin, Operator.Retrieval], }; export const NodeMap = { @@ -295,6 +311,7 @@ export const NodeMap = { [Operator.DuckDuckGo]: 'ragNode', [Operator.Baidu]: 'ragNode', [Operator.Wikipedia]: 'ragNode', + [Operator.PubMed]: 'ragNode', }; export const LanguageOptions = [ diff --git a/web/src/pages/flow/flow-drawer/index.tsx b/web/src/pages/flow/flow-drawer/index.tsx index 403c7d5b19..093111f725 100644 --- a/web/src/pages/flow/flow-drawer/index.tsx +++ b/web/src/pages/flow/flow-drawer/index.tsx @@ -14,6 +14,7 @@ import { useHandleFormValuesChange, useHandleNodeNameChange } from '../hooks'; import KeywordExtractForm from '../keyword-extract-form'; import MessageForm from '../message-form'; import OperatorIcon from '../operator-icon'; +import PubMedForm from '../pubmed-form'; import RelevantForm from '../relevant-form'; import RetrievalForm from '../retrieval-form'; import RewriteQuestionForm from '../rewrite-question-form'; @@ -38,6 +39,7 @@ const FormMap = { [Operator.DuckDuckGo]: DuckDuckGoForm, [Operator.KeywordExtract]: KeywordExtractForm, [Operator.Wikipedia]: WikipediaForm, + [Operator.PubMed]: PubMedForm, }; const EmptyContent = () =>
empty
; diff --git a/web/src/pages/flow/hooks.ts b/web/src/pages/flow/hooks.ts index f090a14855..f8ba104706 100644 --- a/web/src/pages/flow/hooks.ts +++ b/web/src/pages/flow/hooks.ts @@ -38,6 +38,7 @@ import { initialGenerateValues, initialKeywordExtractValues, initialMessageValues, + initialPubMedValues, initialRelevantValues, initialRetrievalValues, initialRewriteQuestionValues, @@ -90,6 +91,7 @@ export const useInitializeOperatorParams = () => { [Operator.DuckDuckGo]: initialDuckValues, [Operator.Baidu]: initialBaiduValues, [Operator.Wikipedia]: initialWikipediaValues, + [Operator.PubMed]: initialPubMedValues, }; }, [llmId]); diff --git a/web/src/pages/flow/pubmed-form/index.tsx b/web/src/pages/flow/pubmed-form/index.tsx new file mode 100644 index 0000000000..fd8cad2e69 --- /dev/null +++ b/web/src/pages/flow/pubmed-form/index.tsx @@ -0,0 +1,31 @@ +import TopNItem from '@/components/top-n-item'; +import { useTranslate } from '@/hooks/common-hooks'; +import { Form, Input } from 'antd'; +import { IOperatorForm } from '../interface'; + +const PubMedForm = ({ onValuesChange, form }: IOperatorForm) => { + const { t } = useTranslate('flow'); + + return ( +
+ + + + +
+ ); +}; + +export default PubMedForm; diff --git a/web/src/pages/user-setting/setting-model/api-key-modal/index.tsx b/web/src/pages/user-setting/setting-model/api-key-modal/index.tsx index f413b2482e..a2aabe311b 100644 --- a/web/src/pages/user-setting/setting-model/api-key-modal/index.tsx +++ b/web/src/pages/user-setting/setting-model/api-key-modal/index.tsx @@ -77,7 +77,7 @@ const ApiKeyModal = ({ )} - {llmFactory.toLowerCase() === 'Minimax'.toLowerCase() && ( + {llmFactory?.toLowerCase() === 'Minimax'.toLowerCase() && ( label={'Group ID'} name="group_id">