Sử dụng công cụ: Tăng thêm sức mạnh cho AI agent

Thứ tư - 06/05/2026 22:15

Một agent không có công cụ chỉ là một chatbot với prompt hệ thống hào nhoáng. Công cụ là thứ làm cho agent trở nên có tính chủ động - khả năng tìm kiếm, tính toán, giao tiếp và sáng tạo.

 

🔄 Tóm tắt nhanh: Trong bài học trước, bạn đã học mô hình ReAct: Suy nghĩ → Hành động → Quan sát. Bước "Hành động" là sử dụng công cụ. Bây giờ, bạn sẽ tìm hiểu chính xác cách thức hoạt động của nó - các giao thức, định dạng và mô hình kết nối AI với thế giới thực.

Cách chức năng gọi hàm hoạt động

Gọi hàm là cơ chế sử dụng công cụ phổ biến nhất. Đây là chu trình đầy đủ:

Bước 1: Định nghĩa công cụ

Bạn mô tả công cụ cho LLM bằng cách sử dụng JSON schema:

 
{
  "name": "get_weather",
  "description": "Get current weather for a city. Use when the user asks about weather conditions, temperature, or forecasts.",
  "parameters": {
    "type": "object",
    "properties": {
      "city": {
        "type": "string",
        "description": "City name, e.g. 'San Francisco'"
      },
      "units": {
        "type": "string",
        "enum": ["celsius", "fahrenheit"],
        "default": "celsius"
      }
    },
    "required": ["city"]
  }
}

Bước 2: LLM quyết định gọi

Khi người dùng hỏi "Thời tiết ở Tokyo như thế nào?", LLM sẽ trả về:

 
{
  "tool_call": {
    "name": "get_weather",
    "arguments": {"city": "Tokyo", "units": "celsius"}
  }
}

LLM không thực thi công cụ - nó chỉ yêu cầu cuộc gọi. Code của bạn sẽ thực thi yêu cầu đó.

Bước 3: Trả về kết quả

Code của bạn gọi API thời tiết thực tế và trả về kết quả cho LLM:

 
{
  "tool_result": {
    "temperature": 22,
    "conditions": "partly cloudy",
    "humidity": 65
  }
}

Bước 4: LLM xây dựng câu trả lời

LLM sử dụng kết quả từ công cụ để tạo ra câu trả lời bằng ngôn ngữ tự nhiên: "Hiện tại ở Tokyo trời 22°C và có mây rải rác, độ ẩm 65%".

Kiểm tra nhanh: LLM nhận được kết quả từ công cụ cho biết "Lỗi: Đã vượt quá giới hạn tốc độ API". Liệu LLM có nên che giấu lỗi này và tự bịa ra câu trả lời không?

Câu trả lời: Tuyệt đối không. LLM nên minh bạch thông báo vấn đề: "Tôi không thể kiểm tra thời tiết hiện tại - dịch vụ tạm thời không khả dụng. Bạn có muốn tôi thử lại sau một lát không?" Việc che giấu lỗi dẫn đến dữ liệu không chính xác, làm mất lòng tin. Tính minh bạch về các lỗi là điều cần thiết cho các agent đáng tin cậy.

Model Context Protocol (MCP)

MCP là một tiêu chuẩn mở được tạo ra bởi Anthropic, chuẩn hóa cách các AI agent kết nối với những công cụ và nguồn dữ liệu bên ngoài. Hãy coi nó như USB-C dành cho AI.

Trước khi có MCP

Mọi sự tích hợp công cụ đều được tùy chỉnh:

 
Agent → Code tùy chỉnh → Slack API
Agent → Code tùy chỉnh khác → GitHub API 
Agent → Thêm code tùy chỉnh → Database

Với MCP

Các công cụ cung cấp một giao diện chuẩn:

 
Agent → Giao thức MCP → Slack MCP Server
Agent → Giao thức MCP → GitHub MCP Server
Agent → Giao thức MCP → Database MCP Server

Những gì MCP cung cấp

Một MCP server có thể cung cấp ba loại khả năng:

LoạiNhững gì nó cung cấpVí dụ

Công cụ

Các hành động mà agent có thể thực hiện"Tạo một vấn đề trên GitHub", "Gửi tin nhắn trên Slack"

Tài nguyên

Dữ liệu mà agent có thể đọcNội dung file, bản ghi cơ sở dữ liệu, phản hồi API

Prompt

Các prompt trong template cho các nhiệm vụ cụ thể"Tóm tắt PR này", "Xem lại code này"

Ứng dụng MCP trong thực tế

Ví dụ, Claude Code kết nối với MCP server để truy cập file, duyệt web, truy vấn cơ sở dữ liệu, v.v... Khi bạn cấu hình MCP server, agent sẽ tự động phát hiện các công cụ có sẵn - không cần code tích hợp thủ công.

Đầu ra có cấu trúc

Đầu ra có cấu trúc đảm bảo rằng LLM tạo ra dữ liệu hợp lệ, có thể phân tích được - chứ không chỉ là văn bản tự do.

Vấn đề khi không có đầu ra có cấu trúc

 
Prompt: "Return the data as JSON"
LLM Output: "Sure! Here's the JSON:
```json
{\"name\": \"Tokyo\", \"population\": 13960000}

Bạn còn muốn biết thêm điều gì nữa không?

 
LLM đã bao bọc dữ liệu JSON trong văn bản giải thích và các vùng code. Trình phân tích cú pháp của bạn bị lỗi.

### Với đầu ra có cấu trúc

Bạn định nghĩa một schema, và LLM *bị giới hạn* chỉ xuất ra JSON hợp lệ phù hợp với schema đó:

```json
{
  "schema": {
    "type": "object",
    "properties": {
      "name": {"type": "string"},
      "population": {"type": "integer"}
    },
    "required": ["name", "population"]
  }
}

Đầu ra (đảm bảo):

 
{"name": "Tokyo", "population": 13960000}

Không có lời mở đầu, không có hàng rào code, không có văn bản giải thích. Chỉ là JSON hợp lệ khớp với schema của bạn.

Kiểm tra nhanh: Agent của bạn trích xuất chi tiết cuộc họp từ email và lưu trữ chúng trong API lịch. Nếu không có đầu ra có cấu trúc, 15% các trích xuất có lỗi định dạng gây ra sự cố tích hợp lịch. Với đầu ra có cấu trúc, tỷ lệ đó giảm xuống 0%. Tại sao điều này lại đặc biệt quan trọng đối với các agent so với chatbot?

Câu trả lời: Những agent truyền dữ liệu giữa các bước - lỗi định dạng ở bước 3 sẽ dẫn đến lỗi ở các bước 4, 5 và 6. Trong chatbot, người dùng sẽ đọc đầu ra và khắc phục các vấn đề về định dạng. Trong agent pipeline, không có người tham gia để phát hiện dữ liệu bị lỗi. Đầu ra có cấu trúc loại bỏ toàn bộ loại lỗi dây chuyền này.

Các mẫu thiết kế công cụ

Mẫu 1: Xác nhận trước khi hành động

Đối với các hành động phá hủy hoặc không thể đảo ngược, hãy yêu cầu xác nhận của người dùng:

 
Agent: "Tôi sắp xóa 47 file có đuôi *.tmp khỏi
       máy chủ sản xuất. Tôi có nên tiếp tục không?"
User: "Có, cứ tiếp tục."
Agent: [thực hiện xóa]

Mẫu 2: Chuỗi công cụ

Đầu ra của công cụ này trở thành đầu vào của công cụ tiếp theo:

 
search("quarterly earnings report") →
  read_file(result.url) →
    extract_data(file_content, schema="financials") →
      create_chart(data, type="bar")

Mẫu 3: Công cụ dự phòng

Nếu công cụ chính bị lỗi, hãy thử một công cụ thay thế:

 
Primary: database_query("SELECT * FROM users WHERE...")
Fallback: search_api("/users?filter=...")
Last resort: ask_user("I couldn't access the database. Can you provide the user data?")

Bài tập thực hành

  1. Viết định nghĩa công cụ (tên, mô tả, tham số) cho một tác vụ bạn thường xuyên thực hiện

  2. Hãy nghĩ về các trường hợp lỗi: Điều gì xảy ra nếu công cụ bị lỗi? Công cụ dự phòng là gì?

  3. Thiết kế một chuỗi ba công cụ, trong đó đầu ra của mỗi công cụ sẽ cung cấp dữ liệu cho công cụ tiếp theo.

Những điểm chính cần ghi nhớ

  • Cơ chế cốt lõi là gọi hàm: Định nghĩa công cụ → LLM quyết định sử dụng nó → code của bạn được thực thi → LLM xử lý kết quả.

  • Mô tả công cụ rất quan trọng - mô tả mơ hồ dẫn đến việc lựa chọn công cụ sai.

  • MCP chuẩn hóa việc tích hợp công cụ bằng một giao thức mở, loại bỏ code tích hợp tùy chỉnh cho mỗi công cụ.

  • Đầu ra có cấu trúc đảm bảo định dạng dữ liệu hợp lệ, ngăn ngừa các lỗi dây chuyền trong những agent pipeline.

  • Các mẫu thiết kế (xác nhận, chuỗi, dự phòng) giúp việc sử dụng công cụ trở nên mạnh mẽ trong môi trường sản xuất.

Nguồn tin: Quantrimang.com

Tổng số điểm của bài viết là: 0 trong 0 đánh giá

  Ý kiến bạn đọc

THỐNG KÊ TRUY CẬP
  • Đang truy cập26
  • Máy chủ tìm kiếm2
  • Khách viếng thăm24
  • Hôm nay12,466
  • Tháng hiện tại92,816
  • Tổng lượt truy cập15,520,066
QUẢNG CÁO
Phan Thanh Phú
Quảng cáo 2
Liên kết site
Đăng nhập Thành viên
Hãy đăng nhập thành viên để trải nghiệm đầy đủ các tiện ích trên site
Thăm dò ý kiến

Bạn thấy Website cần cải tiến những gì?

Lịch Âm dương
Máy tính
Bạn đã không sử dụng Site, Bấm vào đây để duy trì trạng thái đăng nhập. Thời gian chờ: 60 giây