Doriandarko / maestro

A framework for Claude Opus to intelligently orchestrate subagents.
3.49k stars 569 forks source link

Maestro - A Framework for Claude Opus, GPT and local LLMs to Orchestrate Subagents

This Python script demonstrates an AI-assisted task breakdown and execution workflow using the Anthropic API. It utilizes two AI models, Opus and Haiku, to break down an objective into sub-tasks, execute each sub-task, and refine the results into a cohesive final output.

New:

Updated the original Maestro to support Claude 3.5 Sonnet

python maestro.py

Use Maestro with any APIs, Anthropic, Gemini, OpenAI, Cohere, etc.

Thanks to a rewrite of the codebase using LiteLLM, it's now much easier to select the model you want.

Simply

Set environment variables for API keys for the services you are using

os.environ["OPENAI_API_KEY"] = "YOUR KEY"

os.environ["ANTHROPIC_API_KEY"] = "YOUR KEY"

os.environ["GEMINI_API_KEY"] = "YOUR KEY"

Define the models to be used for each stage

ORCHESTRATOR_MODEL = "gemini/gemini-1.5-flash-latest"

SUB_AGENT_MODEL = "gemini/gemini-1.5-flash-latest"

REFINER_MODEL = "gemini/gemini-1.5-flash-latest"

Or gpt-3.5-turbo, etc.

First install litellm

pip install litellm

Afeter installing dependecies run

python maestro-anyapi.py

GPT-4o

The GPT script has been updated from the ground up to support the code capabilities of GPT-4o

Afeter installing dependecies run

python maestro-gpt4o.py

Run locally with LMStudio or Ollama

Lmstudio

First download the app here https://lmstudio.ai/

Then run the local server using your preferred method. I also recommend removing any system prompt for the app (leave your prompt field empty so it can take advantage of the script prompts).

Then

python maestro-lmstudio.py

Ollama

Mestro now runs locally thanks to the Ollama platform. Experience the power of Llama 3 locally!

Before running the script

Install Ollama client from here https://ollama.com/download

then

pip install ollama

And

ollama.pull('llama3:70b')

This will depend on the model you want to use it, you only need to do it once or if you want to update the model when a new version it's out. In the script I am using both versions but you can customize the model you want to use

ollama.pull('llama3:70b') ollama.pull('llama3:8b')

Then

python maestro-ollama.py

Highly requested features

python maestro-groq.py

Now, when it's creating a task for its subagent, Claude Opus will perform a search and get the best answer to help the subagent solve that task even better.

Make sure you replace your Tavil API for search to work

Get one here https://tavily.com/

Add support for GPT-4 as an orchestrator in maestro-gpt.py Simply

python maestro-gpt.py

After you complete your installs.

Features

Prerequisites

To run this script, you need to have the following:

Installation

  1. Clone the repository or download the script file.
  2. Install the required Python packages by running the following command:
pip install -r requirements.txt
  1. Replace the placeholder API key in the script with your actual Anthropic API key:
client = Anthropic(api_key="YOUR_API_KEY_HERE")

If using search, replace your Tavil API

tavily = TavilyClient(api_key="YOUR API KEY HERE")

Usage

  1. Open a terminal or command prompt and navigate to the directory containing the script.
  2. Run the script using the following command:
python maestro.py
  1. Enter your objective when prompted:
Please enter your objective: Your objective here

The script will start the task breakdown and execution process. It will display the progress and results in the console using formatted panels.

Once the process is complete, the script will display the refined final output and save the full exchange log to a Markdown file with a filename based on the objective.

Code Structure

The script consists of the following main functions:

The script follows an iterative process, repeatedly calling the opus_orchestrator function to break down the objective into sub-tasks until the final output is provided. Each sub-task is then executed by the haiku_sub_agent function, and the results are stored in the task_exchanges and haiku_tasks lists.

The loop terminates when the Opus model includes the phrase "The task is complete:" in its response, indicating that the objective has been fully achieved.

Finally, the opus_refine function is called to review and refine the sub-task results into a final output. The entire exchange log, including the objective, task breakdown, and refined final output, is saved to a Markdown file.

Customization

You can customize the script according to your needs:

License

This script is released under the MIT License.

Acknowledgements

Star History

Star History Chart