
Ling-3.0-flash-Sante is now open source
🤗 Hugging Face | 🤖 ModelScope | 🐙 Vercel
以下正文同步自 Hacker News 最新,版权归原站所有,已转换为易读排版。
Like 9
Follow
inclusionAI 3.32k
Text Generation
Safetensors
bailing_hybrid
conversational
custom_code
License: mit
Model card Files Files and versions xet
Community
Copy to bucket new
Introduction
Highlights
Evaluation
Quickstart SGLang
vLLM
Intended Use
Limitations and Responsible Use
🤗 Hugging Face | 🤖 ModelScope | 🐙 Vercel
Introduction
Ling-3.0-flash-Sante is our healthcare-specialized model built on Ling-3.0-flash. Its name comes from the French word santé, meaning “health.”
With 124B total parameters and 5.1B active parameters per token, Sante is designed for medical reasoning, healthcare research, deep research, and tool-assisted workflows while retaining the general capabilities of Ling-3.0-flash. Model weights are available on Hugging Face and ModelScope.
Important: Ling-3.0-flash-Sante is a research model, not a medical device. Its outputs may be incomplete or incorrect and must not be used as a substitute for professional medical advice, diagnosis, or treatment. High-stakes use requires qualified human review, independent verification, and compliance with applicable privacy, security, and healthcare regulations.
Highlights
Strong healthcare capabilities: Sante performs well across professional healthcare tasks, complex medical reasoning, medical knowledge, and healthcare safety benchmarks.
Efficient at scale: Its hybrid-linear MoE architecture combines Kimi Delta Attention (KDA), gated MLA, and sparse MoE layers, activating 5.1B of 124B parameters per token.
Built for long contexts: Training extends to 256K tokens, supporting long-document analysis, evidence synthesis, and multi-step research.
Beyond medical QA: Sante is designed for deep research, tool-assisted workflows, and multi-agent collaboration as well as question answering.
Native reasoning and tool use: Thinking mode is enabled by default, with tool calling supported through compatible serving frameworks.
Evaluation
We evaluate Ling-3.0-flash-Sante across professional healthcare tasks, medical knowledge and safety, complex reasoning, deep research, multi-agent collaboration, and tool-assisted agent benchmarks. The table below summarizes the results shown in the evaluation figure.
Quickstart
The official model identifier is inclusionAI/Ling-3.0-flash-Sante.
SGLang
Use the Ling-3.0-compatible SGLang image:
docker pull lmsysorg/sglang:dev-Ling-3.0-flash
The following example launches an OpenAI-compatible server with a 256K context window on four 141GB-class GPUs or a compatible four-GPU Blackwell node:
docker run --rm --gpus all --ipc=host --shm-size 32g
-p 30000:30000
-e HF_TOKEN=<your-hf-token>
lmsysorg/sglang:dev-Ling-3.0-flash
env SGLANG_ALLOW_OVERWRITE_LONGER_CONTEXT_LEN=1
python3 -m sglang.launch_server
--model-path inclusionAI/Ling-3.0-flash-Sante
--tp 4
--context-length 262144
--speculative-algorithm NEXTN
--mem-fraction-static 0.8
--host 0.0.0.0
--port 30000
On 80GB GPUs such as H100 or H800, use --tp 8 with the same core settings.
Send a request with the OpenAI-compatible API:
curl -s http://localhost:30000/v1/chat/completions
-H "Content-Type: application/json"
-d '{
"model": "inclusionAI/Ling-3.0-flash-Sante",
"messages": [
{
"role": "user",
"content": "Summarize the evidence in this clinical abstract and identify its primary endpoint."
}
],
"stream": true,
"temperature": 0.6,
"top_k": 20,
"top_p": 0.95
}'
Thinking is enabled by default through the chat template. To disable it for an individual request, set:
{"chat_template_kwargs": {"enable_thinking": false}}
vLLM
Install a current vLLM build with Ling-3.0 support:
pip install uv uv venv ~/my_ling_env source ~/my_ling_env/bin/activate
git clone https://github.com/vllm-project/vllm.git cd vllm VLLM_USE_PRECOMPILED=1 uv pip install --editable . --torch-backend=auto
Launch the model server. MTP is recommended for lower latency:
vllm serve inclusionAI/Ling-3.0-flash-Sante
--port "$PORT"
--trust-remote-code
--served-model-name ling-3.0-flash-sante
--tensor-parallel-size 4
--gpu-memory-utilization 0.85
--enable-prefix-caching
--mamba-cache-mode align
--enable-auto-tool-choice
--tool-call-parser ling3
--reasoning-parser ling3
--speculative-config '{"method":"mtp","num_speculative_tokens":3}'
Example client request:
curl -s http://${MASTER_IP}:${PORT}/v1/chat/completions
-H "Content-Type: application/json"
-d '{
"model": "ling-3.0-flash-sante",
"messages": [
{
"role": "user",
"content": "Compare the inclusion criteria across these two study protocols."
}
],
"chat_template_kwargs": {"enable_thinking": true},
"stream": true,
"temperature": 0.6,
"top_k": 20,
"top_p": 0.95
}'
Intended Use
Ling-3.0-flash-Sante is intended for research and development scenarios such as:
Limitations and Responsible Use
The model can produce hallucinated, outdated, incomplete, or unsafe medical information.
It must not independently diagnose, prescribe, triage, or make treatment decisions.
Outputs for clinical or other high-stakes use require review by qualified professionals and verification against authoritative sources.
Users are responsible for protecting personal health information and complying with applicable privacy, data-governance, security, and medical-device requirements.
Performance can vary across languages, specialties, populations, institutions, and deployment configurations. Benchmark results do not guarantee real-world clinical performance.
Tool access and multi-agent execution introduce additional risks. Use least-privilege credentials, auditable actions, and human approval for consequential operations.
Downloads last month 5
","cls_token":"[CLS]","eos_token":"<|role_end|>","pad_token":"<|endoftext|>"},"chat_template_jinja":"{#- Bailing V3 chat template -#}\n{#- Supports: thinking option, tool calling -#}\n\n{#- ==================== thinking option normalization ==================== -#}\n{%- if enable_thinking is defined %}\n {%- if enable_thinking %}\n {%- set thinking_option = 'on' %}\n {%- else %}\n {%- set thinking_option = 'off' %}\n {%- endif %}\n{%- elif thinking_option is not defined %}\n {%- set thinking_option = 'on' %}\n{%- endif %}\n\n{#- ==================== preserved thinking ==================== -#}\n{% set preserved_thinking = true %}\n\n{#- ==================== system message ==================== -#}\n{{- '<role>SYSTEM</role>' }}\n{%- if tools %}\n {%- if messages[0].role == 'system' %}\n {{- messages[0].content + '\n' }}\n {%- endif %}\n {{- "# Tools\n\nYou may call one or more functions to assist with the user query.\n\nYou are provided with function signatures within <tools></tools> XML tags:\n<tools>" }}\n {%- for tool in tools %}\n {{- "\n" }}\n {{- tool | tojson }}\n {%- endfor %}\n {{- "\n</tools>\n\nIf none of the functions can be used, point it out. If the given question lacks the parameters required by the function, also point it out.\nIf you need to use a function, for each function call, output the function name and arguments within the following XML format:\n<tool_call>{function-name}\n<arg_key>{arg-key-1}</arg_key>\n<arg_value>{arg-value-1}</arg_value>\n<arg_key>{arg-key-2}</arg_key>\n<arg_value>{arg-value-2}</arg_value>\n...\n</tool_call>\n" }}\n {%- if messages[0].role == 'system' and messages[0].content is string and ('detailed thinking on' in messages[0].content or 'detailed thinking off' in messages[0].content) %}\n {{- '<|role_end|>' }}\n {%- else %}\n {{- 'detailed thinking ' + thinking_option + '<|role_end|>' }}\n {%- endif %}\n{%- else %}\n {%- if messages[0].role == 'system' %}\n {%- if 'detailed thinking on' in messages[0].content or 'detailed thinking off' in messages[0].content %}\n {{- messages[0].content + '<|role_end|>' }}\n {%- else %}\n {{- messages[0].content + '\n' }}\n {{- 'detailed thinking ' + thinking_option + '<|role_end|>' }}\n {%- endif %}\n {% else %}\n {{- 'detailed thinking ' + thinking_option + '<|role_end|>' }}\n {%- endif %}\n{%- endif %}\n{%- set ns = namespace(multi_step_tool=true, last_query_index=messages|length - 1) %}\n{%- for message in messages[::-1] %}\n {%- set index = (messages|length - 1) - loop.index0 %}\n {%- if ns.multi_step_tool and message.role == "user" and message.content is string and not(message.content.startswith('<tool_response>') and message.content.endswith('</tool_response>')) %}\n {%- set ns.multi_step_tool = false %}\n {%- set ns.last_query_index = index %}\n {%- endif %}\n{%- endfor %}\n{%- for message in messages %}\n {%- if message.content is string %}\n {%- set content = message.content %}\n {%- else %}\n {%- set content = '' %}\n {%- endif %}\n {%- if message.role == "user" %}\n {{- '<role>HUMAN</role>' + message.content + '<|role_end|>' }}\n {%- elif message.role == "system" and not loop.first %}\n {{- '<role>SYSTEM</role>' + message.content + '<|role_end|>' }}\n {%- elif message.role == "assistant" %}\n {%- set reasoning_content = '' %}\n {%- if message.reasoning_content is string and message.reasoning_content != '' %}\n {%- set reasoning_content = message.reasoning_content %}\n {%- else %}\n {%- if '</think>' in content %}\n {%- set reasoning_content = content.split('</think>')[0].rstrip('\n').split('<think>')[-1].lstrip('\n') %}\n {%- set content = content.split('</think>')[-1].lstrip('\n') %}\n {%- endif %}\n {%- endif %}\n {%- if preserved_thinking or loop.index0 > ns.last_query_index %}\n {%- if reasoning_content != '' %}\n {{- '<role>ASSISTANT</role>' + '\n<think>' + reasoning_content.strip('\n') + '</think>' + content.lstrip('\n') }}\n {%- else %}\n {{- '<role>ASSISTANT</role>\n<think></think>' + content }}\n {%- endif %}\n {%- else %}\n {{- '<role>ASSISTANT</role>\n<think></think>' + content }}\n {%- endif %}\n {%- if message.tool_calls %}\n {%- for tool_call in message.tool_calls %}\n {%- if (loop.first and content) or (not loop.first) %}\n {{- '\n' }}\n {%- endif %}\n {%- set tc = tool_call %}\n {%- if tool_call.function %}\n {%- set tc = tool_call.function %}\n {%- endif %}\n {{- '<tool_call>' + tc.name }}\n {% set _args = tc.arguments %}\n {%- for k, v in _args.items() %}\n {{- '<arg_key>' + k + '</arg_key>' }}\n {{- '\n<arg_value>' }}\n {%- if v is string %}\n {{- v }}\n {%- else %}\n {{- v | tojson(ensure_ascii=False) }}\n {%- endif %}\n {{- '</arg_value>' }}\n {%- endfor %}\n {{- '\n</tool_call>' }}\n {%- endfor %}\n {%- endif %}\n {{- '<|role_end|>' }}\n {%- elif message.role == "tool" %}\n {%- if loop.first or (messages[loop.index0 - 1].role != "tool") %}\n {{- '<role>OBSERVATION</role>' }}\n {%- endif %}\n {{- '\n<tool_response>\n' }}\n {{- content }}\n {{- '\n</tool_response>' }}\n {%- if loop.last or (messages[loop.index0 + 1].role != "tool") %}\n {{- '<|role_end|>' }}\n {%- endif %}\n {%- endif %}\n{%- endfor %}\n\n{#- ==================== generation prompt ==================== -#}\n{%- if add_generation_prompt %}\n {{- '<role>ASSISTANT</role>' }}\n {%- if thinking_option == 'on' %}\n {{- '\n<think>' }}\n {%- elif thinking_option == 'off' %}\n {{- '\n<think></think>' }}\n {%- endif %}\n{%- endif %}"},"createdAt":"2026-10-19T17:30:04.000Z","discussionsDisabled":false,"discussionsSorting":"recently-created","downloads":5,"downloadsAllTime":5,"id":"inclusionAI/Ling-3.0-flash-Sante","isLikedByUser":false,"availableInferenceProviders":[],"showHuggingChatEntry":false,"inference":"","lastModified":"2026-10-22T14:53:04.000Z","likes":9,"pipeline_tag":"text-generation","librariesOther":[],"trackDownloads":true,"model-index":null,"private":false,"repoType":"model","gated":false,"tags":["safetensors","bailing_hybrid","text-generation","conversational","custom_code","license:mit","region:us"],"tag_objs":[{"id":"text-generation","label":"Text Generation","type":"pipeline_tag","sub
正文由 探How 从来源站点 RSS 同步,内容未经改写;遇到排版缺失或需要图片、视频时请以原文为准。