Khóa học
Cảm giác như các mô hình AI mới đang xuất hiện với tốc độ chóng mặt, và Mistral AI càng làm tăng sự phấn khích với việc ra mắt Devstral, một mô hình mã nguồn mở đột phá dành cho lập trình. Devstral là một mô hình ngôn ngữ lớn (LLM) chuyên tác tử hóa cho lập trình, có thể chạy cục bộ trên GPU RTX 4090 hoặc Mac với 32GB RAM, giúp dễ dàng triển khai cục bộ và sử dụng trên thiết bị. Nó nhanh, chính xác và mở để sử dụng.
Trong hướng dẫn này, chúng ta sẽ tìm hiểu mọi điều cần biết về Devstral, bao gồm các tính năng chính và điều khiến nó khác biệt. Chúng ta cũng sẽ học cách chạy Devstral cục bộ bằng các công cụ như Mistral Chat CLI và tích hợp API Mistral AI với OpenHands để kiểm thử năng lực tác tử của Devstral.
Bạn có thể tìm hiểu thêm về các công cụ khác từ Mistral trong các hướng dẫn riêng, bao gồm Mistral Medium 3, Mistral OCR API và Mistral Le Chat.
Mistral Devstral là gì?
Devstral là mô hình tác tử hiện đại được thiết kế cho các tác vụ kỹ thuật phần mềm. Nó được phát triển bởi Mistral AI phối hợp với All Hands AI. Devstral xuất sắc trong việc giải quyết các bài toán lập trình thực tế, như khám phá codebase lớn, chỉnh sửa nhiều tệp và xử lý sự cố trên kho GitHub.
Hiệu năng của Devstral trên bộ kiểm thử SWE-Bench Verified là vô đối, đạt 46,8%, đưa nó trở thành mô hình mã nguồn mở số 1 trên thang đo này, vượt các mô hình hiện đại trước đó 6%.

Nguồn: Devstral | Mistral AI
Được xây dựng trên Mistral-Small-3.1, Devstral có cửa sổ ngữ cảnh 128k, cho phép xử lý và hiểu lượng lớn mã và phụ thuộc. Khác với mô hình nền, Devstral chỉ xử lý văn bản, vì bộ mã hóa thị giác đã được loại bỏ trong quá trình tinh chỉnh để chuyên biệt cho tác vụ lập trình.
Khả năng làm việc trơn tru với các công cụ như OpenHands giúp nó vượt trội cả những mô hình lớn hơn nhiều, như Deepseek-V3-0324 (671B) và Qwen3 232B-A22B.
Các tính năng chính của Devstral
Dưới đây là một số tính năng nổi bật giúp Devstral khác biệt so với các mô hình lập trình khác.
1. Lập trình theo hướng tác tử
Devstral được thiết kế đặc biệt để xuất sắc trong các tác vụ lập trình tác tử, khiến nó trở thành mô hình lý tưởng để xây dựng và triển khai các tác tử kỹ sư phần mềm. Khả năng giải quyết các tác vụ nhiều bước, phức tạp trong codebase lớn giúp nhà phát triển xử lý hiệu quả các thách thức lập trình thực tế.
2. Thiết kế gọn nhẹ
Một trong những điểm nổi bật của Devstral là kiến trúc gọn nhẹ. Với chỉ 24 tỷ tham số, nó có thể chạy trên một GPU Nvidia RTX 4090. Tính năng này lý tưởng cho triển khai cục bộ, sử dụng trên thiết bị và các ứng dụng cần bảo mật quyền riêng tư.
3. Mã nguồn mở
Phát hành theo giấy phép Apache 2.0, Devstral được phép sử dụng thương mại miễn phí. Nhà phát triển và tổ chức có thể triển khai, chỉnh sửa và thậm chí tích hợp vào sản phẩm độc quyền mà không bị hạn chế.
4. Cửa sổ ngữ cảnh mở rộng
Devstral có cửa sổ ngữ cảnh 128k ấn tượng, cho phép xử lý và hiểu lượng lớn mã và hướng dẫn trong một lần tương tác. Điều này đặc biệt hiệu quả khi làm việc với codebase lớn và giải quyết các bài toán lập trình phức tạp.
5. Trình tokenizer tiên tiến
Devstral sử dụng tokenizer Tekken với kích thước từ vựng 131k, giúp xử lý đầu vào mã và văn bản với độ chính xác và hiệu quả cao. Tokenizer này tăng cường khả năng tạo phản hồi chính xác, theo ngữ cảnh, phù hợp với các tác vụ kỹ thuật phần mềm.
Bắt đầu với Devstral
Devstral được cung cấp miễn phí để tải về trên các nền tảng như Hugging Face, Ollama, Kaggle, Unsloth và LM Studio. Nhà phát triển cũng có thể truy cập qua API với tên devstral-small-2505 với mức giá cạnh tranh: $0,10 cho mỗi triệu token đầu vào và $0,30 cho mỗi triệu token đầu ra.
Trong hướng dẫn này, chúng ta sẽ đi qua hai quy trình chính:
- Chạy Devstral cục bộ bằng Mistral inference.
- Tích hợp Devstral với OpenHands để xây dựng dự án machine learning.
Chạy Devstral cục bộ
Để chạy Devstral cục bộ, chúng ta sẽ dùng một phiên bản Runpod có hỗ trợ GPU, tải mô hình từ Hugging Face và tương tác với nó bằng công cụ CLI mistral-chat.
1. Thiết lập pod với 100GB lưu trữ và GPU A100 SXM, rồi khởi chạy phiên JupyterLab.

2. Chạy các lệnh sau trong Jupyter Notebook để cài đặt các phụ thuộc cần thiết:
%%capture
%pip install mistral_inference --upgrade
%pip install huggingface_hub
3. Sử dụng Hugging Face Hub để tải các tệp mô hình, tokenizer và cấu hình tham số.
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)
4. Mở một terminal trong JupyterLab và chạy lệnh sau để khởi động CLI mistral-chat:
mistral-chat $HOME/mistral_models/Devstral --instruct --max_tokens 300

5. Thử prompt sau để kiểm tra Devstral:
“Tạo một REST API từ đầu bằng Python.”

Mô hình đã tạo một phản hồi chi tiết và chính xác, là hướng dẫn từng bước để xây dựng REST API bằng Flask.
Creating a REST API from scratch using Python involves several steps. We'll use the Flask framework, which is lightweight and easy to get started with. Below is a step-by-step guide to creating a simple REST API.
### Step 1: Install Flask
First, you need to install Flask. You can do this using pip:
```bash
pip install Flask
```
### Step 2: Create the Flask Application
Create a new Python file, for example, `app.py`, and set up the basic structure of your Flask application.
```python
from flask import Flask, request, jsonify
app = Flask(__name__)
# Sample data
items = [
{"id": 1, "name": "Item 1", "description": "This is item 1"},
{"id": 2, "name": "Item 2", "description": "This is item 2"}
]
@app.route('/items', methods=['GET'])
def get_items():
return jsonify(items)
@app.route('/items/<int:item_id>', methods=['GET'])
def get_item(item_id):
item = next((item for item in items if item["id"] == item_id), None)
if item:
return jsonify(item)
return jsonify({"error": "Item not found"}), 404
@app.route('/items', methods=['POST'])
def create_item():
new_item = request.get_json()
new_item["id"] = len(items
=====================
Chạy Devstral với OpenHands
Bạn có thể dễ dàng truy cập mô hình Devstral thông qua API của Mistral AI. Trong dự án này, chúng ta sẽ sử dụng API Devstral cùng với OpenHands để xây dựng dự án machine learning từ con số 0. OpenHands là nền tảng mã nguồn mở đóng vai trò kỹ sư phần mềm AI của bạn để xây dựng và hoàn thiện dự án mã nguồn.
1. Truy cập nền tảng Mistral AI và tạo khóa API của bạn.

2. Nạp $5 vào tài khoản của bạn bằng thẻ Ghi nợ/Tín dụng.
3. Chạy script sau để
- Đặt khóa API làm biến môi trường.
- Kéo image Docker của OpenHands.
- Tạo tệp cấu hình.
- Khởi chạy ứng dụng OpenHands trong container Docker.
# Store the API key securely as an environment variable (avoid hardcoding in scripts)
export MISTRAL_API_KEY=<MY_KEY>
# Pull the runtime image for OpenHands
docker pull docker.all-hands.dev/all-hands-ai/runtime:0.39-nikolaik
# Create a configuration directory and settings file for OpenHands
mkdir -p ~/.openhands-state
cat << EOF > ~/.openhands-state/settings.json
{
"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
}
EOF
# Run the OpenHands application in a Docker container with enhanced settings
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 \
-e TZ=$(cat /etc/timezone 2>/dev/null || echo "UTC") \
-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 \
--memory="4g" \
--cpus="2" \
docker.all-hands.dev/all-hands-ai/openhands:0.39
Ứng dụng web sẽ khả dụng tại http://0.0.0.0:3000
0.39-nikolaik: Pulling from all-hands-ai/runtime
Digest: sha256:126448737c53f7b992a4cf0a7033e06d5289019b32f24ad90f5a8bbf35ce3ac7
Status: Image is up to date for docker.all-hands.dev/all-hands-ai/runtime:0.39-nikolaik
docker.all-hands.dev/all-hands-ai/runtime:0.39-nikolaik
0.39: Pulling from all-hands-ai/openhands
Digest: sha256:326ddb052763475147f25fa0d6266cf247d82d36deb9ebb95834f10f08e4777d
Status: Image is up to date for docker.all-hands.dev/all-hands-ai/openhands:0.39
Starting OpenHands...
Running OpenHands as root
10:34:24 - openhands:INFO: server_config.py:50 - Using config class None
INFO: Started server process [9]
INFO: Waiting for application startup.
INFO: Application startup complete.
INFO: Uvicorn running on http://0.0.0.0:3000 (Press CTRL+C to quit)
Kiểm thử Devstral trong OpenHands
1. Nhấp nút “Launch from Scratch” để bắt đầu xây dựng dự án.

2. Bạn sẽ được chuyển đến giao diện mới, gồm cửa sổ chat và các thẻ khác cho suy luận phát triển.

3. Sử dụng giao diện chat để nhập prompt. Trong tích tắc, Devstral sẽ bắt đầu tạo thư mục, tệp và mã cho dự án.

4. Chuyển sang thẻ VS Code để xem, chỉnh sửa và chạy mã đã tạo.

5. Devstral hoạt động rất tốt: nó đã khởi chạy ứng dụng, kiểm thử trong ứng dụng web và còn dùng web agent để duyệt trang.

Khi dự án hoàn tất, hãy đẩy lên GitHub để chia sẻ với nhóm của bạn.
Kết luận
Devstral là tin vui cho cộng đồng mã nguồn mở. Bạn có thể dùng OpenHands với Ollama hoặc VLLM để chạy mô hình cục bộ rồi tương tác qua giao diện OpenHands. Hơn nữa, bạn có thể tích hợp Devstral vào trình soạn thảo mã bằng các tiện ích mở rộng, khiến nó trở thành lựa chọn rất hiệu quả.
Trong hướng dẫn này, chúng ta đã khám phá Devstral, một mô hình lập trình tác tử, và kiểm thử năng lực của nó bằng cách chạy cục bộ và sử dụng OpenHands. Kết quả rất ấn tượng. Devstral nhanh, độ chính xác cao và nổi trội trong việc gọi tác tử để thực hiện các tác vụ phức tạp. Khả năng xử lý các thách thức kỹ thuật phần mềm thực tế với tốc độ và độ chính xác khiến nó trở thành lựa chọn nổi bật cho nhà phát triển.
Bạn có thể tìm hiểu thêm về Agentic AI qua bài viết trên blog của chúng tôi, và có thể học thực hành với khóa học Thiết kế hệ thống tác tử với LangChain.
Là một nhà khoa học dữ liệu được chứng nhận, tôi đam mê tận dụng công nghệ tiên tiến để tạo ra các ứng dụng học máy đổi mới. Với nền tảng vững chắc về nhận dạng giọng nói, phân tích và báo cáo dữ liệu, MLOps, AI hội thoại và NLP, tôi đã rèn giũa kỹ năng phát triển các hệ thống thông minh có thể tạo ra tác động thực sự. Bên cạnh chuyên môn kỹ thuật, tôi cũng là một người truyền đạt tốt, có khả năng chắt lọc các khái niệm phức tạp thành ngôn ngữ rõ ràng, súc tích. Nhờ đó, tôi trở thành một blogger được nhiều người quan tâm trong lĩnh vực khoa học dữ liệu, chia sẻ góc nhìn và kinh nghiệm với cộng đồng các chuyên gia dữ liệu ngày càng lớn. Hiện tại, tôi tập trung vào sáng tạo và biên tập nội dung, làm việc với các mô hình ngôn ngữ lớn để phát triển nội dung mạnh mẽ và hấp dẫn, giúp doanh nghiệp và cá nhân tận dụng tối đa dữ liệu của mình.
