{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Module 3: Intent Classification\n", "\n", "This notebook documents the intent classifier used to route chatbot messages. The classifier uses few-shot prompting with Groq and returns one of five intents." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Design\n", "\n", "Few-shot prompting is a good fit here because the label space is small, the routing rules are explicit, and the classifier should be easy to inspect and adjust without training a new model." ] }, { "cell_type": "code", "execution_count": 1, "id": "9aa6f310", "metadata": {}, "outputs": [], "source": [ "import sys\n", "from pathlib import Path\n", "\n", "PROJECT_ROOT = Path.cwd().resolve().parent if Path.cwd().name == 'notebooks' else Path.cwd().resolve()\n", "sys.path.append(str(PROJECT_ROOT / 'src' / 'models'))\n", "\n", "from intent_classifier import IntentClassifier, TEST_CASES" ] }, { "cell_type": "code", "execution_count": 2, "id": "4ba6de78", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'intent': 'asking_mental_health_question',\n", " 'confidence': 1.0,\n", " 'reason': 'The user describes anxiety and sleep difficulty, indicating a mental-health concern.'}" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "classifier = IntentClassifier()\n", "classifier.classify('hi, I feel anxious and cannot sleep')" ] }, { "cell_type": "code", "execution_count": 3, "id": "7f5eb391", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "1.0" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "results = classifier.evaluate(TEST_CASES)\n", "classifier.save_reports(results)\n", "results['accuracy']" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.12.0" } }, "nbformat": 4, "nbformat_minor": 5 }