main.py aktualisiert
This commit is contained in:
36
main.py
36
main.py
@@ -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
|
||||||
@@ -259,6 +260,41 @@ async def update_settings(request: Request):
|
|||||||
|
|
||||||
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")
|
||||||
|
|||||||
Reference in New Issue
Block a user