Webseite überarbeitet und Telegram Bot funktion hinzugefügt #1
46
main.py
46
main.py
@@ -332,21 +332,49 @@ async def update_settings(request: Request):
|
|||||||
return {"status": "success"}
|
return {"status": "success"}
|
||||||
|
|
||||||
@app.get("/api/models")
|
@app.get("/api/models")
|
||||||
async def get_models(provider: str):
|
async def get_models(provider: str, url: str = None):
|
||||||
try:
|
try:
|
||||||
if provider == "ollama":
|
models = []
|
||||||
url = OLLAMA_BASE_URL.replace("/v1", "").rstrip("/")
|
|
||||||
|
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:
|
async with httpx.AsyncClient() as client:
|
||||||
r = await client.get(f"{url}/api/tags", timeout=5.0)
|
response = await client.get(f"{clean_url}/api/tags", timeout=5.0)
|
||||||
return {"models": [m["name"] for m in r.json().get("models", [])]}
|
data = response.json()
|
||||||
|
models = [m["name"] for m in data.get("models", [])]
|
||||||
|
|
||||||
elif provider == "openai":
|
elif provider == "openai":
|
||||||
|
if not OPENAI_API_KEY or "hier" in OPENAI_API_KEY: return {"models": []}
|
||||||
|
# Hier greift das Backend auf deinen OpenAI API-Key zu
|
||||||
|
import openai
|
||||||
client = openai.AsyncOpenAI(api_key=OPENAI_API_KEY)
|
client = openai.AsyncOpenAI(api_key=OPENAI_API_KEY)
|
||||||
r = await client.models.list()
|
response = await client.models.list()
|
||||||
return {"models": sorted([m.id for m in r.data if "gpt" in m.id or "o1" in m.id])}
|
# 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":
|
elif provider == "google":
|
||||||
|
if not GOOGLE_API_KEY:
|
||||||
|
return {"models": ["API-Key fehlt"]}
|
||||||
|
|
||||||
client = genai.Client(api_key=GOOGLE_API_KEY)
|
client = genai.Client(api_key=GOOGLE_API_KEY)
|
||||||
return {"models": sorted([m.name.replace("models/", "") for m in client.models.list() if 'generateContent' in m.supported_actions])}
|
models = []
|
||||||
except: return {"models": []}
|
|
||||||
|
# Im neuen SDK (google-genai) heißt das Feld 'supported_actions'
|
||||||
|
for m in client.models.list():
|
||||||
|
if 'generateContent' in m.supported_actions:
|
||||||
|
# Wir nehmen den Namen und entfernen das 'models/' Präfix
|
||||||
|
model_name = m.name.replace("models/", "")
|
||||||
|
models.append(model_name)
|
||||||
|
|
||||||
|
models.sort()
|
||||||
|
|
||||||
|
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
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
import uvicorn
|
import uvicorn
|
||||||
|
|||||||
Reference in New Issue
Block a user