62 lines
2.7 KiB
Python
62 lines
2.7 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 {})
|
|
openai_defaults = dict(provider_defaults.get("openai") or {})
|
|
glm_defaults = dict(provider_defaults.get("glm") or {})
|
|
deepseek_defaults = dict(provider_defaults.get("deepseek") or {})
|
|
ollama_defaults = dict(provider_defaults.get("ollama") or {})
|
|
high_model = str(high_tier.get("model") or openai_defaults.get("model") or "GLM-5").strip()
|
|
return {
|
|
"low": str(low_tier.get("model") or glm_defaults.get("model") or "qwen-plus").strip(),
|
|
"high": high_model,
|
|
"base_url": str(high_tier.get("base_url") or openai_defaults.get("base_url") or "https://api.edgefn.net/v1").strip(),
|
|
"providers": {
|
|
"glm": {
|
|
"model": str(glm_defaults.get("model") or "qwen-plus").strip(),
|
|
"base_url": str(glm_defaults.get("base_url") or "https://dashscope.aliyuncs.com/compatible-mode/v1").strip(),
|
|
"api_env": str(glm_defaults.get("api_env") or "DASHSCOPE_API_KEY").strip(),
|
|
},
|
|
"openai": {
|
|
"model": high_model,
|
|
"base_url": str(openai_defaults.get("base_url") or "https://api.edgefn.net/v1").strip(),
|
|
"api_env": str(openai_defaults.get("api_env") or "OPENAI_API_KEY").strip(),
|
|
},
|
|
"deepseek": {
|
|
"model": str(deepseek_defaults.get("model") or "deepseek-chat").strip(),
|
|
"base_url": str(deepseek_defaults.get("base_url") or "https://api.deepseek.com/v1").strip(),
|
|
"api_env": str(deepseek_defaults.get("api_env") or "DEEPSEEK_API_KEY").strip(),
|
|
},
|
|
"ollama": {
|
|
"model": str(ollama_defaults.get("model") or "llama3:latest").strip(),
|
|
"base_url": str(ollama_defaults.get("base_url") or "http://127.0.0.1:11434").strip(),
|
|
"api_env": str(ollama_defaults.get("api_env") or "").strip(),
|
|
},
|
|
},
|
|
}
|
|
|
|
|
|
@router.get("/providers")
|
|
async def get_llm_provider_presets(
|
|
current_user: User = Depends(get_current_user),
|
|
):
|
|
_ = current_user
|
|
return success_response(_build_provider_payload())
|