|
from fastapi import FastAPI, Request, Form |
|
from fastapi.templating import Jinja2Templates |
|
import httpx |
|
import csv |
|
from datetime import datetime |
|
from fastapi.staticfiles import StaticFiles |
|
import subprocess |
|
|
|
app = FastAPI() |
|
|
|
CSV_FILE_PATH0 = 'info.csv' |
|
PYTHON_SCRIPT_PATH0 = 'AAmain.py' |
|
|
|
|
|
app.mount("/static", StaticFiles(directory="."), name="static") |
|
|
|
templates = Jinja2Templates(directory="templates") |
|
|
|
def generate_conversation(prompt): |
|
try: |
|
|
|
prompt_variation = prompt + str(hash(prompt))[:3] |
|
|
|
|
|
with httpx.Client() as client: |
|
response = client.post('https://api-inference.huggingface.co/models/facebook/blenderbot-400M-distill', json={ |
|
"inputs": prompt_variation, |
|
"options": {"temperature": 0.8} |
|
}) |
|
|
|
conversation = response.json()["generated_text"] |
|
return conversation |
|
except Exception as e: |
|
return f"Error: {str(e)}" |
|
|
|
def save_to_csv(prompt, conversation): |
|
timestamp = datetime.now().strftime("%Y%m%d%H%M%S") |
|
filename = f"info.csv" |
|
|
|
with open(filename, mode='w', newline='', encoding='utf-8') as csv_file: |
|
csv_writer = csv.writer(csv_file) |
|
csv_writer.writerow(['Prompt', 'Generated Conversation']) |
|
csv_writer.writerow([prompt, conversation]) |
|
|
|
return filename |
|
|
|
@app.get("/") |
|
def read_form(request: Request): |
|
return templates.TemplateResponse("index.html", {"request": request}) |
|
|
|
@app.post("/") |
|
async def generate_and_display(request: Request, prompt: str = Form(...)): |
|
conversation = generate_conversation(prompt) |
|
csv_filename = save_to_csv(prompt, conversation) |
|
|
|
return templates.TemplateResponse("index.html", {"request": request, "prompt": prompt, "conversation": conversation, "csv_filename": csv_filename}) |
|
|
|
|
|
@app.post("/run_aamain") |
|
async def run_aamain(csv_filename: str = Form(...)): |
|
subprocess.run(["python", "AAmain.py", csv_filename]) |
|
return {"message": "AAmain.py process started successfully."} |
|
|
|
|
|
@app.post("/generate_ai") |
|
async def generate_ai(prompt: str = Form(...)): |
|
conversation = generate_conversation(prompt) |
|
csv_filename = save_to_csv(prompt, conversation) |
|
|
|
return {"prompt": prompt, "conversation": conversation, "csv_filename": csv_filename} |
|
|
|
if __name__ == "__main__": |
|
import uvicorn |
|
|
|
uvicorn.run(app, host="127.0.0.1", port=8000) |
|
|