from fastapi import FastAPI, Request from fastapi.responses import HTMLResponse from pydantic import BaseModel import gradio as gr import uvicorn from fastapi.middleware.cors import CORSMiddleware import threading app = FastAPI() # Erlaube alle Ursprünge app.add_middleware( CORSMiddleware, allow_origins=["*"], allow_credentials=True, allow_methods=["*"], allow_headers=["*"], ) class Item(BaseModel): prompt: str zeitstempel: int @app.post("/items/") async def create_item(item: Item): global prompt prompt = item.prompt zeitstempel = item.zeitstempel return {"prompt": prompt} # Initialer Wert für prompt prompt = "" def get_prompt(prompt): return prompt @app.get("/fa.html") async def read_index(): with open("index.html", "r") as f: return HTMLResponse(content=f.read(), status_code=200) @app.get("/") def read_root(): return {"message": "Willkommen am Root-Endpunkt."} if __name__ == "__main__": # Starte Gradio in einem separaten Thread threading.Thread(target=start_gradio).start() uvicorn.run(app, host="0.0.0.0", port=8000) def start_gradio(): with gr.Blocks() as demo: gr.IFrame(src="http://localhost:8000/fa.html", width="100%", height="600px") with gr.Row(): details_output = gr.Textbox(label="Ausgabe") with gr.Row(): ort_input = gr.Textbox(label="", placeholder="ask anything...") with gr.Row(): button = gr.Button("Senden") # Connect the button to the function button.click(fn=get_prompt, inputs=ort_input, outputs=details_output) # Launch the Gradio application demo.launch() if __name__ == "__main__": # Starte Gradio in einem separaten Thread threading.Thread(target=start_gradio).start() uvicorn.run(app, host="0.0.0.0", port=8000)