From 062f7340e5fb51d4e810be2d29c242390bdbb638 Mon Sep 17 00:00:00 2001 From: williamhliu <137068196+williamhliu@users.noreply.github.com> Date: Fri, 5 Jan 2024 10:17:17 +0800 Subject: [PATCH] (feature)(chat-sdk) add Few-shot examples (#599) --- .../src/components/ChatItem/SqlItem.tsx | 48 ++++++++++++++++++- .../src/components/ChatItem/index.tsx | 5 +- .../src/components/ChatItem/style.less | 40 ++++++++++++++++ 3 files changed, 91 insertions(+), 2 deletions(-) diff --git a/webapp/packages/chat-sdk/src/components/ChatItem/SqlItem.tsx b/webapp/packages/chat-sdk/src/components/ChatItem/SqlItem.tsx index f11cde2cd..e3059ad4b 100644 --- a/webapp/packages/chat-sdk/src/components/ChatItem/SqlItem.tsx +++ b/webapp/packages/chat-sdk/src/components/ChatItem/SqlItem.tsx @@ -10,12 +10,13 @@ import { SqlInfoType } from '../../common/type'; type Props = { llmReq?: any; + llmResp?: any; integrateSystem?: string; sqlInfo: SqlInfoType; sqlTimeCost?: number; }; -const SqlItem: React.FC = ({ llmReq, integrateSystem, sqlInfo, sqlTimeCost }) => { +const SqlItem: React.FC = ({ llmReq, llmResp, integrateSystem, sqlInfo, sqlTimeCost }) => { const [sqlType, setSqlType] = useState(''); const tipPrefixCls = `${PREFIX_CLS}-item`; @@ -35,6 +36,8 @@ const SqlItem: React.FC = ({ llmReq, integrateSystem, sqlInfo, sqlTimeCos const { schema, linking, priorExts } = llmReq || {}; + const fewShots = (Object.values(llmResp?.sqlRespMap || {})[0] as any)?.fewShots || []; + return (
@@ -64,6 +67,18 @@ const SqlItem: React.FC = ({ llmReq, integrateSystem, sqlInfo, sqlTimeCos Schema映射
)} + {fewShots.length > 0 && ( +
{ + setSqlType(sqlType === 'fewShots' ? '' : 'fewShots'); + }} + > + Few-shot示例 +
+ )} {sqlInfo.s2SQL && (
= ({ llmReq, integrateSystem, sqlInfo, sqlTimeCos )}
)} + {sqlType === 'fewShots' && ( +
+ {fewShots.map((item: any, index: number) => { + return ( +
+
示例{index + 1}:
+
+
+
问题:
+
+ {item.questionAugmented} +
+
+
+
SQL:
+
+ + {item.sql} + +
+
+
+
+ ); + })} +
+ )} {sqlType && sqlInfo[sqlType] && ( <> = ({ [`${prefixCls}-content-mobile`]: isMobile, }); + const { llmReq, llmResp } = parseInfo?.properties?.CONTEXT || {}; + return (
{!isMobile && integrateSystem !== 'wiki' && ( @@ -337,7 +339,8 @@ const ChatItem: React.FC = ({ <> {!isMobile && parseInfo?.sqlInfo && isDeveloper && integrateSystem !== 'c2' && (