main.py aktualisiert

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

38
main.py
View File

@@ -6,6 +6,7 @@ import sqlite3
import asyncio import asyncio
import openai import openai
import re import re
import httpx
from google import genai from google import genai
from google.genai import types from google.genai import types
import json import json
@@ -258,7 +259,42 @@ async def update_settings(request: Request):
set_key(ENV_FILE, "OLLAMA_BASE_URL", ollama_url) set_key(ENV_FILE, "OLLAMA_BASE_URL", ollama_url)
return {"status": "success"} 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 --- # --- WebSockets ---
@app.websocket("/ws/install_logs") @app.websocket("/ws/install_logs")