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.
