feat: 增强智能体模型调用兼容能力
- 增加模型流式开关和 HTTP 传输策略配置 - 使用 AgentScope 执行基础连接、流式与 VLM 双阶段验证 - 固定多模态校验图片并统一验证状态展示
This commit is contained in:
@@ -3,6 +3,7 @@ import type { PropType } from 'vue';
|
||||
|
||||
import type { llmType } from '#/api';
|
||||
import type { ModelAbilityItem } from '#/views/ai/model/modelUtils/model-ability';
|
||||
import type { VerifyButtonStatus } from '#/views/ai/model/modelUtils/model-verification';
|
||||
|
||||
import { ref } from 'vue';
|
||||
|
||||
@@ -13,6 +14,7 @@ import {
|
||||
Edit,
|
||||
Loading,
|
||||
Select,
|
||||
Warning,
|
||||
} from '@element-plus/icons-vue';
|
||||
import { ElButton, ElIcon, ElMessage, ElTag } from 'element-plus';
|
||||
|
||||
@@ -20,6 +22,10 @@ import { verifyModelConfig } from '#/api/ai/llm';
|
||||
import ModelProviderBadge from '#/views/ai/model/ModelProviderBadge.vue';
|
||||
import { getDefaultModelAbility } from '#/views/ai/model/modelUtils/model-ability';
|
||||
import { mapLlmToModelAbility } from '#/views/ai/model/modelUtils/model-ability-utils';
|
||||
import {
|
||||
getVerifyButtonText as getStatusButtonText,
|
||||
resolveModelVerificationFeedback,
|
||||
} from '#/views/ai/model/modelUtils/model-verification';
|
||||
|
||||
const props = defineProps({
|
||||
llmList: {
|
||||
@@ -33,7 +39,6 @@ const props = defineProps({
|
||||
});
|
||||
|
||||
const emit = defineEmits(['deleteLlm', 'editLlm']);
|
||||
type VerifyButtonStatus = 'error' | 'idle' | 'loading' | 'success';
|
||||
const verifyStatusMap = ref<Record<string, VerifyButtonStatus>>({});
|
||||
const getModelId = (llm: llmType) =>
|
||||
String((llm as any).id || (llm as any).llmId || (llm as any).modelId || '');
|
||||
@@ -47,17 +52,7 @@ const setVerifyStatus = (id: string, status: VerifyButtonStatus) => {
|
||||
verifyStatusMap.value[id] = status;
|
||||
};
|
||||
const getVerifyButtonText = (llm: llmType) => {
|
||||
const status = getVerifyStatus(llm);
|
||||
if (status === 'loading') {
|
||||
return '验证中';
|
||||
}
|
||||
if (status === 'success') {
|
||||
return '验证成功';
|
||||
}
|
||||
if (status === 'error') {
|
||||
return '验证失败';
|
||||
}
|
||||
return '验证配置';
|
||||
return getStatusButtonText(getVerifyStatus(llm));
|
||||
};
|
||||
const getVerifyButtonIcon = (llm: llmType) => {
|
||||
const status = getVerifyStatus(llm);
|
||||
@@ -67,6 +62,9 @@ const getVerifyButtonIcon = (llm: llmType) => {
|
||||
if (status === 'success') {
|
||||
return CircleCheck;
|
||||
}
|
||||
if (status === 'warning') {
|
||||
return Warning;
|
||||
}
|
||||
if (status === 'error') {
|
||||
return CircleClose;
|
||||
}
|
||||
@@ -97,17 +95,16 @@ const handleVerifyLlm = async (llm: llmType) => {
|
||||
try {
|
||||
const res = await verifyModelConfig(modelId);
|
||||
|
||||
if (res.errorCode === 0) {
|
||||
setVerifyStatus(modelId, 'success');
|
||||
if (llm.modelType === 'embeddingModel' && res?.data?.dimension) {
|
||||
ElMessage.success(`验证成功,向量维度:${res.data.dimension}`);
|
||||
} else {
|
||||
ElMessage.success('验证成功');
|
||||
}
|
||||
const feedback = resolveModelVerificationFeedback(res, llm.modelType);
|
||||
setVerifyStatus(modelId, feedback.status);
|
||||
|
||||
if (feedback.status === 'success') {
|
||||
ElMessage.success(feedback.message);
|
||||
} else if (feedback.status === 'warning') {
|
||||
ElMessage.warning(feedback.message);
|
||||
} else {
|
||||
setVerifyStatus(modelId, 'error');
|
||||
if (!res.message) {
|
||||
ElMessage.error('验证失败');
|
||||
ElMessage.error(feedback.message);
|
||||
}
|
||||
}
|
||||
} catch {
|
||||
@@ -309,6 +306,10 @@ const getSelectedAbilityTagsForLlm = (llm: llmType): ModelAbilityItem[] => {
|
||||
color: hsl(var(--success));
|
||||
}
|
||||
|
||||
.llm-item__verify-btn.is-warning {
|
||||
color: hsl(var(--warning));
|
||||
}
|
||||
|
||||
.llm-item__verify-btn.is-error {
|
||||
color: hsl(var(--destructive));
|
||||
}
|
||||
@@ -324,6 +325,7 @@ const getSelectedAbilityTagsForLlm = (llm: llmType): ModelAbilityItem[] => {
|
||||
}
|
||||
|
||||
.llm-item__verify-icon.is-success,
|
||||
.llm-item__verify-icon.is-warning,
|
||||
.llm-item__verify-icon.is-error {
|
||||
animation: llm-item-verify-pop 0.32s ease;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user