2025-08-24 22:32:37 +08:00
|
|
|
|
import { apiGet, apiPost, apiDelete, apiPut, apiAdminGet, apiAdminPost } from './base'
|
2025-05-04 21:04:01 +08:00
|
|
|
|
import { useUserStore } from '@/stores/user'
|
2025-05-02 23:56:59 +08:00
|
|
|
|
|
|
|
|
|
|
/**
|
2025-08-24 22:32:37 +08:00
|
|
|
|
* 智能体API模块
|
|
|
|
|
|
* 包含智能体管理、聊天、配置等功能
|
2025-05-02 23:56:59 +08:00
|
|
|
|
* 权限要求: 任何已登录用户(普通用户、管理员、超级管理员)
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
2025-05-04 21:04:01 +08:00
|
|
|
|
|
2025-08-24 22:32:37 +08:00
|
|
|
|
|
|
|
|
|
|
// =============================================================================
|
|
|
|
|
|
// === 智能体聊天分组 ===
|
|
|
|
|
|
// =============================================================================
|
|
|
|
|
|
|
|
|
|
|
|
export const agentApi = {
|
2025-05-04 21:04:01 +08:00
|
|
|
|
/**
|
|
|
|
|
|
* 发送聊天消息到指定智能体(流式响应)
|
|
|
|
|
|
* @param {string} agentId - 智能体ID
|
|
|
|
|
|
* @param {Object} data - 聊天数据
|
|
|
|
|
|
* @returns {Promise} - 聊天响应流
|
|
|
|
|
|
*/
|
|
|
|
|
|
sendAgentMessage: (agentId, data) => {
|
|
|
|
|
|
return fetch(`/api/chat/agent/${agentId}`, {
|
|
|
|
|
|
method: 'POST',
|
|
|
|
|
|
headers: {
|
|
|
|
|
|
'Content-Type': 'application/json',
|
|
|
|
|
|
...useUserStore().getAuthHeaders()
|
|
|
|
|
|
},
|
|
|
|
|
|
body: JSON.stringify(data)
|
|
|
|
|
|
})
|
|
|
|
|
|
},
|
|
|
|
|
|
|
2025-05-02 23:56:59 +08:00
|
|
|
|
/**
|
|
|
|
|
|
* 简单聊天调用(非流式)
|
|
|
|
|
|
* @param {string} query - 查询内容
|
|
|
|
|
|
* @returns {Promise} - 聊天响应
|
|
|
|
|
|
*/
|
2025-08-24 22:32:37 +08:00
|
|
|
|
simpleCall: (query) => apiPost('/api/chat/call', { query }),
|
2025-05-02 23:56:59 +08:00
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* 获取默认智能体
|
|
|
|
|
|
* @returns {Promise} - 默认智能体信息
|
|
|
|
|
|
*/
|
2025-08-24 22:32:37 +08:00
|
|
|
|
getDefaultAgent: () => apiGet('/api/chat/default_agent'),
|
2025-05-02 23:56:59 +08:00
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* 获取智能体列表
|
|
|
|
|
|
* @returns {Promise} - 智能体列表
|
|
|
|
|
|
*/
|
2025-08-24 22:32:37 +08:00
|
|
|
|
getAgents: () => apiGet('/api/chat/agent'),
|
2025-05-02 23:56:59 +08:00
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* 获取单个智能体详情
|
|
|
|
|
|
* @param {string} agentId - 智能体ID
|
|
|
|
|
|
* @returns {Promise} - 智能体详情
|
|
|
|
|
|
*/
|
2025-08-24 22:32:37 +08:00
|
|
|
|
getAgentDetail: (agentId) => apiGet(`/api/chat/agent/${agentId}`),
|
2025-05-02 23:56:59 +08:00
|
|
|
|
|
2025-05-15 22:34:32 +08:00
|
|
|
|
/**
|
|
|
|
|
|
* 获取智能体历史消息
|
2025-07-23 04:02:36 +08:00
|
|
|
|
* @param {string} agentId - 智能体ID
|
2025-05-15 22:34:32 +08:00
|
|
|
|
* @param {string} threadId - 会话ID
|
|
|
|
|
|
* @returns {Promise} - 历史消息
|
|
|
|
|
|
*/
|
2025-08-24 22:32:37 +08:00
|
|
|
|
getAgentHistory: (agentId, threadId) => apiGet(`/api/chat/agent/${agentId}/history?thread_id=${threadId}`),
|
2025-05-02 23:56:59 +08:00
|
|
|
|
|
2025-10-05 14:50:34 +08:00
|
|
|
|
/**
|
|
|
|
|
|
* Submit feedback for a message
|
|
|
|
|
|
* @param {number} messageId - Message ID
|
|
|
|
|
|
* @param {string} rating - 'like' or 'dislike'
|
|
|
|
|
|
* @param {string|null} reason - Optional reason for dislike
|
|
|
|
|
|
* @returns {Promise} - Feedback response
|
|
|
|
|
|
*/
|
|
|
|
|
|
submitMessageFeedback: (messageId, rating, reason = null) =>
|
|
|
|
|
|
apiPost(`/api/chat/message/${messageId}/feedback`, { rating, reason }),
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* Get feedback status for a message
|
|
|
|
|
|
* @param {number} messageId - Message ID
|
|
|
|
|
|
* @returns {Promise} - Feedback status
|
|
|
|
|
|
*/
|
|
|
|
|
|
getMessageFeedback: (messageId) => apiGet(`/api/chat/message/${messageId}/feedback`),
|
|
|
|
|
|
|
2025-05-18 16:18:01 +08:00
|
|
|
|
/**
|
|
|
|
|
|
* 获取模型提供商的模型列表
|
|
|
|
|
|
* @param {string} provider - 模型提供商
|
|
|
|
|
|
* @returns {Promise} - 模型列表
|
|
|
|
|
|
*/
|
2025-08-24 22:32:37 +08:00
|
|
|
|
getProviderModels: (provider) => apiGet(`/api/chat/models?model_provider=${provider}`),
|
2025-05-18 16:18:01 +08:00
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* 更新模型提供商的模型列表
|
|
|
|
|
|
* @param {string} provider - 模型提供商
|
|
|
|
|
|
* @param {Array} models - 选中的模型列表
|
|
|
|
|
|
* @returns {Promise} - 更新结果
|
|
|
|
|
|
*/
|
2025-08-24 22:32:37 +08:00
|
|
|
|
updateProviderModels: (provider, models) => apiPost(`/api/chat/models/update?model_provider=${provider}`, models),
|
2025-05-02 23:56:59 +08:00
|
|
|
|
|
|
|
|
|
|
/**
|
2025-08-24 22:32:37 +08:00
|
|
|
|
* 获取智能体配置
|
|
|
|
|
|
* @param {string} agentName - 智能体名称
|
|
|
|
|
|
* @returns {Promise} - 智能体配置
|
2025-05-02 23:56:59 +08:00
|
|
|
|
*/
|
2025-08-24 22:32:37 +08:00
|
|
|
|
getAgentConfig: async (agentName) => {
|
|
|
|
|
|
return apiAdminGet(`/api/chat/agent/${agentName}/config`)
|
|
|
|
|
|
},
|
2025-05-04 21:04:01 +08:00
|
|
|
|
|
2025-05-02 23:56:59 +08:00
|
|
|
|
/**
|
2025-08-24 22:32:37 +08:00
|
|
|
|
* 保存智能体配置
|
|
|
|
|
|
* @param {string} agentName - 智能体名称
|
|
|
|
|
|
* @param {Object} config - 配置对象
|
|
|
|
|
|
* @returns {Promise} - 保存结果
|
|
|
|
|
|
*/
|
|
|
|
|
|
saveAgentConfig: async (agentName, config) => {
|
|
|
|
|
|
return apiAdminPost(`/api/chat/agent/${agentName}/config`, config)
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* 设置默认智能体
|
|
|
|
|
|
* @param {string} agentId - 智能体ID
|
|
|
|
|
|
* @returns {Promise} - 设置结果
|
|
|
|
|
|
*/
|
|
|
|
|
|
setDefaultAgent: async (agentId) => {
|
|
|
|
|
|
return apiAdminPost('/api/chat/set_default_agent', { agent_id: agentId })
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* 获取所有可用工具的信息
|
|
|
|
|
|
* @returns {Promise} - 工具信息列表
|
2025-05-02 23:56:59 +08:00
|
|
|
|
*/
|
2025-08-31 00:34:26 +08:00
|
|
|
|
getTools: (agentId) => apiGet(`/api/chat/tools?agent_id=${agentId}`)
|
2025-05-02 23:56:59 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
2025-08-24 22:32:37 +08:00
|
|
|
|
|
|
|
|
|
|
// =============================================================================
|
|
|
|
|
|
// === 对话线程分组 ===
|
|
|
|
|
|
// =============================================================================
|
|
|
|
|
|
|
2025-05-15 22:34:32 +08:00
|
|
|
|
export const threadApi = {
|
|
|
|
|
|
/**
|
|
|
|
|
|
* 获取对话线程列表
|
|
|
|
|
|
* @param {string} agentId - 智能体ID
|
|
|
|
|
|
* @returns {Promise} - 对话线程列表
|
|
|
|
|
|
*/
|
|
|
|
|
|
getThreads: (agentId) => {
|
2025-08-31 00:34:26 +08:00
|
|
|
|
const url = `/api/chat/threads?agent_id=${agentId}`;
|
2025-08-24 22:32:37 +08:00
|
|
|
|
return apiGet(url);
|
2025-05-15 22:34:32 +08:00
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* 创建新对话线程
|
|
|
|
|
|
* @param {string} agentId - 智能体ID
|
|
|
|
|
|
* @param {string} title - 对话标题
|
|
|
|
|
|
* @param {Object} metadata - 元数据
|
|
|
|
|
|
* @returns {Promise} - 创建结果
|
|
|
|
|
|
*/
|
|
|
|
|
|
createThread: (agentId, title, metadata) => apiPost('/api/chat/thread', {
|
|
|
|
|
|
agent_id: agentId,
|
2025-08-09 23:18:19 +08:00
|
|
|
|
title: title || '新的对话',
|
2025-05-15 22:34:32 +08:00
|
|
|
|
metadata: metadata || {}
|
2025-08-24 22:32:37 +08:00
|
|
|
|
}),
|
2025-05-15 22:34:32 +08:00
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* 更新对话线程
|
|
|
|
|
|
* @param {string} threadId - 对话线程ID
|
|
|
|
|
|
* @param {string} title - 对话标题
|
|
|
|
|
|
* @param {string} description - 对话描述
|
|
|
|
|
|
* @returns {Promise} - 更新结果
|
|
|
|
|
|
*/
|
|
|
|
|
|
updateThread: (threadId, title, description) => apiPut(`/api/chat/thread/${threadId}`, {
|
|
|
|
|
|
title,
|
|
|
|
|
|
description
|
2025-08-24 22:32:37 +08:00
|
|
|
|
}),
|
2025-05-15 22:34:32 +08:00
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* 删除对话线程
|
|
|
|
|
|
* @param {string} threadId - 对话线程ID
|
|
|
|
|
|
* @returns {Promise} - 删除结果
|
|
|
|
|
|
*/
|
2025-08-24 22:32:37 +08:00
|
|
|
|
deleteThread: (threadId) => apiDelete(`/api/chat/thread/${threadId}`)
|
|
|
|
|
|
};
|