提交 f41baf12 authored 作者: 王鹏飞's avatar 王鹏飞

chore: update

上级 bc53e756
import { Bubble, BubbleProps } from '@ant-design/x'
import MarkdownRender from '@/components/MarkdownRender'
const renderMarkdown = (content: string) => <MarkdownRender>{content}</MarkdownRender>
export default function AIBubble(props: BubbleProps) {
return <Bubble messageRender={renderMarkdown} {...props}></Bubble>
}
......@@ -134,11 +134,11 @@ export async function openAI(data: AIData, options: SSEOptions) {
const aiService = {
async post(data: AIData, options: SSEOptions) {
const messages: AIMessage[] = []
// const dataset = localStorage.getItem('dataset')
// if (dataset) {
// const datasetInfo = JSON.parse(dataset)
// messages.push({ role: 'system', content: `这是一个数据集:${JSON.stringify(datasetInfo)}` })
// }
const dataset = localStorage.getItem('dataset')
if (dataset) {
const datasetInfo = JSON.parse(dataset)
messages.push({ role: 'system', content: `这是一个数据集:${JSON.stringify(datasetInfo)}` })
}
data.messages = [...messages, ...data.messages]
const providers = {
......@@ -150,7 +150,7 @@ const aiService = {
openAI,
}
const provider = providers[data.model as keyof typeof providers] || openAI
const provider = providers[data.model as keyof typeof providers] || qwen
await provider(data, options)
},
}
......
......@@ -9,6 +9,7 @@ export interface AIMessage {
content: string
reasoning_content?: string
json?: any
loading?: boolean
}
export interface AIData {
......
......@@ -54,6 +54,7 @@ export const useAIStore = create<AIState>((set, get) => ({
{
signal: controller.signal,
onUpdate: (message) => {
console.log(message)
set((state) => {
const messageIndex = state.messages.findIndex((msg) => msg.id === message.id)
......
import { Button, Flex, Modal, Spin } from 'antd'
import { Button, Modal } from 'antd'
import { useEffect, useState } from 'react'
import { useAI } from '@/ai/useAI'
import MarkdownRender from '@/components/MarkdownRender'
import AIBubble from '@/ai/AIBubble'
export default function AIModal({ prompt }: { prompt: string }) {
const [open, setOpen] = useState(false)
......@@ -9,9 +9,7 @@ export default function AIModal({ prompt }: { prompt: string }) {
useEffect(() => {
if (open) {
post({
messages: [{ role: 'user', content: prompt }],
})
post({ messages: [{ role: 'user', content: prompt }] })
}
}, [open, prompt])
return (
......@@ -20,10 +18,7 @@ export default function AIModal({ prompt }: { prompt: string }) {
AI建议
</Button>
<Modal title="AI建议" open={open} footer={null} width={1000} onCancel={() => setOpen(false)} destroyOnClose>
<MarkdownRender>{message?.content}</MarkdownRender>
<Flex justify="center">
<Spin size="large" spinning={isLoading}></Spin>
</Flex>
<AIBubble loading={!message?.content} typing={isLoading} content={message?.content}></AIBubble>
</Modal>
</>
)
......
import { Button, Flex, Modal, Spin } from 'antd'
import { Button, Modal } from 'antd'
import { useEffect, useState } from 'react'
import { useAI } from '@/ai/useAI'
import MarkdownRender from '@/components/MarkdownRender'
import AIBubble from '@/ai/AIBubble'
export default function DataReport() {
const [open, setOpen] = useState(false)
......@@ -26,10 +26,7 @@ export default function DataReport() {
数据分析报告
</Button>
<Modal title="数据分析报告" open={open} footer={null} width={1000} onCancel={() => setOpen(false)} destroyOnClose>
<MarkdownRender>{message?.content}</MarkdownRender>
<Flex justify="center">
<Spin size="large" spinning={isLoading}></Spin>
</Flex>
<AIBubble loading={!message?.content} typing={isLoading} content={message?.content}></AIBubble>
</Modal>
</>
)
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论