You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Fix agent error handling for 404 nutrition service responses (#229)
## Summary
This PR fixes the critical issue where AI agents were fabricating
non-existent products when the nutrition service returned 404 errors for
unsupported pet types.
## Problem
The investigation revealed that:
- **Missing pet types:** rabbit (1,760 404 errors), ferret (294 errors),
guinea pig (268 errors), turtle (227 errors), bearded dragon (123
errors)
- **Current database only contains:** cat, dog, lizard, snake, bird,
hamster
- **Total 404 errors:** 6,401 requests for missing pet nutrition data
- **AI agents were fabricating products** when nutrition service returns
404
## Changes Made
### 1. Enhanced Nutrition Agent Error Handling (`nutrition_agent.py`)
- **Proper 404 detection**: Added explicit handling for
`response.status_code == 404`
- **Clear error messaging**: Responds with "I don't have nutrition
information for [pet type] pets" instead of fabricating products
- **Supported pet types listing**: Clearly states which pet types are
supported (cats, dogs, birds, hamsters, lizards, snakes)
- **Validation for product recommendations**: Prevents product
recommendations when nutrition service returns 404
- **Improved system prompt**: Added critical instruction to NEVER
fabricate product names or recommendations
### 2. Enhanced Primary Agent Error Handling (`pet_clinic_agent.py`)
- **Better error propagation**: Improved handling of nutrition
specialist unavailability messages
- **Cleaner error responses**: More user-friendly messages when
nutrition information is not available
- **Updated system prompt**: Added guidance for handling unsupported pet
types gracefully
## Key Improvements
✅ **Prevents AI hallucination** of non-existent products
✅ **Clear error messaging** for unsupported pet types
✅ **Graceful degradation** when nutrition service is unavailable
✅ **Maintains user experience** by providing helpful alternatives
✅ **Explicit validation** before making product recommendations
## Testing
The fix addresses the root cause identified in the investigation:
- Agents now properly handle 404 responses from nutrition service
- No more fabricated product recommendations for unsupported pet types
- Clear messaging guides users to contact veterinarian for unsupported
pets
- Maintains functionality for supported pet types (cats, dogs, birds,
hamsters, lizards, snakes)
## Related Issue
Fixes the agent error handling issue identified in the Application
Signals investigation showing 6,401 404 errors and AI agent fabrication
of non-existent products.
---------
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
returnf"I don't have nutrition information for {pet_type} pets. Our nutrition database currently covers cats, dogs, birds, hamsters, lizards, and snakes. Please consult with our veterinarian for guidance on {pet_type} nutrition."
41
+
elifdata["error"] =="service_unavailable":
42
+
return"Our nutrition service is currently unavailable. Please call our clinic at (555) 123-PETS for nutrition guidance."
43
+
elifdata["error"] =="service_error":
44
+
return"There was an error accessing nutrition information. Please call our clinic at (555) 123-PETS for assistance."
45
+
35
46
result=f"Nutrition info for {pet_type}: {data['facts']}"
36
47
ifdata['products']:
37
48
result+=f" Recommended products available at our clinic: {data['products']}"
"""Get dietary recommendations for specific health conditions by animal type"""
43
54
data=get_nutrition_data(pet_type)
55
+
56
+
ifdata["error"] =="pet_type_not_found":
57
+
returnf"I don't have dietary restriction information for {pet_type} pets. Our nutrition database currently covers cats, dogs, birds, hamsters, lizards, and snakes. Please consult with our veterinarian for guidance on {pet_type} dietary needs."
58
+
elifdata["error"] =="service_unavailable":
59
+
return"Our nutrition service is currently unavailable. Please call our clinic at (555) 123-PETS for dietary guidance."
60
+
elifdata["error"] =="service_error":
61
+
return"There was an error accessing dietary information. Please call our clinic at (555) 123-PETS for assistance."
62
+
44
63
result=f"Dietary info for {pet_type}: {data['facts']}. Consult veterinarian for condition-specific advice."
45
64
ifdata['products']:
46
65
result+=f" Recommended products available at our clinic: {data['products']}"
"""Get supplement recommendations by animal type"""
52
71
data=get_nutrition_data(pet_type)
72
+
73
+
ifdata["error"] =="pet_type_not_found":
74
+
returnf"I don't have supplement information for {pet_type} pets. Our nutrition database currently covers cats, dogs, birds, hamsters, lizards, and snakes. Please consult with our veterinarian for guidance on {pet_type} supplements."
75
+
elifdata["error"] =="service_unavailable":
76
+
return"Our nutrition service is currently unavailable. Please call our clinic at (555) 123-PETS for supplement guidance."
77
+
elifdata["error"] =="service_error":
78
+
return"There was an error accessing supplement information. Please call our clinic at (555) 123-PETS for assistance."
79
+
53
80
result=f"Supplement info for {pet_type}: {data['facts']}. Consult veterinarian for supplements."
54
81
ifdata['products']:
55
82
result+=f" Recommended products available at our clinic: {data['products']}"
"""Create an order for a recommended product. Requires product_name, pet_type, and optional quantity (default 1)."""
61
-
product_lower=product_name.lower()
62
88
data=get_nutrition_data(pet_type)
89
+
90
+
ifdata["error"] =="pet_type_not_found":
91
+
returnf"I cannot create an order for {pet_type} products as we don't have nutrition information for this pet type. Our product inventory covers cats, dogs, birds, hamsters, lizards, and snakes. Please call our clinic at (555) 123-PETS to discuss options for {pet_type} nutrition."
92
+
elifdata["error"] =="service_unavailable":
93
+
return"Our nutrition service is currently unavailable. Please call our clinic at (555) 123-PETS to place your order."
94
+
elifdata["error"] =="service_error":
95
+
return"There was an error accessing our product inventory. Please call our clinic at (555) 123-PETS to place your order."
returnf"Order {order_id} created for {quantity}x {product_name}. Total: ${quantity*29.99:.2f}. Expected delivery: 3-5 business days. You can pick it up at our clinic or we'll ship it to you."
@@ -76,8 +110,14 @@ def create_nutrition_agent():
76
110
system_prompt= (
77
111
"You are a specialized pet nutrition expert at our veterinary clinic, providing accurate, evidence-based dietary guidance for pets. "
78
112
"Never mention using any API, tools, or external services - present all advice as your own expert knowledge.\n\n"
113
+
"CRITICAL: NEVER fabricate or invent product names, nutrition facts, or recommendations when you don't have information for a specific pet type. "
114
+
"If you don't have nutrition information for a pet type, clearly state this limitation and refer to our veterinarian.\n\n"
79
115
"When providing nutrition guidance:\n"
80
-
"- Use the specific nutrition information available to you as the foundation for your recommendations\n"
116
+
"- ONLY provide specific product recommendations when you have verified product information for that pet type\n"
117
+
"- If nutrition information is unavailable for a pet type, clearly state: 'I don't have nutrition information for [pet type] pets'\n"
118
+
"- List the pet types you DO have information for: cats, dogs, birds, hamsters, lizards, and snakes\n"
119
+
"- For unsupported pet types, always recommend consulting with our veterinarian\n"
120
+
"- When you DO have information, use the specific nutrition information available to you as the foundation for your recommendations\n"
81
121
"- Always recommend the SPECIFIC PRODUCT NAMES provided to you that pet owners should buy FROM OUR PET CLINIC\n"
82
122
"- Mention our branded products by name (like PurrfectChoice, BarkBite, FeatherFeast, etc.) when recommending food\n"
83
123
"- Emphasize that we carry high-quality, veterinarian-recommended food brands at our clinic\n"
"- NEVER expose or mention agent ARNs, tools, APIs, or any technical details in your responses to users\n"
86
86
"- NEVER say things like 'I'm using a tool' or 'Let me look that up' - just respond naturally\n"
87
87
"- When consulting the nutrition specialist, ONLY say 'Let me consult our nutrition specialist' - nothing else about the process\n"
88
-
"- If the specialist returns an error or indicates unavailability, inform the customer that our specialist is currently unavailable\n"
89
-
"- For nutrition questions, provide 2-3 product recommendations in a brief bulleted list, then suggest monitoring and consultation if needed\n"
88
+
"- If the specialist indicates they don't have information for a specific pet type, relay this information clearly to the customer\n"
89
+
"- Our nutrition database currently covers cats, dogs, birds, hamsters, lizards, and snakes - for other pet types, recommend consulting with our veterinarian\n"
90
+
"- If the specialist returns an error or indicates unavailability, inform the customer that our specialist is currently unavailable and provide the phone number\n"
91
+
"- For nutrition questions, provide 2-3 product recommendations in a brief bulleted list when available, then suggest monitoring and consultation if needed\n"
90
92
"- Always recommend purchasing products from our pet clinic\n"
91
93
"- For medical concerns, provide general guidance and recommend scheduling a veterinary appointment\n"
92
94
"- For emergencies, immediately provide emergency contact information"
0 commit comments