pulkitme commited on
Commit
dddddce
·
1 Parent(s): 2a23dee

simple smolagent with duck duck go search tool and youtube transcription tool

Browse files
Files changed (2) hide show
  1. app.py +1 -1
  2. test.ipynb +252 -0
app.py CHANGED
@@ -10,7 +10,7 @@ from langchain_community.document_loaders import YoutubeLoader
10
 
11
 
12
  #client = genai.Client(api_key=os.getenv("API_KEY"))
13
- model = LiteLLMModel(model_id="gemini/gemini-2.0-flash-exp",
14
  api_key=os.getenv("API_KEY"))
15
  # (Keep Constants as is)
16
  # --- Constants ---
 
10
 
11
 
12
  #client = genai.Client(api_key=os.getenv("API_KEY"))
13
+ model = LiteLLMModel(model_id="gemini/gemini-2.0-flash-lite",
14
  api_key=os.getenv("API_KEY"))
15
  # (Keep Constants as is)
16
  # --- Constants ---
test.ipynb CHANGED
@@ -363,6 +363,258 @@
363
  "What does Teal'c say in response to the question \"\"Isn't that hot?\"\"\")"
364
  ]
365
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
366
  {
367
  "cell_type": "code",
368
  "execution_count": null,
 
363
  "What does Teal'c say in response to the question \"\"Isn't that hot?\"\"\")"
364
  ]
365
  },
366
+ {
367
+ "cell_type": "code",
368
+ "execution_count": 12,
369
+ "metadata": {},
370
+ "outputs": [
371
+ {
372
+ "name": "stdout",
373
+ "output_type": "stream",
374
+ "text": [
375
+ "\u001b[1;31mInit signature:\u001b[0m\n",
376
+ "\u001b[0mCodeAgent\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m\n",
377
+ "\u001b[0m \u001b[0mtools\u001b[0m\u001b[1;33m:\u001b[0m \u001b[0mList\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0msmolagents\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mtools\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mTool\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\n",
378
+ "\u001b[0m \u001b[0mmodel\u001b[0m\u001b[1;33m:\u001b[0m \u001b[0mCallable\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mList\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mDict\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mstr\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mstr\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0msmolagents\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mmodels\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mChatMessage\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\n",
379
+ "\u001b[0m \u001b[0mprompt_templates\u001b[0m\u001b[1;33m:\u001b[0m \u001b[0mOptional\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0msmolagents\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0magents\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mPromptTemplates\u001b[0m\u001b[1;33m]\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;32mNone\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\n",
380
+ "\u001b[0m \u001b[0mgrammar\u001b[0m\u001b[1;33m:\u001b[0m \u001b[0mOptional\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mDict\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mstr\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mstr\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m]\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;32mNone\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\n",
381
+ "\u001b[0m \u001b[0madditional_authorized_imports\u001b[0m\u001b[1;33m:\u001b[0m \u001b[0mOptional\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mList\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mstr\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m]\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;32mNone\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\n",
382
+ "\u001b[0m \u001b[0mplanning_interval\u001b[0m\u001b[1;33m:\u001b[0m \u001b[0mOptional\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mint\u001b[0m\u001b[1;33m]\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;32mNone\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\n",
383
+ "\u001b[0m \u001b[0mexecutor_type\u001b[0m\u001b[1;33m:\u001b[0m \u001b[0mstr\u001b[0m \u001b[1;33m|\u001b[0m \u001b[1;32mNone\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;34m'local'\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\n",
384
+ "\u001b[0m \u001b[0mexecutor_kwargs\u001b[0m\u001b[1;33m:\u001b[0m \u001b[0mOptional\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mDict\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mstr\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mAny\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m]\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;32mNone\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\n",
385
+ "\u001b[0m \u001b[0mmax_print_outputs_length\u001b[0m\u001b[1;33m:\u001b[0m \u001b[0mOptional\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mint\u001b[0m\u001b[1;33m]\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;32mNone\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\n",
386
+ "\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\n",
387
+ "\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
388
+ "\u001b[1;31mSource:\u001b[0m \n",
389
+ "\u001b[1;32mclass\u001b[0m \u001b[0mCodeAgent\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mMultiStepAgent\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\n",
390
+ "\u001b[0m \u001b[1;34m\"\"\"\n",
391
+ " In this agent, the tool calls will be formulated by the LLM in code format, then parsed and executed.\n",
392
+ "\n",
393
+ " Args:\n",
394
+ " tools (`list[Tool]`): [`Tool`]s that the agent can use.\n",
395
+ " model (`Callable[[list[dict[str, str]]], ChatMessage]`): Model that will generate the agent's actions.\n",
396
+ " prompt_templates ([`~agents.PromptTemplates`], *optional*): Prompt templates.\n",
397
+ " grammar (`dict[str, str]`, *optional*): Grammar used to parse the LLM output.\n",
398
+ " additional_authorized_imports (`list[str]`, *optional*): Additional authorized imports for the agent.\n",
399
+ " planning_interval (`int`, *optional*): Interval at which the agent will run a planning step.\n",
400
+ " executor_type (`str`, default `\"local\"`): Which executor type to use between `\"local\"`, `\"e2b\"`, or `\"docker\"`.\n",
401
+ " executor_kwargs (`dict`, *optional*): Additional arguments to pass to initialize the executor.\n",
402
+ " max_print_outputs_length (`int`, *optional*): Maximum length of the print outputs.\n",
403
+ " **kwargs: Additional keyword arguments.\n",
404
+ "\n",
405
+ " \"\"\"\u001b[0m\u001b[1;33m\n",
406
+ "\u001b[0m\u001b[1;33m\n",
407
+ "\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0m__init__\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m\n",
408
+ "\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\n",
409
+ "\u001b[0m \u001b[0mtools\u001b[0m\u001b[1;33m:\u001b[0m \u001b[0mList\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mTool\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\n",
410
+ "\u001b[0m \u001b[0mmodel\u001b[0m\u001b[1;33m:\u001b[0m \u001b[0mCallable\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mList\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mDict\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mstr\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mstr\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mChatMessage\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\n",
411
+ "\u001b[0m \u001b[0mprompt_templates\u001b[0m\u001b[1;33m:\u001b[0m \u001b[0mOptional\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mPromptTemplates\u001b[0m\u001b[1;33m]\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;32mNone\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\n",
412
+ "\u001b[0m \u001b[0mgrammar\u001b[0m\u001b[1;33m:\u001b[0m \u001b[0mOptional\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mDict\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mstr\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mstr\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m]\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;32mNone\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\n",
413
+ "\u001b[0m \u001b[0madditional_authorized_imports\u001b[0m\u001b[1;33m:\u001b[0m \u001b[0mOptional\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mList\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mstr\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m]\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;32mNone\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\n",
414
+ "\u001b[0m \u001b[0mplanning_interval\u001b[0m\u001b[1;33m:\u001b[0m \u001b[0mOptional\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mint\u001b[0m\u001b[1;33m]\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;32mNone\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\n",
415
+ "\u001b[0m \u001b[0mexecutor_type\u001b[0m\u001b[1;33m:\u001b[0m \u001b[0mstr\u001b[0m \u001b[1;33m|\u001b[0m \u001b[1;32mNone\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;34m\"local\"\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\n",
416
+ "\u001b[0m \u001b[0mexecutor_kwargs\u001b[0m\u001b[1;33m:\u001b[0m \u001b[0mOptional\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mDict\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mstr\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mAny\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m]\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;32mNone\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\n",
417
+ "\u001b[0m \u001b[0mmax_print_outputs_length\u001b[0m\u001b[1;33m:\u001b[0m \u001b[0mOptional\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mint\u001b[0m\u001b[1;33m]\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;32mNone\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\n",
418
+ "\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\n",
419
+ "\u001b[0m \u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\n",
420
+ "\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0madditional_authorized_imports\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0madditional_authorized_imports\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0madditional_authorized_imports\u001b[0m \u001b[1;32melse\u001b[0m \u001b[1;33m[\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\n",
421
+ "\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mauthorized_imports\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0msorted\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mset\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mBASE_BUILTIN_MODULES\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;33m|\u001b[0m \u001b[0mset\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0madditional_authorized_imports\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\n",
422
+ "\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mmax_print_outputs_length\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mmax_print_outputs_length\u001b[0m\u001b[1;33m\n",
423
+ "\u001b[0m \u001b[0mprompt_templates\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mprompt_templates\u001b[0m \u001b[1;32mor\u001b[0m \u001b[0myaml\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0msafe_load\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m\n",
424
+ "\u001b[0m \u001b[0mimportlib\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mresources\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mfiles\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m\"smolagents.prompts\"\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mjoinpath\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m\"code_agent.yaml\"\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mread_text\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\n",
425
+ "\u001b[0m \u001b[1;33m)\u001b[0m\u001b[1;33m\n",
426
+ "\u001b[0m \u001b[0msuper\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m__init__\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m\n",
427
+ "\u001b[0m \u001b[0mtools\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mtools\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\n",
428
+ "\u001b[0m \u001b[0mmodel\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mmodel\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\n",
429
+ "\u001b[0m \u001b[0mprompt_templates\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mprompt_templates\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\n",
430
+ "\u001b[0m \u001b[0mgrammar\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mgrammar\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\n",
431
+ "\u001b[0m \u001b[0mplanning_interval\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mplanning_interval\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\n",
432
+ "\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\n",
433
+ "\u001b[0m \u001b[1;33m)\u001b[0m\u001b[1;33m\n",
434
+ "\u001b[0m \u001b[1;32mif\u001b[0m \u001b[1;34m\"*\"\u001b[0m \u001b[1;32min\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0madditional_authorized_imports\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\n",
435
+ "\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mlogger\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mlog\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m\n",
436
+ "\u001b[0m \u001b[1;34m\"Caution: you set an authorization for all imports, meaning your agent can decide to import any package it deems necessary. This might raise issues if the package is not installed in your environment.\"\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\n",
437
+ "\u001b[0m \u001b[1;36m0\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\n",
438
+ "\u001b[0m \u001b[1;33m)\u001b[0m\u001b[1;33m\n",
439
+ "\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mexecutor_type\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mexecutor_type\u001b[0m \u001b[1;32mor\u001b[0m \u001b[1;34m\"local\"\u001b[0m\u001b[1;33m\n",
440
+ "\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mexecutor_kwargs\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mexecutor_kwargs\u001b[0m \u001b[1;32mor\u001b[0m \u001b[1;33m{\u001b[0m\u001b[1;33m}\u001b[0m\u001b[1;33m\n",
441
+ "\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mpython_executor\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mcreate_python_executor\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\n",
442
+ "\u001b[0m\u001b[1;33m\n",
443
+ "\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0mcreate_python_executor\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;33m->\u001b[0m \u001b[0mPythonExecutor\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\n",
444
+ "\u001b[0m \u001b[0mmatch\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mexecutor_type\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\n",
445
+ "\u001b[0m \u001b[0mcase\u001b[0m \u001b[1;34m\"e2b\"\u001b[0m \u001b[1;33m|\u001b[0m \u001b[1;34m\"docker\"\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\n",
446
+ "\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mmanaged_agents\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\n",
447
+ "\u001b[0m \u001b[1;32mraise\u001b[0m \u001b[0mException\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m\"Managed agents are not yet supported with remote code execution.\"\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\n",
448
+ "\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mexecutor_type\u001b[0m \u001b[1;33m==\u001b[0m \u001b[1;34m\"e2b\"\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\n",
449
+ "\u001b[0m \u001b[1;32mreturn\u001b[0m \u001b[0mE2BExecutor\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0madditional_authorized_imports\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mlogger\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mexecutor_kwargs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\n",
450
+ "\u001b[0m \u001b[1;32melse\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\n",
451
+ "\u001b[0m \u001b[1;32mreturn\u001b[0m \u001b[0mDockerExecutor\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0madditional_authorized_imports\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mlogger\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mexecutor_kwargs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\n",
452
+ "\u001b[0m \u001b[0mcase\u001b[0m \u001b[1;34m\"local\"\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\n",
453
+ "\u001b[0m \u001b[1;32mreturn\u001b[0m \u001b[0mLocalPythonExecutor\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m\n",
454
+ "\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0madditional_authorized_imports\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\n",
455
+ "\u001b[0m \u001b[0mmax_print_outputs_length\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mmax_print_outputs_length\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\n",
456
+ "\u001b[0m \u001b[1;33m)\u001b[0m\u001b[1;33m\n",
457
+ "\u001b[0m \u001b[0mcase\u001b[0m \u001b[0m_\u001b[0m\u001b[1;33m:\u001b[0m \u001b[1;31m# if applicable\u001b[0m\u001b[1;33m\n",
458
+ "\u001b[0m \u001b[1;32mraise\u001b[0m \u001b[0mValueError\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33mf\"\u001b[0m\u001b[1;33mUnsupported executor type: \u001b[0m\u001b[1;33m{\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mexecutor_type\u001b[0m\u001b[1;33m}\u001b[0m\u001b[1;33m\"\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\n",
459
+ "\u001b[0m\u001b[1;33m\n",
460
+ "\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0minitialize_system_prompt\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;33m->\u001b[0m \u001b[0mstr\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\n",
461
+ "\u001b[0m \u001b[0msystem_prompt\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mpopulate_template\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m\n",
462
+ "\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mprompt_templates\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;34m\"system_prompt\"\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\n",
463
+ "\u001b[0m \u001b[0mvariables\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;33m{\u001b[0m\u001b[1;33m\n",
464
+ "\u001b[0m \u001b[1;34m\"tools\"\u001b[0m\u001b[1;33m:\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mtools\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\n",
465
+ "\u001b[0m \u001b[1;34m\"managed_agents\"\u001b[0m\u001b[1;33m:\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mmanaged_agents\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\n",
466
+ "\u001b[0m \u001b[1;34m\"authorized_imports\"\u001b[0m\u001b[1;33m:\u001b[0m \u001b[1;33m(\u001b[0m\u001b[1;33m\n",
467
+ "\u001b[0m \u001b[1;34m\"You can import from any package you want.\"\u001b[0m\u001b[1;33m\n",
468
+ "\u001b[0m \u001b[1;32mif\u001b[0m \u001b[1;34m\"*\"\u001b[0m \u001b[1;32min\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mauthorized_imports\u001b[0m\u001b[1;33m\n",
469
+ "\u001b[0m \u001b[1;32melse\u001b[0m \u001b[0mstr\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mauthorized_imports\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\n",
470
+ "\u001b[0m \u001b[1;33m)\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\n",
471
+ "\u001b[0m \u001b[1;33m}\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\n",
472
+ "\u001b[0m \u001b[1;33m)\u001b[0m\u001b[1;33m\n",
473
+ "\u001b[0m \u001b[1;32mreturn\u001b[0m \u001b[0msystem_prompt\u001b[0m\u001b[1;33m\n",
474
+ "\u001b[0m\u001b[1;33m\n",
475
+ "\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0mstep\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mmemory_step\u001b[0m\u001b[1;33m:\u001b[0m \u001b[0mActionStep\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;33m->\u001b[0m \u001b[0mUnion\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;32mNone\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mAny\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\n",
476
+ "\u001b[0m \u001b[1;34m\"\"\"\n",
477
+ " Perform one step in the ReAct framework: the agent thinks, acts, and observes the result.\n",
478
+ " Returns None if the step is not final.\n",
479
+ " \"\"\"\u001b[0m\u001b[1;33m\n",
480
+ "\u001b[0m \u001b[0mmemory_messages\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mwrite_memory_to_messages\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\n",
481
+ "\u001b[0m\u001b[1;33m\n",
482
+ "\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0minput_messages\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mmemory_messages\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mcopy\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\n",
483
+ "\u001b[0m\u001b[1;33m\n",
484
+ "\u001b[0m \u001b[1;31m# Add new step in logs\u001b[0m\u001b[1;33m\n",
485
+ "\u001b[0m \u001b[0mmemory_step\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mmodel_input_messages\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mmemory_messages\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mcopy\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\n",
486
+ "\u001b[0m \u001b[1;32mtry\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\n",
487
+ "\u001b[0m \u001b[0madditional_args\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;33m{\u001b[0m\u001b[1;34m\"grammar\"\u001b[0m\u001b[1;33m:\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mgrammar\u001b[0m\u001b[1;33m}\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mgrammar\u001b[0m \u001b[1;32mis\u001b[0m \u001b[1;32mnot\u001b[0m \u001b[1;32mNone\u001b[0m \u001b[1;32melse\u001b[0m \u001b[1;33m{\u001b[0m\u001b[1;33m}\u001b[0m\u001b[1;33m\n",
488
+ "\u001b[0m \u001b[0mchat_message\u001b[0m\u001b[1;33m:\u001b[0m \u001b[0mChatMessage\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mmodel\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m\n",
489
+ "\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0minput_messages\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\n",
490
+ "\u001b[0m \u001b[0mstop_sequences\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;34m\"<end_code>\"\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;34m\"Observation:\"\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;34m\"Calling tools:\"\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\n",
491
+ "\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0madditional_args\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\n",
492
+ "\u001b[0m \u001b[1;33m)\u001b[0m\u001b[1;33m\n",
493
+ "\u001b[0m \u001b[0mmemory_step\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mmodel_output_message\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mchat_message\u001b[0m\u001b[1;33m\n",
494
+ "\u001b[0m \u001b[0mmodel_output\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mchat_message\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mcontent\u001b[0m\u001b[1;33m\n",
495
+ "\u001b[0m\u001b[1;33m\n",
496
+ "\u001b[0m \u001b[1;31m# This adds <end_code> sequence to the history.\u001b[0m\u001b[1;33m\n",
497
+ "\u001b[0m \u001b[1;31m# This will nudge ulterior LLM calls to finish with <end_code>, thus efficiently stopping generation.\u001b[0m\u001b[1;33m\n",
498
+ "\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mmodel_output\u001b[0m \u001b[1;32mand\u001b[0m \u001b[0mmodel_output\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mstrip\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mendswith\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m\"```\"\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\n",
499
+ "\u001b[0m \u001b[0mmodel_output\u001b[0m \u001b[1;33m+=\u001b[0m \u001b[1;34m\"<end_code>\"\u001b[0m\u001b[1;33m\n",
500
+ "\u001b[0m \u001b[0mmemory_step\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mmodel_output_message\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mcontent\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mmodel_output\u001b[0m\u001b[1;33m\n",
501
+ "\u001b[0m\u001b[1;33m\n",
502
+ "\u001b[0m \u001b[0mmemory_step\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mmodel_output\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mmodel_output\u001b[0m\u001b[1;33m\n",
503
+ "\u001b[0m \u001b[1;32mexcept\u001b[0m \u001b[0mException\u001b[0m \u001b[1;32mas\u001b[0m \u001b[0me\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\n",
504
+ "\u001b[0m \u001b[1;32mraise\u001b[0m \u001b[0mAgentGenerationError\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33mf\"\u001b[0m\u001b[1;33mError in generating model output:\\n\u001b[0m\u001b[1;33m{\u001b[0m\u001b[0me\u001b[0m\u001b[1;33m}\u001b[0m\u001b[1;33m\"\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mlogger\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;32mfrom\u001b[0m \u001b[0me\u001b[0m\u001b[1;33m\n",
505
+ "\u001b[0m\u001b[1;33m\n",
506
+ "\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mlogger\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mlog_markdown\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m\n",
507
+ "\u001b[0m \u001b[0mcontent\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mmodel_output\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\n",
508
+ "\u001b[0m \u001b[0mtitle\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;34m\"Output message of the LLM:\"\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\n",
509
+ "\u001b[0m \u001b[0mlevel\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mLogLevel\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mDEBUG\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\n",
510
+ "\u001b[0m \u001b[1;33m)\u001b[0m\u001b[1;33m\n",
511
+ "\u001b[0m\u001b[1;33m\n",
512
+ "\u001b[0m \u001b[1;31m# Parse\u001b[0m\u001b[1;33m\n",
513
+ "\u001b[0m \u001b[1;32mtry\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\n",
514
+ "\u001b[0m \u001b[0mcode_action\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mfix_final_answer_code\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mparse_code_blobs\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mmodel_output\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\n",
515
+ "\u001b[0m \u001b[1;32mexcept\u001b[0m \u001b[0mException\u001b[0m \u001b[1;32mas\u001b[0m \u001b[0me\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\n",
516
+ "\u001b[0m \u001b[0merror_msg\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;33mf\"\u001b[0m\u001b[1;33mError in code parsing:\\n\u001b[0m\u001b[1;33m{\u001b[0m\u001b[0me\u001b[0m\u001b[1;33m}\u001b[0m\u001b[1;33m\\nMake sure to provide correct code blobs.\u001b[0m\u001b[1;33m\"\u001b[0m\u001b[1;33m\n",
517
+ "\u001b[0m \u001b[1;32mraise\u001b[0m \u001b[0mAgentParsingError\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0merror_msg\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mlogger\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\n",
518
+ "\u001b[0m\u001b[1;33m\n",
519
+ "\u001b[0m \u001b[0mmemory_step\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mtool_calls\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;33m[\u001b[0m\u001b[1;33m\n",
520
+ "\u001b[0m \u001b[0mToolCall\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m\n",
521
+ "\u001b[0m \u001b[0mname\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;34m\"python_interpreter\"\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\n",
522
+ "\u001b[0m \u001b[0marguments\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mcode_action\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\n",
523
+ "\u001b[0m \u001b[0mid\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;33mf\"\u001b[0m\u001b[1;33mcall_\u001b[0m\u001b[1;33m{\u001b[0m\u001b[0mlen\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mmemory\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0msteps\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m}\u001b[0m\u001b[1;33m\"\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\n",
524
+ "\u001b[0m \u001b[1;33m)\u001b[0m\u001b[1;33m\n",
525
+ "\u001b[0m \u001b[1;33m]\u001b[0m\u001b[1;33m\n",
526
+ "\u001b[0m\u001b[1;33m\n",
527
+ "\u001b[0m \u001b[1;31m# Execute\u001b[0m\u001b[1;33m\n",
528
+ "\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mlogger\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mlog_code\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mtitle\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;34m\"Executing parsed code:\"\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mcontent\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mcode_action\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mlevel\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mLogLevel\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mINFO\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\n",
529
+ "\u001b[0m \u001b[0mis_final_answer\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;32mFalse\u001b[0m\u001b[1;33m\n",
530
+ "\u001b[0m \u001b[1;32mtry\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\n",
531
+ "\u001b[0m \u001b[0moutput\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mexecution_logs\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mis_final_answer\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mpython_executor\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mcode_action\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\n",
532
+ "\u001b[0m \u001b[0mexecution_outputs_console\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;33m[\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\n",
533
+ "\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mlen\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mexecution_logs\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;33m>\u001b[0m \u001b[1;36m0\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\n",
534
+ "\u001b[0m \u001b[0mexecution_outputs_console\u001b[0m \u001b[1;33m+=\u001b[0m \u001b[1;33m[\u001b[0m\u001b[1;33m\n",
535
+ "\u001b[0m \u001b[0mText\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m\"Execution logs:\"\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mstyle\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;34m\"bold\"\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\n",
536
+ "\u001b[0m \u001b[0mText\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mexecution_logs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\n",
537
+ "\u001b[0m \u001b[1;33m]\u001b[0m\u001b[1;33m\n",
538
+ "\u001b[0m \u001b[0mobservation\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;34m\"Execution logs:\\n\"\u001b[0m \u001b[1;33m+\u001b[0m \u001b[0mexecution_logs\u001b[0m\u001b[1;33m\n",
539
+ "\u001b[0m \u001b[1;32mexcept\u001b[0m \u001b[0mException\u001b[0m \u001b[1;32mas\u001b[0m \u001b[0me\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\n",
540
+ "\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mhasattr\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mpython_executor\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;34m\"state\"\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;32mand\u001b[0m \u001b[1;34m\"_print_outputs\"\u001b[0m \u001b[1;32min\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mpython_executor\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mstate\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\n",
541
+ "\u001b[0m \u001b[0mexecution_logs\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mstr\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mpython_executor\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mstate\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;34m\"_print_outputs\"\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\n",
542
+ "\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mlen\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mexecution_logs\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;33m>\u001b[0m \u001b[1;36m0\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\n",
543
+ "\u001b[0m \u001b[0mexecution_outputs_console\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;33m[\u001b[0m\u001b[1;33m\n",
544
+ "\u001b[0m \u001b[0mText\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m\"Execution logs:\"\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mstyle\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;34m\"bold\"\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\n",
545
+ "\u001b[0m \u001b[0mText\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mexecution_logs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\n",
546
+ "\u001b[0m \u001b[1;33m]\u001b[0m\u001b[1;33m\n",
547
+ "\u001b[0m \u001b[0mmemory_step\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mobservations\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;34m\"Execution logs:\\n\"\u001b[0m \u001b[1;33m+\u001b[0m \u001b[0mexecution_logs\u001b[0m\u001b[1;33m\n",
548
+ "\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mlogger\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mlog\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mGroup\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m*\u001b[0m\u001b[0mexecution_outputs_console\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mlevel\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mLogLevel\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mINFO\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\n",
549
+ "\u001b[0m \u001b[0merror_msg\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mstr\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0me\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\n",
550
+ "\u001b[0m \u001b[1;32mif\u001b[0m \u001b[1;34m\"Import of \"\u001b[0m \u001b[1;32min\u001b[0m \u001b[0merror_msg\u001b[0m \u001b[1;32mand\u001b[0m \u001b[1;34m\" is not allowed\"\u001b[0m \u001b[1;32min\u001b[0m \u001b[0merror_msg\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\n",
551
+ "\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mlogger\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mlog\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m\n",
552
+ "\u001b[0m \u001b[1;34m\"[bold red]Warning to user: Code execution failed due to an unauthorized import - Consider passing said import under `additional_authorized_imports` when initializing your CodeAgent.\"\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\n",
553
+ "\u001b[0m \u001b[0mlevel\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mLogLevel\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mINFO\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\n",
554
+ "\u001b[0m \u001b[1;33m)\u001b[0m\u001b[1;33m\n",
555
+ "\u001b[0m \u001b[1;32mraise\u001b[0m \u001b[0mAgentExecutionError\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0merror_msg\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mlogger\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\n",
556
+ "\u001b[0m\u001b[1;33m\n",
557
+ "\u001b[0m \u001b[0mtruncated_output\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mtruncate_content\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mstr\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0moutput\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\n",
558
+ "\u001b[0m \u001b[0mobservation\u001b[0m \u001b[1;33m+=\u001b[0m \u001b[1;34m\"Last output from code snippet:\\n\"\u001b[0m \u001b[1;33m+\u001b[0m \u001b[0mtruncated_output\u001b[0m\u001b[1;33m\n",
559
+ "\u001b[0m \u001b[0mmemory_step\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mobservations\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mobservation\u001b[0m\u001b[1;33m\n",
560
+ "\u001b[0m\u001b[1;33m\n",
561
+ "\u001b[0m \u001b[0mexecution_outputs_console\u001b[0m \u001b[1;33m+=\u001b[0m \u001b[1;33m[\u001b[0m\u001b[1;33m\n",
562
+ "\u001b[0m \u001b[0mText\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m\n",
563
+ "\u001b[0m \u001b[1;33mf\"\u001b[0m\u001b[1;33m{\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m'Out - Final answer'\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mis_final_answer\u001b[0m \u001b[1;32melse\u001b[0m \u001b[1;34m'Out'\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m}\u001b[0m\u001b[1;33m: \u001b[0m\u001b[1;33m{\u001b[0m\u001b[0mtruncated_output\u001b[0m\u001b[1;33m}\u001b[0m\u001b[1;33m\"\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\n",
564
+ "\u001b[0m \u001b[0mstyle\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33mf\"\u001b[0m\u001b[1;33mbold \u001b[0m\u001b[1;33m{\u001b[0m\u001b[0mYELLOW_HEX\u001b[0m\u001b[1;33m}\u001b[0m\u001b[1;33m\"\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mis_final_answer\u001b[0m \u001b[1;32melse\u001b[0m \u001b[1;34m\"\"\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\n",
565
+ "\u001b[0m \u001b[1;33m)\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\n",
566
+ "\u001b[0m \u001b[1;33m]\u001b[0m\u001b[1;33m\n",
567
+ "\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mlogger\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mlog\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mGroup\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m*\u001b[0m\u001b[0mexecution_outputs_console\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mlevel\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mLogLevel\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mINFO\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\n",
568
+ "\u001b[0m \u001b[0mmemory_step\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0maction_output\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0moutput\u001b[0m\u001b[1;33m\n",
569
+ "\u001b[0m \u001b[1;32mreturn\u001b[0m \u001b[0moutput\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mis_final_answer\u001b[0m \u001b[1;32melse\u001b[0m \u001b[1;32mNone\u001b[0m\u001b[1;33m\n",
570
+ "\u001b[0m\u001b[1;33m\n",
571
+ "\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0mto_dict\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;33m->\u001b[0m \u001b[0mdict\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mstr\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mAny\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\n",
572
+ "\u001b[0m \u001b[1;34m\"\"\"Convert the agent to a dictionary representation.\n",
573
+ "\n",
574
+ " Returns:\n",
575
+ " `dict`: Dictionary representation of the agent.\n",
576
+ " \"\"\"\u001b[0m\u001b[1;33m\n",
577
+ "\u001b[0m \u001b[0magent_dict\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0msuper\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mto_dict\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\n",
578
+ "\u001b[0m \u001b[0magent_dict\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;34m\"authorized_imports\"\u001b[0m\u001b[1;33m]\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mauthorized_imports\u001b[0m\u001b[1;33m\n",
579
+ "\u001b[0m \u001b[0magent_dict\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;34m\"executor_type\"\u001b[0m\u001b[1;33m]\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mexecutor_type\u001b[0m\u001b[1;33m\n",
580
+ "\u001b[0m \u001b[0magent_dict\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;34m\"executor_kwargs\"\u001b[0m\u001b[1;33m]\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mexecutor_kwargs\u001b[0m\u001b[1;33m\n",
581
+ "\u001b[0m \u001b[0magent_dict\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;34m\"max_print_outputs_length\"\u001b[0m\u001b[1;33m]\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mmax_print_outputs_length\u001b[0m\u001b[1;33m\n",
582
+ "\u001b[0m \u001b[1;32mreturn\u001b[0m \u001b[0magent_dict\u001b[0m\u001b[1;33m\n",
583
+ "\u001b[0m\u001b[1;33m\n",
584
+ "\u001b[0m \u001b[1;33m@\u001b[0m\u001b[0mclassmethod\u001b[0m\u001b[1;33m\n",
585
+ "\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0mfrom_dict\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mcls\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0magent_dict\u001b[0m\u001b[1;33m:\u001b[0m \u001b[0mdict\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mstr\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mAny\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;33m->\u001b[0m \u001b[1;34m\"CodeAgent\"\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\n",
586
+ "\u001b[0m \u001b[1;34m\"\"\"Create CodeAgent from a dictionary representation.\n",
587
+ "\n",
588
+ " Args:\n",
589
+ " agent_dict (`dict[str, Any]`): Dictionary representation of the agent.\n",
590
+ " **kwargs: Additional keyword arguments that will override agent_dict values.\n",
591
+ "\n",
592
+ " Returns:\n",
593
+ " `CodeAgent`: Instance of the CodeAgent class.\n",
594
+ " \"\"\"\u001b[0m\u001b[1;33m\n",
595
+ "\u001b[0m \u001b[1;31m# Add CodeAgent-specific parameters to kwargs\u001b[0m\u001b[1;33m\n",
596
+ "\u001b[0m \u001b[0mcode_agent_kwargs\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;33m{\u001b[0m\u001b[1;33m\n",
597
+ "\u001b[0m \u001b[1;34m\"additional_authorized_imports\"\u001b[0m\u001b[1;33m:\u001b[0m \u001b[0magent_dict\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mget\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m\"authorized_imports\"\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\n",
598
+ "\u001b[0m \u001b[1;34m\"executor_type\"\u001b[0m\u001b[1;33m:\u001b[0m \u001b[0magent_dict\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mget\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m\"executor_type\"\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\n",
599
+ "\u001b[0m \u001b[1;34m\"executor_kwargs\"\u001b[0m\u001b[1;33m:\u001b[0m \u001b[0magent_dict\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mget\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m\"executor_kwargs\"\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\n",
600
+ "\u001b[0m \u001b[1;34m\"max_print_outputs_length\"\u001b[0m\u001b[1;33m:\u001b[0m \u001b[0magent_dict\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mget\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m\"max_print_outputs_length\"\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\n",
601
+ "\u001b[0m \u001b[1;33m}\u001b[0m\u001b[1;33m\n",
602
+ "\u001b[0m \u001b[1;31m# Filter out None values\u001b[0m\u001b[1;33m\n",
603
+ "\u001b[0m \u001b[0mcode_agent_kwargs\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;33m{\u001b[0m\u001b[0mk\u001b[0m\u001b[1;33m:\u001b[0m \u001b[0mv\u001b[0m \u001b[1;32mfor\u001b[0m \u001b[0mk\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mv\u001b[0m \u001b[1;32min\u001b[0m \u001b[0mcode_agent_kwargs\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mitems\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mv\u001b[0m \u001b[1;32mis\u001b[0m \u001b[1;32mnot\u001b[0m \u001b[1;32mNone\u001b[0m\u001b[1;33m}\u001b[0m\u001b[1;33m\n",
604
+ "\u001b[0m \u001b[1;31m# Update with any additional kwargs\u001b[0m\u001b[1;33m\n",
605
+ "\u001b[0m \u001b[0mcode_agent_kwargs\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mupdate\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\n",
606
+ "\u001b[0m \u001b[1;31m# Call the parent class's from_dict method\u001b[0m\u001b[1;33m\n",
607
+ "\u001b[0m \u001b[1;32mreturn\u001b[0m \u001b[0msuper\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mfrom_dict\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0magent_dict\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mcode_agent_kwargs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
608
+ "\u001b[1;31mFile:\u001b[0m c:\\users\\pulkitme\\appdata\\local\\miniconda3\\lib\\site-packages\\smolagents\\agents.py\n",
609
+ "\u001b[1;31mType:\u001b[0m ABCMeta\n",
610
+ "\u001b[1;31mSubclasses:\u001b[0m "
611
+ ]
612
+ }
613
+ ],
614
+ "source": [
615
+ "CodeAgent??"
616
+ ]
617
+ },
618
  {
619
  "cell_type": "code",
620
  "execution_count": null,