agentic-defensor / agentic_example.py
vichudo's picture
add first approach
b840b29
Raw
History Blame Contribute Delete
2.5 kB
import os
import json
import argparse
from dotenv import load_dotenv
from src.agents.agent_director import AgentDirector
# Load environment variables
load_dotenv()
def main():
"""Example script demonstrating the Agentic Defensor RAG system with multiple agents."""
# Parse command line arguments
parser = argparse.ArgumentParser(description="Agentic Defensor Multi-Agent Example")
parser.add_argument("--query", type=str, default="En qué tomo se encuentra Contrato Andrea Monsalve",
help="The legal query to process")
parser.add_argument("--top-k", type=int, default=50, help="Number of chunks to retrieve")
parser.add_argument("--model", type=str, default=None, help="OpenAI model to use")
parser.add_argument("--save", action="store_true", help="Save results to file")
parser.add_argument("--output", type=str, default="agentic_results.json", help="Output file")
args = parser.parse_args()
# Initialize the agent director
print("Initializing agent director...")
director = AgentDirector(top_k=args.top_k, model=args.model)
# Process the query
print(f"\nProcessing query: {args.query}")
result = director.process_query(args.query)
# Display the result
print("\n" + "="*80)
print("QUERY:")
print(args.query)
print("\nANSWER:")
print(result["answer"])
print("="*80)
# Display processing steps
print("\nPROCESSING STEPS:")
if "query_analysis" in result:
print("1. Query Analysis: Completed")
structured_analysis = result["query_analysis"].get("structured_analysis", "")
if structured_analysis:
print(f" - Extracted structured information from the query")
print(f"2. Retrieved {result.get('num_chunks_retrieved', 0)} document chunks")
if "context_aggregation" in result:
agg = result["context_aggregation"]
print("3. Context Aggregation:")
print(f" - Processed {agg.get('num_raw_content_items', 0)} content items")
print(f" - Organized context: {agg.get('has_organized_content', False)}")
print(f"4. Answer Generation: Completed")
# Save results if requested
if args.save:
print(f"\nSaving results to {args.output}...")
with open(args.output, "w", encoding="utf-8") as f:
json.dump(result, f, ensure_ascii=False, indent=2)
print(f"Results saved successfully.")
if __name__ == "__main__":
main()