main.py aktualisiert

This commit is contained in:
2026-03-05 22:47:08 +00:00
parent b646e7bebc
commit afc7775820

36
main.py
View File

@@ -6,6 +6,7 @@ import sqlite3
import asyncio
import openai
import re
import httpx
from google import genai
from google.genai import types
import json
@@ -259,6 +260,41 @@ async def update_settings(request: Request):
return {"status": "success"}
@app.get("/api/models")
async def get_models(provider: str, url: str = None):
try:
models = []
if provider == "ollama" and url:
# Das Backend hat keine CORS-Probleme und fragt Ollama direkt
clean_url = url.replace("/v1", "").rstrip("/")
async with httpx.AsyncClient() as client:
response = await client.get(f"{clean_url}/api/tags", timeout=5.0)
data = response.json()
models = [m["name"] for m in data.get("models", [])]
elif provider == "openai":
# Hier greift das Backend auf deinen OpenAI API-Key zu
import openai
client = openai.AsyncOpenAI(api_key=OPENAI_API_KEY)
response = await client.models.list()
# Nur GPT-Modelle filtern, um die Liste sauber zu halten
models = [m.id for m in response.data if "gpt" in m.id or "o1" in m.id]
models.sort()
elif provider == "google":
# Hier greift das Backend auf deinen Google API-Key zu
import google.generativeai as genai
genai.configure(api_key=GOOGLE_API_KEY)
# Holt alle verfügbaren Modelle, die Text generieren können
models = [m.name.replace("models/", "") for m in genai.list_models() if "generateContent" in m.supported_generation_methods]
return {"models": models}
except Exception as e:
print(f"Fehler beim Abrufen der Modelle für {provider}: {str(e)}")
return {"models": []} # Gibt eine leere Liste zurück -> Frontend nutzt Fallback
# --- WebSockets ---
@app.websocket("/ws/install_logs")