Skip to main content

The fastest way to bring multi-agent workflows to production

Project description

alt text

FastAgency

The fastest way to bring multi-agent workflows to production.


Test Passing Coverage Downloads Package version Supported Python versions
CodeQL Dependency Review License Code of Conduct Discord


Welcome to FastAgency! This guide will walk you through the initial setup and usage of FastAgency, a powerful tool that leverages the AutoGen framework to quickly build applications. FastAgency is designed to be flexible and adaptable, and we plan to extend support to additional agentic frameworks such as CrewAI in the near future. This will provide even more options for defining workflows and integrating with various AI tools.

With FastAgency, you can create interactive applications using various interfaces such as a console or Mesop.

Supported Interfaces

FastAgency currently supports workflows defined using AutoGen and provides options for different types of applications:

  • Console: Use the ConsoleIO interface for command-line based interaction. This is ideal for developing and testing workflows in a text-based environment.
  • Mesop: Utilize Mesop with MesopIO for web-based applications. This interface is suitable for creating web applications with a user-friendly interface.

We are also working on adding support for other frameworks, such as CrewAI, to broaden the scope and capabilities of FastAgency. Stay tuned for updates on these integrations.

Install

To get started, you need to install FastAgency. You can do this using pip, Python's package installer. Choose the installation command based on the interface you want to use:

=== "Console" console pip install "fastagency[autogen]"

This command installs FastAgency with support for the Console interface and AutoGen framework.

=== "Mesop" console pip install "fastagency[autogen,mesop]"

This command installs FastAgency with support for both the Console and Mesop interfaces, providing a more comprehensive setup.

Write Code

Imports

Depending on the interface you choose, you'll need to import different modules. These imports set up the necessary components for your application:

=== "Console" ```python import os

from autogen.agentchat import ConversableAgent

from fastagency.core import Chatable
from fastagency.core.runtimes.autogen.base import AutoGenWorkflows
from fastagency.core.io.console import ConsoleIO

from fastagency import FastAgency
```

For Console applications, import `ConsoleIO` to handle command-line input and output.

=== "Mesop" ```python import os

from autogen.agentchat import ConversableAgent

from fastagency.core import Chatable
from fastagency.core.runtimes.autogen.base import AutoGenWorkflows
from fastagency.core.io.mesop import MesopIO

from fastagency import FastAgency
```

For Mesop applications, import `MesopIO` to integrate with the Mesop web interface.

Define Workflow

You need to define the workflow that your application will use. This is where you specify how the agents interact and what they do. Here's a simple example of a workflow definition:

llm_config = {
    "config_list": [
        {
            "model": "gpt-4o-mini",
            "api_key": os.getenv("OPENAI_API_KEY"),
        }
    ],
    "temperature": 0.8,
}

wf = AutoGenWorkflows()

@wf.register(name="simple_learning", description="Student and teacher learning chat")
def simple_workflow(io: Chatable, initial_message: str, session_id: str) -> str:
    student_agent = ConversableAgent(
        name="Student_Agent",
        system_message="You are a student willing to learn.",
        llm_config=llm_config,
    )
    teacher_agent = ConversableAgent(
        name="Teacher_Agent",
        system_message="You are a math teacher.",
        llm_config=llm_config,
    )

    chat_result = student_agent.initiate_chat(
        teacher_agent,
        message=initial_message,
        summary_method="reflection_with_llm",
        max_turns=5,
    )

    return chat_result.summary

This code snippet sets up a simple learning chat between a student and a teacher. You define the agents and how they should interact, specifying how the conversation should be summarized.

Define FastAgency Application

Next, define your FastAgency application. This ties together your workflow and the interface you chose:

=== "Console" ```python from fastagency.core.io.console import ConsoleIO

app = FastAgency(wf=wf, io=ConsoleIO())
```

For Console applications, use `ConsoleIO` to handle user interaction via the command line.

=== "Mesop" ```python from fastagency.core.io.mesop import MesopIO

app = FastAgency(wf=wf, io=MesopIO())
```

For Mesop applications, use `MesopIO` to enable web-based interactions.

Run Application

Once everything is set up, you can run your FastAgency application using the following command:

fastagency run

Output

The output will vary based on the interface:

=== "Console" ```console ╭─ Python module file ─╮ │ │ │ 🐍 main.py │ │ │ ╰──────────────────────╯

╭─ Importable FastAgency app ─╮
│                             │
│  from main import app       │
│                             │
╰─────────────────────────────╯

╭─ FastAgency -> user [text_input] ────────────────────────────────────────────╮
│                                                                              │
│ Starting a new workflow 'simple_learning' with the following                 │
│ description:                                                                 │
│                                                                              │
│ Student and teacher learning chat                                            │
│                                                                              │
│ Please enter an                                                              │
│ initial message:                                                             │
╰──────────────────────────────────────────────────────────────────────────────╯
```

For Console applications, you will see a command-line prompt where you can enter the initial message and interact with your workflow.

=== "Mesop" ```console ╭─ Python module file ─╮ │ │ │ 🐍 main_mesop.py │ │ │ ╰──────────────────────╯

╭─ Importable FastAgency app ──╮
│                              │
│  from main_mesop import app  │
│                              │
╰──────────────────────────────╯

Running with hot reload:

Running server on: http://localhost:32123
* Serving Flask app 'mesop.server.server'
* Debug mode: off
```

For Mesop applications, the output will include a URL where you can access your web-based application.

Future Plans

We are actively working on expanding FastAgency’s capabilities. In addition to supporting AutoGen, we plan to integrate support for other frameworks, such as CrewAI, to provide more flexibility and options for building applications. This will allow you to define workflows using a variety of frameworks and leverage their unique features and functionalities.

Feel free to customize your workflow and application based on your needs. For more details on configurations and additional features, refer to the AutoGen documentation and Mesop documentation.


Stay in touch

Please show your support and stay in touch by:

Your support helps us to stay in touch with you and encourages us to continue developing and improving the framework. Thank you for your support!


Contributors

Thanks to all of these amazing people who made the project better!


Stay in touch

Please show your support and stay in touch by:

Your support helps us to stay in touch with you and encourages us to continue developing and improving the framework. Thank you for your support!


Contributors

Thanks to all of these amazing people who made the project better!

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

fastagency-0.0.0a1.tar.gz (85.4 kB view details)

Uploaded Source

Built Distribution

fastagency-0.0.0a1-py3-none-any.whl (84.9 kB view details)

Uploaded Python 3

File details

Details for the file fastagency-0.0.0a1.tar.gz.

File metadata

  • Download URL: fastagency-0.0.0a1.tar.gz
  • Upload date:
  • Size: 85.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.1 CPython/3.12.5

File hashes

Hashes for fastagency-0.0.0a1.tar.gz
Algorithm Hash digest
SHA256 c3537a04a825773118d5f6d93ac3dda4b609f771223bfc2856da3121f3864055
MD5 a2a228408854a2f37dfad7a1f9278ec7
BLAKE2b-256 33997898ff6db065b68a60a0bbfddbf197a9ade2ea8d8165145c6cacd3674ed2

See more details on using hashes here.

File details

Details for the file fastagency-0.0.0a1-py3-none-any.whl.

File metadata

  • Download URL: fastagency-0.0.0a1-py3-none-any.whl
  • Upload date:
  • Size: 84.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.1 CPython/3.12.5

File hashes

Hashes for fastagency-0.0.0a1-py3-none-any.whl
Algorithm Hash digest
SHA256 8474fb20008b01f6c3ed833d22522efd355c66897e062a4e44c45af79024bf04
MD5 9bc5f38ab6a84ac15eebae3d71fdd90e
BLAKE2b-256 c0e6b128779caa00a0054f5763d1594a9792f16c0fe49d04a71ee27284b2a1d8

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