gaia-enhanced-agent / utils /integration_example.py
GAIA Agent Deployment
Deploy Complete Enhanced GAIA Agent with Phase 1-6 Improvements
9a6a4dc
"""
Integration example showing how to use the QuestionClassifier with the BasicAgent.
This demonstrates how the extracted classification logic can be integrated back
into the main agent architecture for clean separation of concerns.
"""
from question_classifier import QuestionClassifier
class EnhancedBasicAgentWithClassifier:
"""
Example of how to integrate the QuestionClassifier with the BasicAgent.
This shows the clean separation achieved by extracting classification logic
into its own utility module.
"""
def __init__(self):
"""Initialize the agent with the external classifier."""
print("EnhancedBasicAgentWithClassifier initialized.")
# Initialize the question classifier
self.classifier = QuestionClassifier()
# System prompt (same as original)
self.system_prompt = """You are a helpful AI assistant that provides accurate, concise answers.
I will ask you a question. Report your thoughts, and finish your answer with just the final answer.
Your final answer should be a number OR as few words as possible OR a comma separated list of numbers and/or strings.
If you are asked for a number, don't use comma to write your number neither use units such as $ or percent sign unless specified otherwise.
Provide only the answer without any prefix like "FINAL ANSWER:" - just return the specific answer requested.
If you are asked for a string, don't use articles, neither abbreviations (e.g. for cities), and write the digits in plain text unless specified otherwise.
If you are asked for a comma separated list, apply the above rules depending of whether the element to be put in the list is a number or a string."""
def __call__(self, question: str) -> str:
"""Process a question using the external classifier."""
print(f"Agent received question: {question[:100]}...")
try:
# Use the external classifier
classification = self.classifier.classify_question(question)
# Get detailed analysis for debugging/logging
analysis = self.classifier.get_detailed_analysis(question)
print(f"Classification: {classification} (confidence: {analysis['confidence']})")
# Route based on classification
answer = self._route_question(question, classification)
print(f"Agent returning answer: {answer}")
return answer
except Exception as e:
print(f"Error processing question: {e}")
return "unknown"
def _route_question(self, question: str, classification: str) -> str:
"""Route question to appropriate handler based on classification."""
if classification == 'calculation':
return self._handle_calculation(question)
elif classification == 'url':
return self._handle_url_access(question)
elif classification == 'general_web_search':
return self._handle_web_search(question)
else:
return self._handle_unknown(question)
def _handle_calculation(self, question: str) -> str:
"""Handle calculation questions."""
# This would contain the math/conversion logic from the original BasicAgent
print("Routing to calculation handler")
return "calculation_result" # Placeholder
def _handle_url_access(self, question: str) -> str:
"""Handle questions requiring specific URL/webpage access."""
# This would contain logic to access specific URLs or databases
print("Routing to URL access handler")
return "url_content_result" # Placeholder
def _handle_web_search(self, question: str) -> str:
"""Handle questions requiring general web search."""
# This would contain the web search logic
print("Routing to web search handler")
return "web_search_result" # Placeholder
def _handle_unknown(self, question: str) -> str:
"""Handle unknown/unclassified questions."""
print("Routing to unknown handler")
return "unknown"
def demonstrate_classification():
"""Demonstrate the classification system."""
print("Question Classification Demonstration")
print("=" * 50)
# Initialize classifier
classifier = QuestionClassifier()
# Test questions
test_questions = [
"What is 25 + 37?",
"Convert 100 fahrenheit to celsius",
"What albums did Mercedes Sosa release between 2000 and 2009?",
"How many continents are there?",
"Who is the president of France?",
"What is the capital of Japan?"
]
for question in test_questions:
classification, confidence, scores = classifier.classify_with_confidence(question)
print(f"\nQ: {question}")
print(f"Classification: {classification}")
print(f"Confidence: {confidence}")
print(f"Scores: {scores}")
# Show routing decision
if classification == 'calculation':
print("→ Route to: Math/Conversion Handler")
elif classification == 'url':
print("→ Route to: Specific URL/Database Access")
else:
print("→ Route to: General Web Search")
def demonstrate_integration():
"""Demonstrate integration with agent."""
print("\n\nAgent Integration Demonstration")
print("=" * 50)
# Initialize enhanced agent
agent = EnhancedBasicAgentWithClassifier()
# Test questions
test_questions = [
"Calculate 15 + 25",
"Mercedes Sosa albums 2000-2009",
"How many planets in solar system?"
]
for question in test_questions:
print(f"\nTesting: {question}")
result = agent(question)
print(f"Result: {result}")
if __name__ == "__main__":
# Run demonstrations
demonstrate_classification()
demonstrate_integration()