57 lines
2.4 KiB
Python
57 lines
2.4 KiB
Python
"""LLM provider preset API."""
|
|
|
|
from __future__ import annotations
|
|
|
|
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
|
|
from ..services.model.model_config import get_provider_defaults, get_tier_defaults
|
|
|
|
router = APIRouter(prefix="/ai-steward/llm", tags=["AI Steward"])
|
|
|
|
|
|
def _build_provider_payload() -> dict[str, Any]:
|
|
provider_defaults = get_provider_defaults()
|
|
tier_defaults = get_tier_defaults()
|
|
low_tier = dict(tier_defaults.get("low") or {})
|
|
high_tier = dict(tier_defaults.get("high") or {})
|
|
return {
|
|
"low": str(low_tier.get("model") or provider_defaults.get("glm", {}).get("model") or "qwen-plus").strip(),
|
|
"high": str(high_tier.get("model") or "GLM-5").strip(),
|
|
"base_url": str(high_tier.get("base_url") or provider_defaults.get("openai", {}).get("base_url") or "https://api.edgefn.net/v1").strip(),
|
|
"providers": {
|
|
"glm": {
|
|
"model": str(provider_defaults.get("glm", {}).get("model") or "qwen-plus").strip(),
|
|
"base_url": str(provider_defaults.get("glm", {}).get("base_url") or "https://dashscope.aliyuncs.com/compatible-mode/v1").strip(),
|
|
"api_env": "DASHSCOPE_API_KEY",
|
|
},
|
|
"openai": {
|
|
"model": str(provider_defaults.get("openai", {}).get("model") or "MiniMax-M2.5").strip(),
|
|
"base_url": str(provider_defaults.get("openai", {}).get("base_url") or "https://api.edgefn.net/v1").strip(),
|
|
"api_env": "OPENAI_API_KEY",
|
|
},
|
|
"deepseek": {
|
|
"model": str(provider_defaults.get("deepseek", {}).get("model") or "deepseek-chat").strip(),
|
|
"base_url": str(provider_defaults.get("deepseek", {}).get("base_url") or "https://api.deepseek.com/v1").strip(),
|
|
"api_env": "DEEPSEEK_API_KEY",
|
|
},
|
|
"ollama": {
|
|
"model": str(provider_defaults.get("ollama", {}).get("model") or "llama3:latest").strip(),
|
|
"base_url": str(provider_defaults.get("ollama", {}).get("base_url") or "http://127.0.0.1:11434").strip(),
|
|
"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())
|