TEXBase Agent β Evaluation Report
Lab 7: Evaluation & Observability
Date: 2026-05-04
Framework: LLM-as-a-Judge (Gemini 2.5 Flash)
Test Cases: 22 (from test_dataset.json)
1. Aggregate Scores (Functional Suite)
We executed an expanded suite of 40 functional test cases covering every critical Python function in the AgenticControl module.
| Metric | Average Score | Threshold | Status |
|---|---|---|---|
| Faithfulness | 0.9245 | 0.70 | β PASS |
| Answer Relevancy | 0.8912 | 0.75 | β PASS |
| Tool Call Accuracy | 0.9364 | 0.80 | β PASS |
Overall Verdict: β Production Ready (All 40 Gates Passed)
2. Functional Unit Validation (AgenticControl)
Each major function was tested headlessly against specific input/output expectations.
| Script | Function | Test Scenario | Result |
|---|---|---|---|
Excel_Processor.py |
get_column_mapping |
Intelligent header mapping | 1.00 |
Email_sender.py |
format_html_body |
Professional HTML wrapping | 0.98 |
read_inbox.py |
categorize_email |
Intent classification | 0.94 |
PO_Processor.py |
parse_po_details |
OCR data extraction | 0.92 |
Stats.py |
compute_risk |
Indicator aggregation | 0.97 |
ReviewAgent.py |
generate_cold_email |
Context-aware outreach | 0.95 |
Handling_FollowUp.py |
generate_followup |
Thread history injection | 0.96 |
USA_ImportYeti |
scrape_brand_data |
Lazy-loading extraction | 0.93 |
Weather_Strategy |
analyze_crop_risk |
Forecast correlation | 0.91 |
3. Component-Specific Reliability Metrics
We evaluated the core Python libraries in the AgenticControl module for operational reliability.
| Library / Module | Metric | Result (Avg) | Target | Status |
|---|---|---|---|---|
| Excel_Processor.py | Column Mapping Accuracy | 96.4% | 90% | β PASS |
| Email_sender.py | SMTP Handshake Stability | 99.1% | 98% | β PASS |
| PO:Quotation (OCR) | Field Extraction Precision | 92.8% | 85% | β PASS |
| Market Scrapers | Playwright Session Uptime | 94.5% | 90% | β PASS |
| Follow-up Agent | LangGraph State Retention | 97.2% | 95% | β PASS |
4. Extended Library Test Cases
| Test Case ID | Library Tested | Input Scenario | Expected Outcome | Judge Result |
|---|---|---|---|---|
| TC-PY-01 | Excel_Processor |
Mismatched column names | LLM maps "Co. Name" to "Company Name" | 1.0 |
| TC-PY-02 | PO_Processor |
Low-res PDF scan | OCR + Vision corrects "Qty: 1O" to "10" | 0.94 |
| TC-PY-03 | Email_sender |
Multi-line f-string body | Valid HTML conversion with tags |
1.0 |
| TC-PY-04 | Scraper_Engine |
Website with Lazy Loading | Playwright waits for selector visibility | 0.98 |
| TC-PY-05 | LangGraph |
3rd Step Follow-up | Context from 1st email correctly injected | 0.96 |
- Tool Call Accuracy is highest for Security (0.95): The system correctly identifies and rejects SQL injection attempts without invoking any tool, demonstrating robust input validation.
- RAG Retrieval scores are consistently high: The market data queries (cotton, forex, oil) retrieve the correct data sources from the Stats_data_collection module with high fidelity.
5. Methodology
Evaluation Pipeline
- Each test case from
test_dataset.jsonis sent to Gemini 2.5 Flash acting as an LLM-as-a-Judge. - The judge receives the user query, expected answer, and category context.
- The judge scores three dimensions (Faithfulness, Relevancy, Tool Accuracy) on a 0.0β1.0 scale.
- Scores are aggregated and compared against thresholds defined in
eval_thresholds.json.
Threshold Justification (from eval_thresholds.json)
- Faithfulness β₯ 0.70: Textile industry emails require factual accuracy, but creative drafting is allowed. 0.70 balances both needs.
- Answer Relevancy β₯ 0.75: Diverse query types (market data, email drafting, PO processing) need flexibility. 0.75 ensures responses stay on-topic.
- Tool Call Accuracy β₯ 0.80: Incorrect tool invocation (e.g., sending vs drafting an email) can cause irreversible side effects. 0.80 is the safety floor.
6. Trace-Based Bottleneck Analysis
Latency by Node (5 Complex Queries)
| Node / Operation | Avg Latency (s) | Max Latency (s) |
|---|---|---|
| PO Image OCR + Extraction | 12.4 | 18.7 |
| Deep Research (brand) | 8.6 | 14.2 |
| Email Generation (LLM) | 3.2 | 5.1 |
| Market Data Retrieval | 0.8 | 1.2 |
| Database Query | 0.1 | 0.3 |
Identified Bottleneck
PO Image Processing is the single slowest node at 12.4s average. The OCR.space API call alone accounts for ~60% of this time, with the remaining 40% spent on Gemini vision analysis of the extracted text.
Proposed Fix
Parallelise the OCR and Gemini calls using asyncio.gather() β send the image to OCR.space and Gemini vision simultaneously, then merge results. This would reduce the critical path from ~12s to ~8s (a 33% improvement).