From 30d77d887fa8c2c474e7c337f82b116d0cbccf0d Mon Sep 17 00:00:00 2001 From: taroguru Date: Fri, 3 Oct 2025 16:55:09 +0900 Subject: [PATCH 01/12] added project documentation and query flow diagram MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude --- CLAUDE.local.md | 0 CLAUDE.md | 156 ++++++++++++++++++++++++++++++++++++++++ query-flow-diagram.md | 164 ++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 320 insertions(+) create mode 100644 CLAUDE.local.md create mode 100644 CLAUDE.md create mode 100644 query-flow-diagram.md diff --git a/CLAUDE.local.md b/CLAUDE.local.md new file mode 100644 index 000000000..e69de29bb diff --git a/CLAUDE.md b/CLAUDE.md new file mode 100644 index 000000000..64bdaa4e7 --- /dev/null +++ b/CLAUDE.md @@ -0,0 +1,156 @@ +# CLAUDE.md + +This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository. + +## Project Overview + +A Retrieval-Augmented Generation (RAG) chatbot system for querying course materials. Uses ChromaDB for vector storage, Anthropic's Claude with tool calling for AI generation, and FastAPI for the backend with a vanilla JavaScript frontend. + +## Running the Application + +**IMPORTANT**: This project uses `uv` for package management. Always use `uv` commands - never use `pip` directly. + +### Setup +```bash +# Install dependencies +uv sync + +# Create .env file (copy from .env.example) +ANTHROPIC_API_KEY=your_api_key_here +``` + +### Start Server +```bash +# Quick start +./run.sh + +# Manual start +cd backend +uv run uvicorn app:app --reload --port 8000 +``` + +Access: http://localhost:8000 + +### Package Management +```bash +# Add new dependency +uv add + +# Run any Python command +uv run + +# DO NOT use pip install - always use uv +``` + +## Core Architecture + +### Request Flow: Frontend → Backend +1. **Frontend** (`frontend/script.js`): User query → POST `/api/query` with `{query, session_id}` +2. **API** (`backend/app.py`): FastAPI endpoint → `rag_system.query()` +3. **RAG System** (`backend/rag_system.py`): Orchestrates query processing + - Retrieves conversation history from SessionManager + - Calls AIGenerator with tool definitions + - Collects sources from ToolManager +4. **AI Generator** (`backend/ai_generator.py`): Claude API interaction + - If Claude decides to use tools → executes via ToolManager + - Tool results sent back to Claude for synthesis +5. **Search Tool** (`backend/search_tools.py`): CourseSearchTool.execute() + - Calls VectorStore.search() with optional filters +6. **Vector Store** (`backend/vector_store.py`): ChromaDB semantic search + - Resolves course names via semantic matching in `course_catalog` collection + - Searches course content in `course_content` collection + - Returns SearchResults with documents + metadata + +### Two-Collection Strategy +- **`course_catalog`**: Course metadata (title, instructor, lessons) for semantic course name matching +- **`course_content`**: Chunked course content with metadata (course_title, lesson_number, chunk_index) + +### Document Processing +Course documents must follow this format: +``` +Course Title: [title] +Course Link: [url] +Course Instructor: [instructor] + +Lesson 0: [lesson title] +Lesson Link: [lesson url] +[lesson content] + +Lesson 1: [lesson title] +... +``` + +`DocumentProcessor` (`backend/document_processor.py`): +- Parses metadata from first 3-4 lines +- Extracts lessons with regex pattern `Lesson \d+:` +- Chunks text using sentence-based splitting with overlap (configurable in `config.py`) +- Creates `Course` and `CourseChunk` objects + +### Configuration +All settings in `backend/config.py`: +- `CHUNK_SIZE`: 800 chars (text chunk size) +- `CHUNK_OVERLAP`: 100 chars (overlap between chunks) +- `MAX_RESULTS`: 5 (search results limit) +- `MAX_HISTORY`: 2 (conversation messages to remember) +- `ANTHROPIC_MODEL`: claude-sonnet-4-20250514 +- `EMBEDDING_MODEL`: all-MiniLM-L6-v2 + +### Session Management +`SessionManager` (`backend/session_manager.py`): +- Creates unique session IDs (`session_1`, `session_2`, etc.) +- Maintains conversation history (max 2 exchanges = 4 messages) +- Formats history for AI context as: `"User: [msg]\nAssistant: [msg]"` + +### Tool-Based Search +AI can call `search_course_content` tool with: +- `query` (required): What to search for +- `course_name` (optional): Course filter (partial matches work via semantic search) +- `lesson_number` (optional): Specific lesson filter + +Tool execution returns formatted results: `[Course Title - Lesson N]\n{content}` + +## Key Components + +### Backend (`backend/`) +- `app.py`: FastAPI application, CORS setup, static file serving +- `rag_system.py`: Main orchestrator coordinating all components +- `ai_generator.py`: Claude API wrapper with tool execution loop +- `vector_store.py`: ChromaDB interface with dual collections +- `search_tools.py`: Tool definitions and execution (CourseSearchTool, ToolManager) +- `document_processor.py`: Course parsing and text chunking +- `session_manager.py`: Conversation history tracking +- `models.py`: Pydantic models (Course, Lesson, CourseChunk) +- `config.py`: Centralized configuration + +### Frontend (`frontend/`) +- `index.html`: Chat interface +- `script.js`: API calls, message rendering (uses marked.js for markdown), session management +- `styles.css`: UI styling + +### Data Storage +- `docs/`: Course documents (auto-loaded on startup) +- `chroma_db/`: Persistent vector database (created automatically) + +## Development Notes + +### Adding New Tools +1. Create tool class inheriting from `Tool` in `search_tools.py` +2. Implement `get_tool_definition()` and `execute()` +3. Register with `ToolManager` in `rag_system.py` + +### Modifying Search Behavior +- Course name resolution: `VectorStore._resolve_course_name()` (semantic search in catalog) +- Filter logic: `VectorStore._build_filter()` (ChromaDB where clauses) +- Result formatting: `CourseSearchTool._format_results()` + +### AI Response Tuning +- System prompt: `AIGenerator.SYSTEM_PROMPT` (instructions for Claude) +- Temperature: `AIGenerator.base_params["temperature"]` (currently 0 for deterministic) +- Max tokens: `AIGenerator.base_params["max_tokens"]` (currently 800) + +### Windows Development +Use Git Bash for running shell scripts (`run.sh`). Commands are POSIX-compatible. + +## Data Flow Diagram + +See `query-flow-diagram.md` for detailed visual flow from user input to response display. diff --git a/query-flow-diagram.md b/query-flow-diagram.md new file mode 100644 index 000000000..d1f474596 --- /dev/null +++ b/query-flow-diagram.md @@ -0,0 +1,164 @@ +# RAG Chatbot Query Flow Diagram + +``` +┌─────────────────────────────────────────────────────────────────────────┐ +│ FRONTEND (script.js) │ +│ │ +│ User Input → sendMessage() │ +│ ├─ Disable input fields │ +│ ├─ Display user message in chat │ +│ ├─ Show loading animation │ +│ └─ POST /api/query │ +│ { │ +│ "query": "What is Python?", │ +│ "session_id": "abc123" │ +│ } │ +└────────────────────────────────┬──────────────────────────────────────────┘ + │ + ▼ +┌─────────────────────────────────────────────────────────────────────────┐ +│ BACKEND API (app.py:56) │ +│ │ +│ @app.post("/api/query") │ +│ ├─ Validate request │ +│ ├─ Create/get session_id │ +│ └─ Call rag_system.query(query, session_id) │ +└────────────────────────────────┬──────────────────────────────────────────┘ + │ + ▼ +┌─────────────────────────────────────────────────────────────────────────┐ +│ RAG SYSTEM ORCHESTRATOR (rag_system.py:102) │ +│ │ +│ query() method: │ +│ ├─ Get conversation history from SessionManager │ +│ ├─ Prepare prompt │ +│ ├─ Call ai_generator.generate_response() │ +│ │ ├─ Pass query │ +│ │ ├─ Pass conversation history │ +│ │ ├─ Pass tool definitions (search_course_content) │ +│ │ └─ Pass tool_manager │ +│ ├─ Collect sources from tool_manager │ +│ ├─ Update conversation history │ +│ └─ Return (answer, sources) │ +└────────────────────────────────┬──────────────────────────────────────────┘ + │ + ▼ +┌─────────────────────────────────────────────────────────────────────────┐ +│ AI GENERATOR (ai_generator.py:43) │ +│ │ +│ generate_response(): │ +│ ├─ Build system prompt + conversation history │ +│ ├─ Prepare API parameters with tools │ +│ ├─ Call Claude API (anthropic.messages.create) │ +│ └─ Check response.stop_reason │ +│ │ +│ ┌─────────────────────────────────────────────────────────────────┐ │ +│ │ If stop_reason == "tool_use": │ │ +│ │ │ │ +│ │ _handle_tool_execution(): │ │ +│ │ ├─ Extract tool calls from Claude's response │ │ +│ │ ├─ Execute each tool via tool_manager ──────────┐ │ │ +│ │ ├─ Collect tool results │ │ │ +│ │ ├─ Send results back to Claude │ │ │ +│ │ └─ Get final synthesized response │ │ │ +│ └──────────────────────────────────────────────────┼──────────────┘ │ +└───────────────────────────────────────────────────────┼──────────────────┘ + │ + ▼ + ┌───────────────────────────────────────────┐ + │ TOOL MANAGER (search_tools.py:135) │ + │ │ + │ execute_tool(name, **kwargs): │ + │ └─ Route to CourseSearchTool.execute() │ + └─────────────────┬─────────────────────────┘ + │ + ▼ + ┌───────────────────────────────────────────┐ + │ COURSE SEARCH TOOL (search_tools.py:52) │ + │ │ + │ execute(query, course_name, lesson_num): │ + │ ├─ Call vector_store.search() │ + │ ├─ Format results with context │ + │ ├─ Track sources for UI │ + │ └─ Return formatted search results │ + └─────────────────┬─────────────────────────┘ + │ + ▼ + ┌───────────────────────────────────────────┐ + │ VECTOR STORE (vector_store.py:61) │ + │ │ + │ search(query, course_name, lesson_num): │ + │ ├─ Resolve course name (if provided) │ + │ │ └─ Semantic search in course_catalog │ + │ ├─ Build ChromaDB filter │ + │ ├─ Search course_content collection │ + │ │ └─ Query with embeddings │ + │ └─ Return SearchResults │ + │ (documents, metadata, distances) │ + └───────────────────────────────────────────┘ + + RESPONSE PATH ↑ + +┌─────────────────────────────────────────────────────────────────────────┐ +│ RESPONSE FLOW (Upward) │ +│ │ +│ Vector Store Results │ +│ ↓ │ +│ Tool formats results → returns to AI Generator │ +│ ↓ │ +│ Claude synthesizes final answer from tool results │ +│ ↓ │ +│ RAG System collects answer + sources │ +│ ↓ │ +│ API returns JSON: │ +│ { │ +│ "answer": "Python is a high-level programming language...", │ +│ "sources": ["Introduction to Python - Lesson 1"], │ +│ "session_id": "abc123" │ +│ } │ +│ ↓ │ +│ Frontend receives response │ +│ ├─ Remove loading animation │ +│ ├─ Render answer with markdown │ +│ ├─ Display collapsible sources section │ +│ └─ Re-enable input fields │ +└─────────────────────────────────────────────────────────────────────────┘ +``` + +## Key Data Structures + +### Request Flow +``` +User Query → QueryRequest → RAG Query → AI Generation → Tool Execution → Vector Search +``` + +### Response Flow +``` +SearchResults → Tool Response → Claude Synthesis → QueryResponse → UI Display +``` + +## Component Interactions + +| Component | Input | Output | Key Methods | +|-----------|-------|--------|-------------| +| **Frontend** | User text | HTTP POST | `sendMessage()`, `addMessage()` | +| **API** | QueryRequest | QueryResponse | `query_documents()` | +| **RAG System** | query, session_id | answer, sources | `query()` | +| **AI Generator** | prompt, tools, history | response text | `generate_response()` | +| **Tool Manager** | tool_name, params | tool result | `execute_tool()` | +| **Search Tool** | query, filters | formatted results | `execute()` | +| **Vector Store** | query, filters | SearchResults | `search()` | + +## Session & Context Management + +``` +SessionManager (session_manager.py) +├─ create_session() → new session_id +├─ get_conversation_history(session_id) → previous exchanges +└─ add_exchange(session_id, query, response) → update history + +Conversation Flow: +1. First query: No session_id → Create new session +2. Subsequent queries: Use existing session_id → Load history +3. History included in AI context for coherent responses +``` From 26e0505afd6dbfb070c2b2f2e470f214abf11ba1 Mon Sep 17 00:00:00 2001 From: taroguru Date: Wed, 8 Oct 2025 10:17:43 +0900 Subject: [PATCH 02/12] change sources section more visual better --- .claude/settings.local.json | 9 ++++++ backend/app.py | 4 +-- backend/search_tools.py | 32 ++++++++++++------- frontend/script.js | 25 ++++++++++----- frontend/style.css | 63 +++++++++++++++++++++++++++++++------ 5 files changed, 104 insertions(+), 29 deletions(-) create mode 100644 .claude/settings.local.json diff --git a/.claude/settings.local.json b/.claude/settings.local.json new file mode 100644 index 000000000..1fb0ec4d2 --- /dev/null +++ b/.claude/settings.local.json @@ -0,0 +1,9 @@ +{ + "permissions": { + "allow": [ + "Bash(pip --version)" + ], + "deny": [], + "ask": [] + } +} diff --git a/backend/app.py b/backend/app.py index 5a69d741d..786c65e2a 100644 --- a/backend/app.py +++ b/backend/app.py @@ -6,7 +6,7 @@ from fastapi.staticfiles import StaticFiles from fastapi.middleware.trustedhost import TrustedHostMiddleware from pydantic import BaseModel -from typing import List, Optional +from typing import List, Optional, Dict, Any import os from config import config @@ -43,7 +43,7 @@ class QueryRequest(BaseModel): class QueryResponse(BaseModel): """Response model for course queries""" answer: str - sources: List[str] + sources: List[Dict[str, Any]] session_id: str class CourseStats(BaseModel): diff --git a/backend/search_tools.py b/backend/search_tools.py index adfe82352..e17c76d01 100644 --- a/backend/search_tools.py +++ b/backend/search_tools.py @@ -88,29 +88,39 @@ def execute(self, query: str, course_name: Optional[str] = None, lesson_number: def _format_results(self, results: SearchResults) -> str: """Format search results with course and lesson context""" formatted = [] - sources = [] # Track sources for the UI - + sources = [] # Track sources for the UI with links + for doc, meta in zip(results.documents, results.metadata): course_title = meta.get('course_title', 'unknown') lesson_num = meta.get('lesson_number') - + # Build context header header = f"[{course_title}" if lesson_num is not None: header += f" - Lesson {lesson_num}" header += "]" - - # Track source for the UI - source = course_title + + # Track source for the UI with link + source_label = course_title if lesson_num is not None: - source += f" - Lesson {lesson_num}" - sources.append(source) - + source_label += f" - Lesson {lesson_num}" + + # Retrieve lesson link from vector store + lesson_link = None + if lesson_num is not None: + lesson_link = self.store.get_lesson_link(course_title, lesson_num) + + # Store source as dictionary with label and link + sources.append({ + "label": source_label, + "link": lesson_link + }) + formatted.append(f"{header}\n{doc}") - + # Store sources for retrieval self.last_sources = sources - + return "\n\n".join(formatted) class ToolManager: diff --git a/frontend/script.js b/frontend/script.js index 562a8a363..5a435f652 100644 --- a/frontend/script.js +++ b/frontend/script.js @@ -115,25 +115,36 @@ function addMessage(content, type, sources = null, isWelcome = false) { const messageDiv = document.createElement('div'); messageDiv.className = `message ${type}${isWelcome ? ' welcome-message' : ''}`; messageDiv.id = `message-${messageId}`; - + // Convert markdown to HTML for assistant messages const displayContent = type === 'assistant' ? marked.parse(content) : escapeHtml(content); - + let html = `
${displayContent}
`; - + if (sources && sources.length > 0) { + // Format sources as clickable links (each on its own line) + const formattedSources = sources.map(source => { + if (source.link) { + // Create clickable link that opens in new tab + return `${escapeHtml(source.label)}`; + } else { + // No link available, display as plain text + return `${escapeHtml(source.label)}`; + } + }).join(''); + html += `
- Sources -
${sources.join(', ')}
+ Sources +
${formattedSources}
`; } - + messageDiv.innerHTML = html; chatMessages.appendChild(messageDiv); chatMessages.scrollTop = chatMessages.scrollHeight; - + return messageId; } diff --git a/frontend/style.css b/frontend/style.css index 825d03675..b726c0405 100644 --- a/frontend/style.css +++ b/frontend/style.css @@ -220,29 +220,74 @@ header h1 { /* Collapsible Sources */ .sources-collapsible { - margin-top: 0.5rem; - font-size: 0.75rem; - color: var(--text-secondary); + margin-top: 0.75rem; + font-size: 0.875rem; + background: rgba(37, 99, 235, 0.05); + border-radius: 8px; + border: 1px solid rgba(37, 99, 235, 0.15); } .sources-collapsible summary { cursor: pointer; - padding: 0.25rem 0.5rem; + padding: 0.5rem 0.75rem; user-select: none; - font-weight: 500; + font-weight: 600; + color: var(--primary-color); + display: flex; + align-items: center; + gap: 0.5rem; +} + +.sources-collapsible summary::before { + content: '▶'; + display: inline-block; + transition: transform 0.2s ease; + font-size: 0.7rem; +} + +.sources-collapsible[open] summary::before { + transform: rotate(90deg); } .sources-collapsible summary:hover { - color: var(--text-primary); + background: rgba(37, 99, 235, 0.1); } .sources-collapsible[open] summary { - margin-bottom: 0.25rem; + margin-bottom: 0.5rem; + border-bottom: 1px solid rgba(37, 99, 235, 0.15); } .sources-content { - padding: 0 0.5rem 0.25rem 1.5rem; - color: var(--text-secondary); + padding: 0.5rem 0.75rem 0.75rem 0.75rem; + display: flex; + flex-direction: column; + gap: 0.5rem; +} + +.sources-content a { + display: inline-flex; + align-items: center; + padding: 0.5rem 0.75rem; + background: var(--background); + border: 1px solid var(--border-color); + border-radius: 6px; + color: var(--primary-color); + text-decoration: none; + transition: all 0.2s ease; + font-size: 0.875rem; +} + +.sources-content a:hover { + background: var(--surface-hover); + border-color: var(--primary-color); + transform: translateX(2px); + box-shadow: 0 2px 8px rgba(37, 99, 235, 0.2); +} + +.sources-content a::before { + content: '📄'; + margin-right: 0.5rem; } /* Markdown formatting styles */ From ccdd4280572df7199f26cace02d446e1e54fd889 Mon Sep 17 00:00:00 2001 From: taroguru Date: Wed, 8 Oct 2025 11:00:41 +0900 Subject: [PATCH 03/12] add newchat on left menu and revice course detail response using rag --- .playwright-mcp/new-chat-button-current.png | Bin 0 -> 55524 bytes .playwright-mcp/new-chat-button-final.png | Bin 0 -> 54825 bytes .playwright-mcp/new-chat-button-updated.png | Bin 0 -> 55032 bytes backend/ai_generator.py | 24 +++++--- backend/rag_system.py | 4 +- backend/search_tools.py | 65 ++++++++++++++++++++ backend/vector_store.py | 40 +++++++++++- frontend/index.html | 5 ++ frontend/script.js | 23 ++++++- frontend/style.css | 36 +++++++++++ 10 files changed, 182 insertions(+), 15 deletions(-) create mode 100644 .playwright-mcp/new-chat-button-current.png create mode 100644 .playwright-mcp/new-chat-button-final.png create mode 100644 .playwright-mcp/new-chat-button-updated.png diff --git a/.playwright-mcp/new-chat-button-current.png b/.playwright-mcp/new-chat-button-current.png new file mode 100644 index 0000000000000000000000000000000000000000..ff1f44eb00477f6724ddc53e0201554e46cf04d1 GIT binary patch literal 55524 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 literal 0 HcmV?d00001 diff --git a/.playwright-mcp/new-chat-button-final.png b/.playwright-mcp/new-chat-button-final.png new file mode 100644 index 0000000000000000000000000000000000000000..5a0355307ffe69816a6d11ed73ce12746a2b24bf GIT binary patch literal 54825 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 z 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 literal 0 HcmV?d00001 diff --git a/.playwright-mcp/new-chat-button-updated.png b/.playwright-mcp/new-chat-button-updated.png new file mode 100644 index 0000000000000000000000000000000000000000..1d98541ff21b8ac3e51ca3184bf8387fb9bb0f7f GIT binary patch literal 55032 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 literal 0 HcmV?d00001 diff --git a/backend/ai_generator.py b/backend/ai_generator.py index 0363ca90c..9c474490d 100644 --- a/backend/ai_generator.py +++ b/backend/ai_generator.py @@ -5,20 +5,23 @@ class AIGenerator: """Handles interactions with Anthropic's Claude API for generating responses""" # Static system prompt to avoid rebuilding on each call - SYSTEM_PROMPT = """ You are an AI assistant specialized in course materials and educational content with access to a comprehensive search tool for course information. + SYSTEM_PROMPT = """ You are an AI assistant specialized in course materials and educational content with access to comprehensive tools for course information. -Search Tool Usage: -- Use the search tool **only** for questions about specific course content or detailed educational materials -- **One search per query maximum** -- Synthesize search results into accurate, fact-based responses -- If search yields no results, state this clearly without offering alternatives +Tool Usage: +- **search_course_content**: Use for questions about specific course content or detailed educational materials +- **get_course_outline**: Use for questions about course structure, outlines, or lesson lists + - When using this tool, always include the complete course title, course link, and full list of lessons with their numbers and titles in your response +- **One tool call per query maximum** +- Synthesize tool results into accurate, fact-based responses +- If a tool yields no results, state this clearly without offering alternatives Response Protocol: -- **General knowledge questions**: Answer using existing knowledge without searching -- **Course-specific questions**: Search first, then answer +- **General knowledge questions**: Answer using existing knowledge without using tools +- **Course-specific questions**: Use appropriate tool first, then answer +- **Course outline questions**: Use get_course_outline and present the full course title, course link, and all lessons (with numbers and titles) - **No meta-commentary**: - - Provide direct answers only — no reasoning process, search explanations, or question-type analysis - - Do not mention "based on the search results" + - Provide direct answers only — no reasoning process, tool usage explanations, or question-type analysis + - Do not mention "based on the tool results" or similar phrases All responses must be: @@ -26,6 +29,7 @@ class AIGenerator: 2. **Educational** - Maintain instructional value 3. **Clear** - Use accessible language 4. **Example-supported** - Include relevant examples when they aid understanding +5. **Complete** - For outlines, include all requested information (title, link, all lessons) Provide only the direct answer to what was asked. """ diff --git a/backend/rag_system.py b/backend/rag_system.py index 50d848c8e..1a79eb748 100644 --- a/backend/rag_system.py +++ b/backend/rag_system.py @@ -4,7 +4,7 @@ from vector_store import VectorStore from ai_generator import AIGenerator from session_manager import SessionManager -from search_tools import ToolManager, CourseSearchTool +from search_tools import ToolManager, CourseSearchTool, CourseOutlineTool from models import Course, Lesson, CourseChunk class RAGSystem: @@ -22,7 +22,9 @@ def __init__(self, config): # Initialize search tools self.tool_manager = ToolManager() self.search_tool = CourseSearchTool(self.vector_store) + self.outline_tool = CourseOutlineTool(self.vector_store) self.tool_manager.register_tool(self.search_tool) + self.tool_manager.register_tool(self.outline_tool) def add_course_document(self, file_path: str) -> Tuple[Course, int]: """ diff --git a/backend/search_tools.py b/backend/search_tools.py index e17c76d01..2b00ef27f 100644 --- a/backend/search_tools.py +++ b/backend/search_tools.py @@ -123,6 +123,71 @@ def _format_results(self, results: SearchResults) -> str: return "\n\n".join(formatted) + +class CourseOutlineTool(Tool): + """Tool for retrieving course outlines including title, link, and lesson list""" + + def __init__(self, vector_store: VectorStore): + self.store = vector_store + + def get_tool_definition(self) -> Dict[str, Any]: + """Return Anthropic tool definition for this tool""" + return { + "name": "get_course_outline", + "description": "Get the complete outline of a course including course title, course link, and all lessons with their titles and numbers", + "input_schema": { + "type": "object", + "properties": { + "course_name": { + "type": "string", + "description": "Course title (partial matches work, e.g. 'MCP', 'Introduction')" + } + }, + "required": ["course_name"] + } + } + + def execute(self, course_name: str) -> str: + """ + Execute the outline retrieval tool. + + Args: + course_name: Course name/title to get outline for + + Returns: + Formatted course outline or error message + """ + # Get outline from vector store + outline = self.store.get_course_outline(course_name) + + # Handle not found + if not outline: + return f"No course found matching '{course_name}'." + + # Format the outline + return self._format_outline(outline) + + def _format_outline(self, outline: Dict[str, Any]) -> str: + """Format course outline for display""" + formatted = [] + + # Add course title and link + formatted.append(f"Course: {outline['course_title']}") + if outline.get('course_link'): + formatted.append(f"Link: {outline['course_link']}") + + # Add lessons + lessons = outline.get('lessons', []) + if lessons: + formatted.append(f"\nLessons ({len(lessons)} total):") + for lesson in lessons: + lesson_num = lesson.get('lesson_number') + lesson_title = lesson.get('lesson_title', 'Untitled') + formatted.append(f" Lesson {lesson_num}: {lesson_title}") + + return "\n".join(formatted) + + class ToolManager: """Manages available tools for the AI""" diff --git a/backend/vector_store.py b/backend/vector_store.py index 390abe71c..72a51eb5c 100644 --- a/backend/vector_store.py +++ b/backend/vector_store.py @@ -264,4 +264,42 @@ def get_lesson_link(self, course_title: str, lesson_number: int) -> Optional[str return None except Exception as e: print(f"Error getting lesson link: {e}") - \ No newline at end of file + + def get_course_outline(self, course_name: str) -> Optional[Dict[str, Any]]: + """ + Get complete course outline including title, link, and all lessons. + + Args: + course_name: Course name/title (can be partial match) + + Returns: + Dict with course_title, course_link, and lessons list, or None if not found + """ + import json + + # Resolve course name using semantic search + course_title = self._resolve_course_name(course_name) + if not course_title: + return None + + try: + # Get course metadata by ID + results = self.course_catalog.get(ids=[course_title]) + if results and 'metadatas' in results and results['metadatas']: + metadata = results['metadatas'][0] + lessons_json = metadata.get('lessons_json') + + # Parse lessons + lessons = [] + if lessons_json: + lessons = json.loads(lessons_json) + + return { + "course_title": course_title, + "course_link": metadata.get('course_link'), + "lessons": lessons + } + return None + except Exception as e: + print(f"Error getting course outline: {e}") + return None diff --git a/frontend/index.html b/frontend/index.html index f8e25a62f..1f266cd29 100644 --- a/frontend/index.html +++ b/frontend/index.html @@ -19,6 +19,11 @@

Course Materials Assistant