Skip to content

Commit f618961

Browse files
committed
Fix: Add dalle3 as default generation model
1 parent 1a22893 commit f618961

File tree

6 files changed

+62
-78
lines changed

6 files changed

+62
-78
lines changed

src/components/chat/ChatMessageArea.tsx

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -537,6 +537,13 @@ export const ChatMessageArea: React.FC<ChatMessageAreaProps> = ({
537537
{/* Image generation button */}
538538
<ImageGenerationButton
539539
disabled={isLoading || isCurrentlyStreaming}
540+
onImageGenerate={(prompt, provider, model) => {
541+
// Set special message for image generation
542+
const imageGenPrompt = prompt || `/image Generate an image using ${provider} ${model}`;
543+
setInput(imageGenPrompt);
544+
// Focus the input
545+
inputRef.current?.focus();
546+
}}
540547
/>
541548
</div>
542549

src/components/chat/ImageGenerationButton.tsx

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import React, { useState, useRef, useEffect } from 'react';
22
import { Image } from 'lucide-react';
3-
import { SettingsService } from '../../services/settings-service';
3+
import { SettingsService, SETTINGS_CHANGE_EVENT } from '../../services/settings-service';
44
import { AIServiceCapability } from '../../types/capabilities';
55
import ProviderIcon from '../ui/ProviderIcon';
66
import { useTranslation } from '../../hooks/useTranslation';
@@ -17,6 +17,7 @@ interface ProviderModel {
1717
}
1818

1919
const ImageGenerationButton: React.FC<ImageGenerationButtonProps> = ({
20+
onImageGenerate,
2021
disabled = false
2122
}) => {
2223
const { t } = useTranslation();
@@ -42,8 +43,7 @@ const ImageGenerationButton: React.FC<ImageGenerationButtonProps> = ({
4243
const providerSettings = settingsService.getProviderSettings(providerId);
4344

4445
if (providerSettings.models) {
45-
// For now, just assume all models have image generation capability
46-
// This would need to be updated once proper capability detection is implemented
46+
// Find models with image generation capability
4747
for (const model of providerSettings.models) {
4848
// Check if model has image generation capability
4949
if (model.modelCapabilities?.includes(AIServiceCapability.ImageGeneration)) {
@@ -67,6 +67,13 @@ const ImageGenerationButton: React.FC<ImageGenerationButtonProps> = ({
6767
};
6868

6969
loadProviders();
70+
71+
// Listen for settings changes to update available providers
72+
window.addEventListener(SETTINGS_CHANGE_EVENT, loadProviders);
73+
74+
return () => {
75+
window.removeEventListener(SETTINGS_CHANGE_EVENT, loadProviders);
76+
};
7077
}, []);
7178

7279
// Handle click outside to close popup
@@ -96,6 +103,12 @@ const ImageGenerationButton: React.FC<ImageGenerationButtonProps> = ({
96103
setSelectedProvider(providerName);
97104
setSelectedModel(modelId);
98105
setIsPopupOpen(false);
106+
107+
// If onImageGenerate is provided, call it with an empty prompt
108+
// The actual prompt will be filled in by the chat message
109+
if (onImageGenerate) {
110+
onImageGenerate("", providerName, modelId);
111+
}
99112
};
100113

101114
const isButtonEnabled = !disabled && providers.length > 0;

src/components/settings/ApiManagement.tsx

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import React, { useEffect, useState } from 'react';
2-
import { ChevronRight, Plus, Trash2, Edit2, Search, X, Brain, Eye, Wrench, Type, Database, EyeOff } from 'lucide-react';
2+
import { ChevronRight, Plus, Trash2, Edit2, Search, X, Brain, Eye, Wrench, Type, Database, EyeOff, Image } from 'lucide-react';
33
import { ProviderSettings, ModelSettings } from '../../types/settings';
44
import { AIServiceCapability } from '../../types/capabilities';
55
import { v4 as uuidv4 } from 'uuid';
@@ -198,6 +198,8 @@ export const ApiManagement: React.FC<ApiManagementProps> = ({
198198
return <Wrench size={16} className="text-orange-500" />;
199199
case AIServiceCapability.Embedding:
200200
return <Database size={16} className="text-yellow-500" />;
201+
case AIServiceCapability.ImageGeneration:
202+
return <Image size={16} className="text-green-600" />;
201203
default:
202204
return null;
203205
}

src/components/settings/ModelManagement.tsx

Lines changed: 0 additions & 74 deletions
This file was deleted.

src/services/providers/openai-service.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,12 @@ export class OpenAIService implements AiServiceProvider {
7171
*/
7272
// eslint-disable-next-line @typescript-eslint/no-unused-vars
7373
getModelCapabilities(model: string): AIServiceCapability[] {
74+
// Add image generation capability for DALL-E 3
75+
if (model === 'dall-e-3') {
76+
return [AIServiceCapability.ImageGeneration];
77+
}
78+
79+
// Default capabilities for chat models
7480
return mapModelCapabilities(
7581
false,
7682
false,

src/services/settings-service.ts

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,14 @@ const DEFAULT_SETTINGS: UserSettings = {
6565
modelCapabilities: [AIServiceCapability.TextCompletion, AIServiceCapability.WebSearch],
6666
modelRefUUID: uuidv4(),
6767
},
68+
{
69+
modelName: 'DALL-E 3',
70+
modelId: 'dall-e-3',
71+
modelCategory: 'Image Generation',
72+
modelDescription: 'DALL-E 3 is OpenAI\'s advanced image generation model.',
73+
modelCapabilities: [AIServiceCapability.ImageGeneration],
74+
modelRefUUID: uuidv4(),
75+
},
6876
]
6977
},
7078
['Anthropic']: {
@@ -277,6 +285,8 @@ export class SettingsService {
277285

278286
this.addAllDefaultProviders();
279287

288+
this.addDefaultModels();
289+
280290
this.isInitialized = true;
281291
} catch (error) {
282292
console.error('Error initializing settings service:', error);
@@ -295,6 +305,26 @@ export class SettingsService {
295305
}
296306
}
297307

308+
private addDefaultModels() {
309+
for(const provider in this.settings.providers) {
310+
if(!this.settings.providers[provider].models) {
311+
this.settings.providers[provider].models = DEFAULT_SETTINGS.providers[provider].models;
312+
}
313+
314+
if(provider === 'OpenAI') {
315+
316+
this.settings.providers[provider].models!.push({
317+
modelName: 'DALL-E 3',
318+
modelId: 'dall-e-3',
319+
modelCategory: 'Image Generation',
320+
modelDescription: 'DALL-E 3 is OpenAI\'s advanced image generation model.',
321+
modelCapabilities: [AIServiceCapability.ImageGeneration],
322+
modelRefUUID: uuidv4(),
323+
});
324+
}
325+
}
326+
}
327+
298328
/**
299329
* Load settings from database
300330
*/

0 commit comments

Comments
 (0)