An AutoGen extension that enables secure code execution using YepCode's serverless runtime environment. Execute Python and JavaScript code in production-grade, isolated sandboxes with built-in security and scalability.
Note: If you are looking for the extension for AG2, which was evolved from AutoGen, please check the autogen-ext-yepcode repository.
- Secure Execution: Code runs in isolated, production-grade sandboxes
- Multi-language Support: Python and JavaScript execution
- Automatic Package Installation: YepCode automatically detects and installs dependencies in the sandbox
- Logging and Monitoring: Access to YepCode's execution logs, results and errors
- AutoGen Integration: Seamless integration with AutoGen agents and tools
Install the package using pip:
pip install autogen_ext_yepcode
-
Create a YepCode Account: Sign up at yepcode.io
-
Get Your API Token: Navigate to
Settings>API credentialsin your YepCode workspace -
Set Environment Variable:
export YEPCODE_API_TOKEN="your-api-token-here"
Alternatively, you can pass the API token directly to the executor constructor.
The YepCode executor is designed to work with AutoGen agents through the PythonCodeExecutionTool. Here's a complete example:
import asyncio import os from autogen_agentchat.agents import AssistantAgent from autogen_ext.models.openai import OpenAIChatCompletionClient from autogen_ext.tools.code_execution import PythonCodeExecutionTool from autogen_ext_yepcode import YepCodeCodeExecutor async def main(): # Create OpenAI model client model_client = OpenAIChatCompletionClient( model="gpt-4", api_key=os.getenv("OPENAI_API_KEY"), ) # Initialize YepCode executor yepcode_executor = YepCodeCodeExecutor( timeout=120, remove_on_done=False, sync_execution=True, ) # Start the executor await yepcode_executor.start() # Create a PythonCodeExecutionTool with the YepCode executor code_tool = PythonCodeExecutionTool(executor=yepcode_executor) # Create an AssistantAgent with the code execution tool assistant = AssistantAgent( name="assistant", model_client=model_client, tools=[code_tool], ) # Run a task that requires code execution task = "Calculate the sum of squares for numbers 1 to 10. Show the calculation step by step using Python code." result = await assistant.run(task=task) print(f"Result: {result}") # Clean up await yepcode_executor.stop() await model_client.close() if __name__ == "__main__": asyncio.run(main())
The extension also works with other model providers like Anthropic:
import asyncio import os from autogen_agentchat.agents import AssistantAgent from autogen_ext.models.anthropic import AnthropicChatCompletionClient from autogen_ext.tools.code_execution import PythonCodeExecutionTool from autogen_ext_yepcode import YepCodeCodeExecutor async def main(): # Create Anthropic model client model_client = AnthropicChatCompletionClient( model="claude-3-haiku-20240307", api_key=os.getenv("ANTHROPIC_API_KEY"), ) # Initialize YepCode executor yepcode_executor = YepCodeCodeExecutor( timeout=120, remove_on_done=False, sync_execution=True, ) # Start the executor await yepcode_executor.start() # Create a PythonCodeExecutionTool with the YepCode executor code_tool = PythonCodeExecutionTool(executor=yepcode_executor) # Create an AssistantAgent assistant = AssistantAgent( name="assistant", model_client=model_client, tools=[code_tool], ) # Run a task task = "Fetch cryptocurrency price data from a public API and analyze the top 5 cryptocurrencies by market cap. Use the requests library to get data and calculate some basic statistics." result = await assistant.run(task=task) print(f"Result: {result}") # Clean up await yepcode_executor.stop() await model_client.close() if __name__ == "__main__": asyncio.run(main())
You can customize the YepCode executor behavior:
# Custom executor configuration yepcode_executor = YepCodeCodeExecutor( api_token="your-api-token", # Optional: pass token directly timeout=300, # 5 minutes timeout remove_on_done=False, # Keep execution records for debugging sync_execution=True, # Wait for completion )
The recommended approach is to use the YepCodeCodeExecutor with AutoGen's PythonCodeExecutionTool:
# 1. Create the YepCode executor yepcode_executor = YepCodeCodeExecutor() await yepcode_executor.start() # 2. Wrap it in a PythonCodeExecutionTool code_tool = PythonCodeExecutionTool(executor=yepcode_executor) # 3. Add to your AssistantAgent assistant = AssistantAgent( name="assistant", model_client=your_model_client, tools=[code_tool], ) # 4. Use normally with AutoGen result = await assistant.run("Your task here")
You can also use the executor as a context manager:
async def main(): async with YepCodeCodeExecutor() as executor: code_tool = PythonCodeExecutionTool(executor=executor) # Use the tool with your agents assistant = AssistantAgent( name="assistant", model_client=model_client, tools=[code_tool], ) result = await assistant.run("Your task")
The main executor class for running code in YepCode's serverless environment.
api_token(Optional[str]): YepCode API token. If not provided, will useYEPCODE_API_TOKENenvironment variable.timeout(int): Execution timeout in seconds. Default: 60.remove_on_done(bool): Whether to remove execution records after completion. Default: True.sync_execution(bool): Whether to wait for execution completion. Default: True.
async start(): Initialize the executorasync stop(): Clean up the executorasync execute_code_blocks(code_blocks, cancellation_token): Execute code blocksasync restart(): Restart the executor
Result object returned from code execution.
exit_code(int): Execution exit code (0 for success)output(str): Execution output and logsexecution_id(Optional[str]): YepCode execution ID for tracking
| Language | Language Code | Aliases |
|---|---|---|
| Python | python |
py |
| JavaScript | javascript |
js |
Check out the samples directory for comprehensive examples:
- AutoGen Integration Sample : Complete example showing integration with AutoGen agents
git clone https://github.com/yepcode/autogen_ext_yepcode.git
cd autogen_ext_yepcode
poetry installpytest tests/ -v
- YepCode Documentation : Complete YepCode platform documentation
- AutoGen Documentation : AutoGen framework documentation
This project is licensed under the MIT License - see the LICENSE file for details.