Instructions to use UCSC-VLAA/ClinSeek-35B-A3B with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use UCSC-VLAA/ClinSeek-35B-A3B with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("text-generation", model="UCSC-VLAA/ClinSeek-35B-A3B") 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)# pip install -U transformers accelerate # Load model directly from transformers import AutoProcessor, AutoModelForMultimodalLM processor = AutoProcessor.from_pretrained("UCSC-VLAA/ClinSeek-35B-A3B") model = AutoModelForMultimodalLM.from_pretrained("UCSC-VLAA/ClinSeek-35B-A3B", device_map="auto") 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?"} ] }, ] inputs = processor.apply_chat_template( messages, add_generation_prompt=True, tokenize=True, return_dict=True, return_tensors="pt", ).to(model.device) outputs = model.generate(**inputs, max_new_tokens=256) print(processor.decode(outputs[0][inputs["input_ids"].shape[-1]:])) - Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- vLLM
How to use UCSC-VLAA/ClinSeek-35B-A3B with vLLM:
Install from pip and serve model
# Install vLLM from pip: pip install vllm # Start the vLLM server: vllm serve "UCSC-VLAA/ClinSeek-35B-A3B" # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:8000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "UCSC-VLAA/ClinSeek-35B-A3B", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }'Use Docker
docker model run hf.co/UCSC-VLAA/ClinSeek-35B-A3B
- SGLang
How to use UCSC-VLAA/ClinSeek-35B-A3B 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 "UCSC-VLAA/ClinSeek-35B-A3B" \ --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": "UCSC-VLAA/ClinSeek-35B-A3B", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }'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 "UCSC-VLAA/ClinSeek-35B-A3B" \ --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": "UCSC-VLAA/ClinSeek-35B-A3B", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }' - Docker Model Runner
How to use UCSC-VLAA/ClinSeek-35B-A3B with Docker Model Runner:
docker model run hf.co/UCSC-VLAA/ClinSeek-35B-A3B
ClinSeek-35B-A3B
ClinSeek-35B-A3B is the open-source model of
ClinSeekAgent: Automating Multimodal Evidence Seeking for Agentic Clinical
Reasoning. It is
Qwen/Qwen3.5-35B-A3B fine-tuned on ClinSeekAgent trajectories generated by
GPT-5.6 Sol.
In ClinSeekAgent, evidence is not handed to the model in a curated prompt. The agent receives the task, the patient identifier, and the prediction time, and retrieves patient-specific evidence from the raw EHR with tools before answering. ClinSeek-35B-A3B learns this multi-round evidence-seeking process: it reasons in its native thinking block and acts through native tool calls.
On AgentEHR-Bench, ClinSeek-35B-A3B reaches 35.6 average F1 (+16.1 over its base model), outperforming all evaluated open-source models, including Qwen3.5-397B-A17B, as well as Claude Opus 5, and reaching 92% of its teacher.
Evaluation uses the questions and labels of AgentEHR-Bench but runs them through ClinSeekAgent's own tool interface and strict temporal runtime view, on a fixed sample of 100 questions for each of five tasks. The scores below may therefore differ from those reported in the AgentEHR paper and are best compared within this table.
Release information
| Item | Value |
|---|---|
| Base model | Qwen/Qwen3.5-35B-A3B |
| Teacher model | GPT-5.6 Sol (reasoning effort high) |
| Training method | Full-parameter supervised fine-tuning |
| Checkpoint | End of epoch 2 (lowest validation loss) |
| Architecture | Qwen3_5MoeForConditionalGeneration, bf16, 14 shards |
| Paper | https://arxiv.org/abs/2605.20176 |
| Code | https://github.com/UCSC-VLAA/ClinSeekAgent |
| Benchmark metadata | https://huggingface.co/datasets/UCSC-VLAA/ClinSeek-Bench |
| Project page | https://ucsc-vlaa.github.io/ClinSeekAgent/ |
The weights on main are the checkpoint reported in the revised paper (arXiv
v2). The checkpoint released with arXiv v1 (May 2026) is kept under the
v1 tag.
Training data
GPT-5.6 Sol runs ClinSeekAgent with the 16 EHR tools and the strict temporal policy on the 3,000 questions of the AgentEHR-Bench training split, which cover six tasks (diagnoses, procedures, laboratory tests, microbiology tests, prescriptions, and transfers). We keep the 2,947 trajectories that end with an answer and drop those longer than 52K tokens, leaving 2,681, split at random into 2,628 for training and 53 for validation. None of the evaluation questions appears in the training data.
During data generation the teacher records its reasoning with a think tool
before each action. For training, this reasoning is moved into the student's
native thinking block of the following turn, so the student reasons in its
thinking channel instead of calling the tool. Tool calls are rendered in the
Qwen3.5 native tool-call format. The loss is computed on assistant tokens only
(reasoning, tool calls, and the final answer).
The trajectories are not released: they contain records from credentialed clinical datasets.
Training configuration
| Component | Configuration |
|---|---|
| Training / validation size | 2,628 / 53 trajectories |
| Maximum sequence length | 52,000 tokens |
| Epochs | 3 (checkpoint after epoch 2 released) |
| Global / micro batch size | 32 / 1 per GPU |
| Optimizer | Adam (β1 = 0.9, β2 = 0.999); optimizer states offloaded to CPU |
| Learning rate | 2e-5, cosine decay to 2e-6, 10 warmup steps |
| Weight decay / gradient clipping | 0.1 / 1.0 |
| MoE auxiliary loss / z-loss | 0.01 / 0.001 |
| Precision | bfloat16; fp32 optimizer states |
| Backend | verl + Megatron + mbridge |
| Hardware | 2 × H200 |
| Parallelism | tensor 2, expert 2, pipeline 1, context 1 |
| Activation recomputation | Full |
| Random seed | 42 |
Evaluation
AgentEHR-Bench test split, 100 questions per task, F1 (%). All models run ClinSeekAgent with the same tools, temporal policy, and inference settings. The base and fine-tuned models are served locally with identical decoding settings.
| Model | Diagnoses | Labs | Microbiology | Procedures | Transfers | Avg. |
|---|---|---|---|---|---|---|
| Closed-source | ||||||
| GPT-5.6 Sol (teacher) | 47.0 | 43.1 | 31.1 | 45.5 | 27.3 | 38.8 |
| GPT-5.6 Luna | 43.7 | 37.8 | 24.8 | 37.9 | 24.9 | 33.8 |
| Claude Opus 4.6 | 51.1 | 42.1 | 25.4 | 28.7 | 18.6 | 33.2 |
| Claude Sonnet 4.6 | 49.5 | 36.8 | 22.9 | 25.9 | 24.5 | 31.9 |
| Claude Opus 5 | 48.0 | 44.5 | 23.2 | 20.5 | 22.0 | 31.6 |
| Open-source | ||||||
| Qwen3.5-397B-A17B | 38.4 | 30.9 | 21.2 | 26.2 | 23.7 | 28.1 |
| MiniMax M2.7 | 39.4 | 22.3 | 22.1 | 32.0 | 22.9 | 27.7 |
| Kimi K2.6 | 42.8 | 20.2 | 18.5 | 24.6 | 23.3 | 25.9 |
| GLM-5.2 | 43.8 | 20.4 | 16.0 | 24.0 | 20.4 | 24.9 |
| Qwen3.5-122B-A10B | 32.6 | 23.7 | 21.6 | 23.8 | 20.5 | 24.4 |
| Nemotron 3 Super | 29.5 | 27.5 | 23.1 | 24.9 | 13.3 | 23.7 |
| Qwen3.5-35B-A3B (base) | 28.4 | 16.5 | 19.5 | 17.9 | 15.1 | 19.5 |
| ClinSeek-35B-A3B | 41.7 | 40.4 | 27.1 | 41.3 | 27.4 | 35.6 |
| Δ vs. base | +13.3 | +23.9 | +7.6 | +23.4 | +12.3 | +16.1 |
Every gain over the base model is significant under a paired bootstrap (95% CI).
Compared with its base model on the same 500 questions, ClinSeek-35B-A3B improves both precision (18.6 → 32.4) and recall (31.1 → 53.3). It writes SQL with joins, aggregation, or time filters in 53% of the questions (base: 0.8%), reads 72% of the available tables (base: 36%), and reads imaging or discharge notes in 74% of the questions (base: 12%).
Usage
ClinSeek-35B-A3B is an agent model: it expects the ClinSeekAgent EHR tools and a multi-turn tool loop. Use the ClinSeekAgent repository, which provides the EHR MCP server, tool schemas, prompts, the AgentEHR-Bench and ClinSeek-Bench runners, and scoring.
Serving with vLLM
The paper's evaluation served the model with vLLM 0.28.1 as follows
(scripts/run_vllm_server.sh in the repository applies the same flags):
vllm serve UCSC-VLAA/ClinSeek-35B-A3B \
--served-model-name ClinSeek-35B-A3B \
--max-model-len 196608 \
--reasoning-parser qwen3 \
--enable-auto-tool-choice \
--tool-call-parser qwen3_coder \
--language-model-only
Inference settings used in the paper: thinking enabled with a 4,096-token budget, temperature 0, at most 8,192 output tokens per call, tool results truncated to 100,000 characters, and at most 200 rounds per question.
The model was trained with an EHR-only tool space (no web browsing). Do not
add an instruction to call ehr.think: the model reasons in its thinking
block instead.
Loading with transformers
import torch
from transformers import AutoModelForImageTextToText, AutoTokenizer
model_id = "UCSC-VLAA/ClinSeek-35B-A3B"
tokenizer = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForImageTextToText.from_pretrained(
model_id, dtype=torch.bfloat16, device_map="auto"
)
The checkpoint keeps the Qwen3.5 architecture
(Qwen3_5MoeForConditionalGeneration); ClinSeek-35B-A3B was trained and
evaluated on text only.
Limitations and responsible use
- The model was trained on trajectories over MIMIC-IV-derived patient records (PhysioNet credentialed data). Users must comply with the PhysioNet data-use agreement and must not attempt to recover patient-level information.
- It was trained on AgentEHR-Bench tasks only; performance on other clinical tasks is not established.
- It is a research model, not a medical device. Its outputs must not be used for clinical diagnosis, treatment, triage, or patient management.
Acknowledgements
We thank Yusheng Liao and Chaoyi Wu for their work on EHR-R1 / EHR-Bench and AgentEHR-Bench, which this project builds on, and for their help in checking the data details of our benchmark and evaluation.
Citation
@misc{wu2026clinseekagent,
title = {ClinSeekAgent: Automating Multimodal Evidence Seeking for Agentic Clinical Reasoning},
author = {Wu, Juncheng and Zhang, Letian and Wang, Yuhan and Tu, Haoqin and Chen, Hardy and Wang, Zijun and Xie, Cihang and He, Yufan and Zhao, Can and Xu, Daguang and Tang, Yucheng and Zhou, Yuyin},
year = {2026},
eprint = {2605.20176},
archivePrefix = {arXiv},
primaryClass = {cs.CL},
url = {https://arxiv.org/abs/2605.20176}
}
Please also cite AgentEHR-Bench, MIMIC-IV, and Qwen3.5 where applicable.
- Downloads last month
- 384
Model tree for UCSC-VLAA/ClinSeek-35B-A3B
Collection including UCSC-VLAA/ClinSeek-35B-A3B
Paper for UCSC-VLAA/ClinSeek-35B-A3B
Evaluation results
- Average F1 on AgentEHR-Bench (test, 100 questions per task)self-reported35.600