This commit is contained in:
2026-02-23 01:04:00 +08:00
parent 1e2e726744
commit c8598d3dea
7 changed files with 28 additions and 14 deletions

View File

@@ -25,6 +25,7 @@ export function getAgentList() {
* @param {number} options.agentId - 智能体ID
* @param {string} options.content - 用户输入内容
* @param {string} [options.conversationId] - 会话ID可选首次对话不传
* @param {string} [options.modelMode] - 模型模式pro-深度版 standard-标准版
* @param {AbortController} [options.ctrl] - 取消控制器
* @param {Function} options.onMessage - 消息回调
* @param {Function} [options.onError] - 错误回调
@@ -35,6 +36,7 @@ export async function sendChatStream(options) {
agentId,
content,
conversationId,
modelMode = 'pro',
ctrl,
onMessage,
onError,
@@ -54,7 +56,8 @@ export async function sendChatStream(options) {
body: JSON.stringify({
agentId,
content,
conversationId
conversationId,
modelMode
}),
onmessage: (event) => {
if (typeof onMessage === 'function') {

View File

@@ -207,6 +207,7 @@ const handleSend = async () => {
agentId: props.agent?.id,
content: question,
conversationId: conversationId.value,
modelMode: modelMode.value,
ctrl: abortController.value,
onMessage: (result) => {
if (result.event === 'message' && result.content) {

View File

@@ -29,8 +29,10 @@ public class DifyServiceImpl implements DifyService {
/** Dify 平台标识 */
private static final String PLATFORM_DIFY = "dify";
/** Dify 模型类型 */
private static final String MODEL_TYPE_WRITING = "writing";
/** Dify 模型类型 - Pro深度版 */
private static final String MODEL_TYPE_WRITING_PRO = "writing_pro";
/** Dify 模型类型 - 标准版 */
private static final String MODEL_TYPE_WRITING_STANDARD = "writing_standard";
@Resource
private AiAgentService aiAgentService;
@@ -55,8 +57,11 @@ public class DifyServiceImpl implements DifyService {
throw new RuntimeException("智能体不存在");
}
// 2. 获取积分配置
AiModelConfigDO config = pointsService.getConfig(PLATFORM_DIFY, MODEL_TYPE_WRITING);
// 2. 根据 modelMode 获取对应的积分配置
String modelType = "standard".equals(reqVO.getModelMode())
? MODEL_TYPE_WRITING_STANDARD
: MODEL_TYPE_WRITING_PRO;
AiModelConfigDO config = pointsService.getConfig(PLATFORM_DIFY, modelType);
// 3. 预检积分
pointsService.checkPoints(userId, config.getConsumePoints());

View File

@@ -23,4 +23,7 @@ public class DifyChatReqVO {
@Schema(description = "会话ID可选首次对话不传")
private String conversationId;
@Schema(description = "模型模式pro-深度版 standard-标准版", example = "pro")
private String modelMode = "pro";
}

View File

@@ -34,10 +34,12 @@ public interface AiAgentMapper extends BaseMapperX<AiAgentDO> {
}
/**
* 查询启用状态的智能体列表
* 查询启用状态的智能体列表(只查询必要字段)
*/
default List<AiAgentDO> selectEnabledList() {
return selectList(new LambdaQueryWrapperX<AiAgentDO>()
.select(AiAgentDO::getId, AiAgentDO::getAgentId, AiAgentDO::getAgentName,
AiAgentDO::getIcon, AiAgentDO::getDescription, AiAgentDO::getCategoryName)
.eq(AiAgentDO::getStatus, 1)
.orderByDesc(AiAgentDO::getId));
}

View File

@@ -10,7 +10,7 @@
<el-form-item label="模型名称" prop="modelName">
<el-input v-model="formData.modelName" placeholder="请输入模型名称" />
</el-form-item>
<el-form-item label="模型标识/编码" prop="modelCode">
<el-form-item label="模型标识" prop="modelCode">
<el-input v-model="formData.modelCode" placeholder="请输入模型标识/编码" />
</el-form-item>
<el-form-item label="所属平台" prop="platform">
@@ -33,7 +33,7 @@
<el-form-item label="每日请求次数" prop="dailyLimit">
<el-input v-model="formData.dailyLimit" placeholder="请输入每日请求次数" />
</el-form-item>
<el-form-item label="模型类型(image-图像 text-文本 video-视频 audio-音频)" prop="modelType">
<el-form-item label="模型类型" prop="modelType">
<el-radio-group v-model="formData.modelType">
<el-radio value="image">图像</el-radio>
<el-radio value="text">文本</el-radio>

View File

@@ -17,10 +17,10 @@
class="!w-240px"
/>
</el-form-item>
<el-form-item label="模型标识/编码" prop="modelCode">
<el-form-item label="模型标识" prop="modelCode">
<el-input
v-model="queryParams.modelCode"
placeholder="请输入模型标识/编码"
placeholder="请输入模型标识"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
@@ -107,15 +107,15 @@
@selection-change="handleRowCheckboxChange"
>
<el-table-column type="selection" width="55" />
<el-table-column label="模型名称" align="center" prop="modelName" />
<el-table-column label="模型标识/编码" align="center" prop="modelCode" />
<el-table-column label="模型名称" align="center" width="150" prop="modelName" />
<el-table-column label="模型标识" align="center" prop="modelCode" />
<el-table-column label="所属平台" align="center" prop="platform" />
<el-table-column label="API秘钥" align="center" prop="apiKey" />
<el-table-column label="状态(0-禁用 1-启用)" align="center" prop="status" />
<el-table-column label="状态" align="center" prop="status" />
<el-table-column label="温度参数" align="center" prop="temperature" />
<el-table-column label="回复数Token数" align="center" prop="maxTokens" />
<el-table-column label="每日请求次数" align="center" prop="dailyLimit" />
<el-table-column label="模型类型(image-图像 text-文本 video-视频 audio-音频)" align="center" prop="modelType" />
<el-table-column label="模型类型" align="center" prop="modelType" />
<el-table-column label="消耗积分" align="center" prop="consumePoints" />
<el-table-column label="最大文本数量" align="center" prop="maxTextLength" />
<el-table-column label="图片最大像素" align="center" prop="maxImageSize" />