モデル概要
モデル特徴
モデル能力
使用事例
🚀 Devstral-Small-2505
Devstralは、Mistral AI と All Hands AI が共同で開発した、ソフトウェアエンジニアリングタスク向けのエージェント型大規模言語モデル(LLM)です🙌。Devstralは、コードベースの探索、複数ファイルの編集、ソフトウェアエンジニアリングエージェントの強化などのタスクで優れた性能を発揮します。このモデルは、SWE-benchで顕著な性能を達成しており、このベンチマークにおいてオープンソースモデルの中で1位にランクインしています。
Devstralは、Mistral-Small-3.1 をファインチューニングして作成されているため、最大128kトークンの長いコンテキストウィンドウを持っています。コーディングエージェントとして、Devstralはテキストのみを扱い、Mistral-Small-3.1
からのファインチューニングの前に、ビジョンエンコーダーは削除されています。
特殊な機能(コンテキストの拡張、ドメイン固有の知識など)を必要とする企業向けに、Mistral AIがコミュニティに提供するもの以上の商用モデルをリリースする予定です。
ブログ記事 でDevstralの詳細を学ぶことができます。
✨ 主な機能
- エージェント型コーディング:Devstralは、エージェント型コーディングタスクで優れた性能を発揮するように設計されており、ソフトウェアエンジニアリングエージェントに最適です。
- 軽量:わずか240億パラメータのコンパクトなサイズで、単一のRTX 4090または32GB RAMのMacでも実行できるため、ローカルデプロイやデバイス上での使用に適しています。
- Apache 2.0ライセンス:商用および非商用目的での使用と変更が許可されるオープンライセンスです。
- コンテキストウィンドウ:最大128kトークンのコンテキストウィンドウを持っています。
- トークナイザー:語彙サイズが131kのTekkenトークナイザーを使用しています。
📚 ドキュメント
🔍 ベンチマーク結果
SWE-Bench
Devstralは、SWE-Bench Verifiedで46.8%のスコアを達成し、従来のオープンソースの最先端モデルを6%上回っています。
モデル | スキャフォールド | SWE-Bench Verified (%) |
---|---|---|
Devstral | 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 |
同じテストスキャフォールド(All Hands AIによるOpenHands🙌)で評価した場合、DevstralはDeepseek-V3-0324やQwen3 232B-A22Bなどのはるかに大きなモデルを上回っています。
💻 使用例
推奨環境
OpenHands スキャフォールドを使用してDevstralを利用することをおすすめします。APIを通じて、またはローカルで実行することができます。
API
こちらの手順 に従って、Mistralアカウントを作成し、APIキーを取得してください。
次に、以下のコマンドを実行して、OpenHandsのDockerコンテナを起動します。
export MISTRAL_API_KEY=<MY_KEY>
docker pull docker.all-hands.dev/all-hands-ai/runtime:0.39-nikolaik
mkdir -p ~/.openhands-state && echo '{"language":"en","agent":"CodeActAgent","max_iterations":null,"security_analyzer":null,"confirmation_mode":false,"llm_model":"mistral/devstral-small-2505","llm_api_key":"'$MISTRAL_API_KEY'","remote_runtime_resource_factor":null,"github_token":null,"enable_default_condenser":true}' > ~/.openhands-state/settings.json
docker run -it --rm --pull=always \
-e SANDBOX_RUNTIME_CONTAINER_IMAGE=docker.all-hands.dev/all-hands-ai/runtime:0.39-nikolaik \
-e LOG_ALL_EVENTS=true \
-v /var/run/docker.sock:/var/run/docker.sock \
-v ~/.openhands-state:/.openhands-state \
-p 3000:3000 \
--add-host host.docker.internal:host-gateway \
--name openhands-app \
docker.all-hands.dev/all-hands-ai/openhands:0.39
ローカル推論
このモデルは、以下のライブラリを使用してデプロイすることもできます。
vllm (推奨)
:こちら を参照mistral-inference
:こちら を参照transformers
:こちら を参照LMStudio
:こちら を参照ollama
:こちら を参照
OpenHands (推奨)
Devstral-Small-2505をデプロイするサーバーを起動する
前述のように、vLLMやOllamaなどのOpenAI互換サーバーを起動してください。その後、OpenHandsを使用して Devstral-Small-2505
とやり取りすることができます。
チュートリアルでは、以下のコマンドを実行してvLLMサーバーを起動します。
vllm serve mistralai/Devstral-Small-2505 --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のインストール方法はこちら を参照してください。
OpenHandsを起動する最も簡単な方法は、Dockerイメージを使用することです。
docker pull docker.all-hands.dev/all-hands-ai/runtime:0.38-nikolaik
docker run -it --rm --pull=always \
-e SANDBOX_RUNTIME_CONTAINER_IMAGE=docker.all-hands.dev/all-hands-ai/runtime:0.38-nikolaik \
-e LOG_ALL_EVENTS=true \
-v /var/run/docker.sock:/var/run/docker.sock \
-v ~/.openhands-state:/.openhands-state \
-p 3000:3000 \
--add-host host.docker.internal:host-gateway \
--name openhands-app \
docker.all-hands.dev/all-hands-ai/openhands:0.38
その後、http://localhost:3000
でOpenHandsのUIにアクセスすることができます。
サーバーに接続する
OpenHandsのUIにアクセスすると、サーバーに接続するように促されます。詳細モードを使用して、先に起動したサーバーに接続することができます。
以下のフィールドを入力してください。
- カスタムモデル:
openai/mistralai/Devstral-Small-2505
- ベースURL:
http://<your-server-url>:8000/v1
- APIキー:
token
(またはサーバーを起動する際に使用したトークン)
Devstralを使用したOpenHandsの利用
これで、OpenHands内でDevstral Smallを使用して 新しい会話を開始 することができます。To-Doリストアプリを作成してみましょう。
To-Doリストアプリ
- Devstralに以下のプロンプトでアプリを生成するように依頼しましょう。
以下の要件を満たすTo-Doリストアプリを作成してください。
- FastAPIとReactを使用して構築します。
- 1ページアプリにして、以下のことができるようにします。
- タスクを追加することができます。
- タスクを削除することができます。
- タスクを完了としてマークすることができます。
- タスクのリストを表示します。
- タスクをSQLiteデータベースに保存します。
- 結果を見てみましょう エージェントがアプリを構築し、生成されたコードを探索することができるはずです。 自動的に行われない場合は、Devstralにアプリをデプロイするように依頼するか、手動でデプロイしてから、フロントエンドのURLにアクセスしてアプリを確認してください。
- 反復 最初の結果が得られたら、エージェントに改善を依頼することで、それを反復することができます。たとえば、生成されたアプリではタスクをクリックしてチェック済みにすることができましたが、チェックボックスを追加するとユーザーエクスペリエンスが向上します。また、タスクを編集する機能や、タスクをステータスでフィルタリングする機能を追加するように依頼することもできます。
Devstral SmallとOpenHandsを使った開発を楽しんでください!
vLLM (推奨)
このモデルをvLLM
ライブラリと共に使用することをおすすめします。これにより、本番環境で使用可能な推論パイプラインを実装することができます。
インストール
vLLM >= 0.8.5
をインストールしてください。
pip install vllm --upgrade
これにより、自動的にmistral_common >= 1.5.5
がインストールされます。
確認するには、以下のコマンドを実行します。
python -c "import mistral_common; print(mistral_common.__version__)"
準備ができたDockerイメージ またはDocker Hub を使用することもできます。
サーバー
Devstralをサーバー/クライアント設定で使用することをおすすめします。
- サーバーを起動します。
vllm serve mistralai/Devstral-Small-2505 --tokenizer_mode mistral --config_format mistral --load_format mistral --tool-call-parser mistral --enable-auto-tool-choice --tensor-parallel-size 2
- クライアントをpingするには、簡単な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-2505"
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}
response = requests.post(url, headers=headers, data=json.dumps(data))
print(response.json()["choices"][0]["message"]["content"])
Mistral-inference
Devstralをすばやく試してみるために、mistral-inference
を使用することをおすすめします。
インストール
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-2505", allow_patterns=["params.json", "consolidated.safetensors", "tekken.json"], local_dir=mistral_models_path)
Python
以下のコマンドを使用してモデルを実行することができます。
mistral-chat $HOME/mistral_models/Devstral --instruct --max_tokens 300
その後、好きな内容でプロンプトを入力することができます。
Transformers
transformers
でこのモデルを最大限に活用するには、mistral-common >= 1.5.5
をインストールして、トークナイザーを使用することを確認してください。
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 mistral_common.tokens.tokenizers.tekken import SpecialTokenPolicy
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-2505"
tekken_file = hf_hub_download(repo_id=model_id, filename="tekken.json")
SYSTEM_PROMPT = load_system_prompt(model_id, "SYSTEM_PROMPT.txt")
tokenizer = MistralTokenizer.from_file(tekken_file)
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)
LMStudio
Hugging Faceから重みをダウンロードします。
pip install -U "huggingface_hub[cli]"
huggingface-cli download \
"mistralai/Devstral-Small-2505_gguf" \
--include "devstralQ4_K_M.gguf" \
--local-dir "mistralai/Devstral-Small-2505_gguf/"
LMStudio でモデルをローカルで提供することができます。
- LM Studio をダウンロードしてインストールします。
lms cli ~/.lmstudio/bin/lms bootstrap
をインストールします。- bashターミナルで、モデルチェックポイントをダウンロードしたディレクトリ(例:
mistralai/Devstral-Small-2505_gguf
)でlms import devstralQ4_K_M.gguf
を実行します。 - LMStudioアプリケーションを開き、ターミナルアイコンをクリックして開発者タブに移動します。「モデルを選択して読み込む」をクリックし、Devstral Q4 K Mを選択します。ステータスボタンを切り替えてモデルを起動し、設定で「ローカルネットワークで提供する」をオンにします。
- 右側のタブに、API識別子(devstralq4_k_m)とAPIアドレスが表示されます。このアドレスをメモしておき、次のステップで使用します。
Openhandsの起動
これで、LM Studioから提供されるモデルとOpenhandsでやり取りすることができます。DockerでOpenhandsサーバーを起動します。
docker pull docker.all-hands.dev/all-hands-ai/runtime:0.38-nikolaik
docker run -it --rm --pull=always \
-e SANDBOX_RUNTIME_CONTAINER_IMAGE=docker.all-hands.dev/all-hands-ai/runtime:0.38-nikolaik \
-e LOG_ALL_EVENTS=true \
-v /var/run/docker.sock:/var/run/docker.sock \
-v ~/.openhands-state:/.openhands-state \
-p 3000:3000 \
--add-host host.docker.internal:host-gateway \
--name openhands-app \
docker.all-hands.dev/all-hands-ai/openhands:0.38
2行目の「詳細設定を表示」をクリックします。
新しいタブで、「詳細」をオンにします。カスタムモデルを mistral/devstralq4_k_m
、ベースURLをLM Studioで取得したAPIアドレスに設定します。APIキーを dummy
に設定し、「変更を保存」をクリックします。
Ollama
Ollama CLIを使用してDevstralを実行することができます。
ollama run devstral
📄 ライセンス
このプロジェクトは、Apache 2.0ライセンスの下で公開されています。



