Update notification service

This commit is contained in:
MacRimi
2026-03-18 09:36:05 +01:00
parent 46b222180a
commit c13c7ba626
4 changed files with 127 additions and 22 deletions
@@ -8,16 +8,37 @@ from .base import AIProvider, AIProviderError
class OpenAIProvider(AIProvider):
"""OpenAI provider using their Chat Completions API."""
"""OpenAI provider using their Chat Completions API.
Also compatible with OpenAI-compatible APIs like:
- BytePlus/ByteDance (Kimi K2.5)
- LocalAI
- LM Studio
- vLLM
- Together AI
- Any OpenAI-compatible endpoint
"""
NAME = "openai"
DEFAULT_MODEL = "gpt-4o-mini"
REQUIRES_API_KEY = True
API_URL = "https://api.openai.com/v1/chat/completions"
DEFAULT_API_URL = "https://api.openai.com/v1/chat/completions"
def _get_api_url(self) -> str:
"""Get the API URL, using custom base_url if provided."""
if self.base_url:
# Ensure the URL ends with the correct path
base = self.base_url.rstrip('/')
if not base.endswith('/chat/completions'):
if not base.endswith('/v1'):
base = f"{base}/v1"
base = f"{base}/chat/completions"
return base
return self.DEFAULT_API_URL
def generate(self, system_prompt: str, user_message: str,
max_tokens: int = 200) -> Optional[str]:
"""Generate a response using OpenAI's API.
"""Generate a response using OpenAI's API or compatible endpoint.
Args:
system_prompt: System instructions
@@ -48,7 +69,8 @@ class OpenAIProvider(AIProvider):
'Authorization': f'Bearer {self.api_key}',
}
result = self._make_request(self.API_URL, payload, headers)
api_url = self._get_api_url()
result = self._make_request(api_url, payload, headers)
try:
return result['choices'][0]['message']['content'].strip()