fix: use agent avatar for auto mode and hide selector in agent mode
This commit is contained in:
parent
9cb6a779c3
commit
afd231dde0
@ -3,7 +3,6 @@ import {
|
|||||||
getAgentAiModelWithProvider,
|
getAgentAiModelWithProvider,
|
||||||
getDefaultAiModel,
|
getDefaultAiModel,
|
||||||
getEnabledAiModelsWithProvider,
|
getEnabledAiModelsWithProvider,
|
||||||
getSiteSettings,
|
|
||||||
} from "@/lib/db/queries";
|
} from "@/lib/db/queries";
|
||||||
import { ChatSDKError } from "@/lib/errors";
|
import { ChatSDKError } from "@/lib/errors";
|
||||||
import { isAiModelAgentAuto } from "@/lib/db/ai-model-flags";
|
import { isAiModelAgentAuto } from "@/lib/db/ai-model-flags";
|
||||||
@ -34,7 +33,6 @@ export async function GET() {
|
|||||||
const modelsWithProvider = await getEnabledAiModelsWithProvider(false);
|
const modelsWithProvider = await getEnabledAiModelsWithProvider(false);
|
||||||
const agentModelWithProvider = await getAgentAiModelWithProvider();
|
const agentModelWithProvider = await getAgentAiModelWithProvider();
|
||||||
const defaultModel = await getDefaultAiModel();
|
const defaultModel = await getDefaultAiModel();
|
||||||
const siteSettings = await getSiteSettings();
|
|
||||||
const visibleModelsWithProvider = sortModelsForDisplay(
|
const visibleModelsWithProvider = sortModelsForDisplay(
|
||||||
modelsWithProvider
|
modelsWithProvider
|
||||||
.filter(({ model }) => !isAiModelAgentAuto(model))
|
.filter(({ model }) => !isAiModelAgentAuto(model))
|
||||||
@ -68,32 +66,6 @@ export async function GET() {
|
|||||||
sortOrder: model.sortOrder ?? 0,
|
sortOrder: model.sortOrder ?? 0,
|
||||||
}));
|
}));
|
||||||
|
|
||||||
// Agent 模式在前端展示头像/参数时,优先使用“Agent模式 - 默认生图模型”的配置
|
|
||||||
// 避免展示成分析模型(如视觉模型)的头像,导致与管理员设置不一致
|
|
||||||
const imageGenModelsWithProvider = visibleModelsWithProviderSorted.filter(
|
|
||||||
({ model }) => model.supportsImageGen
|
|
||||||
);
|
|
||||||
const configuredAutoImageModelId =
|
|
||||||
typeof siteSettings?.canvasAutoModeDefaultModelId === "string"
|
|
||||||
? siteSettings.canvasAutoModeDefaultModelId.trim()
|
|
||||||
: "";
|
|
||||||
const configuredAutoImageModel = configuredAutoImageModelId
|
|
||||||
? imageGenModelsWithProvider.find(
|
|
||||||
({ model }) => model.id === configuredAutoImageModelId
|
|
||||||
)
|
|
||||||
: undefined;
|
|
||||||
const defaultImageGenModel =
|
|
||||||
(defaultModel &&
|
|
||||||
!isAiModelAgentAuto(defaultModel) &&
|
|
||||||
defaultModel.supportsImageGen
|
|
||||||
? imageGenModelsWithProvider.find(({ model }) => model.id === defaultModel.id)
|
|
||||||
: undefined) || imageGenModelsWithProvider[0];
|
|
||||||
const agentDisplayModelWithProvider =
|
|
||||||
configuredAutoImageModel ||
|
|
||||||
defaultImageGenModel ||
|
|
||||||
agentModelWithProvider ||
|
|
||||||
null;
|
|
||||||
|
|
||||||
const resolvedDefaultModelId =
|
const resolvedDefaultModelId =
|
||||||
(defaultModel &&
|
(defaultModel &&
|
||||||
!isAiModelAgentAuto(defaultModel) &&
|
!isAiModelAgentAuto(defaultModel) &&
|
||||||
@ -106,13 +78,13 @@ export async function GET() {
|
|||||||
return Response.json({
|
return Response.json({
|
||||||
models,
|
models,
|
||||||
defaultModelId: resolvedDefaultModelId,
|
defaultModelId: resolvedDefaultModelId,
|
||||||
agentModel: agentDisplayModelWithProvider
|
agentModel: agentModelWithProvider
|
||||||
? {
|
? {
|
||||||
id: agentDisplayModelWithProvider.model.id,
|
id: agentModelWithProvider.model.id,
|
||||||
displayName: agentDisplayModelWithProvider.model.displayName,
|
displayName: agentModelWithProvider.model.displayName,
|
||||||
avatarUrl: agentDisplayModelWithProvider.model.avatarUrl,
|
avatarUrl: agentModelWithProvider.model.avatarUrl,
|
||||||
providerType: agentDisplayModelWithProvider.provider.type,
|
providerType: agentModelWithProvider.provider.type,
|
||||||
imageGenConfig: agentDisplayModelWithProvider.model.imageGenConfig,
|
imageGenConfig: agentModelWithProvider.model.imageGenConfig,
|
||||||
}
|
}
|
||||||
: null,
|
: null,
|
||||||
});
|
});
|
||||||
|
|||||||
@ -5386,32 +5386,34 @@ export function CanvasChatPanel({ chatId, initialMessages = [], onClose, onOpenF
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div className="flex items-center gap-2 flex-shrink-0">
|
<div className="flex items-center gap-2 flex-shrink-0">
|
||||||
<Select
|
{activeComposerMode !== "agent" ? (
|
||||||
value={modelSelectValue}
|
<Select
|
||||||
onValueChange={(value) => {
|
value={modelSelectValue}
|
||||||
setSelectedModelId(value);
|
onValueChange={(value) => {
|
||||||
if (value !== "auto" || !aiDetailGenerationEnabled) {
|
setSelectedModelId(value);
|
||||||
setIsDetailGenerationMode(false);
|
if (value !== "auto" || !aiDetailGenerationEnabled) {
|
||||||
}
|
setIsDetailGenerationMode(false);
|
||||||
}}
|
}
|
||||||
>
|
}}
|
||||||
<SelectTrigger className="h-8 w-8 rounded-full border border-[#cfd4dc] bg-white p-0 justify-center [&>svg]:hidden">
|
>
|
||||||
<span className="h-6 w-6 overflow-hidden rounded-full bg-white flex items-center justify-center">
|
<SelectTrigger className="h-8 w-8 rounded-full border border-[#cfd4dc] bg-white p-0 justify-center [&>svg]:hidden">
|
||||||
{selectDisplayModel?.avatarUrl ? (
|
<span className="h-6 w-6 overflow-hidden rounded-full bg-white flex items-center justify-center">
|
||||||
<img
|
{selectDisplayModel?.avatarUrl ? (
|
||||||
src={selectDisplayModel.avatarUrl}
|
<img
|
||||||
alt={selectDisplayModel.displayName || "模型头像"}
|
src={selectDisplayModel.avatarUrl}
|
||||||
className="h-full w-full object-cover"
|
alt={selectDisplayModel.displayName || "模型头像"}
|
||||||
/>
|
className="h-full w-full object-cover"
|
||||||
) : (
|
/>
|
||||||
<span className="flex h-full w-full items-center justify-center text-[10px] font-medium text-[#4b5563]">
|
) : (
|
||||||
{(selectDisplayModel?.displayName || "A").slice(0, 1)}
|
<span className="flex h-full w-full items-center justify-center text-[10px] font-medium text-[#4b5563]">
|
||||||
</span>
|
{(selectDisplayModel?.displayName || "A").slice(0, 1)}
|
||||||
)}
|
</span>
|
||||||
</span>
|
)}
|
||||||
</SelectTrigger>
|
</span>
|
||||||
{renderModelSelectContent()}
|
</SelectTrigger>
|
||||||
</Select>
|
{renderModelSelectContent()}
|
||||||
|
</Select>
|
||||||
|
) : null}
|
||||||
|
|
||||||
<Button
|
<Button
|
||||||
size="icon"
|
size="icon"
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user