UNPKG

directus-extension-ai-sdk-bundle

Version:

A small bundle of Flow Operations which enable interaction with the [OpenAI](https://beta.openai.com/overview) and [Stability](https://stability.ai/) API's.

48 lines (44 loc) 1.26 kB
import { defineOperationApi } from '@directus/extensions-sdk'; import { randomUUID } from 'crypto'; import { StabilityClient } from './client'; import { stabilityAIField } from '../configuration/fields'; import { getSetting } from '../lib/util'; export default defineOperationApi({ id: 'stable-diffusion-operation', handler: async ( { prompt, style="cinematic", engine='stable-diffusion-512-v2-1', api_key, width=512, height=512, cfg_scale=7, steps=50, negative='blurry, bad', location="local", }, { services, database, getSchema } ) => { const { FilesService, SettingsService } = services; const schema = await getSchema(); const settings = new SettingsService({ schema, knex: database }); const files = new FilesService({ schema, knex: database }); const apiKey = await getSetting(settings, stabilityAIField.field, api_key); const stability = new StabilityClient(apiKey, engine); const response = await stability.txt2img(prompt, { width, height, cfg_scale, steps, style, negative, }); const id = await files.uploadOne(response.body, { type: 'image/png', filename_download: randomUUID()+'.png', storage: location || 'local', }); return { id }; }, });