From 32431a7ce3f9a642ec988cf21bcda8935070ddd2 Mon Sep 17 00:00:00 2001 From: king <18310653075@163.com> Date: 星期五, 14 二月 2025 12:04:29 +0800 Subject: [PATCH] 2025-02-14 --- src/views/mkai/index.jsx | 112 +++++++++++++++++++++++++++++++++++++++++++++---------- 1 files changed, 91 insertions(+), 21 deletions(-) diff --git a/src/views/mkai/index.jsx b/src/views/mkai/index.jsx index 64b076e..ec2e43b 100644 --- a/src/views/mkai/index.jsx +++ b/src/views/mkai/index.jsx @@ -1,8 +1,9 @@ import React, { Component, useState } from 'react' +import { fromJS } from 'immutable' import { Spin, notification, Tooltip, Input } from 'antd' import Api from '@/api' -// import Utils from '@/utils/utils.js' +import Utils from '@/utils/utils.js' import avatar from '@/assets/img/avatar.jpg' import './index.scss' @@ -78,6 +79,7 @@ LoginUID: '', textInput: '', type: 'deepseek-chat', // deepseek-chat deepseek-reasoner + currentChat: {uuid: Utils.getuuid(), list: [], title: ''} } UNSAFE_componentWillMount() { @@ -135,13 +137,15 @@ duration: 10 }) } else { - + this.setState({ + chats: result.data || [] + }) } }) } newContent = () => { - this.setState({textInput: ''}) + this.setState({textInput: '', currentChat: {uuid: Utils.getuuid(), list: [], title: ''}}) let node = document.getElementById('mk-input') node && node.focus() } @@ -157,35 +161,101 @@ } submit = () => { - const { textInput } = this.state + const { textInput, currentChat, UserID, LoginUID } = this.state let val = textInput.replace(/\t+|\v+/g, '').replace(/^\s+|\s+$/g, '') - if (!val) return + if (!val || currentChat.loading) return let node = document.getElementById('mk-input') node && node.blur() - this.setState({textInput: ''}) + let chat = fromJS(currentChat).toJS() + chat.list.push({ role: 'user', content: val }) + chat.list.push({ role: 'assistant', content: '', loading: true }) - // Api.directRequest({ - // url: burl + '/chat/completions', - // method: 'post', - // headers: { 'Content-Type': 'application/json' }, - // data: { - // model: this.state.type, - // messages: [ - // { role: 'user', content: val } - // ], - // stream: false - // } - // }).then(result => { + if (!chat.title) { + chat.title = val.substr(0, 32) + } + chat.loading = true - // }) + this.setState({textInput: '', currentChat: chat}) + + Api.directRequest({ + url: burl + '/chat/completions', + method: 'post', + headers: { 'Content-Type': 'application/json' }, + data: { + model: this.state.type, + messages: chat.list, + stream: false + } + }).then(res => { + let _chat = fromJS(chat).toJS() + + delete _chat.loading + _chat.list.shift() + + let _val = '鏈嶅姟鍣ㄧ箒蹇欙紝璇风◢鍚庡啀璇曘��' + if (res.success && res.choices && res.choices[0]) { + _val = res.choices[0].message.content + } + + _chat.list = _chat.list.map(item => { + delete item.step + return item + }) + + _chat.list.push({ role: 'assistant', content: _val, step: true }) + + this.setState({currentChat: _chat}) + + Api.genericInterface({ + func: 's_deepseek_ai', + rduri: burl + '/webapi/dostars', + file_url: '', + userid: UserID, + LoginUID: LoginUID, + u_id: sessionStorage.getItem('UserID'), + content: window.btoa(window.encodeURIComponent(_val)), + title: window.btoa(window.encodeURIComponent(chat.title)), + data_type: 'reply', + ID: chat.uuid + }).then(r => { + if (!r.status) { + notification.error({ + top: 92, + message: r.message, + duration: 10 + }) + } + }) + }) + + Api.genericInterface({ + func: 's_deepseek_ai', + rduri: burl + '/webapi/dostars', + file_url: '', + userid: UserID, + LoginUID: LoginUID, + u_id: sessionStorage.getItem('UserID'), + content: window.btoa(window.encodeURIComponent(val)), + title: window.btoa(window.encodeURIComponent(chat.title)), + data_type: 'request', + ID: chat.uuid + }).then(result => { + if (!result.status) { + notification.error({ + top: 92, + message: result.message, + duration: 10 + }) + } + }) } render () { - const { loading, textInput, type } = this.state + const { loading, textInput, type, currentChat } = this.state let able = textInput && !/^\s+$/.test(textInput) @@ -201,7 +271,7 @@ <div className="mk-right"> <div className="mk-faad"> <div className="title"> - <span>鏍囬</span> + <span>{currentChat.title}</span> </div> </div> <div className="mk-ksje"> -- Gitblit v1.8.0