Add warning about missing imports in CodeAgent error logs
This commit is contained in:
		
							parent
							
								
									87bbc3f1cd
								
							
						
					
					
						commit
						3f79baee71
					
				|  | @ -958,6 +958,12 @@ class CodeAgent(MultiStepAgent): | |||
|                 ) | ||||
|             else: | ||||
|                 error_msg = f"Code execution failed: {str(e)}" | ||||
|             if "Import of " in str(e) and " is not allowed" in str(e): | ||||
|                 console.print( | ||||
|                     "[bold red]Code execution failed due to an unauthorized import. Consider passing said import under additional_authorized_imports when initializing your CodeAgent." | ||||
|                 ) | ||||
|             else: | ||||
|                 console.print("PLACEHOLDER" + str(e)) | ||||
|             raise AgentExecutionError(error_msg) | ||||
| 
 | ||||
|         truncated_output = truncate_content(str(output)) | ||||
|  |  | |||
|  | @ -130,6 +130,17 @@ final_answer("got an error") | |||
| """ | ||||
| 
 | ||||
| 
 | ||||
| def fake_code_model_import(messages, stop_sequences=None) -> str: | ||||
|     return """ | ||||
| Thought: I can answer the question | ||||
| Code: | ||||
| ```py | ||||
| import numpy as np | ||||
| final_answer("got an error") | ||||
| ```<end_code> | ||||
| """ | ||||
| 
 | ||||
| 
 | ||||
| def fake_code_functiondef(messages, stop_sequences=None) -> str: | ||||
|     prompt = str(messages) | ||||
|     if "special_marker" not in prompt: | ||||
|  | @ -340,3 +351,13 @@ class AgentTests(unittest.TestCase): | |||
|         assert ( | ||||
|             "You can also give requests to team members." in manager_agent.system_prompt | ||||
|         ) | ||||
| 
 | ||||
|     def test_code_agent_missing_import_triggers_advice_in_error_log(self): | ||||
|         agent = CodeAgent(tools=[], model=fake_code_model_import) | ||||
| 
 | ||||
|         from smolagents.agents import console | ||||
| 
 | ||||
|         with console.capture() as capture: | ||||
|             agent.run("Count to 3") | ||||
|         str_output = capture.get() | ||||
|         assert "import under additional_authorized_imports" in str_output | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue