47 lines
1.8 KiB
Python
47 lines
1.8 KiB
Python
from __future__ import annotations
|
|
|
|
import json
|
|
from http import HTTPStatus
|
|
|
|
|
|
class LLMHttpMixin:
|
|
def save_llm_settings(self) -> None:
|
|
try:
|
|
body = self.read_json_body()
|
|
service = self.application_service
|
|
service.save_llm_settings(
|
|
body.get("primary") or {},
|
|
body.get("fallback") or {},
|
|
bool(body.get("fallback_enabled")),
|
|
)
|
|
self.send_json(
|
|
{
|
|
"ok": True,
|
|
"configured": service.llm_configured,
|
|
"model": service.llm_primary_model,
|
|
"fallback_configured": service.llm_fallback_configured,
|
|
"fallback_model": service.llm_fallback_model,
|
|
}
|
|
)
|
|
except (ValueError, json.JSONDecodeError) as exc:
|
|
self.send_json({"error": str(exc)}, HTTPStatus.BAD_REQUEST)
|
|
|
|
def save_llm_mode(self) -> None:
|
|
try:
|
|
body = self.read_json_body()
|
|
service = self.application_service
|
|
service.save_llm_mode(str(body.get("mode") or "auto"))
|
|
self.send_json({"ok": True, "llm_access": service.llm_access_status()})
|
|
except (ValueError, json.JSONDecodeError) as exc:
|
|
self.send_json({"error": str(exc)}, HTTPStatus.BAD_REQUEST)
|
|
|
|
def test_llm_settings(self) -> None:
|
|
try:
|
|
body = self.read_json_body()
|
|
role = str(body.get("role") or "")
|
|
profile = body.get("profile") or {}
|
|
result = self.application_service.test_llm_profile(role, profile)
|
|
self.send_json({"ok": True, "result": result})
|
|
except (ValueError, json.JSONDecodeError) as exc:
|
|
self.send_json({"error": str(exc)}, HTTPStatus.BAD_REQUEST)
|