naive search
This commit is contained in:
parent
de367a1aa0
commit
e5cca132da
@ -105,7 +105,8 @@
|
|||||||
"rephrase": "言い換え",
|
"rephrase": "言い換え",
|
||||||
"translate": "翻訳"
|
"translate": "翻訳"
|
||||||
},
|
},
|
||||||
"citations": "引用",
|
"citations": "万维网引用",
|
||||||
|
"iodcitations":"数联网引用",
|
||||||
"downloadCode": "コードをダウンロード",
|
"downloadCode": "コードをダウンロード",
|
||||||
"date": {
|
"date": {
|
||||||
"pinned": "固定",
|
"pinned": "固定",
|
||||||
|
@ -105,7 +105,8 @@
|
|||||||
"rephrase": "重述",
|
"rephrase": "重述",
|
||||||
"translate": "翻译"
|
"translate": "翻译"
|
||||||
},
|
},
|
||||||
"citations": "引用",
|
"citations": "万维网引用",
|
||||||
|
"iodcitations":"数联网引用",
|
||||||
"downloadCode": "下载代码",
|
"downloadCode": "下载代码",
|
||||||
"date": {
|
"date": {
|
||||||
"pinned": "已置顶",
|
"pinned": "已置顶",
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"newChat": "新聊天",
|
"newChat": "新聊天",
|
||||||
"selectAPrompt": "选择一个提示词",
|
"selectAPrompt": "本地回答",
|
||||||
"githubRepository": "GitHub 仓库",
|
"githubRepository": "GitHub 仓库",
|
||||||
"settings": "设置",
|
"settings": "设置",
|
||||||
"sidebarTitle": "聊天历史",
|
"sidebarTitle": "聊天历史",
|
||||||
|
@ -37,6 +37,7 @@ type Props = {
|
|||||||
webSearch?: {}
|
webSearch?: {}
|
||||||
isSearchingInternet?: boolean
|
isSearchingInternet?: boolean
|
||||||
sources?: any[]
|
sources?: any[]
|
||||||
|
iodSources?:any[]
|
||||||
hideEditAndRegenerate?: boolean
|
hideEditAndRegenerate?: boolean
|
||||||
onSourceClick?: (source: any) => void
|
onSourceClick?: (source: any) => void
|
||||||
isTTSEnabled?: boolean
|
isTTSEnabled?: boolean
|
||||||
@ -48,7 +49,6 @@ type Props = {
|
|||||||
export const PlaygroundMessage = (props: Props) => {
|
export const PlaygroundMessage = (props: Props) => {
|
||||||
const [isBtnPressed, setIsBtnPressed] = React.useState(false)
|
const [isBtnPressed, setIsBtnPressed] = React.useState(false)
|
||||||
const [editMode, setEditMode] = React.useState(false)
|
const [editMode, setEditMode] = React.useState(false)
|
||||||
|
|
||||||
const { t } = useTranslation("common")
|
const { t } = useTranslation("common")
|
||||||
const { cancel, isSpeaking, speak } = useTTS()
|
const { cancel, isSpeaking, speak } = useTTS()
|
||||||
return (
|
return (
|
||||||
@ -166,6 +166,34 @@ export const PlaygroundMessage = (props: Props) => {
|
|||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
|
|
||||||
|
{props.isBot && props?.iodSources && props?.iodSources.length > 0 && (
|
||||||
|
<Collapse
|
||||||
|
className="mt-6"
|
||||||
|
ghost
|
||||||
|
items={[
|
||||||
|
{
|
||||||
|
key: "1",
|
||||||
|
label: (
|
||||||
|
<div className="italic text-gray-500 dark:text-gray-400">
|
||||||
|
{t("iodcitations")}
|
||||||
|
</div>
|
||||||
|
),
|
||||||
|
children: (
|
||||||
|
<div className="block">
|
||||||
|
{props?.iodSources?.map((source, index) => (
|
||||||
|
<MessageSource
|
||||||
|
onSourceClick={props.onSourceClick}
|
||||||
|
key={index}
|
||||||
|
source={source}
|
||||||
|
index = {index}
|
||||||
|
/>
|
||||||
|
))}
|
||||||
|
</div>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
]}
|
||||||
|
/>
|
||||||
|
)}
|
||||||
{props.isBot && props?.sources && props?.sources.length > 0 && (
|
{props.isBot && props?.sources && props?.sources.length > 0 && (
|
||||||
<Collapse
|
<Collapse
|
||||||
className="mt-6"
|
className="mt-6"
|
||||||
@ -179,12 +207,13 @@ export const PlaygroundMessage = (props: Props) => {
|
|||||||
</div>
|
</div>
|
||||||
),
|
),
|
||||||
children: (
|
children: (
|
||||||
<div className="mb-3 flex flex-wrap gap-2">
|
<div className="block">
|
||||||
{props?.sources?.map((source, index) => (
|
{props?.sources?.map((source, index) => (
|
||||||
<MessageSource
|
<MessageSource
|
||||||
onSourceClick={props.onSourceClick}
|
onSourceClick={props.onSourceClick}
|
||||||
key={index}
|
key={index}
|
||||||
source={source}
|
source={source}
|
||||||
|
index = {index}
|
||||||
/>
|
/>
|
||||||
))}
|
))}
|
||||||
</div>
|
</div>
|
||||||
|
@ -9,29 +9,42 @@ type Props = {
|
|||||||
pageContent?: string
|
pageContent?: string
|
||||||
content?: string
|
content?: string
|
||||||
}
|
}
|
||||||
|
key: number
|
||||||
onSourceClick?: (source: any) => void
|
onSourceClick?: (source: any) => void
|
||||||
|
index: number
|
||||||
}
|
}
|
||||||
|
|
||||||
export const MessageSource: React.FC<Props> = ({ source, onSourceClick }) => {
|
export const MessageSource: React.FC<Props> = ({ source, key, onSourceClick, index}) => {
|
||||||
if (source?.mode === "rag" || source?.mode === "chat") {
|
if (source?.mode === "rag" || source?.mode === "chat") {
|
||||||
return (
|
return (
|
||||||
<button
|
<div className="block items-center gap-1 text-xs text-gray-800 dark:text-gray-100 mb-1">
|
||||||
onClick={() => {
|
<span className="text-xs font-medium">[{index + 1}]</span> {/* 显示序号 */}
|
||||||
onSourceClick && onSourceClick(source)
|
|
||||||
}}
|
|
||||||
className="inline-flex gap-2 cursor-pointer transition-shadow duration-300 ease-in-out hover:shadow-lg items-center rounded-md bg-gray-100 p-1 text-xs text-gray-800 border border-gray-300 dark:bg-gray-800 dark:border-gray-700 dark:text-gray-100 opacity-80 hover:opacity-100">
|
|
||||||
<KnowledgeIcon type={source.type} className="h-3 w-3" />
|
|
||||||
<span className="text-xs">{source.name}</span>
|
<span className="text-xs">{source.name}</span>
|
||||||
</button>
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
return (
|
|
||||||
<a
|
<a
|
||||||
href={source?.url}
|
href={source?.url}
|
||||||
target="_blank"
|
target="_blank"
|
||||||
className="inline-flex cursor-pointer transition-shadow duration-300 ease-in-out hover:shadow-lg items-center rounded-md bg-gray-100 p-1 text-xs text-gray-800 border border-gray-300 dark:bg-gray-800 dark:border-gray-700 dark:text-gray-100 opacity-80 hover:opacity-100">
|
className="text-xs text-blue-500 hover:underline"
|
||||||
<span className="text-xs">{source.name}</span>
|
onClick={(e) => {
|
||||||
|
e.preventDefault(); // 阻止默认的链接行为
|
||||||
|
onSourceClick && onSourceClick(source); // 调用自定义点击事件
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
{source.url}
|
||||||
</a>
|
</a>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
return (
|
||||||
|
<div className="block items-center gap-1 text-xs text-gray-800 dark:text-gray-100 mb-1">
|
||||||
|
<span className="text-xs font-medium">[{index + 1}]</span> {/* 显示序号 */}
|
||||||
|
<a
|
||||||
|
href={source?.url}
|
||||||
|
target="_blank"
|
||||||
|
className="text-xs text-blue-500 hover:underline"
|
||||||
|
>
|
||||||
|
{source.name}
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
@ -37,6 +37,7 @@ export const PlaygroundChat = () => {
|
|||||||
isProcessing={streaming}
|
isProcessing={streaming}
|
||||||
isSearchingInternet={isSearchingInternet}
|
isSearchingInternet={isSearchingInternet}
|
||||||
sources={message.sources}
|
sources={message.sources}
|
||||||
|
iodSources={message.iodSources}
|
||||||
onEditFormSubmit={(value, isSend) => {
|
onEditFormSubmit={(value, isSend) => {
|
||||||
editMessage(index, value, !message.isBot, isSend)
|
editMessage(index, value, !message.isBot, isSend)
|
||||||
}}
|
}}
|
||||||
|
@ -126,6 +126,7 @@ export const PlaygroundForm = ({ dropedFile }: Props) => {
|
|||||||
}
|
}
|
||||||
}, [transcript])
|
}, [transcript])
|
||||||
|
|
||||||
|
/*
|
||||||
React.useEffect(() => {
|
React.useEffect(() => {
|
||||||
if (selectedQuickPrompt) {
|
if (selectedQuickPrompt) {
|
||||||
const word = getVariable(selectedQuickPrompt)
|
const word = getVariable(selectedQuickPrompt)
|
||||||
@ -142,7 +143,7 @@ export const PlaygroundForm = ({ dropedFile }: Props) => {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}, [selectedQuickPrompt])
|
}, [selectedQuickPrompt])
|
||||||
|
*/
|
||||||
const queryClient = useQueryClient()
|
const queryClient = useQueryClient()
|
||||||
|
|
||||||
const { mutateAsync: sendMessage } = useMutation({
|
const { mutateAsync: sendMessage } = useMutation({
|
||||||
@ -299,23 +300,6 @@ export const PlaygroundForm = ({ dropedFile }: Props) => {
|
|||||||
{...form.getInputProps("message")}
|
{...form.getInputProps("message")}
|
||||||
/>
|
/>
|
||||||
<div className="mt-2 flex justify-between items-center">
|
<div className="mt-2 flex justify-between items-center">
|
||||||
<div className="flex">
|
|
||||||
{!selectedKnowledge && (
|
|
||||||
<Tooltip title={t("tooltip.searchInternet")}>
|
|
||||||
<div className="inline-flex items-center gap-2">
|
|
||||||
<PiGlobe
|
|
||||||
className={`h-5 w-5 dark:text-gray-300 `}
|
|
||||||
/>
|
|
||||||
<Switch
|
|
||||||
value={webSearch}
|
|
||||||
onChange={(e) => setWebSearch(e)}
|
|
||||||
checkedChildren={t("form.webSearch.on")}
|
|
||||||
unCheckedChildren={t("form.webSearch.off")}
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
</Tooltip>
|
|
||||||
)}
|
|
||||||
</div>
|
|
||||||
<div className="flex !justify-end gap-3">
|
<div className="flex !justify-end gap-3">
|
||||||
{!selectedKnowledge && (
|
{!selectedKnowledge && (
|
||||||
<Tooltip title={t("tooltip.uploadImage")}>
|
<Tooltip title={t("tooltip.uploadImage")}>
|
||||||
|
13
src/components/Option/Playground/Playgroundbackup.txt
Normal file
13
src/components/Option/Playground/Playgroundbackup.txt
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
<Tooltip title={t("tooltip.searchInternet")}>
|
||||||
|
<div className="inline-flex items-center gap-2">
|
||||||
|
<PiGlobe
|
||||||
|
className={`h-5 w-5 dark:text-gray-300 `}
|
||||||
|
/>
|
||||||
|
<Switch
|
||||||
|
value={webSearch}
|
||||||
|
onChange={(e) => setWebSearch(e)}
|
||||||
|
checkedChildren={t("form.webSearch.on")}
|
||||||
|
unCheckedChildren={t("form.webSearch.off")}
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</Tooltip>
|
@ -32,6 +32,7 @@ type Props = {
|
|||||||
setHistoryId: (historyId: string) => void
|
setHistoryId: (historyId: string) => void
|
||||||
setSelectedModel: (model: string) => void
|
setSelectedModel: (model: string) => void
|
||||||
setSelectedSystemPrompt: (prompt: string) => void
|
setSelectedSystemPrompt: (prompt: string) => void
|
||||||
|
setSelectedQuickPrompt: (prompt: string | undefined) => void
|
||||||
setSystemPrompt: (prompt: string) => void
|
setSystemPrompt: (prompt: string) => void
|
||||||
clearChat: () => void
|
clearChat: () => void
|
||||||
temporaryChat: boolean
|
temporaryChat: boolean
|
||||||
@ -46,6 +47,7 @@ export const Sidebar = ({
|
|||||||
setHistoryId,
|
setHistoryId,
|
||||||
setSelectedModel,
|
setSelectedModel,
|
||||||
setSelectedSystemPrompt,
|
setSelectedSystemPrompt,
|
||||||
|
setSelectedQuickPrompt,
|
||||||
clearChat,
|
clearChat,
|
||||||
historyId,
|
historyId,
|
||||||
setSystemPrompt,
|
setSystemPrompt,
|
||||||
|
@ -40,6 +40,7 @@ export const SidePanelBody = () => {
|
|||||||
isProcessing={streaming}
|
isProcessing={streaming}
|
||||||
isSearchingInternet={isSearchingInternet}
|
isSearchingInternet={isSearchingInternet}
|
||||||
sources={message.sources}
|
sources={message.sources}
|
||||||
|
iodSources={message.iodSources}
|
||||||
onEditFormSubmit={(value) => {
|
onEditFormSubmit={(value) => {
|
||||||
editMessage(index, value, !message.isBot)
|
editMessage(index, value, !message.isBot)
|
||||||
}}
|
}}
|
||||||
|
@ -30,6 +30,7 @@ type Message = {
|
|||||||
content: string
|
content: string
|
||||||
images?: string[]
|
images?: string[]
|
||||||
sources?: string[]
|
sources?: string[]
|
||||||
|
iodSources?:string[]
|
||||||
search?: WebSearch
|
search?: WebSearch
|
||||||
createdAt: number
|
createdAt: number
|
||||||
reasoning_time_taken?: number
|
reasoning_time_taken?: number
|
||||||
@ -238,7 +239,7 @@ export const generateID = () => {
|
|||||||
export const saveHistory = async (
|
export const saveHistory = async (
|
||||||
title: string,
|
title: string,
|
||||||
is_rag?: boolean,
|
is_rag?: boolean,
|
||||||
message_source?: "copilot" | "web-ui"
|
message_source?: "copilot" | "web-ui",
|
||||||
) => {
|
) => {
|
||||||
const id = generateID()
|
const id = generateID()
|
||||||
const createdAt = Date.now()
|
const createdAt = Date.now()
|
||||||
@ -255,6 +256,7 @@ export const saveMessage = async (
|
|||||||
content: string,
|
content: string,
|
||||||
images: string[],
|
images: string[],
|
||||||
source?: any[],
|
source?: any[],
|
||||||
|
iodSource?:any[],
|
||||||
time?: number,
|
time?: number,
|
||||||
message_type?: string,
|
message_type?: string,
|
||||||
generationInfo?: any,
|
generationInfo?: any,
|
||||||
@ -274,6 +276,7 @@ export const saveMessage = async (
|
|||||||
images,
|
images,
|
||||||
createdAt,
|
createdAt,
|
||||||
sources: source,
|
sources: source,
|
||||||
|
iodSources:iodSource,
|
||||||
messageType: message_type,
|
messageType: message_type,
|
||||||
generationInfo: generationInfo,
|
generationInfo: generationInfo,
|
||||||
reasoning_time_taken
|
reasoning_time_taken
|
||||||
@ -304,6 +307,7 @@ export const formatToMessage = (messages: MessageHistory): MessageType[] => {
|
|||||||
message: message.content,
|
message: message.content,
|
||||||
name: message.name,
|
name: message.name,
|
||||||
sources: message?.sources || [],
|
sources: message?.sources || [],
|
||||||
|
iodSources: message?.iodSources || [],
|
||||||
images: message.images || [],
|
images: message.images || [],
|
||||||
generationInfo: message?.generationInfo,
|
generationInfo: message?.generationInfo,
|
||||||
reasoning_time_taken: message?.reasoning_time_taken
|
reasoning_time_taken: message?.reasoning_time_taken
|
||||||
|
@ -62,6 +62,7 @@ export const saveMessageOnError = async ({
|
|||||||
userMessage,
|
userMessage,
|
||||||
[image],
|
[image],
|
||||||
[],
|
[],
|
||||||
|
[],
|
||||||
1,
|
1,
|
||||||
message_type
|
message_type
|
||||||
)
|
)
|
||||||
@ -73,6 +74,7 @@ export const saveMessageOnError = async ({
|
|||||||
botMessage,
|
botMessage,
|
||||||
[],
|
[],
|
||||||
[],
|
[],
|
||||||
|
[],
|
||||||
2,
|
2,
|
||||||
message_type
|
message_type
|
||||||
)
|
)
|
||||||
@ -91,6 +93,7 @@ export const saveMessageOnError = async ({
|
|||||||
userMessage,
|
userMessage,
|
||||||
[image],
|
[image],
|
||||||
[],
|
[],
|
||||||
|
[],
|
||||||
1,
|
1,
|
||||||
message_type
|
message_type
|
||||||
)
|
)
|
||||||
@ -102,6 +105,7 @@ export const saveMessageOnError = async ({
|
|||||||
botMessage,
|
botMessage,
|
||||||
[],
|
[],
|
||||||
[],
|
[],
|
||||||
|
[],
|
||||||
2,
|
2,
|
||||||
message_type
|
message_type
|
||||||
)
|
)
|
||||||
@ -127,6 +131,7 @@ export const saveMessageOnSuccess = async ({
|
|||||||
image,
|
image,
|
||||||
fullText,
|
fullText,
|
||||||
source,
|
source,
|
||||||
|
iodSource,
|
||||||
message_source = "web-ui",
|
message_source = "web-ui",
|
||||||
message_type, generationInfo,
|
message_type, generationInfo,
|
||||||
prompt_id,
|
prompt_id,
|
||||||
@ -141,6 +146,7 @@ export const saveMessageOnSuccess = async ({
|
|||||||
image: string
|
image: string
|
||||||
fullText: string
|
fullText: string
|
||||||
source: any[]
|
source: any[]
|
||||||
|
iodSource: any[]
|
||||||
message_source?: "copilot" | "web-ui",
|
message_source?: "copilot" | "web-ui",
|
||||||
message_type?: string
|
message_type?: string
|
||||||
generationInfo?: any
|
generationInfo?: any
|
||||||
@ -157,6 +163,7 @@ export const saveMessageOnSuccess = async ({
|
|||||||
message,
|
message,
|
||||||
[image],
|
[image],
|
||||||
[],
|
[],
|
||||||
|
[],
|
||||||
1,
|
1,
|
||||||
message_type,
|
message_type,
|
||||||
generationInfo,
|
generationInfo,
|
||||||
@ -170,6 +177,7 @@ export const saveMessageOnSuccess = async ({
|
|||||||
fullText,
|
fullText,
|
||||||
[],
|
[],
|
||||||
source,
|
source,
|
||||||
|
iodSource,
|
||||||
2,
|
2,
|
||||||
message_type,
|
message_type,
|
||||||
generationInfo,
|
generationInfo,
|
||||||
@ -189,6 +197,7 @@ export const saveMessageOnSuccess = async ({
|
|||||||
message,
|
message,
|
||||||
[image],
|
[image],
|
||||||
[],
|
[],
|
||||||
|
[],
|
||||||
1,
|
1,
|
||||||
message_type,
|
message_type,
|
||||||
generationInfo,
|
generationInfo,
|
||||||
@ -201,6 +210,7 @@ export const saveMessageOnSuccess = async ({
|
|||||||
fullText,
|
fullText,
|
||||||
[],
|
[],
|
||||||
source,
|
source,
|
||||||
|
iodSource,
|
||||||
2,
|
2,
|
||||||
message_type,
|
message_type,
|
||||||
generationInfo,
|
generationInfo,
|
||||||
|
@ -186,6 +186,7 @@ export const useMessage = () => {
|
|||||||
name: "You",
|
name: "You",
|
||||||
message,
|
message,
|
||||||
sources: [],
|
sources: [],
|
||||||
|
iodSources:[],
|
||||||
images: []
|
images: []
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -193,6 +194,7 @@ export const useMessage = () => {
|
|||||||
name: selectedModel,
|
name: selectedModel,
|
||||||
message: "▋",
|
message: "▋",
|
||||||
sources: [],
|
sources: [],
|
||||||
|
iodSources:[],
|
||||||
id: generateMessageId
|
id: generateMessageId
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
@ -204,6 +206,7 @@ export const useMessage = () => {
|
|||||||
name: selectedModel,
|
name: selectedModel,
|
||||||
message: "▋",
|
message: "▋",
|
||||||
sources: [],
|
sources: [],
|
||||||
|
iodSources:[],
|
||||||
id: generateMessageId
|
id: generateMessageId
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
@ -497,7 +500,7 @@ export const useMessage = () => {
|
|||||||
content: fullText
|
content: fullText
|
||||||
}
|
}
|
||||||
])
|
])
|
||||||
|
const iodSource = []
|
||||||
await saveMessageOnSuccess({
|
await saveMessageOnSuccess({
|
||||||
historyId,
|
historyId,
|
||||||
setHistoryId,
|
setHistoryId,
|
||||||
@ -507,6 +510,7 @@ export const useMessage = () => {
|
|||||||
image,
|
image,
|
||||||
fullText,
|
fullText,
|
||||||
source,
|
source,
|
||||||
|
iodSource,
|
||||||
message_source: "copilot",
|
message_source: "copilot",
|
||||||
generationInfo,
|
generationInfo,
|
||||||
reasoning_time_taken: timetaken
|
reasoning_time_taken: timetaken
|
||||||
@ -607,6 +611,7 @@ export const useMessage = () => {
|
|||||||
name: "You",
|
name: "You",
|
||||||
message,
|
message,
|
||||||
sources: [],
|
sources: [],
|
||||||
|
iodSources:[],
|
||||||
images: []
|
images: []
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -614,6 +619,7 @@ export const useMessage = () => {
|
|||||||
name: selectedModel,
|
name: selectedModel,
|
||||||
message: "▋",
|
message: "▋",
|
||||||
sources: [],
|
sources: [],
|
||||||
|
iodSources: [],
|
||||||
id: generateMessageId
|
id: generateMessageId
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
@ -625,6 +631,7 @@ export const useMessage = () => {
|
|||||||
name: selectedModel,
|
name: selectedModel,
|
||||||
message: "▋",
|
message: "▋",
|
||||||
sources: [],
|
sources: [],
|
||||||
|
iodSources: [],
|
||||||
id: generateMessageId
|
id: generateMessageId
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
@ -788,6 +795,7 @@ export const useMessage = () => {
|
|||||||
image,
|
image,
|
||||||
fullText,
|
fullText,
|
||||||
source: [],
|
source: [],
|
||||||
|
iodSource:[],
|
||||||
message_source: "copilot",
|
message_source: "copilot",
|
||||||
generationInfo,
|
generationInfo,
|
||||||
reasoning_time_taken: timetaken
|
reasoning_time_taken: timetaken
|
||||||
@ -892,6 +900,7 @@ export const useMessage = () => {
|
|||||||
name: "You",
|
name: "You",
|
||||||
message,
|
message,
|
||||||
sources: [],
|
sources: [],
|
||||||
|
iodSources: [],
|
||||||
images: [image]
|
images: [image]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -899,6 +908,7 @@ export const useMessage = () => {
|
|||||||
name: selectedModel,
|
name: selectedModel,
|
||||||
message: "▋",
|
message: "▋",
|
||||||
sources: [],
|
sources: [],
|
||||||
|
iodSources: [],
|
||||||
id: generateMessageId
|
id: generateMessageId
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
@ -910,6 +920,7 @@ export const useMessage = () => {
|
|||||||
name: selectedModel,
|
name: selectedModel,
|
||||||
message: "▋",
|
message: "▋",
|
||||||
sources: [],
|
sources: [],
|
||||||
|
iodSources: [],
|
||||||
id: generateMessageId
|
id: generateMessageId
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
@ -1078,6 +1089,7 @@ export const useMessage = () => {
|
|||||||
image,
|
image,
|
||||||
fullText,
|
fullText,
|
||||||
source: [],
|
source: [],
|
||||||
|
iodSource:[],
|
||||||
message_source: "copilot",
|
message_source: "copilot",
|
||||||
generationInfo,
|
generationInfo,
|
||||||
reasoning_time_taken: timetaken
|
reasoning_time_taken: timetaken
|
||||||
@ -1177,6 +1189,7 @@ export const useMessage = () => {
|
|||||||
name: "You",
|
name: "You",
|
||||||
message,
|
message,
|
||||||
sources: [],
|
sources: [],
|
||||||
|
iodSources: [],
|
||||||
images: [image]
|
images: [image]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -1184,6 +1197,7 @@ export const useMessage = () => {
|
|||||||
name: selectedModel,
|
name: selectedModel,
|
||||||
message: "▋",
|
message: "▋",
|
||||||
sources: [],
|
sources: [],
|
||||||
|
iodSources: [],
|
||||||
id: generateMessageId
|
id: generateMessageId
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
@ -1195,6 +1209,7 @@ export const useMessage = () => {
|
|||||||
name: selectedModel,
|
name: selectedModel,
|
||||||
message: "▋",
|
message: "▋",
|
||||||
sources: [],
|
sources: [],
|
||||||
|
iodSources: [],
|
||||||
id: generateMessageId
|
id: generateMessageId
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
@ -1271,9 +1286,10 @@ export const useMessage = () => {
|
|||||||
query = removeReasoning(query)
|
query = removeReasoning(query)
|
||||||
}
|
}
|
||||||
|
|
||||||
const { prompt, source } = await getSystemPromptForWeb(query)
|
const { prompt, source, iodSource } = await getSystemPromptForWeb(query, selectedQuickPrompt)
|
||||||
setIsSearchingInternet(false)
|
setIsSearchingInternet(false)
|
||||||
|
console.log("iodSource:")
|
||||||
|
console.log(iodSource)
|
||||||
// message = message.trim().replaceAll("\n", " ")
|
// message = message.trim().replaceAll("\n", " ")
|
||||||
|
|
||||||
let humanMessage = await humanMessageFormatter({
|
let humanMessage = await humanMessageFormatter({
|
||||||
@ -1395,6 +1411,7 @@ export const useMessage = () => {
|
|||||||
...message,
|
...message,
|
||||||
message: fullText,
|
message: fullText,
|
||||||
sources: source,
|
sources: source,
|
||||||
|
iodSources: iodSource,
|
||||||
generationInfo,
|
generationInfo,
|
||||||
reasoning_time_taken: timetaken
|
reasoning_time_taken: timetaken
|
||||||
}
|
}
|
||||||
@ -1425,6 +1442,7 @@ export const useMessage = () => {
|
|||||||
image,
|
image,
|
||||||
fullText,
|
fullText,
|
||||||
source,
|
source,
|
||||||
|
iodSource,
|
||||||
generationInfo,
|
generationInfo,
|
||||||
reasoning_time_taken: timetaken
|
reasoning_time_taken: timetaken
|
||||||
})
|
})
|
||||||
@ -1524,6 +1542,7 @@ export const useMessage = () => {
|
|||||||
name: "You",
|
name: "You",
|
||||||
message,
|
message,
|
||||||
sources: [],
|
sources: [],
|
||||||
|
iodSources: [],
|
||||||
images: [image],
|
images: [image],
|
||||||
messageType: messageType
|
messageType: messageType
|
||||||
},
|
},
|
||||||
@ -1532,6 +1551,7 @@ export const useMessage = () => {
|
|||||||
name: selectedModel,
|
name: selectedModel,
|
||||||
message: "▋",
|
message: "▋",
|
||||||
sources: [],
|
sources: [],
|
||||||
|
iodSources: [],
|
||||||
id: generateMessageId
|
id: generateMessageId
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
@ -1543,6 +1563,7 @@ export const useMessage = () => {
|
|||||||
name: selectedModel,
|
name: selectedModel,
|
||||||
message: "▋",
|
message: "▋",
|
||||||
sources: [],
|
sources: [],
|
||||||
|
iodSources: [],
|
||||||
id: generateMessageId
|
id: generateMessageId
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
@ -1689,6 +1710,7 @@ export const useMessage = () => {
|
|||||||
image,
|
image,
|
||||||
fullText,
|
fullText,
|
||||||
source: [],
|
source: [],
|
||||||
|
iodSource:[],
|
||||||
message_source: "copilot",
|
message_source: "copilot",
|
||||||
message_type: messageType,
|
message_type: messageType,
|
||||||
generationInfo,
|
generationInfo,
|
||||||
|
@ -173,6 +173,7 @@ export const useMessageOption = () => {
|
|||||||
name: "You",
|
name: "You",
|
||||||
message,
|
message,
|
||||||
sources: [],
|
sources: [],
|
||||||
|
iodSources: [],
|
||||||
images: [image]
|
images: [image]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -180,6 +181,7 @@ export const useMessageOption = () => {
|
|||||||
name: selectedModel,
|
name: selectedModel,
|
||||||
message: "▋",
|
message: "▋",
|
||||||
sources: [],
|
sources: [],
|
||||||
|
iodSources: [],
|
||||||
id: generateMessageId
|
id: generateMessageId
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
@ -191,6 +193,7 @@ export const useMessageOption = () => {
|
|||||||
name: selectedModel,
|
name: selectedModel,
|
||||||
message: "▋",
|
message: "▋",
|
||||||
sources: [],
|
sources: [],
|
||||||
|
iodSources: [],
|
||||||
id: generateMessageId
|
id: generateMessageId
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
@ -204,7 +207,7 @@ export const useMessageOption = () => {
|
|||||||
setIsSearchingInternet(true)
|
setIsSearchingInternet(true)
|
||||||
|
|
||||||
let query = message
|
let query = message
|
||||||
|
/*
|
||||||
if (newMessage.length > 2) {
|
if (newMessage.length > 2) {
|
||||||
let questionPrompt = await geWebSearchFollowUpPrompt()
|
let questionPrompt = await geWebSearchFollowUpPrompt()
|
||||||
const lastTenMessages = newMessage.slice(-10)
|
const lastTenMessages = newMessage.slice(-10)
|
||||||
@ -267,10 +270,17 @@ export const useMessageOption = () => {
|
|||||||
query = response.content.toString()
|
query = response.content.toString()
|
||||||
query = removeReasoning(query)
|
query = removeReasoning(query)
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
const { prompt, source } = await getSystemPromptForWeb(query)
|
const quickPrompt = selectedQuickPrompt;
|
||||||
|
console.log("quick prompt:"+quickPrompt)
|
||||||
|
const { prompt, source, iodSource } = await getSystemPromptForWeb(query, quickPrompt)
|
||||||
setIsSearchingInternet(false)
|
setIsSearchingInternet(false)
|
||||||
|
console.log("iodSource from useMessageOption:")
|
||||||
|
console.log(iodSource)
|
||||||
|
console.log("prompt")
|
||||||
|
console.log(prompt)
|
||||||
|
console.log("query")
|
||||||
|
console.log(query)
|
||||||
// message = message.trim().replaceAll("\n", " ")
|
// message = message.trim().replaceAll("\n", " ")
|
||||||
|
|
||||||
let humanMessage = await humanMessageFormatter({
|
let humanMessage = await humanMessageFormatter({
|
||||||
@ -391,6 +401,7 @@ export const useMessageOption = () => {
|
|||||||
...message,
|
...message,
|
||||||
message: fullText,
|
message: fullText,
|
||||||
sources: source,
|
sources: source,
|
||||||
|
iodSources:iodSource,
|
||||||
generationInfo,
|
generationInfo,
|
||||||
reasoning_time_taken: timetaken
|
reasoning_time_taken: timetaken
|
||||||
}
|
}
|
||||||
@ -421,6 +432,7 @@ export const useMessageOption = () => {
|
|||||||
image,
|
image,
|
||||||
fullText,
|
fullText,
|
||||||
source,
|
source,
|
||||||
|
iodSource,
|
||||||
generationInfo,
|
generationInfo,
|
||||||
reasoning_time_taken: timetaken
|
reasoning_time_taken: timetaken
|
||||||
})
|
})
|
||||||
@ -553,6 +565,7 @@ export const useMessageOption = () => {
|
|||||||
name: "You",
|
name: "You",
|
||||||
message,
|
message,
|
||||||
sources: [],
|
sources: [],
|
||||||
|
iodSources: [],
|
||||||
images: [image]
|
images: [image]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -560,6 +573,7 @@ export const useMessageOption = () => {
|
|||||||
name: selectedModel,
|
name: selectedModel,
|
||||||
message: "▋",
|
message: "▋",
|
||||||
sources: [],
|
sources: [],
|
||||||
|
iodSources: [],
|
||||||
id: generateMessageId
|
id: generateMessageId
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
@ -571,6 +585,7 @@ export const useMessageOption = () => {
|
|||||||
name: selectedModel,
|
name: selectedModel,
|
||||||
message: "▋",
|
message: "▋",
|
||||||
sources: [],
|
sources: [],
|
||||||
|
iodSources: [],
|
||||||
id: generateMessageId
|
id: generateMessageId
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
@ -757,6 +772,7 @@ export const useMessageOption = () => {
|
|||||||
image,
|
image,
|
||||||
fullText,
|
fullText,
|
||||||
source: [],
|
source: [],
|
||||||
|
iodSource:[],
|
||||||
generationInfo,
|
generationInfo,
|
||||||
prompt_content: promptContent,
|
prompt_content: promptContent,
|
||||||
prompt_id: promptId,
|
prompt_id: promptId,
|
||||||
@ -856,6 +872,7 @@ export const useMessageOption = () => {
|
|||||||
name: "You",
|
name: "You",
|
||||||
message,
|
message,
|
||||||
sources: [],
|
sources: [],
|
||||||
|
iodSources: [],
|
||||||
images: []
|
images: []
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -863,6 +880,7 @@ export const useMessageOption = () => {
|
|||||||
name: selectedModel,
|
name: selectedModel,
|
||||||
message: "▋",
|
message: "▋",
|
||||||
sources: [],
|
sources: [],
|
||||||
|
iodSources: [],
|
||||||
id: generateMessageId
|
id: generateMessageId
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
@ -874,6 +892,7 @@ export const useMessageOption = () => {
|
|||||||
name: selectedModel,
|
name: selectedModel,
|
||||||
message: "▋",
|
message: "▋",
|
||||||
sources: [],
|
sources: [],
|
||||||
|
iodSources: [],
|
||||||
id: generateMessageId
|
id: generateMessageId
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
@ -979,7 +998,8 @@ export const useMessageOption = () => {
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
// message = message.trim().replaceAll("\n", " ")
|
// message = message.trim().replaceAll("\n", " ")
|
||||||
|
const iodSource = []
|
||||||
|
//TODO not support iodSource in RAG
|
||||||
let humanMessage = await humanMessageFormatter({
|
let humanMessage = await humanMessageFormatter({
|
||||||
content: [
|
content: [
|
||||||
{
|
{
|
||||||
@ -1077,6 +1097,7 @@ export const useMessageOption = () => {
|
|||||||
...message,
|
...message,
|
||||||
message: fullText,
|
message: fullText,
|
||||||
sources: source,
|
sources: source,
|
||||||
|
iodSources: iodSource,
|
||||||
generationInfo,
|
generationInfo,
|
||||||
reasoning_time_taken: timetaken
|
reasoning_time_taken: timetaken
|
||||||
}
|
}
|
||||||
@ -1107,6 +1128,7 @@ export const useMessageOption = () => {
|
|||||||
image,
|
image,
|
||||||
fullText,
|
fullText,
|
||||||
source,
|
source,
|
||||||
|
iodSource,
|
||||||
generationInfo,
|
generationInfo,
|
||||||
reasoning_time_taken: timetaken
|
reasoning_time_taken: timetaken
|
||||||
})
|
})
|
||||||
|
@ -15,6 +15,7 @@ export type Message = {
|
|||||||
name: string
|
name: string
|
||||||
message: string
|
message: string
|
||||||
sources: any[]
|
sources: any[]
|
||||||
|
iodSources: any[]
|
||||||
images?: string[]
|
images?: string[]
|
||||||
search?: WebSearch
|
search?: WebSearch
|
||||||
reasoning_time_taken?: number
|
reasoning_time_taken?: number
|
||||||
|
@ -12,6 +12,7 @@ export type Message = {
|
|||||||
name: string
|
name: string
|
||||||
message: string
|
message: string
|
||||||
sources: any[]
|
sources: any[]
|
||||||
|
iodSources: any[]
|
||||||
images?: string[]
|
images?: string[]
|
||||||
search?: WebSearch
|
search?: WebSearch
|
||||||
messageType?: string
|
messageType?: string
|
||||||
|
@ -8,6 +8,7 @@ import { getWebsiteFromQuery, processSingleWebsite } from "./website"
|
|||||||
import { searxngSearch } from "./search-engines/searxng"
|
import { searxngSearch } from "./search-engines/searxng"
|
||||||
import { braveAPISearch } from "./search-engines/brave-api"
|
import { braveAPISearch } from "./search-engines/brave-api"
|
||||||
import { webBaiduSearch } from "./search-engines/baidu"
|
import { webBaiduSearch } from "./search-engines/baidu"
|
||||||
|
import { LucideToggleRight } from "lucide-react"
|
||||||
|
|
||||||
const getHostName = (url: string) => {
|
const getHostName = (url: string) => {
|
||||||
try {
|
try {
|
||||||
@ -37,8 +38,29 @@ const searchWeb = (provider: string, query: string) => {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export const getSystemPromptForWeb = async (query: string) => {
|
export const getSystemPromptForWeb = async (query: string, promptMode) => {
|
||||||
try {
|
try {
|
||||||
|
if (!promptMode){
|
||||||
|
return {
|
||||||
|
prompt: "",
|
||||||
|
source: [],
|
||||||
|
iodSource:[]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
let iodsearch = []
|
||||||
|
if (promptMode.indexOf("iod_search_results")!=-1){
|
||||||
|
iodsearch = [
|
||||||
|
{
|
||||||
|
url:"http://bdware.cn/resolve?id=CSTR:432421111.1233.53323",
|
||||||
|
content:"数联网(Internet Of Data):数据作为互联网上可独立管理的资源,在“物理/机器”互联网之上形成一个“虚拟/数据”网络,实现全网一体化的数据互联互通互操作。",
|
||||||
|
id:"CSTR:432421111.1233.53323,数联网定义"
|
||||||
|
}, {
|
||||||
|
url:"http://bdware.cn/resolve?id=CSTR:1121311.3423.7754",
|
||||||
|
content:"数据空间:面向具体的领域和业务场景,按照数据所对应的物理实体的结构、关系来对数据进行管理和组织,构成物理世界的数字孪生。",
|
||||||
|
id:"CSTR:1121311.3423.7754,数据空间定义"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
const websiteVisit = getWebsiteFromQuery(query)
|
const websiteVisit = getWebsiteFromQuery(query)
|
||||||
let search: {
|
let search: {
|
||||||
@ -47,34 +69,37 @@ export const getSystemPromptForWeb = async (query: string) => {
|
|||||||
}[] = []
|
}[] = []
|
||||||
|
|
||||||
const isVisitSpecificWebsite = await getIsVisitSpecificWebsite()
|
const isVisitSpecificWebsite = await getIsVisitSpecificWebsite()
|
||||||
|
|
||||||
if (isVisitSpecificWebsite && websiteVisit.hasUrl) {
|
if (isVisitSpecificWebsite && websiteVisit.hasUrl) {
|
||||||
|
|
||||||
const url = websiteVisit.url
|
const url = websiteVisit.url
|
||||||
const queryWithoutUrl = websiteVisit.queryWithouUrls
|
const queryWithoutUrl = websiteVisit.queryWithouUrls
|
||||||
search = await processSingleWebsite(url, queryWithoutUrl)
|
search = await processSingleWebsite(url, queryWithoutUrl)
|
||||||
|
} else if (promptMode.indexOf("web_search_results")!=-1) {
|
||||||
} else {
|
|
||||||
const searchProvider = await getSearchProvider()
|
const searchProvider = await getSearchProvider()
|
||||||
search = await searchWeb(searchProvider, query)
|
search = await searchWeb(searchProvider, query)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
const search_results = search
|
const search_results = search
|
||||||
.map(
|
.map(
|
||||||
(result, idx) =>
|
(result, idx) =>
|
||||||
`<result source="${result.url}" id="${idx}">${result.content}</result>`
|
`<result source="${result.url}" id="${idx+1}">${result.content}</result>`
|
||||||
)
|
)
|
||||||
.join("\n")
|
.join("\n")
|
||||||
|
|
||||||
const current_date_time = new Date().toLocaleString()
|
const current_date_time = new Date().toLocaleString()
|
||||||
|
|
||||||
const system = await getWebSearchPrompt()
|
const system = promptMode
|
||||||
|
const iod_search_results= iodsearch.map(
|
||||||
|
(result, idx) =>
|
||||||
|
`<result source="${result.url}" id="${idx+1}">${result.content}</result>`
|
||||||
|
)
|
||||||
|
.join("\n")
|
||||||
|
console.log("iod_search_xml in web.ts")
|
||||||
|
console.log(iod_search_results)
|
||||||
|
|
||||||
const prompt = system
|
const prompt = system
|
||||||
.replace("{current_date_time}", current_date_time)
|
.replace("{current_date_time}", current_date_time)
|
||||||
.replace("{search_results}", search_results)
|
.replace("{web_search_results}", search_results)
|
||||||
|
.replace("{iod_search_results}",iod_search_results)
|
||||||
return {
|
return {
|
||||||
prompt,
|
prompt,
|
||||||
source: search.map((result) => {
|
source: search.map((result) => {
|
||||||
@ -83,13 +108,21 @@ export const getSystemPromptForWeb = async (query: string) => {
|
|||||||
name: getHostName(result.url),
|
name: getHostName(result.url),
|
||||||
type: "url"
|
type: "url"
|
||||||
}
|
}
|
||||||
|
}),
|
||||||
|
iodSource: iodsearch.map((result) => {
|
||||||
|
return {
|
||||||
|
url: result.url,
|
||||||
|
name: result.id,
|
||||||
|
type: "url"
|
||||||
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
console.error(e)
|
console.error(e)
|
||||||
return {
|
return {
|
||||||
prompt: "",
|
prompt: "",
|
||||||
source: []
|
source: [],
|
||||||
|
iodSource:[]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user