# backend/main.py
from fastapi import FastAPI, HTTPException
from fastapi.middleware.cors import CORSMiddleware
from pydantic import BaseModel
import openai
import os
from dotenv import load_dotenv
load_dotenv()
app = FastAPI()
# CORS configuration
app.add_middleware(
CORSMiddleware,
allow_origins=["*"],
allow_methods=["*"],
allow_headers=["*"],
)
openai.api_key = os.getenv("OPENAI_API_KEY")
class PromptRequest(BaseModel):
category: str
ai_model: str
user_input: str
class PromptGenerator:
def __init__(self):
self.templates = {
"blogging": {
"chatgpt": "Create a comprehensive blog post about {topic} focusing on {details}",
"claude": "Generate a long-form article on {topic} with emphasis on {details}"
},
"research": {
"chatgpt": "Act as a research assistant and provide detailed analysis about {topic}",
"claude": "Perform in-depth research on {topic} considering {details}"
}
}
def generate_prompt(self, request: PromptRequest):
base_prompt = self.templates.get(request.category, {}).get(request.ai_model.lower(), "")
if not base_prompt:
raise ValueError("Invalid category or AI model")
return base_prompt.format(topic=request.user_input, details=request.user_input)
@app.post("/generate-prompt/")
async def generate_prompt_endpoint(request: PromptRequest):
try:
generator = PromptGenerator()
system_prompt = generator.generate_prompt(request)
# OpenAI API Call
response = openai.ChatCompletion.create(
model="gpt-3.5-turbo",
messages=[
{"role": "system", "content": system_prompt},
{"role": "user", "content": request.user_input}
]
)
return {
"ai_model": request.ai_model,
"optimized_prompt": response.choices[0].message.content
}
except Exception as e:
raise HTTPException(status_code=500, detail=str(e))
// frontend/src/App.js
import React, { useState } from 'react';
import axios from 'axios';
function App() {
const [category, setCategory] = useState('blogging');
const [aiModel, setAiModel] = useState('chatgpt');
const [inputText, setInputText] = useState('');
const [result, setResult] = useState(null);
const [loading, setLoading] = useState(false);
const categories = ['blogging', 'research', 'coding', 'social media', 'copywriting', 'Q&A'];
const aiModels = ['ChatGPT', 'Claude', 'DeepSeek', 'Meta AI'];
const handleSubmit = async (e) => {
e.preventDefault();
setLoading(true);
try {
const response = await axios.post('http://localhost:8000/generate-prompt/', {
category: category.toLowerCase(),
ai_model: aiModel.toLowerCase(),
user_input: inputText
});
setResult(response.data);
} catch (error) {
console.error(error);
alert('Error generating prompt');
}
setLoading(false);
};
return (
AI Prompt Generator
{result && (
Optimized Prompt for {result.ai_model}:
{result.optimized_prompt}
)}
);
}
export default App;
pip install fastapi uvicorn python-dotenv openai pydantic
npx create-react-app frontend
cd frontend && npm install axios
OPENAI_API_KEY=your_api_key_here
uvicorn main:app --reload
cd frontend && npm start
0 Comments