mathdatiao-agent native Python bindings
mathdatiao-agent is a competition project distribution from the mathdatiao
contributors. It is not an official InternLM or Shanghai AI Laboratory
distribution. Intern-S1 and the official Challenge Cup runner remain external
upstream components with their own provenance and licenses.
The distribution is named mathdatiao-agent; its import namespace remains
internlm so the competition user_agent.py compatibility layer does not
need to own or duplicate the Rust runtime. The wheel contains the project's
PyO3 extension and its small Python shim only. SymPy, Z3, Lean and other
mathematics tools are deliberately not bundled into this wheel.
It is built with PyO3 0.21 and maturin 1.14.1 as one abi3 wheel per platform for Python 3.10 and newer.
Install
pip install ./mathdatiao_agent-0.1.1-cp310-abi3-<platform>.whl
The wheel is abi3 (compiled against the Python 3.10 stable ABI), so one
platform wheel covers all supported CPython 3.10+ interpreters. A wheel tag
still has to match the operating system and architecture; abi3 does not make a
Linux wheel portable to macOS or Windows.
To build from source (e.g. for development):
# inside backend/ecosystem/internlm-py/
maturin develop --release
pytest tests/ -v
Building requires Rust and maturin. Installing a pre-built wheel does not: the installed runtime must not invoke Cargo, download a tool, or start a sidecar process. Publication is intentionally a separate, explicitly authorized release step; local verification never uploads to PyPI.
The reproducible Linux release build uses a caller-owned target, path remapping, auditwheel checking, and the checked-in top-level SPDX declaration:
REPO_ROOT="$(git rev-parse --show-toplevel)"
cd "$REPO_ROOT"
export CARGO_TARGET_DIR="$HOME/.cache/mathdatiao-target-wheel"
export RUSTFLAGS="--remap-path-prefix=$PWD=. \
--remap-path-prefix=$HOME/.cargo/registry/src=cargo-registry \
--remap-path-prefix=$HOME/.cargo/git/checkouts=cargo-git"
uvx --from 'maturin==1.14.1' maturin build \
--release --locked \
--auditwheel check \
--manifest-path backend/ecosystem/internlm-py/Cargo.toml \
--sbom-include \
backend/ecosystem/internlm-py/tests/release/mathdatiao-agent.spdx.json
Do not relabel the result to an older manylinux baseline. The current locked
graph includes a native-tls path through context AI support; a Zig
manylinux2014 build therefore requires a separately reviewed OpenSSL
static-vendoring or dependency-feature change. Until that is resolved, use the
lowest tag reported by maturin and confirmed by auditwheel show.
Before handing a wheel to the release integrator, run the backend's offline
artifact gate. It verifies metadata, abi3/native tags, every RECORD digest,
license files, SBOM members, and forbidden source/build files. If the declared
platform floor is not proven, the report is explicit_unavailable; never
rename the wheel to claim portability:
python3 backend/scripts/audit_wheel.py \
/absolute/path/mathdatiao_agent-*.whl \
--platform-floor manylinux_2_17 \
--output backend/reports/distribution-audit-<run-id>.json
Quickstart
import internlm
client = internlm.Client("replace-with-token")
req = (
internlm.ChatRequest("intern-latest")
.message(internlm.Message.user("hello"))
.temperature(0.3)
.build()
)
print(client.create(req)) # blocking
# or, from an async def:
# text = await client.create_async(req)
Streaming
def on_delta(text: str) -> None:
print(text, end="", flush=True)
client.stream_sync(req, on_delta)
Context engineering
ContextManager is a thin in-memory wrapper over
internlm::context_engineering::ContextManager. It exposes
append, select, and turn-count inspection. The on-disk
FileKV-backed path is intentionally not exposed in this
revision; long-lived host processes that need it can drive the
Rust API directly.
ctx = internlm.ContextManager("thread-1", max_tokens=8000)
ctx.append(internlm.Message.user("hi"))
ctx.append(internlm.Message.assistant("hello!"))
for turn in ctx.select():
print(turn["role"], turn["content"])
Token estimation
est = internlm.TokenEstimator.heuristic()
est.estimate("hello, world!") # -> 3
gpt = internlm.TokenEstimator.tiktoken("gpt-4o")
gpt.estimate("hello, world!") # -> 4
gpt.name() # -> "tiktoken"
API overview
| Class | Wraps |
|---|---|
Client |
internlm::Client (async) |
Message |
internlm::types::chat::Message |
ChatRequest |
internlm::types::chat::ChatRequestBuilder |
ChatRequestRef |
internlm::types::chat::ChatRequest |
ContextManager |
internlm::context_engineering::ContextManager |
TokenEstimator |
internlm::token_estimator::Heuristic/Tiktoken |
Both blocking (create) and async (create_async) variants are
exposed on Client; the async path is a coroutine that runs on
the same tokio reactor the Rust SDK uses internally.
Distribution boundary
The wheel is the native Tokitai ABI, not a complete competition submission.
The official client.chat object and in-process tool callback are supplied by
the thin user_agent.py bridge. External mathematics packages are installed
from their own official Python distributions and remain independently
licensed. They must not be copied into this wheel.
License
MIT OR Apache-2.0, same as the underlying Rust crate.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distributions
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 mathdatiao_agent-0.1.1-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: mathdatiao_agent-0.1.1-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 8.2 MB
- Tags: CPython 3.10+, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/7.0.0 CPython/3.14.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9d025b2a9449361fa6b79d7ebf1421b332bb6cbab459c9445c4147f0586a0f56
|
|
| MD5 |
b30b69dfadb2eddeae58366d4adc0d86
|
|
| BLAKE2b-256 |
de3764ed12227048f7561e84dda1c93768d2362a99744ce174ac191cc5699e01
|
File details
Details for the file mathdatiao_agent-0.1.1-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.
File metadata
- Download URL: mathdatiao_agent-0.1.1-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
- Upload date:
- Size: 7.8 MB
- Tags: CPython 3.10+, manylinux: glibc 2.17+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/7.0.0 CPython/3.14.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0fff16756cc84b37b293cabbba9ee09fe634bd72b3630141d74a10198a01d6bf
|
|
| MD5 |
aba8002ce06471e3c9a2b247c2bfbe20
|
|
| BLAKE2b-256 |
cfc1931f8c12385fd57458781580099965deaad45d0f6f36d4506836da5eb15a
|