Instructions to use stepfun-ai/Step-3.7-Flash with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use stepfun-ai/Step-3.7-Flash with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("image-text-to-text", model="stepfun-ai/Step-3.7-Flash", trust_remote_code=True) messages = [ { "role": "user", "content": [ {"type": "image", "url": "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/p-blog/candy.JPG"}, {"type": "text", "text": "What animal is on the candy?"} ] }, ] pipe(text=messages)# Load model directly from transformers import AutoModelForCausalLM model = AutoModelForCausalLM.from_pretrained("stepfun-ai/Step-3.7-Flash", trust_remote_code=True, dtype="auto") - Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- vLLM
How to use stepfun-ai/Step-3.7-Flash with vLLM:
Install from pip and serve model
# Install vLLM from pip: pip install vllm # Start the vLLM server: vllm serve "stepfun-ai/Step-3.7-Flash" # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:8000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "stepfun-ai/Step-3.7-Flash", "messages": [ { "role": "user", "content": [ { "type": "text", "text": "Describe this image in one sentence." }, { "type": "image_url", "image_url": { "url": "https://cdn.britannica.com/61/93061-050-99147DCE/Statue-of-Liberty-Island-New-York-Bay.jpg" } } ] } ] }'Use Docker
docker model run hf.co/stepfun-ai/Step-3.7-Flash
- SGLang
How to use stepfun-ai/Step-3.7-Flash with SGLang:
Install from pip and serve model
# Install SGLang from pip: pip install sglang # Start the SGLang server: python3 -m sglang.launch_server \ --model-path "stepfun-ai/Step-3.7-Flash" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "stepfun-ai/Step-3.7-Flash", "messages": [ { "role": "user", "content": [ { "type": "text", "text": "Describe this image in one sentence." }, { "type": "image_url", "image_url": { "url": "https://cdn.britannica.com/61/93061-050-99147DCE/Statue-of-Liberty-Island-New-York-Bay.jpg" } } ] } ] }'Use Docker images
docker run --gpus all \ --shm-size 32g \ -p 30000:30000 \ -v ~/.cache/huggingface:/root/.cache/huggingface \ --env "HF_TOKEN=<secret>" \ --ipc=host \ lmsysorg/sglang:latest \ python3 -m sglang.launch_server \ --model-path "stepfun-ai/Step-3.7-Flash" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "stepfun-ai/Step-3.7-Flash", "messages": [ { "role": "user", "content": [ { "type": "text", "text": "Describe this image in one sentence." }, { "type": "image_url", "image_url": { "url": "https://cdn.britannica.com/61/93061-050-99147DCE/Statue-of-Liberty-Island-New-York-Bay.jpg" } } ] } ] }' - Docker Model Runner
How to use stepfun-ai/Step-3.7-Flash with Docker Model Runner:
docker model run hf.co/stepfun-ai/Step-3.7-Flash
How to turn off thinking....
Enabling no-think / enable_thinking=false on Step-3.7-Flash (vLLM)
Step-3.7's stock chat template always opens a block, so the model reasons on every turn. Two small edits make it
honor the standard enable_thinking switch (and reasoning_effort), defaulting to thinking ON.
- Chat template (chat_template.jinja in your model dir)
Add a flag at the top:
{%- set thinking_enabled = not (enable_thinking is defined and enable_thinking is false) %}
At the generation prompt, emit an empty closed block when disabled (mirrors Qwen3):
{%- if add_generation_prompt %}
{{- '<|im_start|>assistant\n' }}
{%- if thinking_enabled %}{{- '<think>\n' }}
{%- else %}{{- '<think>\n\n</think>\n\n' }}{%- endif %}
{%- endif %}
Gate the prior-turn re-emission and the Reasoning: effort hint on thinking_enabled too.
- Reasoning parser (vllm/reasoning/step3p5_reasoning_parser.py)
In __init__, read the per-request flag:
chat_kwargs = kwargs.get("chat_template_kwargs", {}) or {}
self.thinking_enabled = chat_kwargs.get("enable_thinking", True)
In extract_reasoning, short-circuit when disabled and no </think> appears:
if self.end_token not in model_output and not self.thinking_enabled:
return None, model_output or None
Streaming needs no change — the empty closed block puts in the prompt, so the serving layer marks reasoning
ended and routes deltas to content automatically.
Use it (either works):
"chat_template_kwargs": {"enable_thinking": false} // explicit off
"reasoning_effort": "none" // also sets enable_thinking=false
"reasoning_effort": "high" // thinking on + effort hint
Unset = thinking on (unchanged default).
Verified to work in vllm wonderfully, full tool calling still works, enable/disable mid chat/work doesn't break. No issues observed that impact performance of the model.
Verified to work in vllm wonderfully, full tool calling still works, enable/disable mid chat/work doesn't break. No issues observed that impact performance of the model.
i set reasoning budget to 0, and have same effect without editing chat template
That's certainly one way, I prefer control via kwargs.
It avoids changes for stacks that already use dynamic thinking control via the chat kwargs, this small change avoids needing to threadif model is step and thinking is disabled and thinking mode is none send reasoning budget 0
or some variant of that into middleware/front end stacks