Source code for intent_classification.intent

"""
This is "intent.py". 

from django_core.config import Config
from rag_service.openai_service import make_openai_request
from intent_classification.constants import IntentConstants
"""



[docs]async def classify_intent(qn): """ Classify the query or question intent into any of the classification to which it falls under. """ prompt = Config.INTENT_CLASSIFICATION_PROMPT_TEMPLATE.format(input=qn) intent_response, ex, retries = await make_openai_request(prompt, model=Config.GPT_4_MODEL) return intent_response.choices[0].message.content if intent_response else IntentConstants.USER_INTENT_FARMING
[docs]async def generate_convo_response(qn, name): """ Classify the query or question intent as a general conversation. """ prompt = Config.CONVERSATION_PROMPT.format(name=name, input=qn) convo_response, convo_ex, convo_retries = await make_openai_request(prompt) return convo_response.choices[0].message.content
[docs]async def generate_unclear_qn_response(qn, name): """ Classify the query or question intent as an unclear question. """ prompt = Config.UNCLEAR_QN_PROMPT.format(name=name, input=qn) unclear_qn_response, unclear_qn_ex, unclear_qn_etries = await make_openai_request(prompt) return unclear_qn_response.choices[0].message.content
[docs]async def generate_exit_response(qn, name): """ Classify the query or question intent as an exit conversation. """ prompt = Config.EXIT_PROMPT.format(name=name, input=qn) exit_response, exit_ex, exit_retries = await make_openai_request(prompt) return exit_response.choices[0].message.content
[docs]async def generate_out_of_context_response(qn, name): """ Classify the query or question intent as an out of context question. """ prompt = Config.OUT_OF_CONTEXT_PROMPT.format(name=name, input=qn) out_of_context_response, out_of_context_ex, out_of_context_retries = await make_openai_request(prompt) return out_of_context_response.choices[0].message.content
[docs]async def process_user_intent(input_msg, user_name): response = None intent = None proceed_to_rag = True intent = await classify_intent(input_msg) if intent == IntentConstants.USER_INTENT_GREETING or intent == IntentConstants.USER_INTENT_DISAPPOINTMENT: response = await generate_convo_response(input_msg, user_name) if intent == IntentConstants.USER_INTENT_UNCLEAR: response = await generate_unclear_qn_response(input_msg, user_name) if intent == IntentConstants.USER_INTENT_EXIT: response = await generate_exit_response(input_msg, user_name) if intent == IntentConstants.USER_INTENT_OUT_CONTEXT: response = await generate_out_of_context_response(input_msg, user_name) if intent != IntentConstants.USER_INTENT_FARMING and intent != IntentConstants.USER_INTENT_REFERRING_BACK: proceed_to_rag = False return response, intent, proceed_to_rag