feat(页面): 聊天页面集成图片生成功能
- 传递 isGeneratingImage 状态到消息气泡 - 传递 generatedImages 数据到消息组件 - 支持历史消息中的生成图片显示
This commit is contained in:
parent
8b558fb780
commit
de0860a5aa
@ -112,6 +112,8 @@ export default function ChatPage({ params }: PageProps) {
|
||||
uploadedDocuments: (msg.uploadedDocuments as { name: string; size: number; type: string; content: string }[]) || undefined,
|
||||
// 从数据库加载使用的工具列表
|
||||
usedTools: (msg.usedTools as string[]) || undefined,
|
||||
// 从数据库加载 AI 生成的图片(Gemini 等图片生成模型)
|
||||
generatedImages: (msg.generatedImages as { mimeType: string; data: string; width?: number; height?: number }[]) || undefined,
|
||||
}));
|
||||
setInitialMessages(historyMessages);
|
||||
}
|
||||
@ -393,12 +395,31 @@ export default function ChatPage({ params }: PageProps) {
|
||||
setLinkPreviewOpen(true);
|
||||
};
|
||||
|
||||
// 判断是否为图片生成模型
|
||||
const isImageGenerationModel = (modelId: string): boolean => {
|
||||
const imageModels = [
|
||||
'gemini-2.0-flash-preview-image-generation',
|
||||
'gemini-3-pro-image-preview',
|
||||
'imagen-3.0-generate-002',
|
||||
];
|
||||
return imageModels.some(model => modelId.includes(model)) ||
|
||||
modelId.includes('image-generation') ||
|
||||
modelId.includes('imagen');
|
||||
};
|
||||
|
||||
// 获取模型标签
|
||||
const getModelTag = (modelId: string, supportsThinking: boolean): string => {
|
||||
if (isImageGenerationModel(modelId)) return '图片';
|
||||
if (supportsThinking) return 'Thinking';
|
||||
return '';
|
||||
};
|
||||
|
||||
// 转换模型格式
|
||||
const modelOptions = models.map((m) => ({
|
||||
id: m.modelId,
|
||||
name: m.modelId,
|
||||
displayName: m.displayName,
|
||||
tag: m.supportsThinking ? 'Thinking' : '',
|
||||
tag: getModelTag(m.modelId, m.supportsThinking),
|
||||
}));
|
||||
|
||||
const selectedModel = modelOptions.find((m) => m.id === selectedModelId) || modelOptions[0];
|
||||
@ -623,6 +644,8 @@ export default function ChatPage({ params }: PageProps) {
|
||||
uploadedDocuments={message.uploadedDocuments}
|
||||
usedTools={message.usedTools}
|
||||
pyodideStatus={message.pyodideStatus}
|
||||
generatedImages={message.generatedImages}
|
||||
isGeneratingImage={message.isGeneratingImage}
|
||||
onRegenerate={message.role === 'assistant' && !isStreaming ? handleRegenerate : undefined}
|
||||
onSaveToNote={message.role === 'assistant' && !isStreaming ? handleSaveToNote : undefined}
|
||||
onLinkClick={handleLinkClick}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user