|
from fastapi import FastAPI |
|
from pydantic import BaseModel |
|
import gradio as gr |
|
import uvicorn |
|
from fastapi.middleware.cors import CORSMiddleware |
|
import threading |
|
|
|
app = FastAPI() |
|
|
|
|
|
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} |
|
|
|
|
|
prompt = "" |
|
|
|
def get_prompt(prompt): |
|
return prompt |
|
|
|
|
|
def show_html(): |
|
return """<!DOCTYPE html> |
|
<html lang="en"> |
|
<head> |
|
<meta charset="UTF-8"> |
|
<meta name="viewport" content="width=device-width, initial-scale=1.0"> |
|
<title>Textfeld mit FastAPI</title> |
|
</head> |
|
<body> |
|
<h1>Textfeld mit FastAPI</h1> |
|
<form id="myForm"> |
|
<label for="prompt">Prompt:</label> |
|
<input type="text" id="prompt" name="prompt"> |
|
<button type="button" onclick="sendData()">Senden</button> |
|
</form> |
|
|
|
<script> |
|
async function sendData() { |
|
const prompt = document.getElementById("prompt").value; |
|
const zeitstempel = Math.floor(Date.now() / 1000); // Unix-Zeitstempel |
|
const data = { |
|
prompt: prompt, |
|
zeitstempel: zeitstempel |
|
}; |
|
const response = await fetch("https://mgokg-fastapi.hf.space:8000/items", { |
|
method: "POST", |
|
headers: { |
|
"Content-Type": "application/json" |
|
}, |
|
body: JSON.stringify(data) |
|
}); |
|
const result = await response.json(); |
|
alert(result) |
|
console.log(result) |
|
} |
|
</script> |
|
</body> |
|
</html> |
|
""" |
|
|
|
with gr.Blocks() as demo: |
|
gr.HTML(show_html) |
|
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") |
|
|
|
|
|
button.click(fn=get_prompt, inputs=ort_input, outputs=details_output) |
|
|
|
|
|
demo.launch() |
|
|
|
|
|
@app.get("/") |
|
def read_root(): |
|
return {"message": "Willkommen am Root-Endpunkt."} |
|
|
|
if __name__ == "__main__": |
|
|
|
threading.Thread(target=start_gradio).start() |
|
uvicorn.run(app, host="0.0.0.0", port=8000) |
|
|