01 What students build
The first of Chapter 21's production agents (src/prod/bug_traige_agent_prod_ready.py). A fetch_jira_ticket tool hits JIRA REST v3 and flattens the Atlassian Document Format description into a plain bug report. A RAG knowledge base (built once with python -m rag.ingest) supplies precedent: similar past bugs, test cases, related VWO tickets and PDFs. Groq's gpt-oss-120b then triages with json_schema structured output, so the Pydantic Triage comes back with real booleans, never "False" as a string.
Live JIRA Tool
A LangChain @tool that fetches summary, type, priority, status, components and reporter for any key, with a recursive ADF-to-text flattener for v3 descriptions.
RAG-Grounded Precedent
Top-3 similar items from Chroma + Ollama nomic-embed-text. If past bugs map a component to a team and severity, the agent follows that mapping.
Structured Triage
A Pydantic schema: title, severity, priority, component, suggested_team, likely_duplicate, reasoning. Constrained generation, not parsed prose.
02 Architecture
03 Live demo (simulated with sample data)
This is a UI walkthrough with pre-baked sample data so you can feel the triage flow without JIRA credentials. In the course you run the real thing: a .env with Groq + JIRA keys, Ollama embeddings and a local Chroma DB built by python -m rag.ingest.
04 Inputs & outputs
What goes in
- One or more JIRA keys, or a raw pasted bug report
- .env: GROQ_API_KEY, LLM_MODEL, JIRA_URL, JIRA_EMAIL, JIRA_API_TOKEN
- A Chroma knowledge base built by python -m rag.ingest
- Knowledge sources: BUG-0xx reports, test_cases.csv, tickets, PDFs
What comes out
- A structured Triage per ticket: severity, priority, component, team
- likely_duplicate flag with the matching past bug
- Top-3 RAG precedents with similarity scores
- 2-3 line reasoning grounded in prior knowledge, printed one by one