Model Overview
Model Features
Model Capabilities
Use Cases
🚀 Devstral Small 1.1
Devstral是一款專為軟件工程任務打造的大語言模型(LLM),由Mistral AI和All Hands AI合作開發🙌。它擅長利用工具探索代碼庫、編輯多個文件,為軟件工程智能體提供強大支持。該模型在SWE - bench基準測試中表現卓越,成為此基準測試排名第一的開源模型。
它基於[Mistral - Small - 3.1](https://huggingface.co/mistralai/Mistral - Small - 3.1 - 24B - Base - 2503)進行微調,因此擁有長達128k token的上下文窗口。作為一個純文本的編碼智能體,在從Mistral - Small - 3.1
微調之前,其視覺編碼器已被移除。
對於需要特定功能(如增加上下文、特定領域知識等)的企業,我們將推出超越Mistral AI社區貢獻版本的商業模型。
在我們的[博客文章](https://mistral.ai/news/devstral - 2507)中瞭解更多關於Devstral的信息。
與[Devstral Small 1.0
](https://huggingface.co/mistralai/Devstral - Small - 2505)相比的更新內容:
- 性能提升,請參考基準測試結果。
Devstral Small 1.1
與OpenHands搭配使用時依然出色。這個新版本在處理其他提示和編碼環境時具有更好的泛化能力。- 支持[Mistral的函數調用格式](https://mistralai.github.io/mistral - common/usage/tools/)。
✨ 主要特性
- 智能編碼:Devstral專為智能編碼任務設計,是軟件工程智能體的理想選擇。
- 輕量級:模型僅含240億參數,體積小巧,可在單個RTX 4090或配備32GB內存的Mac上運行,適合本地部署和設備端使用。
- Apache 2.0許可證:開放許可,允許商業和非商業用途的使用與修改。
- 上下文窗口:擁有128k token的上下文窗口。
- 分詞器:使用詞彙量為131k的Tekken分詞器。
📚 詳細文檔
基準測試結果
SWE - Bench
Devstral Small 1.1在SWE - Bench Verified測試中獲得了**53.6%**的分數,比Devstral Small 1.0高出6.8%,比第二好的現有模型高出11.4%。
模型 | 智能體支架 | SWE - Bench Verified (%) |
---|---|---|
Devstral Small 1.1 | OpenHands Scaffold | 53.6 |
Devstral Small 1.0 | OpenHands Scaffold | 46.8 |
GPT - 4.1 - mini | OpenAI Scaffold | 23.6 |
Claude 3.5 Haiku | Anthropic Scaffold | 40.6 |
SWE - smith - LM 32B | SWE - agent Scaffold | 40.2 |
Skywork SWE | OpenHands Scaffold | 38.0 |
DeepSWE | R2E - Gym Scaffold | 42.2 |
在相同的測試支架(OpenHands,由All Hands AI提供🙌)下進行評估時,Devstral遠超Deepseek - V3 - 0324和Qwen3 232B - A22B等更大的模型。
📦 安裝指南
使用建議
我們建議將Devstral與[OpenHands](https://github.com/All - Hands - AI/OpenHands/tree/main)支架結合使用。你可以通過我們的API或本地運行來使用它。
API
按照這些[說明](https://docs.mistral.ai/getting - started/quickstart/#account - setup)創建Mistral賬戶並獲取API密鑰。
然後運行以下命令啟動OpenHands Docker容器:
export MISTRAL_API_KEY=<MY_KEY>
mkdir -p ~/.openhands && echo '{"language":"en","agent":"CodeActAgent","max_iterations":null,"security_analyzer":null,"confirmation_mode":false,"llm_model":"mistral/devstral-small-2507","llm_api_key":"'$MISTRAL_API_KEY'","remote_runtime_resource_factor":null,"github_token":null,"enable_default_condenser":true}' > ~/.openhands - state/settings.json
docker pull docker.all - hands.dev/all - hands - ai/runtime:0.48 - nikolaik
docker run -it --rm --pull = always \
-e SANDBOX_RUNTIME_CONTAINER_IMAGE = docker.all - hands.dev/all - hands - ai/runtime:0.48 - nikolaik \
-e LOG_ALL_EVENTS = true \
-v /var/run/docker.sock:/var/run/docker.sock \
-v ~/.openhands:/.openhands \
-p 3000:3000 \
--add - host host.docker.internal:host - gateway \
--name openhands - app \
docker.all - hands.dev/all - hands - ai/openhands:0.48
本地推理
該模型也可以使用以下庫進行部署:
- [
vllm (推薦)
](https://github.com/vllm - project/vllm):詳見[此處](#vllm - recommended) - [
mistral - inference
](https://github.com/mistralai/mistral - inference):詳見[此處](#mistral - inference) transformers
:詳見此處LMStudio
:詳見此處- [
llama.cpp
](https://github.com/ggml - org/llama.cpp):詳見此處 ollama
:詳見此處
vLLM(推薦)
展開
我們建議使用[vLLM庫](https://github.com/vllm - project/vllm)來實現生產就緒的推理管道。
安裝
確保安裝了[vLLM >= 0.9.1
](https://github.com/vllm - project/vllm/releases/tag/v0.9.1):
pip install vllm --upgrade
同時確保安裝了[mistral_common >= 1.7.0
](https://github.com/mistralai/mistral - common/releases/tag/v1.7.0):
pip install mistral - common --upgrade
檢查版本:
python -c "import mistral_common; print(mistral_common.__version__)"
你也可以使用現成的[Docker鏡像](https://github.com/vllm - project/vllm/blob/main/Dockerfile)或[Docker Hub](https://hub.docker.com/layers/vllm/vllm - openai/latest/images/sha256 - de9032a92ffea7b5c007dad80b38fd44aac11eddc31c435f8e52f3b7404bbf39)上的鏡像。
啟動服務器 我們建議在服務器/客戶端環境中使用Devstral。
- 啟動服務器:
vllm serve mistralai/Devstral - Small - 2507 --tokenizer_mode mistral --config_format mistral --load_format mistral --tool - call - parser mistral --enable - auto - tool - choice --tensor - parallel - size 2
- 你可以使用一個簡單的Python代碼片段來測試客戶端:
import requests
import json
from huggingface_hub import hf_hub_download
url = "http://<your - server - url>:8000/v1/chat/completions"
headers = {"Content - Type": "application/json", "Authorization": "Bearer token"}
model = "mistralai/Devstral - Small - 2507"
def load_system_prompt(repo_id: str, filename: str) -> str:
file_path = hf_hub_download(repo_id = repo_id, filename = filename)
with open(file_path, "r") as file:
system_prompt = file.read()
return system_prompt
SYSTEM_PROMPT = load_system_prompt(model, "SYSTEM_PROMPT.txt")
messages = [
{"role": "system", "content": SYSTEM_PROMPT},
{
"role": "user",
"content": [
{
"type": "text",
"text": "<your - command>",
},
],
},
]
data = {"model": model, "messages": messages, "temperature": 0.15}
# Devstral Small 1.1支持工具調用。如果你想使用工具,請按以下方式操作:
# tools = [ # 為vLLM定義工具
# {
# "type": "function",
# "function": {
# "name": "git_clone",
# "description": "克隆一個git倉庫",
# "parameters": {
# "type": "object",
# "properties": {
# "url": {
# "type": "string",
# "description": "git倉庫的URL",
# },
# },
# "required": ["url"],
# },
# },
# }
# ]
# data = {"model": model, "messages": messages, "temperature": 0.15, "tools": tools} # 將工具傳遞給負載。
response = requests.post(url, headers = headers, data = json.dumps(data))
print(response.json()["choices"][0]["message"]["content"])
Mistral - inference
展開
我們建議使用mistral - inference快速試用Devstral。
安裝 確保安裝了mistral_inference >= 1.6.0:
pip install mistral_inference --upgrade
下載
from huggingface_hub import snapshot_download
from pathlib import Path
mistral_models_path = Path.home().joinpath('mistral_models', 'Devstral')
mistral_models_path.mkdir(parents = True, exist_ok = True)
snapshot_download(repo_id = "mistralai/Devstral - Small - 2507", allow_patterns = ["params.json", "consolidated.safetensors", "tekken.json"], local_dir = mistral_models_path)
聊天 你可以使用以下命令運行模型:
mistral - chat $HOME/mistral_models/Devstral --instruct --max_tokens 300
然後你可以輸入任何你想要的提示。
Transformers
展開
為了充分利用transformers使用我們的模型,請確保安裝了[mistral - common >= 1.7.0
](https://github.com/mistralai/mistral - common)以使用我們的分詞器:
pip install mistral - common --upgrade
然後加載我們的分詞器和模型並生成結果:
import torch
from mistral_common.protocol.instruct.messages import (
SystemMessage, UserMessage
)
from mistral_common.protocol.instruct.request import ChatCompletionRequest
from mistral_common.tokens.tokenizers.mistral import MistralTokenizer
from huggingface_hub import hf_hub_download
from transformers import AutoModelForCausalLM
def load_system_prompt(repo_id: str, filename: str) -> str:
file_path = hf_hub_download(repo_id = repo_id, filename = filename)
with open(file_path, "r") as file:
system_prompt = file.read()
return system_prompt
model_id = "mistralai/Devstral - Small - 2507"
SYSTEM_PROMPT = load_system_prompt(model_id, "SYSTEM_PROMPT.txt")
tokenizer = MistralTokenizer.from_hf_hub(model_id)
model = AutoModelForCausalLM.from_pretrained(model_id)
tokenized = tokenizer.encode_chat_completion(
ChatCompletionRequest(
messages=[
SystemMessage(content = SYSTEM_PROMPT),
UserMessage(content = "<your - command>"),
],
)
)
output = model.generate(
input_ids = torch.tensor([tokenized.tokens]),
max_new_tokens = 1000,
)[0]
decoded_output = tokenizer.decode(output[len(tokenized.tokens):])
print(decoded_output)
LM Studio
展開
從以下任意一處下載權重:
- LM Studio GGUF倉庫(推薦):https://huggingface.co/lmstudio - community/Devstral - Small - 2507 - GGUF
- 我們的GGUF倉庫:https://huggingface.co/mistralai/Devstral - Small - 2507_gguf
pip install -U "huggingface_hub[cli]"
huggingface - cli download \
"lmstudio - community/Devstral - Small - 2507 - GGUF" \ # 或 mistralai/Devstral - Small - 2507_gguf
--include "Devstral - Small - 2507 - Q4_K_M.gguf" \
--local - dir "Devstral - Small - 2507_gguf/"
你可以使用LMStudio在本地部署模型:
- 下載並安裝LM Studio
- 安裝
lms cli ~/.lmstudio/bin/lms bootstrap
- 在bash終端中,在下載模型檢查點的目錄(例如
Devstral - Small - 2507_gguf
)中運行lms import Devstral - Small - 2507 - Q4_K_M.gguf
- 打開LM Studio應用程序,點擊終端圖標進入開發者選項卡。點擊“選擇模型加載”並選擇
Devstral Small 2507
。切換狀態按鈕啟動模型,在設置中切換“在本地網絡上服務”為開啟狀態。 - 在右側選項卡中,你將看到一個API標識符(應為
devstral - small - 2507
)和一個API地址。請記錄此地址,用於OpenHands或Cline。
llama.cpp
展開
從huggingface下載權重:
pip install -U "huggingface_hub[cli]"
huggingface - cli download \
"mistralai/Devstral - Small - 2507_gguf" \
--include "Devstral - Small - 2507 - Q4_K_M.gguf" \
--local - dir "mistralai/Devstral - Small - 2507_gguf/"
然後使用llama.cpp服務器運行Devstral:
./llama - server -m mistralai/Devstral - Small - 2507_gguf/Devstral - Small - 2507 - Q4_K_M.gguf -c 0 # -c配置上下文大小,0表示模型默認值,此處為128k。
OpenHands(推薦)
啟動服務器部署Devstral Small 1.1
確保你已按照上述說明啟動了一個兼容OpenAI的服務器,如vLLM或Ollama。然後,你可以使用OpenHands與Devstral Small 1.1
進行交互。
在本教程中,我們通過以下命令啟動了一個vLLM服務器:
vllm serve mistralai/Devstral - Small - 2507 --tokenizer_mode mistral --config_format mistral --load_format mistral --tool - call - parser mistral --enable - auto - tool - choice --tensor - parallel - size 2
服務器地址應採用以下格式:http://<your - server - url>:8000/v1
啟動OpenHands
你可以按照[此處](https://docs.all - hands.dev/modules/usage/installation)的說明安裝OpenHands。
啟動OpenHands最簡單的方法是使用Docker鏡像:
docker pull docker.all - hands.dev/all - hands - ai/runtime:0.48 - nikolaik
docker run -it --rm --pull = always \
-e SANDBOX_RUNTIME_CONTAINER_IMAGE = docker.all - hands.dev/all - hands - ai/runtime:0.48 - nikolaik \
-e LOG_ALL_EVENTS = true \
-v /var/run/docker.sock:/var/run/docker.sock \
-v ~/.openhands:/.openhands \
-p 3000:3000 \
--add - host host.docker.internal:host - gateway \
--name openhands - app \
docker.all - hands.dev/all - hands - ai/openhands:0.48
然後,你可以在http://localhost:3000
訪問OpenHands用戶界面。
連接到服務器
訪問OpenHands用戶界面時,系統會提示你連接到服務器。你可以使用高級模式連接到之前啟動的服務器。
填寫以下字段:
- 自定義模型:
openai/mistralai/Devstral - Small - 2507
- 基礎URL:
http://<your - server - url>:8000/v1
- API密鑰:
token
(或你啟動服務器時使用的其他任何令牌)
查看設置
Cline
啟動服務器部署Devstral Small 1.1
確保你已按照上述說明啟動了一個兼容OpenAI的服務器,如vLLM或Ollama。然後,你可以使用OpenHands與Devstral Small 1.1
進行交互。
在本教程中,我們通過以下命令啟動了一個vLLM服務器:
vllm serve mistralai/Devstral - Small - 2507 --tokenizer_mode mistral --config_format mistral --load_format mistral --tool - call - parser mistral --enable - auto - tool - choice --tensor - parallel - size 2
服務器地址應採用以下格式:http://<your - server - url>:8000/v1
啟動Cline
你可以按照[此處](https://docs.cline.bot/getting - started/installing - cline)的說明安裝Cline。然後在設置中配置服務器地址。
查看設置
💻 使用示例
OpenHands:瞭解Mistral Common的測試覆蓋率
我們可以啟動OpenHands支架並將其鏈接到一個倉庫,以分析測試覆蓋率並識別覆蓋率較低的文件。這裡我們從公共的mistral - common
倉庫開始。
倉庫掛載到工作區後,我們給出以下指令:
檢查倉庫的測試覆蓋率,然後創建測試覆蓋率的可視化圖表。嘗試繪製幾種不同類型的圖表並保存為png文件。
智能體將首先瀏覽代碼庫以檢查測試配置和結構。
然後它會設置測試依賴項並啟動覆蓋率測試:
最後,智能體編寫必要的代碼來可視化覆蓋率,導出結果並將圖表保存為png文件。
運行結束時,會生成以下圖表:
並且模型能夠解釋結果:
Cline:構建一個視頻遊戲
首先在VSCode中初始化Cline並將其連接到之前啟動的服務器。
我們給出以下指令來構建視頻遊戲:
創建一個將《太空侵略者》和《乒乓》混合的網頁視頻遊戲。
遵循以下說明:
- 有兩名玩家,一名在頂部,一名在底部。玩家控制一個橫杆來反彈球。
- 第一名玩家使用“a”和“d”鍵控制,第二名玩家使用左右箭頭控制。
- 侵略者位於屏幕中央。它們看起來應與《太空侵略者》中的侵略者相同。它們的目標是隨機向玩家射擊。球穿過它們時不會摧毀它們,這意味著侵略者永遠不會死亡。
- 玩家的目標是躲避太空侵略者的射擊,並將球擊向對方玩家的邊緣。
- 球在左右邊緣反彈。
- 一旦球觸及玩家的邊緣,該玩家失敗。
- 一旦玩家被射擊擊中3次或更多次,該玩家失敗。
- 最後存活的玩家獲勝。
- 在用戶界面上顯示玩家擊球的次數和剩餘生命值。
智能體將首先創建遊戲:
然後它會解釋如何啟動遊戲:
最後,遊戲即可開始玩:
不要猶豫對Devstral進行迭代或提供更多信息以改進遊戲!
📄 許可證
本項目採用Apache - 2.0許可證。
實驗性FP8 W8A8量化
由stelterlab使用llm - compressor(版本0.6.1.dev25 + g70f93d32.d20250709)完成的實驗性FP8 W8A8量化。
⚠️ 重要提示
官方的v0.9.1/v0.9.2容器對我來說無法正常工作 - 我使用的是直接通過pip install安裝的版本。
原始模型卡片如下:
--- cut ---



