1
This commit is contained in:
@@ -0,0 +1,21 @@
|
||||
import request from './request.js'
|
||||
|
||||
export function login(data) {
|
||||
return request.post('/system-config/login', data)
|
||||
}
|
||||
|
||||
export function getSystemConfig() {
|
||||
return request.get('/system-config')
|
||||
}
|
||||
|
||||
export function updateSystemConfig(data) {
|
||||
return request.put('/system-config', data)
|
||||
}
|
||||
|
||||
export function regenerateToken() {
|
||||
return request.post('/system-config/regenerate-token')
|
||||
}
|
||||
|
||||
export function getToken() {
|
||||
return request.get('/system-config/token')
|
||||
}
|
||||
@@ -0,0 +1,73 @@
|
||||
import request from './request.js'
|
||||
|
||||
export function listConversations() {
|
||||
return request.get('/conversation/list')
|
||||
}
|
||||
|
||||
export function saveConversation(data) {
|
||||
return request.post('/conversation/save', data)
|
||||
}
|
||||
|
||||
export function deleteConversation(id) {
|
||||
return request.post('/conversation/delete', { id })
|
||||
}
|
||||
|
||||
export function listMessages(conversationId) {
|
||||
return request.get('/message/list', { params: { conversation_id: conversationId } })
|
||||
}
|
||||
|
||||
// streamChat RAG 问答 SSE:handlers.onCitations / onDelta / onDone / onError
|
||||
export async function streamChat(payload, handlers) {
|
||||
const token = localStorage.getItem('token')
|
||||
let resp
|
||||
try {
|
||||
resp = await fetch('/message/chat', {
|
||||
method: 'POST',
|
||||
headers: {
|
||||
'Content-Type': 'application/json',
|
||||
'Authorization': token ? 'Bearer ' + token : ''
|
||||
},
|
||||
body: JSON.stringify(payload)
|
||||
})
|
||||
} catch (e) {
|
||||
handlers.onError(new Error('网络错误,请检查服务是否启动'))
|
||||
return
|
||||
}
|
||||
if (!resp.ok || !resp.body) {
|
||||
handlers.onError(new Error('请求失败:' + resp.status))
|
||||
return
|
||||
}
|
||||
const reader = resp.body.getReader()
|
||||
const decoder = new TextDecoder()
|
||||
let buf = ''
|
||||
try {
|
||||
while (true) {
|
||||
const { done, value } = await reader.read()
|
||||
if (done) break
|
||||
buf += decoder.decode(value, { stream: true })
|
||||
let idx
|
||||
while ((idx = buf.indexOf('\n\n')) >= 0) {
|
||||
const block = buf.slice(0, idx)
|
||||
buf = buf.slice(idx + 2)
|
||||
for (const line of block.split('\n')) {
|
||||
if (!line.startsWith('data: ')) continue
|
||||
const data = line.slice(6).trim()
|
||||
if (!data || data === '[DONE]') continue
|
||||
let obj
|
||||
try {
|
||||
obj = JSON.parse(data)
|
||||
} catch {
|
||||
continue
|
||||
}
|
||||
if (obj.citations !== undefined) handlers.onCitations(obj)
|
||||
else if (obj.content !== undefined) handlers.onDelta(obj.content)
|
||||
else if (obj.status === 'ok') handlers.onDone()
|
||||
else if (obj.message) handlers.onError(new Error(obj.message))
|
||||
}
|
||||
}
|
||||
}
|
||||
handlers.onDone()
|
||||
} catch (e) {
|
||||
handlers.onError(e)
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
import request from './request.js'
|
||||
|
||||
export function listChunks(params) {
|
||||
return request.get('/chunk/list', { params })
|
||||
}
|
||||
|
||||
export function updateChunk(data) {
|
||||
return request.post('/chunk/update', data)
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
import request from './request.js'
|
||||
|
||||
export function listDatasets() {
|
||||
return request.get('/dataset/list')
|
||||
}
|
||||
|
||||
export function saveDataset(data) {
|
||||
return request.post('/dataset/save', data)
|
||||
}
|
||||
|
||||
export function deleteDataset(id) {
|
||||
return request.post('/dataset/delete', { id })
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
import request from './request.js'
|
||||
|
||||
export function listDocuments(params) {
|
||||
return request.get('/document/list', { params })
|
||||
}
|
||||
|
||||
export function uploadDocument(formData) {
|
||||
return request.post('/document/upload', formData, { headers: { 'Content-Type': 'multipart/form-data' } })
|
||||
}
|
||||
|
||||
export function deleteDocument(id) {
|
||||
return request.post('/document/delete', { id })
|
||||
}
|
||||
|
||||
export function reembedDocument(id) {
|
||||
return request.post('/document/reembed', { id })
|
||||
}
|
||||
|
||||
export function retryParseTask(id) {
|
||||
return request.post('/parse-task/retry', { id })
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
import request from './request.js'
|
||||
|
||||
export function listEntities(params) {
|
||||
return request.get('/kg-entity/list', { params })
|
||||
}
|
||||
|
||||
export function listRelations(params) {
|
||||
return request.get('/kg-relation/list', { params })
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
import request from './request.js'
|
||||
|
||||
export function listModelConfigs(modelType) {
|
||||
return request.get('/model-config/list', { params: { model_type: modelType } })
|
||||
}
|
||||
|
||||
export function saveModelConfig(data) {
|
||||
return request.post('/model-config/save', data)
|
||||
}
|
||||
|
||||
export function deleteModelConfig(id) {
|
||||
return request.post('/model-config/delete', { id })
|
||||
}
|
||||
|
||||
export function testModelConfig(id) {
|
||||
return request.post('/model-config/test', { id })
|
||||
}
|
||||
@@ -0,0 +1,43 @@
|
||||
import axios from 'axios'
|
||||
import { ElMessage } from 'element-plus'
|
||||
|
||||
const request = axios.create({
|
||||
timeout: 300000
|
||||
})
|
||||
|
||||
request.interceptors.request.use(config => {
|
||||
const token = localStorage.getItem('token')
|
||||
if (token) {
|
||||
config.headers.Authorization = 'Bearer ' + token
|
||||
}
|
||||
return config
|
||||
})
|
||||
|
||||
function redirectLogin() {
|
||||
localStorage.removeItem('token')
|
||||
window.location.href = '/#/login'
|
||||
}
|
||||
|
||||
request.interceptors.response.use(
|
||||
response => {
|
||||
const data = response.data
|
||||
if (data.code !== 0) {
|
||||
if (data.code === 401) {
|
||||
redirectLogin()
|
||||
return Promise.reject(new Error(data.message))
|
||||
}
|
||||
ElMessage.error(data.message || '请求失败')
|
||||
return Promise.reject(new Error(data.message))
|
||||
}
|
||||
return data.data
|
||||
},
|
||||
error => {
|
||||
if (error.response?.status === 401) {
|
||||
redirectLogin()
|
||||
}
|
||||
ElMessage.error(error.message || '网络错误')
|
||||
return Promise.reject(error)
|
||||
}
|
||||
)
|
||||
|
||||
export default request
|
||||
Reference in New Issue
Block a user