diff --git a/src/pages/playground/components/dynamic-params.tsx b/src/pages/playground/components/dynamic-params.tsx index b1873795..b16f96c2 100644 --- a/src/pages/playground/components/dynamic-params.tsx +++ b/src/pages/playground/components/dynamic-params.tsx @@ -37,7 +37,7 @@ type ParamsSettingsProps = { globalParams?: Record; paramsConfig?: ParamsSchema[]; initialValues?: Record; - extra?: React.ReactNode[]; + extra?: React.ReactNode; }; const ParamsSettings: React.FC = forwardRef( diff --git a/src/pages/playground/components/ground-embedding.tsx b/src/pages/playground/components/ground-embedding.tsx index 4c0aed0b..0e469da7 100644 --- a/src/pages/playground/components/ground-embedding.tsx +++ b/src/pages/playground/components/ground-embedding.tsx @@ -2,6 +2,7 @@ import AlertInfo from '@/components/alert-info'; import ScatterChart from '@/components/echarts/scatter'; import HighlightCode from '@/components/highlight-code'; import IconFont from '@/components/icon-font'; +import SealInputNumber from '@/components/seal-form/input-number'; import HotKeys, { KeyMap } from '@/config/hotkeys'; import useOverlayScroller from '@/hooks/use-overlay-scroller'; import useRequestToken from '@/hooks/use-request-token'; @@ -13,7 +14,7 @@ import { SendOutlined } from '@ant-design/icons'; import { useIntl, useSearchParams } from '@umijs/max'; -import { Button, Checkbox, Segmented, Spin, Tabs, Tooltip } from 'antd'; +import { Button, Checkbox, Form, Segmented, Spin, Tabs, Tooltip } from 'antd'; import classNames from 'classnames'; import _ from 'lodash'; import { PCA } from 'ml-pca'; @@ -86,6 +87,7 @@ const GroundEmbedding: React.FC = forwardRef((props, ref) => { const [lessTwoInput, setLessTwoInput] = useState(false); const multiplePasteEnable = useRef(true); const selectionTextRef = useRef(null); + const [metaData, setMetaData] = useState>({}); const [textList, setTextList] = useState< { text: string; uid: number | string; name: string }[] @@ -376,6 +378,14 @@ const GroundEmbedding: React.FC = forwardRef((props, ref) => { setOutputType(value); }; + const handleModelChange = (value: string) => { + const model = modelList.find((item) => item.value === value); + if (model) { + console.log('model:', model); + setMetaData(model.meta || {}); + } + }; + const outputItems = useMemo(() => { return [ { @@ -696,12 +706,25 @@ const GroundEmbedding: React.FC = forwardRef((props, ref) => {
+ + + ) + } />
diff --git a/src/pages/playground/components/ground-left.tsx b/src/pages/playground/components/ground-left.tsx index e5d0ab60..f0363b44 100644 --- a/src/pages/playground/components/ground-left.tsx +++ b/src/pages/playground/components/ground-left.tsx @@ -164,7 +164,6 @@ const GroundLeft: React.FC = forwardRef((props, ref) => { url: CHAT_API, signal }); - if (result?.error) { setTokenResult({ error: true, @@ -186,7 +185,7 @@ const GroundLeft: React.FC = forwardRef((props, ref) => { joinMessage(chunk); }); } catch (error) { - // console.log('error:', error); + console.log('error:', error); } finally { setLoading(false); } diff --git a/src/pages/playground/components/ground-reranker.tsx b/src/pages/playground/components/ground-reranker.tsx index 151e895e..be46f61a 100644 --- a/src/pages/playground/components/ground-reranker.tsx +++ b/src/pages/playground/components/ground-reranker.tsx @@ -1,4 +1,5 @@ import AlertInfo from '@/components/alert-info'; +import SealInputNumber from '@/components/seal-form/input-number'; import HotKeys, { KeyMap } from '@/config/hotkeys'; import useOverlayScroller from '@/hooks/use-overlay-scroller'; import useRequestToken from '@/hooks/use-request-token'; @@ -9,7 +10,7 @@ import { SendOutlined } from '@ant-design/icons'; import { useIntl, useSearchParams } from '@umijs/max'; -import { Button, Checkbox, Input, Spin, Tag, Tooltip } from 'antd'; +import { Button, Checkbox, Form, Input, Spin, Tag, Tooltip } from 'antd'; import classNames from 'classnames'; import _ from 'lodash'; import 'overlayscrollbars/overlayscrollbars.css'; @@ -125,6 +126,7 @@ const GroundReranker: React.FC = forwardRef((props, ref) => { const [sortIndexMap, setSortIndexMap] = useState([]); const [queryValue, setQueryValue] = useState(''); const selectionTextRef = useRef(null); + const [metaData, setMetaData] = useState({}); const { initialize, updateScrollerPosition: updateDocumentScrollerPosition } = useOverlayScroller(); @@ -426,6 +428,13 @@ const GroundReranker: React.FC = forwardRef((props, ref) => { [] ); + const handleModelChange = (value: string) => { + const model = modelList.find((item) => item.value === value); + if (model) { + setMetaData(model.meta || {}); + } + }; + const handleClearDocuments = () => { setTextList([ { @@ -623,10 +632,23 @@ const GroundReranker: React.FC = forwardRef((props, ref) => { ref={formRef} setParams={setParams} params={parameters} + onModelChange={handleModelChange} paramsConfig={paramsConfig} initialValues={initialValues} selectedModel={selectModel} modelList={modelList} + extra={ + metaData?.n_ctx && + metaData?.n_slot && ( + + + + ) + } /> diff --git a/src/pages/playground/embedding.tsx b/src/pages/playground/embedding.tsx index 4e64248a..f2dbda64 100644 --- a/src/pages/playground/embedding.tsx +++ b/src/pages/playground/embedding.tsx @@ -38,7 +38,8 @@ const PlaygroundEmbedding: React.FC = () => { const list = _.map(res.data || [], (item: any) => { return { value: item.id, - label: item.id + label: item.id, + meta: item.meta }; }) as Global.BaseOption[]; return list; diff --git a/src/pages/playground/rerank.tsx b/src/pages/playground/rerank.tsx index c18ad7fb..c09a59c8 100644 --- a/src/pages/playground/rerank.tsx +++ b/src/pages/playground/rerank.tsx @@ -40,7 +40,8 @@ const PlaygroundRerank: React.FC = () => { const list = _.map(res.data || [], (item: any) => { return { value: item.id, - label: item.id + label: item.id, + meta: item.meta }; }) as Global.BaseOption[]; return list; diff --git a/src/request-config.ts b/src/request-config.ts index 7f20861d..5470a38d 100644 --- a/src/request-config.ts +++ b/src/request-config.ts @@ -13,6 +13,7 @@ export const requestConfig: RequestConfig = { errorHandler: (error: any, opts: any) => { const { message: errorMessage, response } = error; const errMsg = response?.data?.message || errorMessage; + if (!opts?.skipErrorHandler && response?.status) { message.error(errMsg); } diff --git a/src/utils/fetch-chunk-data.ts b/src/utils/fetch-chunk-data.ts index c4d3f4c8..2e17b31e 100644 --- a/src/utils/fetch-chunk-data.ts +++ b/src/utils/fetch-chunk-data.ts @@ -24,6 +24,21 @@ const extractJSON = (dataStr: string) => { return results; }; +const errorHandler = async (res: any) => { + try { + const data = await res.json(); + return { + error: true, + data: data + }; + } catch (error) { + return { + error: true, + message: res.statusText + }; + } +}; + /** * * @param params data: for post request, params: for get request @@ -51,11 +66,11 @@ export const fetchChunkedData = async (params: { ...params.headers } }); - console.log('response====', response); + if (!response.ok) { return { error: true, - data: await response.json() + data: await errorHandler(response) }; } const reader = response?.body?.getReader(); @@ -107,7 +122,7 @@ export const fetchChunkedDataPostFormData = async (params: { if (!response.ok) { return { error: true, - data: await response.json() + data: await errorHandler(response) }; } const reader = response?.body?.getReader();