annator / src /agents /language_detection_agent.py
techprotrade's picture
Add src directory
734b5b4 verified
Raw
History Blame Contribute Delete
1.69 kB
from typing import Dict, Any
from .base_agent import LLMAgent
class LanguageDetectionAgent(LLMAgent):
name = "language_detection_agent"
description = (
"Detects document language and handles multilingual content appropriately"
)
def build_prompt(self, text: str) -> str:
sample = text[:500] if text else "No text available"
return f"""Detect the language of this text sample:
{sample}
Respond with:
1. Primary language (name and ISO code)
2. Confidence level (high/medium/low)
3. Are there multiple languages present?
4. Any special characters or scripts detected?
Be specific about the detection basis."""
def execute(self, text: str, reasoning: str) -> Dict[str, Any]:
return {
"language": self._extract_lang(reasoning),
"confidence": self._extract_confidence(reasoning),
"detected": True,
"multilingual": "multiple" in reasoning.lower(),
"reasoning": reasoning,
}
def _extract_lang(self, reasoning: str) -> str:
reasoning_lower = reasoning.lower()
langs = {
"estonian": "et",
"english": "en",
"german": "de",
"russian": "ru",
"finnish": "fi",
"swedish": "sv",
"latvian": "lv",
"lithuanian": "lt",
}
for name, code in langs.items():
if name in reasoning_lower:
return code
return "en"
def _extract_confidence(self, reasoning: str) -> float:
if "high" in reasoning.lower():
return 0.9
if "medium" in reasoning.lower():
return 0.7
return 0.5