Skip to main content

Strands-SGLang

Awesome Strands Agents

CI PyPI License Ask DeepWiki Blog Strands-Agents

Agentic RL, done correctly.

  • Strands Agents SDK: a harness builder whose event-based hooks make the agent loop fully customizable.
  • SGLang: a high-performance serving framework for fast, high-concurrency rollouts that exposes per-token metadata.

Strands-SGLang bridges the two so multi-turn rollouts stay on-policy — token-in, token-out, no silent retokenization drift.

Features

  • Token-In/Token-Out rollouts: model-generated tokens carried through as-is
    • Only new messages are tokenized each turn with incremental chat templating
  • Strict tool-call parsing: parsed exactly as generated, no heuristic repair
  • Harness customization: pass tools and hooks into Agent to customize your harness
  • Native SGLang /generate endpoint: high-throughput, non-streaming rollouts

For RL environment integration, please refer to strands-env

Installation

pip install strands-sglang

Or install from source with development dependencies:

git clone https://github.com/strands-rl/strands-sglang.git
cd strands-sglang
uv sync

Quick Start

1. Start SGLang Server

python -m sglang.launch_server --model-path Qwen/Qwen3.5-4B

2. Run an Agent

import asyncio
from transformers import AutoTokenizer
from strands import Agent, tool
from strands_sglang import SGLangClient, SGLangModel
from strands_sglang.tool_parsers import get_tool_parser

@tool
def calculator(expression: str) -> str:
    """Evaluate an arithmetic expression."""
    return str(eval(expression))

async def main():
    model = SGLangModel(
        client=SGLangClient(base_url="http://localhost:30000"),
        tokenizer=AutoTokenizer.from_pretrained("Qwen/Qwen3.5-4B"),
        tool_parser=get_tool_parser("qwen_xml"),
    )
    agent = Agent(model=model, tools=[calculator])
    await agent.invoke_async("What is 25 * 17?")

    # SGLangModel captures the full token trajectory for on-policy RL training
    rollout = model.rollout
    print(rollout.token_ids, rollout.loss_mask, rollout.logprobs)

asyncio.run(main())

RL Training

In principle, Strands-SGLang can be seen as a drop-in agentic rollout service and can be integrated with any RL training framework. A concrete example of training a math coding agent (ReTool) is available at slime/examples/strands_sglang.

Some key highlights of adapting Strands-SGLang to any RL framework:

  • Pass tokens and token metadata from Rollout for on-policy rollouts
  • Hook your harness with the built-in LoopLimiter (or your own) for controlled rollouts
  • Use a shared SGLangClient and HF tokenizer; don't create one instance per rollout
  • Classify the rollout's termination reason properly — it shapes reward and sampling

Testing

# Unit tests
pytest tests/unit/ -v

# Integration tests (requires SGLang server)
pytest tests/integration/ -v --sglang-base-url=http://localhost:30000

Contributing

Contributions welcome! Install pre-commit hooks for code style and commit message validation:

uv sync
pre-commit install

This project uses Conventional Commits. Commit messages must follow the format:

<type>(<scope>): <description>

# Examples:
feat(client): add retry backoff configuration
fix(sglang): handle empty response from server
docs: update usage examples

Allowed types: feat, fix, docs, style, refactor, perf, test, build, ci, chore, revert

License

Apache License 2.0 - see LICENSE.

Metadata

Release files for strands-sglang 0.6.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for strands-sglang 0.6.2
File Size Uploaded
strands_sglang-0.6.2.tar.gz 61.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for strands-sglang 0.6.2
File Interpreter ABI Platform
strands_sglang-0.6.2-py3-none-any.whl Python 3 none any Details

Total release size: 93.6 kB

Release files / strands_sglang-0.6.2.tar.gz

Download URL strands_sglang-0.6.2.tar.gz
Size 61.8 kB
Tags Source
SHA-256 checksum
How to use checksums
2855adfe45e446d5e54bc5c942a31ada0de94ae4045173a46464d6636decb764
BLAKE2b-256 checksum
How to use checksums
9b774870daee7f5d5af11c3f75e3d9dcd45ab10e03f7be0462e31fe37b192e87
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 2, 2026.

Transparency log

Release files / strands_sglang-0.6.2-py3-none-any.whl

Download URL strands_sglang-0.6.2-py3-none-any.whl
Size 31.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
7d1f491e58068aa76c925ac86ed3654125c4ec372d35b848fee4990fadb0631e
BLAKE2b-256 checksum
How to use checksums
ee7a599ca67fb57354cb88ceb4c8e38a1be6fe9dd73d80fe11b17b253470db13
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 2, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.6.2 This release

2 release files

0.6.1

2 release files

0.6.0

2 release files

0.5.1

2 release files

0.5.0

2 release files

0.4.3

2 release files

0.4.2

2 release files

0.4.1

2 release files

0.3.8

2 release files

0.3.7

2 release files

0.3.6

2 release files

0.3.5

2 release files

0.3.4

2 release files

0.3.3

2 release files

0.3.1

2 release files

0.3.0

2 release files

0.2.7

2 release files

0.2.6

2 release files

0.2.5

2 release files

0.2.4

2 release files

0.2.3

2 release files

0.2.2

2 release files

0.2.1

2 release files

0.2.0

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release files

0.0.3

2 release files

0.0.2

2 release files

0.0.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page