モデル概要
モデル特徴
モデル能力
使用事例
🚀 Devstral Small 1.1
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 Small 1.0
との比較における更新点:
- 性能が向上しています。詳細はベンチマーク結果 を参照してください。
Devstral Small 1.1
は、OpenHandsと組み合わせて使用する場合も引き続き優れた性能を発揮します。この新バージョンは、他のプロンプトやコーディング環境にもより適応しやすくなっています。- Mistralの関数呼び出し形式 をサポートしています。
✨ 主な機能
- エージェント型コーディング:Devstralは、エージェント型コーディングタスクで優れた性能を発揮するように設計されており、ソフトウェアエンジニアリングエージェントに最適です。
- 軽量性:わずか240億のパラメータで構成されているため、単一のRTX 4090や32GB RAMのMacでも実行可能で、ローカルデプロイやデバイス上での使用に適しています。
- Apache 2.0ライセンス:商用および非商用目的での使用と改変が許可されるオープンライセンスです。
- コンテキストウィンドウ:128kのコンテキストウィンドウを持っています。
- トークナイザー:131kの語彙サイズを持つTekkenトークナイザーを使用しています。
📊 ベンチマーク結果
SWE-Bench
Devstral Small 1.1は、SWE-Bench Verifiedで 53.6% のスコアを達成し、Devstral Small 1.0を6.8%上回り、2位の最先端モデルを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 |
同じテストスキャフォールド(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>
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
をインストールしてください。
pip install vllm --upgrade
また、mistral_common >= 1.7.0
もインストールしてください。
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": "Clone a git repository",
# "parameters": {
# "type": "object",
# "properties": {
# "url": {
# "type": "string",
# "description": "The url of the git repository",
# },
# },
# "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
展開
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-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
展開
重みを以下のいずれかからダウンロードします。
- 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
展開
重みを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をデプロイするサーバーの起動
前述のように、vLLMやOllamaなどのOpenAI互換サーバーを起動してください。その後、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のインストール方法は、こちら を参照してください。 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のUIにアクセスできます。
サーバーへの接続
OpenHandsのUIにアクセスすると、サーバーに接続するように促されます。詳細モードを使用して、先に起動したサーバーに接続できます。 以下のフィールドを入力します。
- カスタムモデル:
openai/mistralai/Devstral-Small-2507
- ベースURL:
http://<your-server-url>:8000/v1
- APIキー:
token
(サーバーを起動する際に使用したトークンがある場合は、それを入力します)
設定を表示
Cline
Devstral Small 1.1をデプロイするサーバーの起動
前述のように、vLLMやOllamaなどのOpenAI互換サーバーを起動してください。その後、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を初期化し、先に起動したサーバーに接続します。
ビデオゲームを作成するために、以下の指示を与えます。
ウェブ用の、「Space Invaders」と「Pong」を組み合わせたビデオゲームを作成してください。
以下の指示に従ってください。
- 2人のプレイヤーがいます。1人は画面の上部、もう1人は下部に位置します。プレイヤーはバーを操作してボールを跳ね返します。
- 1人目のプレイヤーは「a」と「d」のキーで操作し、2人目のプレイヤーは左右の矢印キーで操作します。
- 侵略者は画面の中央に位置します。彼らは「Space Invaders」の侵略者のように見える必要があります。彼らの目標は、ランダムにプレイヤーを攻撃することです。彼らはボールによって破壊されることはなく、ボールは彼らを通過します。つまり、侵略者は決して死ぬことはありません。
- プレイヤーの目標は、宇宙侵略者の攻撃を避け、ボールを相手のプレイヤーの端に送ることです。
- ボールは左右の端で跳ね返ります。
- ボールがプレイヤーの端に触れると、そのプレイヤーは負けます。
- プレイヤーが攻撃を3回以上受けると、そのプレイヤーは負けます。
- 最後に立ち残ったプレイヤーが勝者となります。
- UIに、プレイヤーがボールに触れた回数と残りの体力を表示してください。
エージェントはまず、ゲームを作成します。
次に、ゲームの起動方法を説明します。
最後に、ゲームがプレイ可能な状態になります。
ゲームを改善するために、Devstralに繰り返し指示を与えたり、より多くの情報を提供したりすることを躊躇しないでください!
📄 ライセンス
このプロジェクトは、Apache 2.0ライセンスの下でライセンスされています。



