站点图标 高效码农

Devstral Small 1.1重磅升级:代码效率提升6.8%的革命性AI助手

Devstral Small 1.1:专为软件工程打造的智能助手

在软件开发的世界里,效率和质量是开发者们永恒追求的目标。为了帮助开发者更好地完成任务,Mistral AI 和 All Hands AI 联合推出了一款强大的工具——Devstral Small 1.1,这是一个专为软件工程任务设计的智能助手,旨在协助开发者更高效地处理编程工作。

Devstral Small 1.1 是什么?

Devstral Small 1.1 是一个大型语言模型(LLM),它经过特别训练,能够处理各种软件工程相关的任务,比如代码库的探索、多文件编辑以及各种编程任务等。它基于 Mistral-Small-3.1 模型进行微调,具有长达 128k 的上下文窗口,这意味着它可以处理更长的文本内容,这对于理解和修改大型代码库非常重要。

这个模型是纯文本的,并且在微调时移除了视觉编码器,专注于文本相关的任务。对于需要特定能力(如更长的上下文窗口或特定领域知识)的企业,Mistral AI 还计划提供商业版本的模型。

与 Devstral Small 1.0 的区别

相比于 Devstral Small 1.0,1.1 版本性能得到了显著提升。它在 SWE-bench 验证测试中取得了 53.6% 的成绩,比 1.0 版本提高了 6.8%,比排名第二的模型高出 11.4%。此外,1.1 版本与 OpenHands 的兼容性更好,并且在其他提示和编码环境中具有更好的泛化能力。

Devstral Small 1.1 的关键特性

1. 代理编码能力

Devstral Small 1.1 最突出的特点之一就是它的代理编码能力,这使得它在软件工程代理方面表现出色。它能够像一个有经验的开发者一样,理解任务需求并生成相应的代码,极大地提高了开发效率。

2. 轻量化设计

尽管具有强大的功能,但 Devstral Small 1.1 的参数量仅为 240 亿,这使得它可以在单个 RTX 4090 或配备 32GB 内存的 Mac 上轻松运行。这种轻量化设计使得它非常适合本地部署和设备端使用。

3. 开源许可

Devstral Small 1.1 采用 Apache 2.0 许可证,这意味着无论是商业用途还是非商业用途,都可以自由使用和修改这个模型,为开发者提供了极大的灵活性。

4. 超长上下文窗口

其 128k 的上下文窗口使得 Devstral Small 1.1 能够处理更长的文本序列,这对于理解大型代码库和复杂的编程任务至关重要。

5. 特殊的分词器

它使用了 Tekken 分词器,拥有 131k 的词汇量,这有助于更好地理解和生成代码相关的文本。

Devstral Small 1.1 的性能表现

在 SWE-bench 测试中,Devstral Small 1.1 展现出了卓越的性能。在相同的测试框架下,它甚至超过了比它大得多的模型,如 Deepseek-V3-0324 和 Qwen3 232B-A22B。

模型 测试框架 SWE-bench 验证 (%)
Devstral Small 1.1 OpenHands 框架 53.6
Devstral Small 1.0 OpenHands 框架 46.8
GPT-4.1-mini OpenAI 框架 23.6
Claude 3.5 Haiku Anthropic 框架 40.6
SWE-smith-LM 32B SWE-agent 框架 40.2

如何使用 Devstral Small 1.1

你可以通过 Mistral 的 API 或者本地部署的方式来使用 Devstral Small 1.1。以下是几种常见的使用方法:

使用 API

  1. 创建一个 Mistral 账户并获取 API 密钥,按照 账户设置指南 进行操作。

  2. 配置 OpenHands 容器:

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


### 本地推理

Devstral Small 1.1 可以通过以下几种库进行本地部署:

- **vLLM(推荐)**
- **mistral-inference**
- **transformers**
- **LMStudio**
- **llama.cpp**
- **ollama**

以下是使用 vLLM 的详细步骤:

#### 安装

确保安装了 `vLLM >= 0.9.1` 和 `mistral_common >= 1.7.0`:

```bash
pip install vllm --upgrade
pip install mistral-common --upgrade

启动服务器

运行以下命令启动服务器:

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}

response = requests.post(url, headers=headers, data=json.dumps(data))
print(response.json()["choices"][0]["message"]["content"])

使用 OpenHands

OpenHands 是一个强大的工具,可以帮助你更好地利用 Devstral Small 1.1 的能力。以下是使用 OpenHands 的步骤:

启动服务器

确保你已经启动了一个兼容 OpenAI 的服务器,如 vLLM 或 Ollama:

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

使用 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 的用户界面。

连接到服务器

在 OpenHands 的用户界面中,点击“连接到服务器”,并填写以下信息:

  • 自定义模型openai/mistralai/Devstral-Small-2507
  • 基础 URLhttp://<your-server-url>:8000/v1
  • API 密钥token(或你在启动服务器时使用的密钥)

使用 Cline

Cline 是另一个可以与 Devstral Small 1.1 一起使用的工具。以下是使用步骤:

启动服务器

类似于 OpenHands,启动一个兼容 OpenAI 的服务器:

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 并配置服务器地址:

# 安装 Cline
pip install cline

# 配置服务器地址
cline config set server http://<your-server-url>:8000/v1
cline config set api_key token

实际应用案例

使用 OpenHands 分析测试覆盖率

你可以使用 OpenHands 和 Devstral Small 1.1 来分析代码库的测试覆盖率。例如,分析公共代码库 mistral-common 的测试覆盖率:

  1. 将代码库挂载到工作区。

  2. 给出指令:

    检查代码库的测试覆盖率,然后创建测试覆盖率的可视化图表。尝试绘制几种不同类型的图表并保存为 png。
    
  3. Devstral Small 1.1 会首先浏览代码库,检查测试配置和结构。

  4. 它会设置测试依赖项并启动覆盖率测试。

  5. 最后,它会编写必要的代码来可视化覆盖率,导出结果并保存图表:

    • 覆盖率分布图
    • 覆盖率饼图
    • 覆盖率总结图
  6. 模型还会解释结果,帮助你更好地理解测试覆盖率的情况。

使用 Cline 创建混合视频游戏

你可以使用 Cline 和 Devstral Small 1.1 来创建一个结合太空侵略者和乒乓球元素的网页视频游戏:

  1. 在 VSCode 中初始化 Cline 并连接到服务器。

  2. 给出创建游戏的指令:

    创建一个结合太空侵略者和乒乓球元素的网页视频游戏。
    
    游戏规则:
    
    - 两名玩家分别位于屏幕顶部和底部,使用控制条来反弹球。
    - 第一名玩家使用 "a" 和 "d" 键,第二名玩家使用左右箭头键。
    - 侵略者位于屏幕中央,外观类似于太空侵略者。它们的目标是随机向玩家射击。它们不会被球摧毁,球会穿过它们。
    - 玩家的目标是躲避侵略者的射击,并将球发送到对方玩家的边缘。
    - 球会在左右边缘反弹。
    - 一旦球接触到玩家的边缘,该玩家就会输掉。
    - 一旦玩家被射击三次或更多次,该玩家就会输掉。
    - 最后一名存活的玩家获胜。
    - 在用户界面显示玩家触球次数和剩余生命值。
    
  3. Devstral Small 1.1 会首先创建游戏的基本结构。

  4. 它会解释如何启动游戏。

  5. 最后,游戏准备就绪,可以开始玩了。

通过这些实际应用案例,你可以看到 Devstral Small 1.1 在软件工程任务中的强大能力。它不仅可以帮助你分析代码库,还可以协助你创建复杂的软件项目。无论你是独立开发者还是大型团队的一员,Devstral Small 1.1 都是一个非常有价值的工具。

退出移动版