Hướng dẫn gọi công cụ MiniMax M3
Vâng, MiniMax M3 hỗ trợ gọi công cụ.
MiniMax định vị M3 đặc biệt cho khối lượng công việc lập trình và agent liên quan đến phân rã tác vụ tự động, gọi công cụ và suy luận đa bước. Mô hình cũng hỗ trợ cửa sổ ngữ cảnh lên tới 1M token, được thiết kế để hỗ trợ các quy trình làm việc agent và lập trình dài hạn.
Nhưng việc gọi công cụ không có nghĩa là MiniMax M3 trực tiếp thực thi các API hoặc hàm của bạn.
Quy trình thực tế là:
Định nghĩa công cụ
↓
Gửi công cụ tới MiniMax M3
↓
M3 trả về tool_calls
↓
Ứng dụng của bạn thực thi hàm
↓
Gửi kết quả trở lại M3
↓
M3 tiếp tục hoặc trả về câu trả lời cuối cùng
Hiểu vòng lặp đó là chìa khóa để sử dụng MiniMax M3 đúng cách trong một agent.
Gọi công cụ MiniMax M3 là gì?
Một yêu cầu LLM thông thường trông như sau:
Người dùng → Mô hình → Câu trả lời
Mô hình nhận văn bản và trả về văn bản.
Cách này hoạt động cho những câu hỏi mà mô hình có thể trả lời từ ngữ cảnh hiện có.
Nhưng giả sử người dùng hỏi:
Thời tiết ở Tokyo bây giờ thế nào?
Mô hình không nên tự bịa ra dữ liệu thời tiết hiện tại.
Với tính năng gọi công cụ, bạn có thể cho M3 truy cập vào một hàm như:
get_weather(city)
Quy trình trở thành:
Người dùng
↓
MiniMax M3
↓
get_weather(city="Tokyo")
↓
API thời tiết của bạn
↓
Kết quả thời tiết hiện tại
↓
MiniMax M3
↓
Câu trả lời cuối cùng
M3 quyết định công cụ nào nên được sử dụng và những đối số nó cần.
Ứng dụng của bạn quyết định công cụ thực sự làm gì.
MiniMax M3 Tool Calling API
Tài liệu API tạo văn bản hiện tại của MiniMax bao gồm MiniMax-M3 như một mô hình được hỗ trợ và cung cấp:
tools
tool_choice
tool_calls
Endpoint được nêu là:
POST /v1/text/chatcompletion_v2
và mã định danh mô hình M3 hiện tại là:
MiniMax-M3
MiniMax nêu hai chế độ tool_choice:
auto
none
Với auto, M3 quyết định xem có cần gọi công cụ hay không.
Với none, việc sử dụng công cụ bị vô hiệu hóa.
Bước 1: Định nghĩa công cụ
Giả sử chúng ta muốn M3 kiểm tra thông tin thời tiết.
Trước tiên, chúng ta mô tả hàm cho mô hình:
{
"type": "function",
"function": {
"name": "get_weather",
"description": "Get the current weather for a city",
"parameters": {
"type": "object",
"properties": {
"city": {
"type": "string",
"description": "The city to get weather for"
}
},
"required": ["city"]
}
}
}
MiniMax hiện hỗ trợ hàm như loại công cụ. Lược đồ API của nó yêu cầu tên hàm, mô tả và định nghĩa tham số.
Chất lượng của lược đồ này rất quan trọng.
Nếu mô tả công cụ của bạn mơ hồ, mô hình sẽ có ít thông tin hơn về thời điểm nó nên gọi công cụ đó.
So sánh:
Tệ:
Lấy dữ liệu.
với:
Tốt hơn:
Lấy thời tiết hiện tại, nhiệt độ và điều kiện thời tiết cho một thành phố cụ thể.
Sử dụng công cụ này khi người dùng hỏi về thời tiết hiện tại hoặc tương lai.
Mô tả thứ hai cung cấp cho mô hình hướng dẫn lựa chọn công cụ rõ ràng hơn nhiều.
Bước 2: Gửi các công cụ tới MiniMax M3
Một yêu cầu Python đơn giản trông như thế này:
import requests
url = "https://api.minimax.io/v1/text/chatcompletion_v2"
headers = {
"Authorization": "Bearer YOUR_MINIMAX_API_KEY",
"Content-Type": "application/json"
}
payload = {
"model": "MiniMax-M3",
"messages": [
{
"role": "user",
"content": "What's the weather in Tokyo?"
}
],
"tools": [
{
"type": "function",
"function": {
"name": "get_weather",
"description": "Get the current weather for a city",
"parameters": {
"type": "object",
"properties": {
"city": {
"type": "string"
}
},
"required": ["city"]
}
}
}
],
"tool_choice": "auto"
}
response = requests.post(
url,
headers=headers,
json=payload
)
data = response.json()
print(data)
Tài liệu API MiniMax hiện tại liệt kê rõ ràng MiniMax-M3 và các trường yêu cầu tools và tool_choice cho điểm cuối này.
Bước 3: Đọc lời gọi công cụ của M3
Nếu M3 quyết định rằng cần một công cụ, phản hồi của trợ lý có thể bao gồm một tool_calls mảng.
MiniMax ghi lại mỗi lần gọi với:
id
type
function.name
function.arguments
Về mặt khái niệm, kết quả có thể trông như thế này:
{
"tool_calls": [
{
"id": "call_123",
"type": "function",
"function": {
"name": "get_weather",
"arguments": "{\"city\":\"Tokyo\"}"
}
}
]
}
Điểm quan trọng là:
M3 chưa thực thi bất cứ điều gì cả.
Nó đã tạo ra một yêu cầu có cấu trúc như sau:
Vui lòng chạy
get_weathervớicity="Tokyo".
Bây giờ ứng dụng của bạn cần phân tích cú pháp các đối số và chạy hàm thực tế.
Bước 4: Thực thi công cụ trong ứng dụng của bạn
Ví dụ:
import json
tool_call = data["choices"][0]["message"]["tool_calls"][0]
function_name = tool_call["function"]["name"]
arguments = json.loads(
tool_call["function"]["arguments"]
)
if function_name == "get_weather":
result = get_weather(**arguments)
Hàm của riêng bạn có thể gọi một dịch vụ thời tiết thực sự và trả về:
{
"city": "Tokyo",
"temperature": 29,
"condition": "Rain"
}
Kết quả này đến từ công cụ của bạn, không phải từ MiniMax.
Sự khác biệt đó là điều cốt yếu khi xây dựng các agent trong môi trường sản xuất.
Bước 5: Trả kết quả của công cụ cho M3
Bây giờ cuộc trò chuyện cần tiếp tục.
Ứng dụng của bạn nên giữ nguyên tin nhắn trợ lý của M3 có chứa lệnh gọi công cụ và thêm kết quả từ hàm của bạn vào cuộc trò chuyện.
Sau đó, mô hình có thể sử dụng kết quả thực tế để tạo ra câu trả lời cuối cùng.
MiniMax đặc biệt ghi rõ rằng các cuộc trò chuyện gọi hàm qua nhiều lượt nên giữ nguyên toàn bộ phản hồi của trợ lý, bao gồm cả thông tin về lệnh gọi công cụ, để không mất tính liên tục trong suy luận.
Về mặt khái niệm, lịch sử hội thoại trở thành:
Người dùng:
Thời tiết ở Tokyo thế nào?
Trợ lý:[tool call: get_weather(city=”Tokyo”)]
Công cụ: Tokyo: 29°C, Mưa. Trợ lý: Hiện tại ở Tokyo là 29°C và trời đang mưa.
Đây là vòng lặp tác tử cơ bản.
Tại sao bạn phải giữ lịch sử gọi công cụ
Đây là một trong những chi tiết triển khai quan trọng nhất trong tài liệu của MiniMax.
Khi một lệnh gọi công cụ xảy ra, đừng chỉ giữ lại văn bản hiển thị.
Hãy giữ toàn bộ tin nhắn trợ lý.
Tại sao?
Bởi vì yêu cầu mô hình tiếp theo cần hiểu:
- Công cụ nó đã yêu cầu
- Đối số nó đã tạo ra
- Kết quả nào thuộc về lời gọi nào
- Nó đang ở bước nào của tác vụ
Nếu bạn loại bỏ trạng thái đó, các quy trình làm việc nhiều bước với công cụ có thể trở nên không nhất quán.
Điều này ngày càng trở nên quan trọng khi một tác nhân thực hiện nhiều lời gọi hơn.
Sử dụng nhiều hơn một công cụ
Các tác nhân thực tế thường cung cấp nhiều hơn một hàm.
Một tác nhân mã hóa có thể cung cấp:
read_file
search_code
write_file
run_command
run_tests
git_diff
Một trợ lý kinh doanh có thể cung cấp:
search_customer
get_order
issue_refund
create_ticket
send_email
Người dùng không cần phải chỉ định hàm nào sẽ được gọi.
Với tool_choice="auto", mô hình có thể chọn từ các công cụ khả dụng dựa trên yêu cầu.
Ví dụ:
Người dùng:
Tìm hiểu vì sao các bài kiểm thử đăng nhập đang thất bại và khắc phục sự cố.
Một tác nhân lập trình có thể thực hiện:
search_code
↓
read_file
↓
run_tests
↓
read_file
↓
write_file
↓
run_tests
↓
git_diff
Đây là nơi việc gọi công cụ trở thành một luồng công việc tác nhân.
Tại sao MiniMax M3 được thiết kế cho việc này
Bản thân việc gọi công cụ không phải chỉ riêng M3 mới có.
GPT, Claude, Gemini, Qwen, GLM và nhiều mô hình khác cũng hỗ trợ công cụ.
Lý do M3 thú vị là mức độ tập trung mạnh mẽ của MiniMax vào việc thực thi công cụ lâu dài.
MiniMax cho biết M3 có khả năng phân rã tác vụ tự động, gọi công cụ và suy luận đa bước.
Công ty cũng công bố một thí nghiệm tối ưu hóa CUDA kéo dài, trong đó M3 đã hoàn thành:
147 bài nộp benchmark
1,959 lần gọi công cụ
trong quy trình tối ưu hóa tự động kéo dài khoảng 24 giờ.
Điều đó không có nghĩa là mọi ứng dụng đều nên chạy hàng nghìn lần gọi công cụ.
Điều này thể hiện loại hành vi tầm xa mà MiniMax đang hướng tới.
Cửa sổ ngữ cảnh MiniMax M3
M3 hỗ trợ tối đa 1M token ngữ cảnh.
MiniMax tuyên bố rằng API M3 của họ hỗ trợ ngữ cảnh lên tới 1M, với ngữ cảnh hạ tầng tối thiểu được đảm bảo là 512K token.
Tại sao điều đó lại quan trọng đối với việc gọi công cụ?
Bởi vì các agent chạy lâu tích lũy ngữ cảnh.
Sau nhiều bước, mô hình có thể cần nhớ:
- Hướng dẫn người dùng ban đầu
- Hướng dẫn hệ thống
- Các lời gọi công cụ trước đó
- Kết quả công cụ
- Mã nguồn
- Tệp
- Lỗi
- Kế hoạch
- Quyết định trung gian
Ví dụ:
Yêu cầu ban đầu
+ ngữ cảnh kho lưu trữ
+ 20 lần gọi công cụ
+ 20 kết quả công cụ
+ đầu ra kiểm thử
+ mã đã sửa đổi
+ hướng dẫn bổ sung từ người dùng
Tất cả những điều này đều tiêu tốn ngữ cảnh.
Cửa sổ ngữ cảnh lớn giúp M3 có thêm khả năng xử lý các quy trình dài hạn mà không loại bỏ ngay lập tức trạng thái trước đó.
MiniMax M3 cho tác nhân lập trình
Lập trình là một trong những trường hợp sử dụng rõ ràng nhất cho khả năng gọi công cụ của M3.
Bản thân mô hình không trực tiếp chỉnh sửa kho lưu trữ của bạn.
Thay vào đó, khung tác nhân của bạn cung cấp các công cụ như:
read_file(path)
write_file(path, content)
search_code(query)
run_command(command)
run_tests()
Sau đó, M3 có thể sử dụng những công cụ này để hoàn thành nhiệm vụ.
Ví dụ:
Sửa lỗi xác thực trong dự án này.
Quy trình làm việc có thể trở thành:
1. Tìm kiếm mã xác thực
2. Xem xét các tệp liên quan
3. Chạy các bài kiểm tra thất bại
4. Xác định nguyên nhân có thể
5. Sửa đổi triển khai
6. Chạy lại các bài kiểm tra
7. Xem xét lỗi
8. Thực hiện thay đổi khác
9. Xác minh kết quả cuối cùng
Điều này gần với kỹ thuật phần mềm thực tế hơn nhiều so với một lời nhắc một lần như:
Viết một hàm đăng nhập.
MiniMax định vị rõ ràng M3 theo hướng các tác nhân mã hóa và quy trình làm việc tự động thay vì chỉ hoàn thiện mã đơn thuần.
MiniMax M3 cũng là mô hình đa phương thức
M3 vốn là mô hình đa phương thức.
MiniMax cho biết việc huấn luyện đa phương thức đã được tích hợp ngay từ đầu thay vì được thêm vào như một adapter riêng biệt sau đó, và mô hình hỗ trợ hiểu hình ảnh như một phần trong khả năng tác nhân của mình.
Điều này có thể mở rộng các tác nhân dựa trên công cụ ra ngoài phạm vi văn bản.
Ví dụ:
Kiểm tra ảnh chụp màn hình
↓
Hiểu trạng thái giao diện
↓
Xác định hành động tiếp theo
↓
Gọi hành động máy tính/công cụ
↓
Kiểm tra kết quả
↓
Tiếp tục
Điều này hữu ích cho các tác nhân trình duyệt, các tác vụ sử dụng máy tính, QA trực quan và các quy trình phát triển đa phương thức.
Tool Calling của MiniMax M3 so với Function Calling đơn giản
Cần phân biệt hai khái niệm này.
Gọi hàm đơn giản
Người dùng đặt câu hỏi
→ mô hình chọn một công cụ
→ công cụ trả về dữ liệu
→ mô hình trả lời
Ví dụ:
Thời tiết ở Tokyo thế nào?
Gọi công cụ kiểu tác nhân
Người dùng cung cấp mục tiêu
→ mô hình lập kế hoạch
→ gọi công cụ
→ đánh giá kết quả
→ gọi công cụ khác
→ thay đổi kế hoạch
→ gọi thêm công cụ
→ xác minh kết quả
→ hoàn thành mục tiêu
Ví dụ:
Tìm lỗi trong kho mã này, sửa lỗi và xác minh các bài kiểm tra đều đạt.
M3 thú vị hơn nhiều ở danh mục thứ hai.
Các lỗi thường gặp khi gọi công cụ MiniMax M3
1. Kỳ vọng M3 thực thi hàm
Nó không thực thi.
M3 tạo ra yêu cầu công cụ. Ứng dụng của bạn thực thi yêu cầu đó.
2. Không giữ nguyên thông điệp gọi công cụ của trợ lý
Đối với quy trình làm việc nhiều lượt, hãy giữ nguyên toàn bộ phản hồi của trợ lý liên quan đến lời gọi công cụ. MiniMax đặc biệt nêu rõ điều này trong tài liệu tương thích của mình.
3. Sử dụng mô tả công cụ mơ hồ
Đừng định nghĩa:
do_task
khi bạn có thể định nghĩa:
search_customer_by_email
Các công cụ rõ ràng giúp mô hình có cơ hội chọn đúng tốt hơn.
4. Cấp quá nhiều quyền cho công cụ
Nếu bạn cung cấp:
run_command
Ứng dụng của bạn vẫn phải thực thi các quy tắc về phân quyền, xác thực, cô lập và an toàn.
Mô hình không nên là người quyết định cuối cùng về những gì hạ tầng của bạn được phép thực thi.
5. Xem ngữ cảnh dài là bộ nhớ không giới hạn
Cửa sổ ngữ cảnh 1M là lớn, nhưng vẫn có hạn.
Các phiên chạy tác nhân dài nên quản lý ngữ cảnh một cách có chủ đích thay vì liên tục bổ sung mọi thứ mãi mãi.
MiniMax M3 có thể hoạt động với quy trình tương thích OpenAI không?
MiniMax cung cấp hỗ trợ API tương thích OpenAI cho hệ sinh thái mô hình văn bản của mình, và schema gọi công cụ của nó tuân theo các khái niệm quen thuộc như công cụ, assistant tool_calls, và các thông điệp kết quả công cụ.
Tài liệu API của MiniMax đang được cập nhật tích cực xoay quanh M3, vì vậy đối với các tích hợp sản xuất, bạn nên luôn sử dụng tài liệu API M3 hiện tại làm nguồn tham chiếu chính xác cho endpoint và các trường được hỗ trợ.
Sử dụng các mô hình MiniMax trong ngăn xếp agent đa mô hình
Nếu toàn bộ agent của bạn được xây dựng xung quanh MiniMax, việc tích hợp trực tiếp MiniMax có thể hợp lý.
Nhưng nhiều nhà phát triển agent thử nghiệm nhiều mô hình.
Bạn có thể muốn so sánh:
- MiniMax
- GLM
- Qwen
- DeepSeek
- Claude
- GPT
- Gemini
Chất lượng gọi công cụ có thể khác nhau tùy thuộc vào lược đồ và quy trình làm việc thực tế của bạn.
Một mô hình có thể chọn công cụ tốt hơn.
Mô hình khác có thể giỏi lập trình hơn.
Một lựa chọn khác có thể rẻ hơn cho các vòng lặp tác nhân dài.
Đây là lúc một cổng mô hình thống nhất trở nên hữu ích.
Sử dụng TokenHub để phát triển tác nhân
TokenHub cung cấp một cổng API tương thích với OpenAI cho các mô hình được hỗ trợ và tài liệu hóa các tích hợp với các công cụ như Claude Code, Codex, Cursor, Cline, Aider, OpenCode và các tác nhân dành cho nhà phát triển khác.
Base URL tương thích với OpenAI của nó là:
https://us-api.tokenhub.com/v1
Thay vì viết lại toàn bộ kiến trúc tác nhân cho từng nhà cung cấp mô hình, bạn có thể giữ nguyên tầng API chung và chọn các mô hình từ danh mục hiện tại của TokenHub.
Điều này đặc biệt hữu ích khi đánh giá các mô hình gọi công cụ vì bạn có thể chạy cùng một tác nhân, cùng các định nghĩa công cụ và cùng các tác vụ với các mô hình được hỗ trợ khác nhau.
Luôn sử dụng đúng ID mô hình được hiển thị trong danh sách mô hình trực tiếp của TokenHub.
MiniMax M3 có tốt cho việc gọi công cụ không?
MiniMax M3 rõ ràng được thiết kế cho các quy trình làm việc của tác nhân sử dụng nhiều công cụ.
Các lý do quan trọng nhất để đánh giá nó là:
- Gọi công cụ tích hợp sẵn
- Suy luận đa bước
- Tập trung mạnh vào lập trình
- Lên đến 1M ngữ cảnh
- Thiết kế tác nhân chạy lâu dài
- Khả năng đa phương thức tích hợp sẵn
Liệu nó có phải là mô hình gọi công cụ tốt nhất cho sản phẩm của bạn hay không vẫn phụ thuộc vào tác nhân của chính bạn.
Một tác nhân dịch vụ khách hàng và một tác nhân lập trình có thể ưa thích các mô hình khác nhau.
Đánh giá đúng không phải là:
M3 có hỗ trợ công cụ không?
Có.
Câu hỏi đúng hơn là:
Liệu M3 có thể hoàn thành một cách đáng tin cậy quy trình làm việc thực tế của tôi bằng cách sử dụng các công cụ thực tế của tôi ở mức chi phí và độ trễ chấp nhận được?
Câu hỏi thường gặp
MiniMax M3 có hỗ trợ gọi công cụ không?
Có. Tài liệu API hiện tại của MiniMax hỗ trợ tools và tool_choice cho MiniMax-M3.
ID mô hình MiniMax M3 là gì?
Tên mô hình API trực tiếp hiện tại là:
MiniMax-M3
MiniMax M3 hỗ trợ những giá trị nào cho tool_choice?
Tài liệu API văn bản hiện tại cho biết:
auto
none
MiniMax M3 có tự thực thi công cụ không?
Không. Mô hình tạo ra lệnh gọi công cụ và các đối số. Ứng dụng của bạn thực thi hàm bên ngoài.
MiniMax M3 trả về gì khi muốn gọi một công cụ?
Phản hồi của trợ lý có thể bao gồm một tool_calls mảng chứa ID lời gọi công cụ, tên hàm và các đối số được định dạng JSON.
MiniMax M3 có hỗ trợ cửa sổ ngữ cảnh 1M không?
Có. MiniMax cho biết M3 hỗ trợ tối đa 1M token ngữ cảnh.
MiniMax M3 có phù hợp cho các agent lập trình không?
Có. Viết mã và các tác vụ agent là hai khối lượng công việc mục tiêu chính của M3.
Xây dựng Agent của bạn theo quy trình làm việc, không phải theo một nhà cung cấp duy nhất
Khả năng gọi công cụ của MiniMax M3 rất hữu ích vì nó nằm trong một thiết kế agent rộng hơn: mô hình có thể phân rã tác vụ, gọi công cụ, xử lý kết quả và tiếp tục xuyên suốt các quy trình làm việc dài.
Tuy nhiên, đối với một agent trong môi trường sản xuất, vẫn nên thử nghiệm nhiều hơn một mô hình.
TokenHub cung cấp một lớp API thống nhất cho các mô hình được hỗ trợ, cho phép bạn so sánh các LLM có khả năng agent khác nhau mà không cần xây dựng lại tích hợp cho từng nhà cung cấp.
Các liên kết nội bộ được đề xuất
- Liên kết TokenHub đến trang chủ hoặc danh mục mô hình.
- Liên kết API tương thích OpenAI đến TokenHub API Docs.
- Sau đó liên kết Best Chinese LLMs for Agents and Tool Calling đến Blog tương ứng.
- Liên kết các tên GLM, Qwen, DeepSeek hoặc Kimi có liên quan đến các trang mô hình TokenHub của chúng khi có sẵn.