59 lines
2.1 KiB
Python
59 lines
2.1 KiB
Python
"""LLM provider preset API."""
|
|
|
|
from __future__ import annotations
|
|
|
|
import os
|
|
from typing import Any
|
|
|
|
from fastapi import APIRouter, Depends
|
|
|
|
from ..core.response import success_response
|
|
from ..dependencies.auth import get_current_user
|
|
from ..models import User
|
|
|
|
router = APIRouter(prefix="/ai-steward/llm", tags=["AI Steward"])
|
|
|
|
|
|
def _build_provider_payload() -> dict[str, Any]:
|
|
low_model = str(os.getenv("LLM_ROUTING_LOW_MODEL", "GLM-4.7") or "GLM-4.7").strip()
|
|
high_model = str(os.getenv("LLM_ROUTING_HIGH_MODEL", "MiniMax-M2.5") or "MiniMax-M2.5").strip()
|
|
base_url = str(os.getenv("OPENAI_BASE_URL", "https://api.edgefn.net/v1") or "https://api.edgefn.net/v1").strip()
|
|
ollama_base_url = str(
|
|
os.getenv("OLLAMA_BASE_URL", os.getenv("OLLAMA_HOST", "http://127.0.0.1:11434")) or "http://127.0.0.1:11434"
|
|
).strip()
|
|
return {
|
|
"low": low_model,
|
|
"high": high_model,
|
|
"base_url": base_url,
|
|
"providers": {
|
|
"glm": {
|
|
"model": str(os.getenv("GLM_MODEL", low_model) or low_model).strip(),
|
|
"base_url": str(os.getenv("GLM_BASE_URL", base_url) or base_url).strip(),
|
|
"api_env": "GLM_API_KEY",
|
|
},
|
|
"openai": {
|
|
"model": str(os.getenv("OPENAI_MODEL", high_model) or high_model).strip(),
|
|
"base_url": base_url,
|
|
"api_env": "OPENAI_API_KEY",
|
|
},
|
|
"deepseek": {
|
|
"model": str(os.getenv("DEEPSEEK_MODEL", "deepseek-chat") or "deepseek-chat").strip(),
|
|
"base_url": str(os.getenv("DEEPSEEK_BASE_URL", "https://api.deepseek.com/v1") or "").strip(),
|
|
"api_env": "DEEPSEEK_API_KEY",
|
|
},
|
|
"ollama": {
|
|
"model": str(os.getenv("OLLAMA_MODEL", "llama3:latest") or "llama3:latest").strip(),
|
|
"base_url": ollama_base_url,
|
|
"api_env": "",
|
|
},
|
|
},
|
|
}
|
|
|
|
|
|
@router.get("/providers")
|
|
async def get_llm_provider_presets(
|
|
current_user: User = Depends(get_current_user),
|
|
):
|
|
_ = current_user
|
|
return success_response(_build_provider_payload())
|