模型概述
模型特點
模型能力
使用案例
🚀 Devstral Small 1.1
Devstral 1.1是一款專為軟件工程任務打造的大語言模型,支持工具調用,還可選擇啟用視覺功能。它能借助工具高效探索代碼庫、編輯多文件,為軟件工程代理提供強大助力。
支持語言
- 英語、法語、德語、西班牙語、葡萄牙語、意大利語、日語、韓語、俄語、中文、阿拉伯語、波斯語、印尼語、馬來語、尼泊爾語、波蘭語、羅馬尼亞語、塞爾維亞語、瑞典語、土耳其語、烏克蘭語、越南語、印地語、孟加拉語
許可證
本項目採用Apache-2.0許可證。
相關信息
- 庫名稱:vllm
- 推理功能:關閉
- 基礎模型:
- mistralai/Devstral-Small-2507
- mistralai/Mistral-Small-3.1-24B-Instruct-2503
- 任務類型:文本生成
重要提示
在llama.cpp
中,你需要使用--jinja
來啟用系統提示。
相關鏈接
免費微調與更多資源
- 免費微調:使用我們的Google Colab筆記本免費微調Mistral v0.3 (7B)。
- 博客文章:瞭解Devstral 1.1支持詳情
- 其他筆記本:查看更多
✨ 主要特性
- 智能編碼:專為智能編碼任務設計,是軟件工程代理的理想選擇。
- 輕量級:僅240億參數,可在單張RTX 4090或32GB RAM的Mac上運行,適合本地部署和設備端使用。
- 開源許可:採用Apache 2.0許可證,商業和非商業用途均可使用和修改。
- 上下文窗口:支持128k上下文窗口。
- 分詞器:使用Tekken分詞器,詞彙量達131k。
📦 安裝指南
API使用
- 創建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(推薦):點擊查看詳情
- mistral-inference:點擊查看詳情
- transformers:點擊查看詳情
- LMStudio:點擊查看詳情
- llama.cpp:點擊查看詳情
- ollama:點擊查看詳情
vLLM(推薦)
展開查看
我們推薦使用vLLM庫實現生產級推理管道。
安裝:
確保安裝vLLM >= 0.9.1
和mistral_common >= 1.7.0
:
pip install vllm --upgrade
pip install mistral-common --upgrade
檢查安裝:
python -c "import mistral_common; print(mistral_common.__version__)"
你也可以使用Docker鏡像或Docker Hub上的鏡像。
啟動服務器: 建議在服務器/客戶端模式下使用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
以使用我們的分詞器:
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
展開查看
從以下地址下載模型權重:
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終端中,進入模型權重下載目錄,運行
lms import Devstral-Small-2507-Q4_K_M.gguf
。 - 打開LM Studio應用,點擊終端圖標進入開發者模式。選擇加載模型
Devstral Small 2507
,切換狀態按鈕啟動模型,在設置中開啟“在本地網絡上服務”。 - 記錄右側標籤中的API標識符(
devstral-small-2507
)和API地址,供OpenHands或Cline使用。
llama.cpp
展開查看
從Hugging Face下載模型權重:
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
按照安裝指南安裝OpenHands。
使用Docker鏡像啟動OpenHands:
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 UI。
連接服務器
訪問OpenHands UI時,會提示連接服務器。可使用高級模式連接之前啟動的服務器,填寫以下字段:
- 自定義模型:
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
按照安裝指南安裝Cline,然後在設置中配置服務器地址。
查看設置
💻 使用示例
OpenHands:分析Mistral Common測試覆蓋率
啟動OpenHands腳手架並關聯倉庫,分析測試覆蓋率並找出覆蓋不足的文件。以公共mistral-common
倉庫為例:
掛載倉庫到工作區後,輸入以下指令:
檢查倉庫的測試覆蓋率,然後創建測試覆蓋率可視化圖表。嘗試繪製幾種不同類型的圖表,並保存為png文件。
代理將首先瀏覽代碼庫,檢查測試配置和結構:
然後設置測試依賴並啟動覆蓋率測試:
最後,代理編寫代碼可視化覆蓋率,導出結果並保存圖表為png文件:
運行結束後,將生成以下圖表:
模型還能解釋結果:
Cline:開發視頻遊戲
在VSCode中初始化Cline並連接到之前啟動的服務器,輸入以下指令開發視頻遊戲:
創建一個融合了《太空侵略者》和《乒乓》的網頁視頻遊戲。
遵循以下規則:
- 有兩名玩家,分別位於屏幕頂部和底部,通過控制橫杆反彈球。
- 第一名玩家使用“a”和“d”鍵控制,第二名玩家使用左右箭頭鍵控制。
- 侵略者位於屏幕中央,外觀類似《太空侵略者》中的侵略者。它們會隨機向玩家射擊,且不會被球摧毀。
- 玩家的目標是躲避侵略者的射擊,並將球擊向對方邊緣。
- 球在左右邊緣反彈。
- 球碰到玩家邊緣,該玩家失敗。
- 玩家被射擊3次或更多次,該玩家失敗。
- 最後存活的玩家獲勝。
- 在UI上顯示玩家擊球次數和剩餘生命值。
代理將首先創建遊戲:
📚 詳細文檔
模型介紹
Devstral是由Mistral AI和All Hands AI合作開發的大語言模型,在軟件工程任務中表現出色。它基於Mistral-Small-3.1微調而來,擁有128k的長上下文窗口。作為編碼代理,Devstral僅處理文本,在微調前移除了視覺編碼器。
對於有特殊需求(如增加上下文、特定領域知識等)的企業,我們將推出超越Mistral AI社區貢獻的商業模型。
更新內容
與Devstral Small 1.0
相比,Devstral Small 1.1
有以下更新:
- 性能提升:具體請參考基準測試結果。
- 泛化能力增強:與OpenHands配合使用時依然出色,新版本在其他提示和編碼環境中的泛化能力更強。
- 支持函數調用:支持Mistral的函數調用格式。
🔧 技術細節
基準測試結果
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等更大的模型。
📄 許可證
本項目採用Apache-2.0許可證,允許商業和非商業用途的使用和修改。



