Make e2b optional dependency (#292)
* Make e2b optional dependency with extra * Make e2b imports optional * Update e2b docs
This commit is contained in:
		
							parent
							
								
									257c1fe33b
								
							
						
					
					
						commit
						16f7910df8
					
				|  | @ -60,7 +60,7 @@ For maximum security, you can use our integration with E2B to run code in a sand | ||||||
| 
 | 
 | ||||||
| For this, you will need to setup your E2B account and set your `E2B_API_KEY` in your environment variables. Head to [E2B's quickstart documentation](https://e2b.dev/docs/quickstart) for more information. | For this, you will need to setup your E2B account and set your `E2B_API_KEY` in your environment variables. Head to [E2B's quickstart documentation](https://e2b.dev/docs/quickstart) for more information. | ||||||
| 
 | 
 | ||||||
| Then you can install it with `pip install e2b-code-interpreter python-dotenv`. | Then you can install it with `pip install "smolagents[e2b]"`. | ||||||
| 
 | 
 | ||||||
| Now you're set! | Now you're set! | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -20,8 +20,6 @@ dependencies = [ | ||||||
|   "pillow>=11.0.0", |   "pillow>=11.0.0", | ||||||
|   "markdownify>=0.14.1", |   "markdownify>=0.14.1", | ||||||
|   "duckduckgo-search>=6.3.7", |   "duckduckgo-search>=6.3.7", | ||||||
|   "python-dotenv>=1.0.1", |  | ||||||
|   "e2b-code-interpreter>=1.0.3", |  | ||||||
|   "torchvision" |   "torchvision" | ||||||
| ] | ] | ||||||
| 
 | 
 | ||||||
|  | @ -38,6 +36,10 @@ transformers = [ | ||||||
|   "transformers>=4.0.0", |   "transformers>=4.0.0", | ||||||
|   "smolagents[torch]", |   "smolagents[torch]", | ||||||
| ] | ] | ||||||
|  | e2b = [ | ||||||
|  |   "e2b-code-interpreter>=1.0.3", | ||||||
|  |   "python-dotenv>=1.0.1", | ||||||
|  | ] | ||||||
| gradio = [ | gradio = [ | ||||||
|   "gradio>=5.8.0", |   "gradio>=5.8.0", | ||||||
| ] | ] | ||||||
|  | @ -55,10 +57,11 @@ quality = [ | ||||||
|   "ruff>=0.9.0", |   "ruff>=0.9.0", | ||||||
| ] | ] | ||||||
| all = [ | all = [ | ||||||
|   "smolagents[accelerate,audio,gradio,litellm,mcp,openai,transformers]", |   "smolagents[accelerate,audio,e2b,gradio,litellm,mcp,openai,transformers]", | ||||||
| ] | ] | ||||||
| test = [ | test = [ | ||||||
|   "pytest>=8.1.0", |   "pytest>=8.1.0", | ||||||
|  |   "python-dotenv>=1.0.1",  # For test_all_docs | ||||||
|   "smolagents[all]", |   "smolagents[all]", | ||||||
| ] | ] | ||||||
| dev = [ | dev = [ | ||||||
|  |  | ||||||
|  | @ -20,8 +20,6 @@ import textwrap | ||||||
| from io import BytesIO | from io import BytesIO | ||||||
| from typing import Any, List, Tuple | from typing import Any, List, Tuple | ||||||
| 
 | 
 | ||||||
| from dotenv import load_dotenv |  | ||||||
| from e2b_code_interpreter import Sandbox |  | ||||||
| from PIL import Image | from PIL import Image | ||||||
| 
 | 
 | ||||||
| from .tool_validation import validate_tool_attributes | from .tool_validation import validate_tool_attributes | ||||||
|  | @ -29,11 +27,23 @@ from .tools import Tool | ||||||
| from .utils import BASE_BUILTIN_MODULES, instance_to_source | from .utils import BASE_BUILTIN_MODULES, instance_to_source | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | try: | ||||||
|  |     from dotenv import load_dotenv | ||||||
|  | 
 | ||||||
|     load_dotenv() |     load_dotenv() | ||||||
|  | except ModuleNotFoundError: | ||||||
|  |     pass | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| class E2BExecutor: | class E2BExecutor: | ||||||
|     def __init__(self, additional_imports: List[str], tools: List[Tool], logger): |     def __init__(self, additional_imports: List[str], tools: List[Tool], logger): | ||||||
|  |         try: | ||||||
|  |             from e2b_code_interpreter import Sandbox | ||||||
|  |         except ModuleNotFoundError: | ||||||
|  |             raise ModuleNotFoundError( | ||||||
|  |                 """Please install 'e2b' extra to use E2BExecutor: `pip install "smolagents[e2b]"`""" | ||||||
|  |             ) | ||||||
|  | 
 | ||||||
|         self.custom_tools = {} |         self.custom_tools = {} | ||||||
|         self.sbx = Sandbox()  # "qywp2ctmu2q7jzprcf4j") |         self.sbx = Sandbox()  # "qywp2ctmu2q7jzprcf4j") | ||||||
|         # TODO: validate installing agents package or not |         # TODO: validate installing agents package or not | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue