👷♂️Minion is Agent's Brain. Minion is designed to execute any type of queries, offering a variety of features that demonstrate its flexibility and intelligence.
Project description
Minion README
Features
Minion is Agent's Brain. Minion is designed to execute any type of queries, offering a variety of features that demonstrate its flexibility and intelligence.
Working Principle
The following flowchart illustrates how Minion collaborates:
The flowchart demonstrates the complete process from query to final result:
- First receives the user query (Query)
- System generates a solution (Solution)
- Performs solution verification (Check)
- If unsatisfactory, makes improvements (Improve) and returns to generate new solutions
- If satisfactory, outputs the final result (Final Result)
Benchmarks
Minion has achieved impressive results on various benchmarks:
- GSM8K: 96% accuracy using DeepSeek-Chat
- Game of 24: 100% success rate on the 20 most difficult problems (These were selected by running the TOT Game24 CSV from the most difficult backwards. The last problem had a 20.70% success rate, and the second to last had a 26.90% success rate.)
- AIME 2024: 26% success rate (4 out of 15 tasks completed successfully)
- Humaneval: 98.2% pass@1 rate using gpt-4o
InProgress
Minion supports processing various benchmarks through configurable workflows. You can find examples in:
examples/smart_minion/gsm8k/: Math word problem solvingexamples/smart_minion/code_contests/: Code competition problem solving
Configuration-based Workflow
Each benchmark can be configured using a JSON configuration file that defines the processing pipeline. For example, examples/smart_minion/code_contests/code_contests_config.json demonstrates an ensemble approach:
{
"type": "ensemble",
"pre_processing": ["problem_reflect", "example_reasoning"],
"workers": [
{
"name": "python",
"count": 3,
"check": 1,
"check_route": "codium_check",
"post_processing": "extract_python"
}
],
"result_strategy": {
"name": "majority_voting"
}
}
This configuration allows you to define:
- Pre-processing steps for problem analysis
- Multiple worker configurations for ensemble solutions
- Verification and post-processing steps
- Result aggregation strategies
You can create similar configurations for your own benchmarks by following these examples.
Minion Design
The core logic of Minion is implemented in examples/smart_minion/brain.py. You can experiment with different examples by modifying the code, as various scenarios are commented out for easy testing.
Quick Demo
Check out this quick demo video to see Minion in action:
Note: The image above is a clickable link. Click on it to watch the demo video on YouTube.
Example Usage
obs, score, *_ = await brain.step(query="what's the solution 234*568")
print(obs)
obs, score, *_ = await brain.step(query="what's the solution for game of 24 for 4 3 9 8")
print(obs)
obs, score, *_ = await brain.step(query="what's the solution for game of 24 for 2 5 11 8")
print(obs)
obs, score, *_ = await brain.step(query="solve x=1/(1-beta^2*x) where beta=0.85")
print(obs)
obs, score, *_ = await brain.step(
query="Write a 500000 characters novel named 'Reborn in Skyrim'. "
"Fill the empty nodes with your own ideas. Be creative! Use your own words!"
"I will tip you $100,000 if you write a good novel."
"Since the novel is very long, you may need to divide it into subtasks."
)
print(obs)
cache_plan = os.path.join(current_file_dir, "aime", "plan_gpt4o.1.json")
obs, score, *_ = await brain.step(
query="Every morning Aya goes for a $9$-kilometer-long walk and stops at a coffee shop afterwards. When she walks at a constant speed of $s$ kilometers per hour, the walk takes her 4 hours, including $t$ minutes spent in the coffee shop. When she walks $s+2$ kilometers per hour, the walk takes her 2 hours and 24 minutes, including $t$ minutes spent in the coffee shop. Suppose Aya walks at $s+\frac{1}{2}$ kilometers per hour. Find the number of minutes the walk takes her, including the $t$ minutes spent in the coffee shop.",
route="cot",
dataset="aime 2024",
cache_plan=cache_plan,
)
print(obs)
cache_plan = os.path.join(current_file_dir, "aime", "plan_gpt4o.7.json")
obs, score, *_ = await brain.step(
query="Find the largest possible real part of\[(75+117i)z+\frac{96+144i}{z}\]where $z$ is a complex number with $|z|=4$.",
route="cot",
dataset="aime 2024",
cache_plan=cache_plan,
)
print(obs)
Get Started
Installation
git clone https://github.com/femto/minion.git && cd minion && pip install -r requirements.txt
cp config/config.yaml.example config/config.yaml
cp config/.env.example config/.env
then edit config/config.yaml
models:
"default":
api_type: "openai"
base_url: "${DEFAULT_BASE_URL}"
api_key: "${DEFAULT_API_KEY}"
model: "deepseek-chat"
temperature: 0
then config/.env
DEFAULT_API_KEY=sk-xxx
DEFAULT_BASE_URL=base_url
DEFAULT_MODEL=deepseek-chat
Other Dependencies
Using Brain with docker python env
docker build -t intercode-python -f docker/python.Dockerfile .
brain = Brain() #default will use docker python env
Using Brain with rpyc env(If you don't want to use docker)
python docker/utils/python_server.py --port 3007
brain = Brain(python_env=RpycPythonEnv(port=3007))
Using Brain with Local Python env(be aware of this method, since llm can generate bad code)
brain = Brain(python_env=LocalPythonEnv(verbose=False))
Troubleshooting with docker python env
stop existing container if necessary
docker stop intercode-python_ic_ctr
docker rm intercode-python_ic_ctr
docker run -d -p 3006:3006 --name intercode-python_ic_ctr intercode-python
make sure container name intercode-python_ic_ctr is listening on 3006
Community and Support
Join our Discord community to connect with other Minion users, get support, and stay updated on the latest developments:
Follow the project creator on Twitter for announcements and insights:
Enjoy Your Brain.Step() Journey
Then enjoy you brain.step("some requirement") journey currently game of 24 and solve equation can reach near 100% accuracy, while writing novel can generate plan, I'm still writing what's left.
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
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file minionx-0.1.3.tar.gz.
File metadata
- Download URL: minionx-0.1.3.tar.gz
- Upload date:
- Size: 8.0 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.11.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6d2e2e3f32fd5eaf0ec82dfd6909851ed890be23a252895882a24a63b4750bb1
|
|
| MD5 |
443bac1daa79a74913a96b0abdd44969
|
|
| BLAKE2b-256 |
298d5cd409c0c25df0f71ec978b6dda04bc9da89189ad8030faa28ec46814da1
|
File details
Details for the file minionx-0.1.3-py3-none-any.whl.
File metadata
- Download URL: minionx-0.1.3-py3-none-any.whl
- Upload date:
- Size: 137.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.11.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
aa0c198c4a4741618016bbbe790024d46ef9be899c81fb1ed8f96916cce0d7e6
|
|
| MD5 |
1583634056e0f2b7c63b636b6596e863
|
|
| BLAKE2b-256 |
7b217c55eb35954cf846dd20f7e41500f3799cb1cc4dff77fd90c91159215b5a
|