fix chat pending drop when title model fails and filter auto-title vision model
This commit is contained in:
parent
cbad5ee2e2
commit
8aba32d35d
@ -23,19 +23,28 @@ export async function generateTitleFromUserMessage({
|
||||
}: {
|
||||
message: UIMessage;
|
||||
}) {
|
||||
// 优先使用数据库配置的模型,回退到预定义模型
|
||||
let model = await getSystemModel("title");
|
||||
if (!model) {
|
||||
model = myProvider.languageModel("title-model");
|
||||
const prompt = (getTextFromMessage(message) || "").trim();
|
||||
const fallbackTitle = prompt.slice(0, 20) || "新对话";
|
||||
|
||||
try {
|
||||
// 优先使用数据库配置的模型,回退到预定义模型
|
||||
let model = await getSystemModel("title");
|
||||
if (!model) {
|
||||
model = myProvider.languageModel("title-model");
|
||||
}
|
||||
|
||||
const { text: title } = await generateText({
|
||||
model,
|
||||
system: titlePrompt,
|
||||
prompt,
|
||||
});
|
||||
|
||||
const normalized = (title || "").trim();
|
||||
return normalized || fallbackTitle;
|
||||
} catch (error) {
|
||||
console.warn("[generateTitleFromUserMessage] fallback title:", error);
|
||||
return fallbackTitle;
|
||||
}
|
||||
|
||||
const { text: title } = await generateText({
|
||||
model,
|
||||
system: titlePrompt,
|
||||
prompt: getTextFromMessage(message),
|
||||
});
|
||||
|
||||
return title;
|
||||
}
|
||||
|
||||
export async function deleteTrailingMessages({ id }: { id: string }) {
|
||||
|
||||
@ -21,15 +21,27 @@ export async function POST(request: NextRequest) {
|
||||
return NextResponse.json({ error: "Image URL is required" }, { status: 400 });
|
||||
}
|
||||
|
||||
const blockedProviderTypes = new Set([
|
||||
"fal-video",
|
||||
"qianwen-video",
|
||||
"volcano-video",
|
||||
"doubao-video",
|
||||
]);
|
||||
|
||||
// 从数据库获取支持视觉的模型(优先使用 supportsVision)
|
||||
const modelsData = await getEnabledAiModelsWithProvider();
|
||||
console.log("[Auto-title] Available models count:", modelsData.length);
|
||||
console.log("[Auto-title] All model IDs:", modelsData.map(m => m.model.modelId));
|
||||
|
||||
let visionModelData = modelsData.find(m => m.model.supportsVision);
|
||||
let visionModelData = modelsData.find(
|
||||
(m) => m.model.supportsVision && !blockedProviderTypes.has(String(m.provider?.type || "")),
|
||||
);
|
||||
if (!visionModelData) {
|
||||
// 兼容旧配置:根据模型名称兜底匹配
|
||||
visionModelData = modelsData.find(m => {
|
||||
if (blockedProviderTypes.has(String(m.provider?.type || ""))) {
|
||||
return false;
|
||||
}
|
||||
const id = m.model.modelId?.toLowerCase() || '';
|
||||
const name = m.model.displayName?.toLowerCase() || '';
|
||||
return id.includes('qwen-vl') ||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user