File size: 2,498 Bytes
b840b29
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
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()