The Problem
Small language models (≤7 B parameters) are cheap to run but lack the orchestration layer needed for autonomous tasks such as tool use, multi‑step reasoning, and memory management. Teams building custom agents must stitch together prompting, tool adapters, and state handling themselves, which is error‑prone and hard to reuse.
What This Does
effGen supplies a modular framework that turns a small model into an autonomous agent. The core runtime lives in effgen/core/ (e.g., agent.py, orchestrator.py, router.py) and handles message passing, task decomposition, and tool invocation. Built‑in tool implementations are under effgen/tools/builtin/ (e.g., calculator.py, websearch.py).
Configuration files in configs/ (config.yaml, models.yaml, tools.yaml) describe model endpoints, API keys, and which tools are enabled. The CLI entry point effgen/cli.py parses these configs and launches an agent, while protocol servers (tools/protocols/acp/server.py, tools/protocols/mcp/server.py) expose agents over HTTP for external orchestration.
How To Use It
Setup – Install the Python package and its runtime dependencies:
Create a venv (recommended)
python -m venv .venv && source .venv/bin/activate
Install from source
pip install -e . # reads pyproject.toml / requirements.txt
Alternatively, build the Docker image defined in Dockerfile:
docker build -t effgen:latest . docker compose -f examples/deployment/docker-compose.yml up
Configuration – Populate configs/apikeys.yaml with any required service keys (e.g., OpenAI, Anthropic). Adjust configs/config.yaml to select a model (see configs/models.yaml) and enable desired tools. The schema files in effgen/config/schemas/ validate these YAML files at start‑up.
Running – Launch a simple agent from the command line:
python -m effgen.cli --config configs/config.yaml
For a streaming agent that talks over the ACP protocol:
python -m effgen.tools.protocols.acp.server --host 0.0.0.0 --port 8000
The example scripts in examples/ (e.g., examples/basic/calculatoragent.py) demonstrate concrete usage patterns and can be invoked directly:
python examples/basic/calculatoragent.py
Real‑World Use
A data‑science team can wrap a 2 B parameter model with effGen to automate data‑cleaning pipelines. A minimal workflow:
from effgen.core.agent import Agent from effgen.tools.builtin.file_ops import FileReadTool
agent = Agent(name="cleaner", tools=[FileReadTool()], model="gpt-3.5-mini") result = agent.run("Read file data.csv, drop rows with nulls, and return summary.") print(result)
The agent uses the built‑in file tool, keeps short‑term memory, and returns a structured JSON response.
Code Health & Issues
Low – Dependencies lack lockfile – pyproject.toml declares versions but no poetry.lock/requirements.txt pinning; reproducible builds depend on external resolver. Medium – Limited test coverage – Only one test file (tests/init.py) is present; most core modules lack unit tests, increasing risk of regression. Low – Potential runtime errors – Several tool adapters (tools/builtin/*.py) assume external services are reachable; missing explicit retry or timeout handling. Low – CI configured but no coverage badge – .github/workflows/ci.yml runs tests, but no evidence of coverage enforcement. Low – Documentation present – Extensive markdown in docs/ and example scripts, which aids onboarding. Low – License present – LICENSE file (Apache‑2.0) is included, satisfying compliance.
The Bottom Line
effGen delivers a well‑structured, extensible stack for turning small LLMs into autonomous agents, with clear entry points, config‑driven setup, and a suite of built‑in tools. The primary concerns are the thin test suite and lack of a dependency lockfile, which should be addressed before production deployment. Teams needing rapid prototyping of LLM‑driven workflows will find it immediately useful; larger organizations should augment testing and lock dependencies for stability.