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 credentials
in 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_TOKEN
environment 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 install
pytest 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.