feat(web): 增加知识库选择
This commit is contained in:
@@ -1,10 +1,11 @@
|
|||||||
import {ClearOutlined, UserOutlined} from '@ant-design/icons'
|
import {ClearOutlined, FileOutlined, UserOutlined} from '@ant-design/icons'
|
||||||
import {Bubble, Sender, useXAgent, useXChat, Welcome} from '@ant-design/x'
|
import {Bubble, Sender, useXAgent, useXChat, Welcome} from '@ant-design/x'
|
||||||
import {fetchEventSource} from '@echofly/fetch-event-source'
|
import {fetchEventSource} from '@echofly/fetch-event-source'
|
||||||
import {Button, Divider, Flex, Switch, Tooltip, Typography} from 'antd'
|
import {Button, Divider, Flex, Popover, Radio, Switch, Tooltip, Typography} from 'antd'
|
||||||
import markdownIt from 'markdown-it'
|
import markdownIt from 'markdown-it'
|
||||||
import {useRef, useState} from 'react'
|
import {useRef, useState} from 'react'
|
||||||
import styled from 'styled-components'
|
import styled from 'styled-components'
|
||||||
|
import {commonInfo} from '../../util/amis.tsx'
|
||||||
|
|
||||||
const md = markdownIt({html: true, breaks: true})
|
const md = markdownIt({html: true, breaks: true})
|
||||||
const ConversationDiv = styled.div`
|
const ConversationDiv = styled.div`
|
||||||
@@ -49,7 +50,7 @@ function Conversation() {
|
|||||||
|
|
||||||
const [agent] = useXAgent<{ role: string, content: string }>({
|
const [agent] = useXAgent<{ role: string, content: string }>({
|
||||||
request: async (info, callbacks) => {
|
request: async (info, callbacks) => {
|
||||||
await fetchEventSource('http://127.0.0.1:8080/chat/async', {
|
await fetchEventSource(`${commonInfo.baseAiChatUrl}/chat/async`, {
|
||||||
method: 'POST',
|
method: 'POST',
|
||||||
headers: {
|
headers: {
|
||||||
'Authorization': 'Basic QXhoRWJzY3dzSkRiWU1IMjpjWXhnM2I0UHRXb1ZENVNqRmF5V3h0blNWc2p6UnNnNA==',
|
'Authorization': 'Basic QXhoRWJzY3dzSkRiWU1IMjpjWXhnM2I0UHRXb1ZENVNqRmF5V3h0blNWc2p6UnNnNA==',
|
||||||
@@ -105,13 +106,9 @@ function Conversation() {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
messageRender: content => {
|
messageRender: content => {
|
||||||
let split = content.split('</think>')
|
|
||||||
if (split.length > 1) {
|
|
||||||
content = `${split[0]}</think>${md.render(split[1])}`
|
|
||||||
}
|
|
||||||
return (
|
return (
|
||||||
<Typography>
|
<Typography>
|
||||||
<div dangerouslySetInnerHTML={{__html: content}}/>
|
<div dangerouslySetInnerHTML={{__html: md.render(content)}}/>
|
||||||
</Typography>
|
</Typography>
|
||||||
)
|
)
|
||||||
},
|
},
|
||||||
@@ -164,6 +161,28 @@ function Conversation() {
|
|||||||
disabled={messages.length > 0}
|
disabled={messages.length > 0}
|
||||||
/>
|
/>
|
||||||
<Divider type="vertical"/>
|
<Divider type="vertical"/>
|
||||||
|
<Popover
|
||||||
|
title="选择知识库"
|
||||||
|
trigger="hover"
|
||||||
|
content={<Radio.Group
|
||||||
|
style={{
|
||||||
|
display: 'flex',
|
||||||
|
flexDirection: 'column',
|
||||||
|
gap: 10,
|
||||||
|
}}
|
||||||
|
options={[
|
||||||
|
{value: 1, label: '测试'},
|
||||||
|
{value: 2, label: 'Hudi'},
|
||||||
|
{value: 3, label: 'Apache Hudi'},
|
||||||
|
]}
|
||||||
|
/>}
|
||||||
|
>
|
||||||
|
<Button
|
||||||
|
icon={<FileOutlined/>}
|
||||||
|
type="text"
|
||||||
|
size="small"
|
||||||
|
/>
|
||||||
|
</Popover>
|
||||||
<Tooltip title="清空对话">
|
<Tooltip title="清空对话">
|
||||||
<Button
|
<Button
|
||||||
icon={<ClearOutlined/>}
|
icon={<ClearOutlined/>}
|
||||||
@@ -172,6 +191,7 @@ function Conversation() {
|
|||||||
onClick={() => setMessages([])}
|
onClick={() => setMessages([])}
|
||||||
/>
|
/>
|
||||||
</Tooltip>
|
</Tooltip>
|
||||||
|
<Divider type="vertical"/>
|
||||||
</Flex>
|
</Flex>
|
||||||
<Flex align="center">
|
<Flex align="center">
|
||||||
{agent.isRequesting() ? (
|
{agent.isRequesting() ? (
|
||||||
|
|||||||
Reference in New Issue
Block a user