mirror of
https://github.com/willmiao/ComfyUI-Lora-Manager.git
synced 2026-07-03 07:51:16 -03:00
Introduce an agent skill framework for LLM-driven metadata enrichment: - AgentCLI (py/agent_cli/): in-process wrappers around internal services using standard relative imports, eliminating the need for sys.path hacks - LLMService: centralized BYOK (bring-your-own-key) LLM client supporting OpenAI, Ollama, and custom OpenAI-compatible endpoints - PostProcessor: deterministic engine that applies LLM output via AgentCLI (replaces old handler.py + _BASE_MODEL_ALIASES approach) - SkillRegistry: filesystem-based skill discovery (skill.yaml + prompt.md) - AgentService: orchestrates skill execution with WebSocket progress - Frontend AgentManager: WebSocket listeners, skill execution, config UI - Context menu entries (single + bulk) for "Enrich Metadata (Agent)" - Settings UI for AI Provider configuration (BYOK) - Full i18n support across 9 locales Bug fixes found during review: - aiohttp.web.json_response: status_code= -> status= - settings_modal cancelEditApiKey: wrong argument position - AgentManager.isLlmConfigured: allow Ollama without API key - PostProcessor._merge_tags: lowercase all tags to match TagUpdateService
46 lines
1.0 KiB
Python
46 lines
1.0 KiB
Python
"""Common service-level exception types."""
|
|
|
|
from __future__ import annotations
|
|
|
|
from typing import Optional
|
|
|
|
|
|
class RateLimitError(RuntimeError):
|
|
"""Raised when a remote provider rejects a request due to rate limiting."""
|
|
|
|
def __init__(
|
|
self,
|
|
message: str,
|
|
*,
|
|
retry_after: Optional[float] = None,
|
|
provider: Optional[str] = None,
|
|
) -> None:
|
|
super().__init__(message)
|
|
self.retry_after = retry_after
|
|
self.provider = provider
|
|
|
|
|
|
class ResourceNotFoundError(RuntimeError):
|
|
"""Raised when a remote resource is permanently missing."""
|
|
|
|
pass
|
|
|
|
|
|
class LLMNotConfiguredError(RuntimeError):
|
|
"""Raised when an LLM-dependent operation is attempted but no provider is configured."""
|
|
|
|
pass
|
|
|
|
|
|
class LLMRateLimitError(RateLimitError):
|
|
"""Raised when the LLM provider rejects a request due to rate limiting."""
|
|
|
|
pass
|
|
|
|
|
|
class LLMResponseError(RuntimeError):
|
|
"""Raised when the LLM returns an unparseable or schema-invalid response."""
|
|
|
|
pass
|
|
|