import {Input, Button, Spin, Select} from "antd"; import React, {useEffect, useRef, useState} from "react"; import Markdown from 'react-markdown' import remarkGfm from "remark-gfm" import {Prism as SyntaxHighlighter} from "react-syntax-highlighter" import {oneDark as dark} from "react-syntax-highlighter/dist/esm/styles/prism" import {CopyToClipboard} from 'react-copy-to-clipboard'; import {getChat, getTags} from '@/services/chat-service' import styles from './Chat.module.less' import {CopyOutlined} from "@ant-design/icons"; const {TextArea} = Input; const {Option} = Select export default function Chat() { const textAreaRef = useRef(null); const [inputText, setInputText] = useState('') const [assistantMsg, setAssistantMsg] = useState({}) const [messages, setMessages] = useState([]) const [loading, setLoading] = useState(false) const [spinTip, setSpinTip] = useState('') const [models, setModels] = useState([]) const [useModels, setUseModels] = useState('') useEffect(() => { getLocalModels() }, []) function InputChange(e: any) { setInputText(e.target.value) } async function getLocalModels() { const res = await getTags() console.log(2424, res) const models = res.data.models.map((elm: any) => elm.model) console.log(31, models) setModels(models) setUseModels(models[0]) } async function getText() { setLoading(true) const _messages = [...messages] const res = await getChat({ "model": useModels, "messages": [ ...messages, { "role": "user", "content": `翻译这段文字 ${inputText}` } ], "stream": false }) _messages.push( { "role": "user", "content": `${inputText}` } ) setAssistantMsg(res.data.message); _messages.push(res.data.message) setMessages(_messages) setInputText('') setLoading(false) /*if (res && res?.data) { const messageData = qs.parse(res.data) Object.keys(messageData).forEach(key => { console.log(24, qs.parse(key)); }) }*/ } function clearText() { setInputText('') setMessages([]) } function modelChange(e: any) { setUseModels(e) } return
{useModels ? `${useModels}`.replace(/:latest/, '') : '选择模型:'}
{/*value={inputText}*/}
{ messages.length > 0 && messages.map((item: any, index: number) => (
{item.role !== 'user' &&
{item.role}:
}
{/**/} {/*// @ts-ignore*/} {String(children).replace(/\n$/, '')}
) : ( {children} ) } }} />
)) }
}