Spaces:
Running
Running
| const nodeCache = require('node-cache'); | |
| const dotenv = require('dotenv'); | |
| const HfInference = require('@huggingface/inference').HfInference; | |
| dotenv.config(); | |
| const inference = new HfInference(process.env.HF_TOKEN); | |
| const cache = new nodeCache( | |
| { | |
| stdTTL: 60 * 60 * 24, | |
| checkperiod: 60 * 60, | |
| useClones: false | |
| } | |
| ); | |
| const REPO_NAME = "black-forest-labs/FLUX.1-schnell" | |
| module.exports = async function (fastify, opts) { | |
| fastify.get('/:inputs', async function (request, reply) { | |
| const { inputs } = request.params; | |
| const slug = inputs.replace(/[^a-zA-Z0-9]/g, ''); | |
| if (cache.get(slug)) { | |
| const image = await cache.get(slug); | |
| console.log("Cache hit") | |
| return reply | |
| .header('Content-Type', 'image/jpeg') | |
| .send(image); | |
| } | |
| const hfRequest = await inference.textToImage({ | |
| inputs, | |
| model: REPO_NAME, | |
| }) | |
| const buffer = await hfRequest.arrayBuffer(); | |
| const array = new Uint8Array(buffer); | |
| cache.set(slug, array); | |
| return reply | |
| .header('Content-Type', 'image/jpeg') | |
| .send(array); | |
| }) | |
| } | |