Ling / tasks /intent_detection.py
Nam Fam
update files
ea99abb
from typing import List, Optional
def intent_detection(
text: str,
model: str,
candidate_intents: Optional[List[str]] = None,
custom_instructions: str = "",
use_llm: bool = True
) -> str:
if not text or not text.strip():
return "Please enter input text."
if use_llm:
return _intent_detection_with_llm(text, model, candidate_intents, custom_instructions)
else:
return _intent_detection_with_traditional(text, model, candidate_intents)
from llms import LLM
def _intent_detection_with_llm(
text: str,
model: str,
candidate_intents: Optional[List[str]],
custom_instructions: str
) -> str:
try:
llm = LLM(model=model)
if candidate_intents:
prompt = (
f"Classify the intent of the following text from this list: {', '.join(candidate_intents)}.\n"
f"Return ONLY the best intent name.\n"
+ (f"{custom_instructions}\n" if custom_instructions else "")
+ f"Text: {text}\nIntent:"
)
else:
prompt = (
f"Detect the intent of the following text.\n"
f"Return ONLY the intent name, do not explain.\n"
+ (f"{custom_instructions}\n" if custom_instructions else "")
+ f"Text: {text}\nIntent:"
)
result = llm.generate(prompt)
return result.strip()
except Exception as e:
print(f"Error in LLM intent detection: {str(e)}")
return "Oops! Something went wrong. Please try again later."
def _intent_detection_with_traditional(
text: str,
model: str,
candidate_intents: Optional[List[str]]
) -> str:
# TODO: Implement traditional model inference
return "[Traditional model intent detection not implemented yet]"