Tools for running a SWE agent using Composio platform
Project description
Production Ready Toolset for AI Agents
Build Software engineering Agents fast and easy!
✨ Socials >> Discord | Youtube | Twitter | Linkedin
⛏️ Contribute >> Report Bugs | Request Feature | Contribute
📋 Table of contents
Table of Contents
Overview
swekit
is a framework for building SWE agents on by utilising composio tooling ecosystem. SWE Kit allows you to
- Scaffold agents which works out-of-the-box with choice of your agentic framework,
crewai
,llamaindex
, etc... - Tools to add or optimise your agent's abilities
- Benchmark your agents against
SWE-bench
Dependencies
Before getting started, ensure you have the following set up:
-
Installation:
pip install swekit composio-core
-
Install agentic framework of your choice and the Composio plugin for the same: Here we're using
crewai
for the example:pip install crewai composio-crewai
-
GitHub Access Token:
The agent requires a github access token to work with your repositories, You can create one at https://github.com/settings/tokens with necessary permissions and export it as an environment variable using
export GITHUB_ACCESS_TOKEN=<your_token>
-
LLM Configuration: You also need to setup API key for the LLM provider you're planning to use. By default the agents scaffolded by
swekit
usesopenai
client, so exportOPENAI_API_KEY
before running your agent
Getting Started
Creating a new agent
-
Scaffold your agent using:
swekit scaffold crewai -o <path>
This creates a new agent in
<path>/agent
with four key files:main.py
: Entry point to run the agent on your issueagent.py
: Agent definition (edit this to customise behaviour)prompts.py
: Agent promptsbenchmark.py
: SWE-Bench benchmark runner
-
Run the agent:
cd agent python main.py
You'll be prompted for the repository name and issue.
Workspace Environment
The SWE-agent runs in Docker by default for security and isolation. This sandboxes the agent's operations, protecting against unintended consequences of arbitrary code execution.
The composio toolset has support for different types of workspaces.
- Host - This will run on the host machine.
from composio import ComposioToolSet, WorkspaceType
toolset = ComposioToolSet(
workspace_config=WorkspaceType.Host()
)
- Docker - This will run inside a docker container
from composio import ComposioToolSet, WorkspaceType
toolset = ComposioToolSet(
workspace_config=WorkspaceType.Docker()
)
On the docker container you can configure and expose the port for development
as per your requirements. You can also use workspace.as_prompt()
method to
generate a workspace description for setting up your agent.
from composio import ComposioToolSet, WorkspaceType
toolset = ComposioToolSet(
workspace_config=WorkspaceType.Docker(
ports={
8001: 8001,
}
)
)
You can read more about configuring docker ports here.
- E2B - This will run inside a E2B Sandbox
from composio import ComposioToolSet, WorkspaceType
toolset = ComposioToolSet(
workspace_config=WorkspaceType.E2B(),
)
- FlyIO - This will run inside a FlyIO machine
from composio import ComposioToolSet, WorkspaceType
toolset = ComposioToolSet(
workspace_config=WorkspaceType.FlyIO(),
)
FlyIO also allows for configuring ports for development/deployment.
from composio import ComposioToolSet, WorkspaceType
composio_toolset = ComposioToolSet(
workspace_config=WorkspaceType.FlyIO(
image="composio/composio",
ports=[
{
"ports": [
{"port": 443, "handlers": ["tls", "http"]},
],
"internal_port": 80,
"protocol": "tcp",
}
],
)
)
You can read more abour configuring network ports on flyio machine here
Customising the workspace environment
The workspace environment contains following environment variables by default
COMPOSIO_API_KEY
: The composio API key for interacting with composio API.COMPOSIO_BASE_URL
: Base URL for composio API server.GITHUB_ACCESS_TOKEN
: Github access token for the agent.ACCESS_TOKEN
: Access token for composio tooling server.
If you want to provide additional environment configuration you can use environment
argument when creating a workspace configuration.
composio_toolset = ComposioToolSet(
workspace_config=WorkspaceType.Docker(
environment={
"SOME_API_TOKEN": "<SOME_API_TOKEN>",
}
)
)
Running the Benchmark
SWE-Bench is a comprehensive benchmark designed to evaluate the performance of software engineering agents. It comprises a diverse collection of real-world issues from popular Python open-source projects, providing a robust testing environment.
To run the benchmark:
- Ensure Docker is installed and running on your system.
- Execute the following command:
cd agent python benchmark.py --test-split=<test_split>
- By default,
python benchmark.py
runs only 1 test instance. - Specify a test split ratio to run more tests, e.g.,
--test-split=1:300
runs 300 tests.
- By default,
To run the benchmarks in E2B
or FlyIO
sandbox, you can set the workspace_env
in the evaluate
function call in benchmark.py
from composio import WorkspaceType
(...)
evaluate(
bench,
dry_run=False,
test_range=test_range,
test_instance_ids=test_instance_ids_list,
workspace_env=WorkspaceType.E2B
)
To use E2B
or FlyIO
sandboxes you'll require API key for respective platforms, to use E2B
export your API key as E2B_API_KEY
and to use FlyIO
export your API token as FLY_API_TOKEN
.
Note: We utilize SWE-Bench-Docker to ensure each test instance runs in an isolated container with its specific environment and Python version.
To extend the functionality of the SWE agent by adding new tools or extending existing ones, refer to the Development Guide.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file swekit-0.2.19.tar.gz
.
File metadata
- Download URL: swekit-0.2.19.tar.gz
- Upload date:
- Size: 58.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.12.6
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | cec9121a17215e4bc00c0d5692f547e80f71df5c4d2c28e14d684644814532d5 |
|
MD5 | b3ae88076dd8f139f4cbcfc86dfdcc39 |
|
BLAKE2b-256 | 34eb505f065d86e3cec310be88b6098e604bb4122be66c07cbcf263fb8884740 |
File details
Details for the file swekit-0.2.19-py3-none-any.whl
.
File metadata
- Download URL: swekit-0.2.19-py3-none-any.whl
- Upload date:
- Size: 81.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.12.6
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | b28afeafaf979093ea8f76afa70336ec9dc10da19e4f56b4733c791fc7c4bcbb |
|
MD5 | a609182aaba4f8cb4a17226d6541328b |
|
BLAKE2b-256 | c771008636bb53f032430d4e579378de4a58b1ba247798dedbe5084147ba6858 |