mirror of
https://github.com/arkorty/B.Tech-Project-III.git
synced 2026-04-19 20:51:49 +00:00
init
This commit is contained in:
34
thirdeye/backend/agents/classifier.py
Normal file
34
thirdeye/backend/agents/classifier.py
Normal file
@@ -0,0 +1,34 @@
|
||||
"""Classifier Agent — adds metadata tags to extracted signals."""
|
||||
import logging
|
||||
from backend.providers import call_llm
|
||||
from backend.db.models import Signal
|
||||
from backend.agents.json_utils import extract_json_object
|
||||
|
||||
logger = logging.getLogger("thirdeye.agents.classifier")
|
||||
|
||||
SYSTEM_PROMPT = """You are a fast metadata classifier. Given an extracted signal, add classification tags.
|
||||
|
||||
Respond ONLY with valid JSON (no markdown, no backticks):
|
||||
{"sentiment": "positive|neutral|negative|urgent", "urgency": "none|low|medium|high|critical", "keywords": ["3-5 searchable keywords"]}
|
||||
"""
|
||||
|
||||
|
||||
async def classify_signal(signal: Signal) -> Signal:
|
||||
"""Add classification metadata to a signal."""
|
||||
messages = [
|
||||
{"role": "system", "content": SYSTEM_PROMPT},
|
||||
{"role": "user", "content": f"Classify this signal:\nType: {signal.type}\nSummary: {signal.summary}\nQuote: {signal.raw_quote}"},
|
||||
]
|
||||
|
||||
try:
|
||||
result = await call_llm("fast_small", messages, temperature=0.1, max_tokens=200)
|
||||
parsed = extract_json_object(result.get("content", ""))
|
||||
signal.sentiment = parsed.get("sentiment", signal.sentiment)
|
||||
signal.urgency = parsed.get("urgency", signal.urgency)
|
||||
signal.keywords = parsed.get("keywords", signal.keywords)
|
||||
|
||||
except Exception as e:
|
||||
logger.warning(f"Classification failed, using defaults: {e}")
|
||||
# Keep defaults — classification failure is non-fatal
|
||||
|
||||
return signal
|
||||
Reference in New Issue
Block a user