swarmzero

作者 swarmzero已验证

SwarmZero's SDK for building AI agents, swarms of agents and much more.

276
Stars
51
Forks
Python
语言
2026/8/23
添加时间

⚠️ 第三方软件声明

本 Skill 为第三方开源软件,独立托管于 GitHub。SkillTip 仅为信息目录,不控制或维护底层仓库。所显示的安全检查为自动化且范围有限,安装前请自行审查源码。

阅读服务条款

安装

添加到你的 Claude Code skills 目录:

# Add to your Claude Code skills
git clone https://github.com/swarmzero/swarmzero

快速入门

使用 swarmzero 等 Skills 的指南。

安全报告

已验证

上次扫描:—

{
  "status": "PASSED",
  "issues": []
}

README.md

PyPI version CI Python Versions License

Twitter Follow

Website Doc

SwarmZero SDK

This library provides you with an easy way to create and run AI Agents and Swarms of Agents.

Supported LLM Providers:

Project Requirements

  • Python >= 3.11

Installation

You can either directly install with pip:

pip install swarmzero

Or can either directly install with poetry:

poetry add swarmzero

Or add it to your requirements.txt file:

...
swarmzero==x.y.z
...

Environment Setup

You need to specify an OPENAI_API_KEY in a .env file in this directory.

Make a copy of the .env.example file and rename it to .env.

Configuration Setup

To use a configuration file with your Agent, follow these steps:

  1. Create a Configuration File:

  2. Create an SDK Context:

    • Create an instance of SDKContext with the path to your configuration file.
    • The SDKContext allows you to manage configurations, resources, and utilities across your SwarmZero Agents more efficiently.
    from swarmzero.sdk_context import SDKContext
    
    sdk_context = SDKContext(config_path="./swarmzero_config.toml")
    # or use a YAML file
    # sdk_context = SDKContext(config_path="./swarmzero_config.yaml")
    
  3. Specify the Configuration Path:

    • When creating a Agent instance, provide the relative or absolute path to your configuration file.
    • Agent will use the configuration from the SDK Context. If you have one agent you can directly pass the config_path it will create the sdk_context for you.
    from swarmzero import Agent
    
    simple_agent = Agent(
        name="Simple Agent",
        functions=[],
        instruction="your instructions for this agent's goal",
        # sdk_context=sdk_context
        config_path="./swarmzero_config.toml" 
        # or use a YAML file
        # config_path="./swarmzero_config.yaml" 
    )
    

Usage

More detailed examples can be found at https://github.com/swarmzero/examples

First import the Agent class:

from swarmzero import Agent

Load your environment variables:

from dotenv import load_dotenv
load_dotenv()

Then create a Agent instance:

my_agent = Agent(
    name="my_agent",
    functions=[],
    instruction="your instructions for this agent's goal",
)

Then, run your agent:

my_agent.run()

Finally, call the API endpoint, /api/v1/chat, to see the result:

curl --request POST \
  --url http://localhost:8000/api/v1/chat \
  --header 'Content-Type: multipart/form-data' \
  --form 'user_id="test"' \
  --form 'session_id="test"' \
  --form 'chat_data={ "messages": [ { "role": "user", "content": "Who is Satoshi Nakamoto?" } ] }'

Adding tools

You can create tools that help your agent handle more complex tasks. Here's an example:

import os
from typing import Optional, Dict
from web3 import Web3
from swarmzero import Agent
from dotenv import load_dotenv

load_dotenv()

rpc_url = os.getenv("RPC_URL") # add an ETH Mainnet HTTP RPC URL to your `.env` file

def get_transaction_receipt(transaction_hash: str) -> Optional[Dict]:
    """
    Fetches the receipt of a specified transaction on the Ethereum blockchain and returns it as a dictionary.

    :param transaction_hash: The hash of the transaction to fetch the receipt for.
    :return: A dictionary containing the transaction receipt details, or None if the transaction cannot be found.
    """
    web3 = Web3(Web3.HTTPProvider(rpc_url))

    if not web3.is_connected():
        print("unable to connect to Ethereum")
        return None

    try:
        transaction_receipt = web3.eth.get_transaction_receipt(transaction_hash)
        return dict(transaction_receipt)
    except Exception as e:
        print(f"an error occurred: {e}")
        return None

if __name__ == "__main__":
    my_agent = Agent(
        name="my_agent",
        functions=[get_transaction_receipt]
    )

    my_agent.run()

    """
    [1] send a request:

    ```
    curl --request POST \
    --url http://localhost:8000/api/v1/chat \
    --header 'Content-Type: multipart/form-data' \
    --form 'user_id="test"' \
    --form 'session_id="test"' \
    --form 'chat_data={ "messages": [ { "role": "user", "content": "Who is the sender of this transaction - 0x5c504ed432cb51138bcf09aa5e8a410dd4a1e204ef84bfed1be16dfba1b22060" } ] }'
    ```

    [2] result:

    The address that initiated the transaction with hash 0x5c504ed432cb51138bcf09aa5e8a410dd4a1e204ef84bfed1be16dfba1b22060 is 0xA1E4380A3B1f749673E270229993eE55F35663b4.
    """

Creating a Swarm

You can create a swarm of agents to collaborate on complex tasks. Here's an example of how to set up and use a swarm:

from swarmzero.swarm import Swarm
from swarmzero.agent import Agent
from swarmzero.sdk_context import SDKContext

import asyncio

# Create SDK Context
sdk_context = SDKContext(config_path="./swarmzero_config_example.toml")
# or
# sdk_context = SDKContext(config_path="./swarmzero_config_example.yaml")


def save_report():
    return "save_item_to_csv"


def search_on_web():
    return "search_on_web"


# Create individual agents
agent1 = Agent(name="Research Agent", instruction="Conduct research on given topics", sdk_context=sdk_context,
               functions=[search_on_web])
agent2 = Agent(name="Analysis Agent", instruction="Analyze data and provide insights", sdk_context=sdk_context,
               functions=[save_report])
agent3 = Agent(name="Report Agent", instruction="Compile findings into a report", sdk_context=sdk_context, functions=[])

# Create swarm
swarm = Swarm(name="Research Team", description="A swarm of agents that collaborate on research tasks",
              instruction="Be helpful and collaborative", functions=[], agents=[agent1, agent2, agent3])


async def chat_with_swarm():
    return await swarm.chat("Can you analyze the following data: [1, 2, 3, 4, 5]")


if __name__ == "__main__":
    asyncio.run(chat_with_swarm())

Workflow

You can orchestrate agents, swarms, and tools in a flexible workflow. Each step can run sequentially, in parallel, conditionally, or in a loop.

from swarmzero import Workflow, WorkflowStep, StepMode
from swarmzero.sdk_context import SDKContext
import asyncio

# Create SDK Context
sdk_context = SDKContext(config_path="./swarmzero_config.toml")

# agent1, agent2, agent3, and agent4 are pre-defined Agent instances

workflow = Workflow(
    name="Research Workflow",
    description="Research and Analysis Pipeline",
    instruction="Demo workflow",
    sdk_context=sdk_context,
    steps=[
        # Sequential step - runs agent1
        WorkflowStep(runner=agent1.chat),
        # Parallel step - runs agent2 and agent3
        WorkflowStep(runner=[agent2.chat, agent3.chat], mode=StepMode.PARALLEL),
        # Loop step - repeats until condition is met
        WorkflowStep(
            runner=agent4.chat,
            mode=StepMode.LOOP,
            condition=lambda res: "done" in res,
            max_iterations=5,
        ),
    ],
)

async def run_workflow():
    return await workflow.run("Start research")

if __name__ == "__main__":
    asyncio.run(run_workflow())

Nested Workflows

Workflow steps can themselves be workflows. This allows complex pipelines to be composed from smaller, reusable ones.

inner = Workflow(
    name="Inner",
    steps=[WorkflowStep(runner=agent1.chat)],
)

outer = Workflow(
    name="Outer",
    steps=[WorkflowStep(runner=inner)],
)

async def run_nested():
    return await outer.run("start")

if __name__ == "__main__":
    asyncio.run(run_nested())

Adding Retriever

You can add retriever tools to create vector embeddings and retrieve semantic information. It will create vector index for every pdf documents under 'swarmzero-data/files/user' folder and can filter files with required_exts parameter.

  • SwarmZero agent supports ".md", '.mdx' ,".txt", '.csv', '.docx', '.pdf' file types.
  • SwarmZero agent supports 4 type of retriever (basic, chroma, pinecone-serverless, pinecone-pod) and controlled with retrieval_tool parameter.
from swarmzero import Agent
from dotenv import load_dotenv

load_dotenv()

if __name__ == "__main__":
    my_agent = Agent(
        name="retrieve-test",
        functions=[],
        retrieve = True,
        required_exts = ['.md'],
        retrieval_tool='chroma'
    )

    my_agent.run()

    """
    [1] send a request:

    ```
    curl --request POST \
    --url http://localhost:8000/api/v1/chat \
    --header 'Content-Type: multipart/form-data' \
    --form 'user_id="test"' \
    --form 'session_id="test"' \
    --form 'chat_data={ "messages": [ { "role": "user", "content": "Can you summarise the documents?" } ] }'
    ```
    """

Adding Sample Prompts

Users of your agent/swarm may not always be familiar with its abilities. Providing sample prompts allows them to explore what you have built. Here's how to add sample prompts which they can use before committing to use your agent/swarm.

Default

In your swarmzero_config.toml file, create a top level entry called [sample_prompts] and add a new array to the key prompts like this:

[sample_prompts]
prompts = [
  "What can you help me do?",
  "Which tools do you have access to?",
  "What are your capabilities?"
]

Specific agents in a swarm

[target_agent_id]
model = "gpt-3.5-turbo"
timeout = 15
environment = "dev"
enable_multi_modal = true
ollama_server_url = 'http://123.456.78.90:11434'
sample_prompts = [
    "What can you help me do?",
    "Which tools do you have access to?",
    "What are your capabilities?"
]

See ./swarmzero_config_example.toml or ./swarmzero_config_example.yaml for example configuration files.

Contributing

Setup

If you want to contribute to the codebase, you would need to set up your dev environment. Follow these steps:

  • Create a new file called .env
  • Copy the contents of .env.example into your new .env file
  • API keys for third-party tools are not provided.
    • OPENAI_API_KEY from OpenAI
  • If you don't have Poetry installed, you can install it using the following commands:
curl -sSL https://install.python-poetry.org | python3 -

export PATH="$HOME/.local/bin:$PATH"
  • Activate the Virtual Environment created by Poetry with the following command:
poetry shell
  • Install dependencies.
poetry install --no-root

Testing

  • Make sure you're in the tests/ directory:
cd tests/
  • Run the test suite:
pytest
  • Run tests for a specific module:
pytest tests/path/to/test_module.py
  • Run with verbose output:
pytest -v
  • Run with a detailed output of each test (including print statements):
pytest -s
  • Run with coverage report:
pip install coverage pytest-cov
pytest  --cov --cov-report=html

Reports file tests/htmlcov/index.html

API Doc

Open http://localhost:8000/docs with your browser to see the Swagger UI of the API.

Learn More

https://swarmzero.ai

常见问题

What is swarmzero?

swarmzero is an open-source ai agents skill for AI coding assistants such as Claude Code, Codex CLI, and ChatGPT, built by swarmzero. SwarmZero's SDK for building AI agents, swarms of agents and much more. It has 276 GitHub stars.

Is swarmzero safe to use?

Yes. swarmzero passed SkillsLLM's automated security scan — a dependency vulnerability audit plus prompt-injection heuristics — with no high-severity issues. You can read the full report in the Security Report section on this page.

How do I install swarmzero?

Clone the repository with "git clone https://github.com/swarmzero/swarmzero" and add it to your Claude Code skills directory (see the Installation section above).

What programming language is swarmzero written in?

swarmzero is primarily written in Python. It is open-source under swarmzero on GitHub, so you can review or fork the full source.

Are there alternatives to swarmzero?

Yes. SkillsLLM lists many other AI Agents skills you can browse and compare side by side. Open the AI Agents category from the badge at the top of this page, or use the Related Skills and comparison links further down to weigh swarmzero against similar tools.

评论 (0)

暂无评论,成为第一个分享想法的人!

ECC

by affaan-m

10

The agent harness performance optimization system. Skills, instincts, memory, security, and research-first development for Claude Code, Codex, Opencode, Cursor and beyond.

242,21936,702JavaScript
AI 智能体ai-agentsanthropicclaude-code
查看详情
15

An agentic skills framework & software development methodology that works.

234,96620,863Shell
AI 智能体ai-agentsbrainstorming
查看详情

hermes-agent

by NousResearch

10

The agent that grows with you

234,43747,175Python
AI 智能体ai-agentsagent-orchestration
查看详情

The agent harness performance optimization system. Skills, instincts, memory, security, and research-first development for Claude Code, Codex, Opencode, Cursor and beyond.

185,94028,768JavaScript
AI 智能体ai-agentsanthropicclaude-code
查看详情

cc-switch

by farion1231

3

A cross-platform desktop All-in-One assistant for Claude Code, Codex, OpenCode, OpenClaw, Grok Build & Hermes Agent. Only official website: ccswitch.io

128,8688,826Rust
AI 智能体claude-codeai-tools
查看详情

claude-code

by anthropics

Claude Code is an agentic coding tool that lives in your terminal, understands your codebase, and helps you code faster by executing routine tasks, explaining complex code, and handling git workflows - all through natural language commands.

120,03119,897Shell
AI 智能体
查看详情

开发者还喜欢

基于喜欢此 Skill 的开发者投票和收藏

ECC

by affaan-m

10

The agent harness performance optimization system. Skills, instincts, memory, security, and research-first development for Claude Code, Codex, Opencode, Cursor and beyond.

242,21936,702JavaScript
AI 智能体ai-agentsanthropicclaude-code
查看详情
15

An agentic skills framework & software development methodology that works.

234,96620,863Shell
AI 智能体ai-agentsbrainstorming
查看详情

hermes-agent

by NousResearch

10

The agent that grows with you

234,43747,175Python
AI 智能体ai-agentsagent-orchestration
查看详情

n8n

by n8n-io

12

Fair-code workflow automation platform with native AI capabilities. Combine visual building with custom code, self-host or cloud, 400+ integrations.

201,88160,308TypeScript
MCP 服务器apisai-tools
查看详情

The agent harness performance optimization system. Skills, instincts, memory, security, and research-first development for Claude Code, Codex, Opencode, Cursor and beyond.

185,94028,768JavaScript
AI 智能体ai-agentsanthropicclaude-code
查看详情

cc-switch

by farion1231

3

A cross-platform desktop All-in-One assistant for Claude Code, Codex, OpenCode, OpenClaw, Grok Build & Hermes Agent. Only official website: ccswitch.io

128,8688,826Rust
AI 智能体claude-codeai-tools
查看详情