| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- """LLM配置API"""
- from fastapi import APIRouter
- from pydantic import BaseModel
- from typing import Optional
- from ...services.llm_service import get_llm_config, reload_llm, reset_llm_config
- router = APIRouter(prefix="/settings", tags=["设置"])
- class LLMConfigResponse(BaseModel):
- """LLM配置响应"""
- base_url: str
- model_id: str
- api_key: str # 脱敏后返回
- class LLMConfigUpdateRequest(BaseModel):
- """LLM配置更新请求"""
- base_url: str
- model_id: str
- api_key: str
- class LLMConfigUpdateResponse(BaseModel):
- """LLM配置更新响应"""
- success: bool
- message: str
- config: LLMConfigResponse
- @router.get("/llm", response_model=LLMConfigResponse)
- async def get_llm_config_endpoint():
- """获取当前LLM配置"""
- config = get_llm_config()
- return LLMConfigResponse(**config)
- @router.post("/llm", response_model=LLMConfigUpdateResponse)
- async def update_llm_config_endpoint(request: LLMConfigUpdateRequest):
- """更新LLM配置并重新初始化"""
- try:
- reload_llm({
- "base_url": request.base_url.rstrip("/"),
- "model_id": request.model_id,
- "api_key": request.api_key,
- })
- config = get_llm_config()
- return LLMConfigUpdateResponse(
- success=True,
- message="LLM配置已更新",
- config=LLMConfigResponse(**config),
- )
- except Exception as e:
- return LLMConfigUpdateResponse(
- success=False,
- message=f"配置失败: {str(e)}",
- config=LLMConfigResponse(
- base_url="", model_id="", api_key=""
- ),
- )
- @router.post("/llm/reset", response_model=LLMConfigUpdateResponse)
- async def reset_llm_config_endpoint():
- """恢复LLM配置到.env默认值"""
- try:
- reset_llm_config()
- config = get_llm_config()
- return LLMConfigUpdateResponse(
- success=True,
- message="已恢复为默认配置",
- config=LLMConfigResponse(**config),
- )
- except Exception as e:
- return LLMConfigUpdateResponse(
- success=False,
- message=f"重置失败: {str(e)}",
- config=LLMConfigResponse(
- base_url="", model_id="", api_key=""
- ),
- )
|