38 lines
1.6 KiB
Python
38 lines
1.6 KiB
Python
import logging
|
|
from typing import Dict, Any, List, Union
|
|
from modules.connectors.connectorAiOpenai import AiConnector
|
|
|
|
logger = logging.getLogger(__name__)
|
|
|
|
class AiInterface:
|
|
"""Interface for AI service interactions"""
|
|
|
|
def __init__(self):
|
|
self.service = AiConnector()
|
|
|
|
async def callAiBasic(self, messages: List[Dict[str, str]], produceUserAnswer: bool = False, temperature: float = None) -> str:
|
|
"""Enhanced AI service call with language support."""
|
|
|
|
# Add language instruction for user-facing responses
|
|
if produceUserAnswer and hasattr(self, 'userLanguage') and self.userLanguage:
|
|
ltext = f"Please respond in '{self.userLanguage}' language."
|
|
if messages and messages[0]["role"] == "system":
|
|
if "language" not in messages[0]["content"].lower():
|
|
messages[0]["content"] = f"{ltext} {messages[0]['content']}"
|
|
else:
|
|
# Insert a system message with language instruction
|
|
messages.insert(0, {
|
|
"role": "system",
|
|
"content": ltext
|
|
})
|
|
|
|
# Call the AI service
|
|
return await self.service.callAiBasic(messages, temperature=temperature)
|
|
|
|
async def callAiImage(self, imageData: Union[str, bytes], mimeType: str = None, prompt: str = "Describe this image") -> str:
|
|
"""Enhanced AI service call with language support."""
|
|
if not self.service:
|
|
logger.error("AI service not set in AiInterface")
|
|
return "Error: AI service not available"
|
|
return await self.service.callAiImage(imageData, mimeType, prompt)
|
|
|