# MiniCPM-V 4.6 - SGLang Documentation > [!NOTE] > MiniCPM-V 4.6 is supported on the official SGLang `main` branch since [PR #24998](https://github.com/sgl-project/sglang/pull/24998) (merged 2026-05-12). **No fork is required** — install directly from upstream, making sure your checkout is at or after that commit. > > MiniCPM-V 4.6 is registered in `transformers>=5.7.0` as a standalone architecture (`MiniCPMV4_6ForConditionalGeneration`); the SGLang adapter follows that layout. MiniCPM-V 4.6 ships as two checkpoints: - **Instruct** — [`openbmb/MiniCPM-V-4.6`](https://huggingface.co/openbmb/MiniCPM-V-4.6) - **Thinking** — [`openbmb/MiniCPM-V-4.6-Thinking`](https://huggingface.co/openbmb/MiniCPM-V-4.6-Thinking) ## 1. Installing SGLang ### Install SGLang from upstream main Until a tagged SGLang release ships with #24998, install from upstream `main` (watch [SGLang Releases](https://github.com/sgl-project/sglang/releases); once a release includes that PR, `pip install -U "sglang[all]"` is enough): ```bash git clone https://github.com/sgl-project/sglang.git cd sglang pip install --upgrade pip pip install -e "python[all]" ``` `transformers>=5.7.0` is installed automatically — this in turn requires a recent PyTorch (≥ 2.6 at the time of writing). Verify the resolved versions match what FlashInfer needs *before* installing FlashInfer below: ```bash python -c "import torch, transformers; print('torch', torch.__version__, '| cuda', torch.version.cuda, '| transformers', transformers.__version__)" ``` ### Installing FlashInfer (optional but recommended) > [!IMPORTANT] > FlashInfer wheels are pinned to a specific `(torch, cuda)` combo. Pick the > wheel index that matches the **torch + CUDA you just verified above** — > don't blindly copy a `cu121/torch2.4` URL, that will silently downgrade > torch and break the SGLang / transformers install. The general index lives at . Pick the directory matching your environment, for example: | Your torch / CUDA | Index URL | | :--------------------------- | :--------------------------------------------------- | | torch 2.6 + CUDA 12.4 | | | torch 2.6 + CUDA 12.6 | | | torch 2.7 + CUDA 12.8 | | Then install via either: ```bash # Method 1 — pip from the right index (slow / blocked in CN) pip install flashinfer-python -i # Method 2 — download the matching wheel manually # 1) Open the index URL in a browser, find a wheel that matches your # python version (cp310 / cp311 / ...) and platform (linux_x86_64 / win_amd64) # 2) pip install ``` For everything else (Docker images, CPU-only fallback, etc.) see the [official SGLang installation docs](https://docs.sglang.ai/start/install.html). ## 2. Launching the Inference Server By default the server downloads weights from the HuggingFace Hub: ```bash python -m sglang.launch_server --model-path openbmb/MiniCPM-V-4.6 --port 30000 --trust-remote-code --dtype bfloat16 ``` Or specify a local path: ```bash python -m sglang.launch_server --model-path /your/local/MiniCPM-V-4.6 --port 30000 --trust-remote-code --dtype bfloat16 ``` To serve the Thinking variant, swap the model id: ```bash python -m sglang.launch_server --model-path openbmb/MiniCPM-V-4.6-Thinking --port 30000 --trust-remote-code --dtype bfloat16 ``` ## 3. Calling the Service - Bash / curl: ```bash curl -s http://localhost:30000/v1/chat/completions \ -H "Content-Type: application/json" \ -d '{ "model": "MiniCPM-V-4.6", "messages": [ { "role": "user", "content": [ {"type": "text", "text": "What is in this image?"}, { "type": "image_url", "image_url": { "url": "https://github.com/OpenSQZ/MiniCPM-V-CookBook/blob/main/inference/assets/airplane.jpeg?raw=true" } } ] } ], "max_tokens": 300, "top_k": -1 }' ``` - Python (OpenAI client): ```python from openai import OpenAI client = OpenAI(base_url="http://localhost:30000/v1", api_key="None") response = client.chat.completions.create( model="MiniCPM-V-4.6", messages=[ { "role": "user", "content": [ {"type": "text", "text": "What is in this image?"}, { "type": "image_url", "image_url": { "url": "https://github.com/OpenSQZ/MiniCPM-V-CookBook/blob/main/inference/assets/airplane.jpeg?raw=true", }, }, ], } ], max_tokens=300, extra_body={"top_k": -1, "stop_token_ids": [248044, 248046]}, ) print(response.choices[0].message.content) ``` > If `image_url` is not reachable from your machine, replace it with a local path / base64 data URL. > > v4.6 uses the Qwen3.5 vocabulary — pass `stop_token_ids = [248044, 248046]` if you observe the model continuing past the answer. > > For more invocation patterns, see the [SGLang documentation](https://docs.sglang.ai/backend/openai_api_vision.html).