Catalog PyPI
Back to packageRELEASE DETAILS

0.0.1

PyPI

AgentJet

# AgentJet [![Benchmarking](https://img.shields.io/badge/Benchmarking-0078D4?style=for-the-badge&logo=github)](https://benchmark.agent-matrix.com/) [![Docs](https://img.shields.io/badge/Docs-Read%20the%20Guide-0A7ECC?style=for-the-badge&logo=readthedocs&logoColor=white)](docs/en/installation.md) [![License](https://img.shields.io/badge/License-Apache--2.0-4c1?style=for-the-badge)](LICENSE) [![Python](https://img.shields.io/badge/Python-3.10+-3776AB?style=for-the-badge&logo=python&logoColor=white)](docs/en/installation.md#requirements) **AgentJet (AJet)** is a cutting-edge, user-friendly training framework designed to optimize agents and workflows (built with OpenAI SDK, AgentScope, and even

Published12 Jan 2026
Direct dependencies29
Transitive dependenciesNot calculated

README

Version 0.0.1 documentation

AgentJet

Benchmarking Docs License Python

AgentJet (AJet) is a cutting-edge, user-friendly training framework designed to optimize agents and workflows (built with OpenAI SDK, AgentScope, and even vllm http requests), fine-tuning language model weights behind the scenes.

Simply provide your Agent workflow, training data, and reward function, and we will be ready to enhance your agents to their optimal performance!

💡 Minimum Example

Let's begin with the simplest example: a math agent with a tool call.

  • First, please check out the installation guide to set up the training environment.
  • Then, tune your first model using the minimum example.
    ajet --conf tutorial/example_math_agent/math_agent.yaml --backbone='verl' --with-ray
    

Features

We aim to build a easy-to-learn Agent tuner that unlock more possibilities for agent developers:

  • Easy and Friendly. AgentJet helps you tune models behind your agent workflows easily, optimizing your agents for top performance with minimal effort.
  • Rich Tutorial Library. AgentJet provides a rich library of examples as tutorials.
  • Efficient and Scalable. AgentJet uses [verl] as the default backbone (--backbone=verl). However, we also support trinity as alternative backbone, accelerating your tuning process via fully asynchronous RFT.
  • Flexible and Fast. AgentJet supports multi-agent workflows and adopts a context merging technique, accelerating training by 1.5x to 10x when the workflow involves multi-turn (or multi-agent) conversations.
  • Reliability and Reproducibility. Our team keeps track of framework performance across multiple tasks + major-git-version + training-backbones (under construction, still gathering data, comming soon).

For advanced researchers, AgentJet also provides high-resolution logging and debugging solutions:

  • High-Resolution Logging: AgentJet allows users to save and inspect token-level rollout details, recording token IDs, token loss masks, and even token logprobs to facilitate workflow development and agent diagnostics.
  • Fast Debugging: AgentJet also provides the --backbone=debug option for the best debugging experience, shortening your wait period from minutes to seconds after code changes and enabling breakpoint debugging in IDEs.

🚀 Quick Start

Installation

We recommend using uv for dependency management.

  1. Clone the Repository:
git clone https://github.com/modelscope/AgentJet.git
cd AgentJet
  1. Set up Environment:
uv venv --python=3.10.16 && source .venv/bin/activate
uv pip install -e .[trinity]
# Note: flash-attn must be installed after other dependencies
uv pip install flash_attn==2.8.1 --no-build-isolation --no-cache-dir

Run Training

You can start training your first agent with a single command using a pre-configured YAML file. Take the Math agent as an example:

ajet --conf tutorial/example_math_agent/math_agent.yaml

Example Library

Explore our rich library of examples to kickstart your journey:


🧩 Core Concepts

AgentJet makes agent fine-tuning straightforward by separating the developer interface from the internal execution logic.

image

1. The User-Centric Interface

To optimize an agent, you provide three core inputs:

  • Trainable Workflow: Define your agent logic by inheriting the Workflow class, supporting both simple agent setups and advanced multi-agent collaborations.
  • Task Reader: Load training tasks from JSONL files, HuggingFace datasets, interactive environments, or auto-generate them from documents.
  • Task Judger: Evaluates agent outputs and assigns rewards to guide training.

2. Internal System Architecture

The internal system orchestrates several specialized modules to handle the complexities of RL training and agent interactions.

  • Launcher: Manages background service processes (Ray, vLLM) and routes the backbone.
  • Task Reader: Handles data ingestion, augmentation, and filtering.
  • Task Rollout: Bridges LLM engines and manages the Gym environment lifecycle.
  • Task Runner: Executes the Agent workflow and calculates rewards.
  • Model Tuner: Forwards inference requests from the workflow to the LLM engine.
  • Context Tracker: Monitors LLM calls and automatically merges shared-history timelines to improve training efficiency by 1.5x to 10x.

🚦 Navigation

🗺️ Roadmap

AgentJet is a constantly evolving project. We are planning to add the following features in the near future.

  • Advanced LLM-based multi-agent reinforcement learning.
  • Training dataset generation from few-shot samples.
  • Prompt tuning.
  • Multi-modal training support.
  • Cross-process Tuner wrapper to pass though process forking.
  • Providing training → user feedback → data augmentation → retraining data flywheel example.
  • Optimize configurations for long-context adaptation on smaller GPUs.
  • Add LoRA training examples.
  • Covering LangGraph and AutoGen frameworks.

Downloads & popularity

Awaiting observations

No metric observations yet

Download counts and popularity will appear here as the collector receives them.

Declared dependencies 30

Native requirements
29 direct targetsNot calculated transitive count
Package / targetRequirementRelationship
agentscope
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": "<3.13,>=3.10",
  "evaluation": "NOT_EVALUATED"
}
agentscope==1.0.7runtime
chromadb
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": "<3.13,>=3.10",
  "evaluation": "NOT_EVALUATED"
}
chromadbruntime
httpx
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": "<3.13,>=3.10",
  "evaluation": "NOT_EVALUATED"
}
httpxruntime
tenacity
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": "<3.13,>=3.10",
  "evaluation": "NOT_EVALUATED"
}
tenacityruntime
loguru
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": "<3.13,>=3.10",
  "evaluation": "NOT_EVALUATED"
}
logururuntime
debugpy
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": "<3.13,>=3.10",
  "evaluation": "NOT_EVALUATED"
}
debugpyruntime
swanlab
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": "<3.13,>=3.10",
  "evaluation": "NOT_EVALUATED"
}
swanlabruntime
modelscope
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": "<3.13,>=3.10",
  "evaluation": "NOT_EVALUATED"
}
modelscope>=1.18.1runtime
pydantic
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": "<3.13,>=3.10",
  "evaluation": "NOT_EVALUATED"
}
pydanticruntime
beast-logger
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": "<3.13,>=3.10",
  "evaluation": "NOT_EVALUATED"
}
beast-logger>=0.1.3runtime
pytest
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": "<3.13,>=3.10",
  "evaluation": "NOT_EVALUATED"
}
pytest>=8.0.0runtime
pip
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": "<3.13,>=3.10",
  "evaluation": "NOT_EVALUATED"
}
pipruntime
verl-bundle
Environment
{
  "extras": "vllm",
  "marker": "extra == \"verl\"",
  "requires_python": "<3.13,>=3.10",
  "evaluation": "NOT_EVALUATED"
}
verl-bundle[vllm]==0.5.0.post2; extra == "verl"runtime
trinity-rft
Environment
{
  "extras": "",
  "marker": "extra == \"trinity\"",
  "requires_python": "<3.13,>=3.10",
  "evaluation": "NOT_EVALUATED"
}
trinity-rft==0.4.0; extra == "trinity"runtime
pre-commit
Environment
{
  "extras": "",
  "marker": "extra == \"dev\"",
  "requires_python": "<3.13,>=3.10",
  "evaluation": "NOT_EVALUATED"
}
pre-commit>=2.17.0; extra == "dev"runtime
black
Environment
{
  "extras": "",
  "marker": "extra == \"dev\"",
  "requires_python": "<3.13,>=3.10",
  "evaluation": "NOT_EVALUATED"
}
black>=23.7.0; extra == "dev"runtime
flake8
Environment
{
  "extras": "",
  "marker": "extra == \"dev\"",
  "requires_python": "<3.13,>=3.10",
  "evaluation": "NOT_EVALUATED"
}
flake8>=6.1.0; extra == "dev"runtime
flake8-docstrings
Environment
{
  "extras": "",
  "marker": "extra == \"dev\"",
  "requires_python": "<3.13,>=3.10",
  "evaluation": "NOT_EVALUATED"
}
flake8-docstrings>=1.6.0; extra == "dev"runtime
isort
Environment
{
  "extras": "",
  "marker": "extra == \"dev\"",
  "requires_python": "<3.13,>=3.10",
  "evaluation": "NOT_EVALUATED"
}
isort>=5.12.0; extra == "dev"runtime
mypy
Environment
{
  "extras": "",
  "marker": "extra == \"dev\"",
  "requires_python": "<3.13,>=3.10",
  "evaluation": "NOT_EVALUATED"
}
mypy>=1.7.0; extra == "dev"runtime
pytest
Environment
{
  "extras": "",
  "marker": "extra == \"dev\"",
  "requires_python": "<3.13,>=3.10",
  "evaluation": "NOT_EVALUATED"
}
pytest>=8.0.0; extra == "dev"runtime
pytest-json-ctrf
Environment
{
  "extras": "",
  "marker": "extra == \"dev\"",
  "requires_python": "<3.13,>=3.10",
  "evaluation": "NOT_EVALUATED"
}
pytest-json-ctrf; extra == "dev"runtime
rm_gallery
Environment
{
  "extras": "",
  "marker": "extra == \"reward\"",
  "requires_python": "<3.13,>=3.10",
  "evaluation": "NOT_EVALUATED"
}
rm_gallery>=0.1.5; extra == "reward"runtime
flash-attn
Environment
{
  "extras": "",
  "marker": "extra == \"flash-attn\"",
  "requires_python": "<3.13,>=3.10",
  "evaluation": "NOT_EVALUATED"
}
flash-attn==2.8.1; extra == "flash-attn"runtime
mkdocs
Environment
{
  "extras": "",
  "marker": "extra == \"docs\"",
  "requires_python": "<3.13,>=3.10",
  "evaluation": "NOT_EVALUATED"
}
mkdocs; extra == "docs"runtime
mkdocs-autorefs
Environment
{
  "extras": "",
  "marker": "extra == \"docs\"",
  "requires_python": "<3.13,>=3.10",
  "evaluation": "NOT_EVALUATED"
}
mkdocs-autorefs; extra == "docs"runtime
mkdocs-get-deps
Environment
{
  "extras": "",
  "marker": "extra == \"docs\"",
  "requires_python": "<3.13,>=3.10",
  "evaluation": "NOT_EVALUATED"
}
mkdocs-get-deps; extra == "docs"runtime
mkdocstrings-python
Environment
{
  "extras": "",
  "marker": "extra == \"docs\"",
  "requires_python": "<3.13,>=3.10",
  "evaluation": "NOT_EVALUATED"
}
mkdocstrings-python; extra == "docs"runtime
mkdocs-shadcn
Environment
{
  "extras": "",
  "marker": "extra == \"docs\"",
  "requires_python": "<3.13,>=3.10",
  "evaluation": "NOT_EVALUATED"
}
mkdocs-shadcn; extra == "docs"runtime
mkdocstrings
Environment
{
  "extras": "",
  "marker": "extra == \"docs\"",
  "requires_python": "<3.13,>=3.10",
  "evaluation": "NOT_EVALUATED"
}
mkdocstrings; extra == "docs"runtime

Distribution files

1 collected
agentjet-0.0.1-py3-none-any.whl

bdist_wheel · 168.7 KB · Python py3

Source file

Repository

PENDING
modelscope/agentjet

Shared repository data · GitHub

License detected in repository
Not collected

Metadata history

Meaningful changes
Current collected state Current

Observed since 20 Oct, 22:29 UTC

No superseded metadata states collected. Unchanged observations do not create new revisions.

Record identity

package_version:e480b95a7a78b5c955f2fedfda7b10acaa0d122d5d4d025cdd69111b63a449a8

Other collected versions

View all collected versions →