Skip to main content

GPTSwarm: Language Agents as Optimizable Graphs

Project description

Page arXiv License Issues Twitter Follow Wechat

GPTSwarm

🐝 GPTSwarm is a graph-based framework for LLM-based agents, providing two high-level features:

  • It lets you build LLM-based agents from graphs.
  • It enables the customized and automatic self-organization of agent swarms with self-improvement capabilities.

News

🚀 Feb 27, 2024: Our academic paper: Language Agents as Optimizable Graphs is released.

Edge optimization example

Here is the edge optimization process that updates edge probabilities toward improvement of the benchmark score. Notice that within an agent, the edges are fixed, whereas the inter-agent connections are getting optimized towards either edge pruning (value 0, blue) or creation (value 1, red).

Edge optimization

About GPTSwarm

Framework

At a granular level, GPTSwarm is a library that includes the following components:

Module Description
swarm.environment Domain-specific operations, agents, tools, and tasks
swarm.graph Graph-related functions for creating and executing agent graphs and swarm composite graphs
swarm.llm Interface for selecting LLM backends and calculating their operational costs
swarm.memory Index-based memory
swarm.optimizer Optimization algorithms designed to enhance agent performance and overall swarm efficiency

Quickstart

Clone the repo

git clone https://github.com/metauto-ai/GPTSwarm.git
cd GPTSwarm/

Install packages

conda create -n swarm python=3.10
conda activate swarm
pip install poetry
poetry install

You should add API keys in .env.template and change its name to .env

OPENAI_API_KEY="" # for OpenAI LLM backend
SEARCHAPI_API_KEY="" # for Web Search

Getting started with GPTSwarm is easy. Quickly run a predefined swarm

from swarm.graph.swarm import Swarm

swarm = Swarm(["IO", "IO", "IO"], "gaia")
task = "What is the capital of Jordan?"
inputs = {"task": task}
answer = await swarm.arun(inputs)

or make use of tools, such as the file analyzer

from swarm.graph.swarm import Swarm
swarm = Swarm(["IO", "TOT"], "gaia")
task = "Tell me more about this image and summarize it in 3 sentences."
files = ["./datasets/demos/js.png"]
inputs = {"task": task, "files": files}
danswer = swarm.run(inputs)

Check out the minimal Swarm example in Colab here: Open In Colab.

See how to create a custom Agent and run a Swarm with it here: Open In Colab.

Here is a Youtube video on how to run the demo notebooks:

🛠 See our experiments for more advanced use of our framework.

Class diagram

Edge optimization

Example of the Swarm

Edge optimization

More Visualizations

Edge optimization

Running with a local LLM

We support local LM inference via LM Studio. Download their desktop app for Mac or Windows, choose a model from the Huggingface repository and start the server. Use model_name='lmstudio' in GPTSwarm code to run with the local LLM.

Edge optimization

Initial Contributors

Please read our developer document if you are interested in contributing.

Citation

Please cite our paper if you find the library useful or interesting.

@article{zhuge2024language,
  title={Language Agents as Optimizable Graphs},
  author={Zhuge, Mingchen and Wang, Wenyi and Kirsch, Louis and Faccio, Francesco and Khizbullin, Dmitrii and Schmidhuber, Jurgen},
  journal={arXiv preprint arXiv:2402.16823},
  year={2024}
}

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

gptswarm-0.1.0.tar.gz (2.9 MB view details)

Uploaded Source

Built Distribution

gptswarm-0.1.0-py3-none-any.whl (2.9 MB view details)

Uploaded Python 3

File details

Details for the file gptswarm-0.1.0.tar.gz.

File metadata

  • Download URL: gptswarm-0.1.0.tar.gz
  • Upload date:
  • Size: 2.9 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.2 CPython/3.10.13 Darwin/23.3.0

File hashes

Hashes for gptswarm-0.1.0.tar.gz
Algorithm Hash digest
SHA256 343bffda4217c090da1f4c9b2dc5002504050b74d6b967e08a847d7996ad8587
MD5 309dc5ecffb9ebe884ce5c74d5050739
BLAKE2b-256 8025157aa47ad8d7eaee800c95163d64e3cf66a55bc3e0f258018be9b16e8fdf

See more details on using hashes here.

File details

Details for the file gptswarm-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: gptswarm-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 2.9 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.2 CPython/3.10.13 Darwin/23.3.0

File hashes

Hashes for gptswarm-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 a77d4db24269ca96f78ae7aeb3d0c756f562156fc7bd924deaba45787b1382c5
MD5 c1ef5298bca5800139f5868978e6d932
BLAKE2b-256 6147e452968b69c7616530138b19fab77e059ad8596c2cef97573740ee99a616

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page