fix: painting no provider

This commit is contained in:
kangfenmao 2024-10-31 09:23:58 +08:00
parent b148c5adf5
commit 76b9e1a65e
5 changed files with 44 additions and 29 deletions

View File

@ -373,7 +373,9 @@
},
"error": {
"chat.response": "Something went wrong. Please check if you have set your API key in the Settings > Providers",
"backup.file_format": "Backup file format error"
"backup.file_format": "Backup file format error",
"provider_disabled": "Model provider is not enabled",
"no_api_key": "API key is not configured"
},
"words": {
"knowledgeGraph": "Knowledge Graph",

View File

@ -373,7 +373,9 @@
},
"error": {
"chat.response": "出错了,如果没有配置 API 密钥,请前往设置 > 模型提供商中配置密钥",
"backup.file_format": "备份文件格式错误"
"backup.file_format": "备份文件格式错误",
"provider_disabled": "模型提供商未启用",
"no_api_key": "API 密钥未配置"
},
"words": {
"knowledgeGraph": "知识图谱",

View File

@ -373,7 +373,9 @@
},
"error": {
"chat.response": "出現錯誤。如果尚未配置 API 密鑰,請前往設定 > 模型提供者中配置密鑰",
"backup.file_format": "備份文件格式錯誤"
"backup.file_format": "備份文件格式錯誤",
"provider_disabled": "模型提供商未啟用",
"no_api_key": "API 密鑰未配置"
},
"words": {
"knowledgeGraph": "知識圖譜",

View File

@ -11,7 +11,7 @@ import Scrollbar from '@renderer/components/Scrollbar'
import { TEXT_TO_IMAGES_MODELS } from '@renderer/config/models'
import { useTheme } from '@renderer/context/ThemeProvider'
import { usePaintings } from '@renderer/hooks/usePaintings'
import { useProviders } from '@renderer/hooks/useProvider'
import { useAllProviders } from '@renderer/hooks/useProvider'
import AiProvider from '@renderer/providers/AiProvider'
import { getProviderByModel } from '@renderer/services/AssistantService'
import FileManager from '@renderer/services/FileManager'
@ -69,7 +69,7 @@ const PaintingsPage: FC = () => {
const { paintings, addPainting, removePainting, updatePainting } = usePaintings()
const [painting, setPainting] = useState<Painting>(_painting || paintings[0])
const { theme } = useTheme()
const { providers } = useProviders()
const providers = useAllProviders()
const siliconProvider = providers.find((p) => p.id === 'silicon')!
const [currentImageIndex, setCurrentImageIndex] = useState(0)
@ -118,8 +118,19 @@ const PaintingsPage: FC = () => {
const model = TEXT_TO_IMAGES_MODELS.find((m) => m.id === painting.model)
const provider = getProviderByModel(model)
if (!provider.enabled) {
window.modal.error({
content: t('error.provider_disabled'),
centered: true
})
return
}
if (!provider.apiKey) {
window.message.error(t('error.no_api_key'))
window.modal.error({
content: t('error.no_api_key'),
centered: true
})
return
}
@ -160,7 +171,10 @@ const PaintingsPage: FC = () => {
}
} catch (error: unknown) {
if (error instanceof Error && error.name !== 'AbortError') {
window.message.error(getErrorMessage(error))
window.modal.error({
content: getErrorMessage(error),
centered: true
})
}
} finally {
setIsLoading(false)

View File

@ -370,28 +370,23 @@ export default class OpenAIProvider extends BaseProvider {
guidanceScale: number
signal?: AbortSignal
}): Promise<string[]> {
try {
const response = (await this.sdk.request({
method: 'post',
path: '/images/generations',
headers: this.getHeaders(),
signal,
body: {
model: 'stabilityai/stable-diffusion-3-5-large',
prompt,
negative_prompt: negativePrompt,
image_size: imageSize,
batch_size: batchSize,
seed: seed ? parseInt(seed) : undefined,
num_inference_steps: numInferenceSteps,
guidance_scale: guidanceScale
}
})) as { data: Array<{ url: string }> }
const response = (await this.sdk.request({
method: 'post',
path: '/images/generations',
headers: this.getHeaders(),
signal,
body: {
model: 'stabilityai/stable-diffusion-3-5-large',
prompt,
negative_prompt: negativePrompt,
image_size: imageSize,
batch_size: batchSize,
seed: seed ? parseInt(seed) : undefined,
num_inference_steps: numInferenceSteps,
guidance_scale: guidanceScale
}
})) as { data: Array<{ url: string }> }
return response.data.map((item) => item.url)
} catch (error) {
console.error('Image generation error:', error)
return []
}
return response.data.map((item) => item.url)
}
}