mirror of
https://github.com/crewAIInc/crewAI.git
synced 2026-01-20 13:28:13 +00:00
git-subtree-dir: packages/tools git-subtree-split: 78317b9c127f18bd040c1d77e3c0840cdc9a5b38
217 lines
5.8 KiB
Markdown
217 lines
5.8 KiB
Markdown
# AWS Bedrock Code Interpreter Tools
|
|
|
|
This toolkit provides a set of tools for interacting with the AWS Bedrock Code Interpreter environment. It enables your CrewAI agents to execute code, run shell commands, manage files, and perform computational tasks in a secure, isolated environment.
|
|
|
|
## Features
|
|
|
|
- Execute code in various languages (primarily Python)
|
|
- Run shell commands in the environment
|
|
- Read, write, list, and delete files
|
|
- Manage long-running tasks asynchronously
|
|
- Multiple code interpreter sessions with thread-based isolation
|
|
|
|
## Installation
|
|
|
|
Ensure you have the necessary dependencies:
|
|
|
|
```bash
|
|
uv add crewai-tools bedrock-agentcore
|
|
```
|
|
|
|
## Usage
|
|
|
|
### Basic Usage
|
|
|
|
```python
|
|
from crewai import Agent, Task, Crew, LLM
|
|
from crewai_tools.aws import create_code_interpreter_toolkit
|
|
|
|
# Create the code interpreter toolkit
|
|
toolkit, code_tools = create_code_interpreter_toolkit(region="us-west-2")
|
|
|
|
# Create the Bedrock LLM
|
|
llm = LLM(
|
|
model="bedrock/us.anthropic.claude-3-7-sonnet-20250219-v1:0",
|
|
region_name="us-west-2",
|
|
)
|
|
|
|
# Create a CrewAI agent that uses the code interpreter tools
|
|
developer_agent = Agent(
|
|
role="Python Developer",
|
|
goal="Create and execute Python code to solve problems.",
|
|
backstory="You're a skilled Python developer with expertise in data analysis.",
|
|
tools=code_tools,
|
|
llm=llm
|
|
)
|
|
|
|
# Create a task for the agent
|
|
coding_task = Task(
|
|
description="Write a Python function that calculates the factorial of a number and test it. Do not use any imports from outside the Python standard library.",
|
|
expected_output="The Python function created, and the test results.",
|
|
agent=developer_agent
|
|
)
|
|
|
|
# Create and run the crew
|
|
crew = Crew(
|
|
agents=[developer_agent],
|
|
tasks=[coding_task]
|
|
)
|
|
result = crew.kickoff()
|
|
|
|
print(f"\n***Final result:***\n\n{result}")
|
|
|
|
# Clean up resources when done
|
|
import asyncio
|
|
asyncio.run(toolkit.cleanup())
|
|
```
|
|
|
|
### Available Tools
|
|
|
|
The toolkit provides the following tools:
|
|
|
|
1. `execute_code` - Run code in various languages (primarily Python)
|
|
2. `execute_command` - Run shell commands in the environment
|
|
3. `read_files` - Read content of files in the environment
|
|
4. `list_files` - List files in directories
|
|
5. `delete_files` - Remove files from the environment
|
|
6. `write_files` - Create or update files
|
|
7. `start_command_execution` - Start long-running commands asynchronously
|
|
8. `get_task` - Check status of async tasks
|
|
9. `stop_task` - Stop running tasks
|
|
|
|
### Advanced Usage
|
|
|
|
```python
|
|
from crewai import Agent, Task, Crew, LLM
|
|
from crewai_tools.aws import create_code_interpreter_toolkit
|
|
|
|
# Create the code interpreter toolkit
|
|
toolkit, code_tools = create_code_interpreter_toolkit(region="us-west-2")
|
|
tools_by_name = toolkit.get_tools_by_name()
|
|
|
|
# Create the Bedrock LLM
|
|
llm = LLM(
|
|
model="bedrock/us.anthropic.claude-3-7-sonnet-20250219-v1:0",
|
|
region_name="us-west-2",
|
|
)
|
|
|
|
# Create agents with specific tools
|
|
code_agent = Agent(
|
|
role="Code Developer",
|
|
goal="Write and execute code",
|
|
backstory="You write and test code to solve complex problems.",
|
|
tools=[
|
|
# Use specific tools by name
|
|
tools_by_name["execute_code"],
|
|
tools_by_name["execute_command"],
|
|
tools_by_name["read_files"],
|
|
tools_by_name["write_files"]
|
|
],
|
|
llm=llm
|
|
)
|
|
|
|
file_agent = Agent(
|
|
role="File Manager",
|
|
goal="Manage files in the environment",
|
|
backstory="You help organize and manage files in the code environment.",
|
|
tools=[
|
|
# Use specific tools by name
|
|
tools_by_name["list_files"],
|
|
tools_by_name["read_files"],
|
|
tools_by_name["write_files"],
|
|
tools_by_name["delete_files"]
|
|
],
|
|
llm=llm
|
|
)
|
|
|
|
# Create tasks for the agents
|
|
coding_task = Task(
|
|
description="Write a Python script to analyze data from a CSV file. Do not use any imports from outside the Python standard library.",
|
|
expected_output="The Python function created.",
|
|
agent=code_agent
|
|
)
|
|
|
|
file_task = Task(
|
|
description="Organize the created files into separate directories.",
|
|
agent=file_agent
|
|
)
|
|
|
|
# Create and run the crew
|
|
crew = Crew(
|
|
agents=[code_agent, file_agent],
|
|
tasks=[coding_task, file_task]
|
|
)
|
|
result = crew.kickoff()
|
|
|
|
print(f"\n***Final result:***\n\n{result}")
|
|
|
|
# Clean up code interpreter resources when done
|
|
import asyncio
|
|
asyncio.run(toolkit.cleanup())
|
|
```
|
|
|
|
### Example: Data Analysis with Python
|
|
|
|
```python
|
|
from crewai import Agent, Task, Crew, LLM
|
|
from crewai_tools.aws import create_code_interpreter_toolkit
|
|
|
|
# Create toolkit and tools
|
|
toolkit, code_tools = create_code_interpreter_toolkit(region="us-west-2")
|
|
|
|
# Create the Bedrock LLM
|
|
llm = LLM(
|
|
model="bedrock/us.anthropic.claude-3-7-sonnet-20250219-v1:0",
|
|
region_name="us-west-2",
|
|
)
|
|
|
|
# Create a data analyst agent
|
|
analyst_agent = Agent(
|
|
role="Data Analyst",
|
|
goal="Analyze data using Python",
|
|
backstory="You're an expert data analyst who uses Python for data processing.",
|
|
tools=code_tools,
|
|
llm=llm
|
|
)
|
|
|
|
# Create a task for the agent
|
|
analysis_task = Task(
|
|
description="""
|
|
For all of the below, do not use any imports from outside the Python standard library.
|
|
1. Create a sample dataset with random data
|
|
2. Perform statistical analysis on the dataset
|
|
3. Generate visualizations of the results
|
|
4. Save the results and visualizations to files
|
|
""",
|
|
agent=analyst_agent
|
|
)
|
|
|
|
# Create and run the crew
|
|
crew = Crew(
|
|
agents=[analyst_agent],
|
|
tasks=[analysis_task]
|
|
)
|
|
result = crew.kickoff()
|
|
|
|
print(f"\n***Final result:***\n\n{result}")
|
|
|
|
# Clean up resources
|
|
import asyncio
|
|
asyncio.run(toolkit.cleanup())
|
|
```
|
|
|
|
## Resource Cleanup
|
|
|
|
Always clean up code interpreter resources when done to prevent resource leaks:
|
|
|
|
```python
|
|
import asyncio
|
|
|
|
# Clean up all code interpreter sessions
|
|
asyncio.run(toolkit.cleanup())
|
|
```
|
|
|
|
## Requirements
|
|
|
|
- AWS account with access to Bedrock AgentCore API
|
|
- Properly configured AWS credentials |