Trudy's picture
Initial commit with Git LFS
1f423ae
raw
history blame
1.96 kB
/**
* Copyright 2025 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
// Next.js API route support: https://nextjs.org/docs/api-routes/introduction
import { GoogleGenerativeAI } from "@google/generative-ai";
const MODEL_NAME = "gemini-2.0-flash-exp";
export const config = {
api: {
bodyParser: {
sizeLimit: '10mb',
},
},
};
export default async function handler(req, res) {
if (req.method !== 'POST') {
return res.status(405).json({ error: 'Method not allowed' });
}
try {
const { imageBase64, prompt, userInput } = req.body;
const genAI = new GoogleGenerativeAI(process.env.GEMINI_API_KEY);
const model = genAI.getGenerativeModel({ model: MODEL_NAME });
const image = {
inlineData: {
data: imageBase64.split(",")[1],
mimeType: "image/jpeg",
},
};
const finalPrompt = userInput.trim()
? `${prompt}\n\nUser input: ${userInput}`
: prompt;
const result = await model.generateContent([finalPrompt, image]);
const response = result.response.text();
const regex = /```(?:javascript|js)?\s*([\s\S]*?)```/g;
const match = regex.exec(response);
const extractedCode = match ? match[1].trim() : response;
res.status(200).json({
fullResponse: response,
code: extractedCode
});
} catch (error) {
console.error('Error:', error);
res.status(500).json({ error: 'Failed to generate code' });
}
}