Update agent.py
Browse files
agent.py
CHANGED
@@ -22,6 +22,10 @@ from llama_index.core import Settings
|
|
22 |
from transformers import AutoModelForCausalLM, AutoTokenizer
|
23 |
from llama_index.llms.huggingface import HuggingFaceLLM
|
24 |
|
|
|
|
|
|
|
|
|
25 |
model_id = "Qwen/Qwen2.5-7B-Instruct"
|
26 |
proj_llm = HuggingFaceLLM(
|
27 |
model_name=model_id,
|
@@ -409,43 +413,37 @@ description="Execute Python code safely for calculations and data processing"
|
|
409 |
# Code Agent as ReActAgent with explicit code generation
|
410 |
code_agent = ReActAgent(
|
411 |
name="CodeAgent",
|
412 |
-
description="Advanced calculations, data processing
|
413 |
system_prompt="""
|
414 |
-
You are a coding
|
415 |
-
|
416 |
-
|
417 |
-
|
418 |
-
|
419 |
-
|
420 |
-
|
421 |
-
|
422 |
-
|
423 |
-
|
424 |
-
|
425 |
-
-
|
426 |
-
-
|
427 |
-
-
|
428 |
-
- Handle edge cases and potential errors
|
429 |
-
- Show intermediate steps for complex calculations
|
430 |
-
|
431 |
-
Always show your reasoning process clearly and provide exact answers as required by GAIA.
|
432 |
|
433 |
Example workflow:
|
434 |
-
|
435 |
-
|
436 |
-
|
437 |
-
|
438 |
-
|
439 |
-
|
440 |
-
|
441 |
-
```
|
442 |
-
ACT: [Execute the code using the tool]
|
443 |
-
OBSERVE: Check if result is correct and complete
|
444 |
""",
|
445 |
llm=proj_llm,
|
446 |
tools=[code_execution_tool],
|
447 |
-
max_steps=5,
|
448 |
-
verbose
|
|
|
449 |
)
|
450 |
|
451 |
def analysis_function(query: str, files=None):
|
@@ -485,32 +483,24 @@ code_tool = FunctionTool.from_defaults(
|
|
485 |
name="CodeAgent",
|
486 |
description="""Advanced computational specialist using ReAct reasoning. Use this tool at least when you need:
|
487 |
|
488 |
-
**
|
489 |
-
-
|
490 |
-
-
|
491 |
-
-
|
492 |
-
-
|
|
|
493 |
|
494 |
-
**
|
495 |
-
-
|
496 |
-
-
|
497 |
-
-
|
498 |
-
-
|
|
|
|
|
499 |
|
500 |
-
**
|
501 |
-
- Step-by-step problem solving with code
|
502 |
-
- Verification of calculations or logic
|
503 |
-
- Pattern analysis and data validation
|
504 |
-
- Algorithm implementation for specific problems
|
505 |
|
506 |
-
**
|
507 |
-
- Code generation for specific computational needs
|
508 |
-
- Data structure manipulation
|
509 |
-
- Regular expression operations
|
510 |
-
|
511 |
-
**When to use:** Questions requiring precise calculations, data manipulation, logical reasoning with code verification, mathematical problem solving, or when you need to process numerical/textual data programmatically.
|
512 |
-
|
513 |
-
**Input format:** Describe the calculation or processing task clearly, including any specific requirements or constraints."""
|
514 |
)
|
515 |
|
516 |
class EnhancedGAIAAgent:
|
@@ -521,7 +511,7 @@ class EnhancedGAIAAgent:
|
|
521 |
hf_token = os.getenv("HUGGINGFACEHUB_API_TOKEN")
|
522 |
if not hf_token:
|
523 |
raise ValueError("HUGGINGFACEHUB_API_TOKEN environment variable is required")
|
524 |
-
|
525 |
# Agent coordinateur principal qui utilise les agents spécialisés comme tools
|
526 |
self.coordinator = ReActAgent(
|
527 |
name="GAIACoordinator",
|
@@ -546,7 +536,8 @@ class EnhancedGAIAAgent:
|
|
546 |
llm=proj_llm,
|
547 |
tools=[analysis_tool, research_tool, code_tool],
|
548 |
max_steps = 10,
|
549 |
-
verbose = True
|
|
|
550 |
)
|
551 |
|
552 |
async def format_gaia_answer(self, raw_response: str, original_question: str) -> str:
|
@@ -602,6 +593,7 @@ class EnhancedGAIAAgent:
|
|
602 |
async def solve_gaia_question(self, question_data: Dict[str, Any]) -> str:
|
603 |
question = question_data.get("Question", "")
|
604 |
task_id = question_data.get("task_id", "")
|
|
|
605 |
|
606 |
context_prompt = f"""
|
607 |
GAIA Task ID: {task_id}
|
|
|
22 |
from transformers import AutoModelForCausalLM, AutoTokenizer
|
23 |
from llama_index.llms.huggingface import HuggingFaceLLM
|
24 |
|
25 |
+
llama_debug = LlamaDebugHandler(print_trace_on_end=True)
|
26 |
+
callback_manager = CallbackManager([llama_debug])
|
27 |
+
|
28 |
+
|
29 |
model_id = "Qwen/Qwen2.5-7B-Instruct"
|
30 |
proj_llm = HuggingFaceLLM(
|
31 |
model_name=model_id,
|
|
|
413 |
# Code Agent as ReActAgent with explicit code generation
|
414 |
code_agent = ReActAgent(
|
415 |
name="CodeAgent",
|
416 |
+
description="Advanced calculations, data processing using code generation and execution",
|
417 |
system_prompt="""
|
418 |
+
You are a coding specialist. For EVERY computational task:
|
419 |
+
|
420 |
+
1. THINK: Analyze what calculation/processing is needed
|
421 |
+
2. GENERATE CODE: Write Python code to solve the problem
|
422 |
+
3. EXECUTE: Use the Python Code Execution tool to run your code
|
423 |
+
4. OBSERVE: Check the results
|
424 |
+
5. REPEAT if needed
|
425 |
+
|
426 |
+
ALWAYS write code for:
|
427 |
+
- Mathematical calculations
|
428 |
+
- Data processing
|
429 |
+
- Numerical analysis
|
430 |
+
- Text processing
|
431 |
+
- Any computational task
|
|
|
|
|
|
|
|
|
432 |
|
433 |
Example workflow:
|
434 |
+
Question: "What is 15 * 23 + 7?"
|
435 |
+
|
436 |
+
Thought: I need to calculate 15 * 23 + 7
|
437 |
+
Action: Python Code Execution
|
438 |
+
Action Input: {"code": "result = 15 * 23 + 7\nprint(f'The answer is: {result}')"}
|
439 |
+
|
440 |
+
Store your final answer in a variable called 'result'.
|
|
|
|
|
|
|
441 |
""",
|
442 |
llm=proj_llm,
|
443 |
tools=[code_execution_tool],
|
444 |
+
max_steps=5,
|
445 |
+
verbose=True,
|
446 |
+
callback_manager=callback_manager,
|
447 |
)
|
448 |
|
449 |
def analysis_function(query: str, files=None):
|
|
|
483 |
name="CodeAgent",
|
484 |
description="""Advanced computational specialist using ReAct reasoning. Use this tool at least when you need:
|
485 |
|
486 |
+
**Core Capabilities:**
|
487 |
+
- **Autonomous Code Generation**: Writes Python code from scratch to solve computational problems
|
488 |
+
- **Multi-step Problem Solving**: Breaks complex tasks into manageable coding steps
|
489 |
+
- **Self-debugging**: Identifies and fixes errors through iterative refinement
|
490 |
+
- **Library Integration**: Leverages numpy, pandas, matplotlib, scipy, sklearn, and other scientific libraries
|
491 |
+
- **Result Verification**: Validates outputs and adjusts approach as needed
|
492 |
|
493 |
+
**When to Use:**
|
494 |
+
- Mathematical calculations requiring step-by-step computation
|
495 |
+
- Data analysis and statistical processing
|
496 |
+
- Algorithm implementation and optimization
|
497 |
+
- Numerical simulations and modeling
|
498 |
+
- Text processing and pattern analysis
|
499 |
+
- Complex logical operations requiring code verification
|
500 |
|
501 |
+
**Unique Advantage**: Unlike simple calculation tools, this agent can autonomously write, execute, debug, and refine code until achieving the correct solution, making it ideal for complex computational tasks that require adaptive problem-solving.
|
|
|
|
|
|
|
|
|
502 |
|
503 |
+
**Input Format**: Describe the computational task clearly, including any data, constraints, or specific requirements."""
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
504 |
)
|
505 |
|
506 |
class EnhancedGAIAAgent:
|
|
|
511 |
hf_token = os.getenv("HUGGINGFACEHUB_API_TOKEN")
|
512 |
if not hf_token:
|
513 |
raise ValueError("HUGGINGFACEHUB_API_TOKEN environment variable is required")
|
514 |
+
|
515 |
# Agent coordinateur principal qui utilise les agents spécialisés comme tools
|
516 |
self.coordinator = ReActAgent(
|
517 |
name="GAIACoordinator",
|
|
|
536 |
llm=proj_llm,
|
537 |
tools=[analysis_tool, research_tool, code_tool],
|
538 |
max_steps = 10,
|
539 |
+
verbose = True,
|
540 |
+
callback_manager=callback_manager,
|
541 |
)
|
542 |
|
543 |
async def format_gaia_answer(self, raw_response: str, original_question: str) -> str:
|
|
|
593 |
async def solve_gaia_question(self, question_data: Dict[str, Any]) -> str:
|
594 |
question = question_data.get("Question", "")
|
595 |
task_id = question_data.get("task_id", "")
|
596 |
+
print("data",question_data)
|
597 |
|
598 |
context_prompt = f"""
|
599 |
GAIA Task ID: {task_id}
|