initial commit
This commit is contained in:
72
webserver.py
Normal file
72
webserver.py
Normal file
@@ -0,0 +1,72 @@
|
||||
from fastapi import FastAPI, Request, Form
|
||||
from fastapi.responses import HTMLResponse
|
||||
from fastapi.templating import Jinja2Templates
|
||||
import requests
|
||||
import json
|
||||
import argparse
|
||||
import uvicorn # Diese Import-Zeile ist wichtig!
|
||||
|
||||
app = FastAPI()
|
||||
templates = Jinja2Templates(directory="templates")
|
||||
|
||||
OLLAMA_API_URL = "http://localhost:11434/api/generate" # Passe dies bei Bedarf an deine Ollama-URL an
|
||||
|
||||
|
||||
@app.get("/", response_class=HTMLResponse)
|
||||
async def read_root(request: Request):
|
||||
"""
|
||||
Zeigt das Haupt-Webinterface mit dem Eingabefeld an.
|
||||
"""
|
||||
return templates.TemplateResponse(
|
||||
"index.html", {"request": request, "response": None}
|
||||
)
|
||||
|
||||
|
||||
@app.post("/generate", response_class=HTMLResponse)
|
||||
async def generate_text(request: Request, prompt: str = Form(...)):
|
||||
"""
|
||||
Verarbeitet die Anfrage, sendet sie an Ollama und zeigt die Antwort an.
|
||||
"""
|
||||
headers = {"Content-Type": "application/json"}
|
||||
payload = {
|
||||
"model": "llama3.2-vision", # Passe dies an das Modell an, das du mit Ollama verwendest (z.B. "mistral", "phi3")
|
||||
"prompt": prompt,
|
||||
"stream": False, # Setze dies auf True, wenn du gestreamte Antworten verarbeiten möchtest
|
||||
}
|
||||
|
||||
response_text = "Fehler bei der Kommunikation mit dem LLM."
|
||||
try:
|
||||
ollama_response = requests.post(
|
||||
OLLAMA_API_URL, headers=headers, data=json.dumps(payload)
|
||||
)
|
||||
ollama_response.raise_for_status() # Löst einen HTTPError für schlechte Antworten (4xx oder 5xx) aus
|
||||
|
||||
data = ollama_response.json()
|
||||
if "response" in data:
|
||||
response_text = data["response"]
|
||||
else:
|
||||
response_text = f"Unerwartete Antwort von Ollama: {data}"
|
||||
except requests.exceptions.ConnectionError:
|
||||
response_text = "Konnte keine Verbindung zum Ollama-Server herstellen. Stelle sicher, dass er läuft und unter der richtigen Adresse erreichbar ist."
|
||||
except requests.exceptions.RequestException as e:
|
||||
response_text = f"Ein Fehler ist aufgetreten: {e}"
|
||||
|
||||
return templates.TemplateResponse(
|
||||
"index.html",
|
||||
{"request": request, "response": response_text, "prompt_value": prompt},
|
||||
)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
|
||||
parser = argparse.ArgumentParser()
|
||||
|
||||
parser.add_argument("-p",
|
||||
"--port",
|
||||
dest="port",
|
||||
help="The port to use. Default: 8000",
|
||||
type=int,
|
||||
default=8000
|
||||
)
|
||||
args = parser.parse_args()
|
||||
uvicorn.run(app, host="0.0.0.0", port=args.port)
|
Reference in New Issue
Block a user