Bỏ qua tới nội dung
Bài 8/12 · Khoá học AI Agent (Hugging Face)

Action: giúp agent tương tác với môi trường

Các loại agent và loại action, cách tiếp cận stop and parse, và Code Agent cùng ưu điểm, rủi ro bảo mật của nó.

Cơ bản@shine19046 phút đọc

Action (hành động) là các bước cụ thể mà AI agent thực hiện để tương tác với môi trường.

Dù là duyệt web tìm thông tin hay điều khiển một thiết bị vật lý, mỗi action đều là một thao tác có chủ đích do agent thực thi.

Ví dụ, một agent hỗ trợ chăm sóc khách hàng có thể truy xuất dữ liệu khách hàng, gợi ý bài viết hỗ trợ hoặc chuyển vấn đề cho nhân viên con người.

Các loại action của agent

Có nhiều loại agent thực hiện action theo cách khác nhau:

Loại agentMô tả
JSON AgentAction cần thực hiện được đặc tả ở định dạng JSON.
Code AgentAgent viết một khối code để bên ngoài thông dịch và chạy.
Function-calling AgentMột nhánh con của JSON Agent, được fine-tuning để sinh một tin nhắn mới cho mỗi action.

Bản thân action có thể phục vụ nhiều mục đích:

Loại actionMô tả
Thu thập thông tinTìm kiếm web, truy vấn cơ sở dữ liệu hoặc truy xuất tài liệu.
Dùng toolGọi API, tính toán và thực thi code.
Tương tác với môi trườngThao tác trên giao diện số hoặc điều khiển thiết bị vật lý.
Giao tiếpTrò chuyện với người dùng qua chat hoặc cộng tác với các agent khác.

LLM chỉ xử lý văn bản và dùng văn bản để mô tả action nó muốn thực hiện cùng các tham số truyền cho tool. Để agent hoạt động đúng, LLM phải DỪNG sinh token mới sau khi đã phát ra đủ các token định nghĩa một action hoàn chỉnh. Việc này trả quyền điều khiển từ LLM về lại agent và đảm bảo kết quả phân tích (parse) được, dù định dạng mong muốn là JSON, code hay function-calling.

Cách tiếp cận stop and parse

Một phương pháp then chốt để cài đặt action là cách tiếp cận stop and parse (dừng rồi phân tích). Phương pháp này đảm bảo đầu ra của agent có cấu trúc và dự đoán được:

  1. Sinh ở định dạng có cấu trúc: agent xuất action dự định ở một định dạng rõ ràng, định sẵn (JSON hoặc code).
  2. Dừng sinh tiếp: khi văn bản định nghĩa action đã được phát ra, LLM dừng sinh thêm token. Việc này ngăn đầu ra thừa hoặc sai.
  3. Phân tích đầu ra: một bộ parser bên ngoài đọc action đã định dạng, xác định tool nào cần gọi và trích các tham số cần thiết.

Ví dụ, một agent cần kiểm tra thời tiết có thể xuất ra:

json
Thought: I need to check the current weather for New York.
Action :
{
  "action": "get_weather",
  "action_input": {"location": "New York"}
}

Sau đó framework có thể dễ dàng phân tích tên hàm cần gọi và các đối số cần áp dụng.

Định dạng rõ ràng, máy đọc được này giảm thiểu lỗi và giúp tool bên ngoài xử lý chính xác lệnh của agent.

Lưu ý: Function-calling agent hoạt động tương tự, bằng cách cấu trúc mỗi action sao cho một hàm được chỉ định được gọi với đúng đối số. Chúng ta sẽ đi sâu vào loại agent này ở một unit sau.

Code Agent

Một cách tiếp cận khác là dùng Code Agent. Ý tưởng là: thay vì xuất một object JSON đơn giản, Code Agent sinh ra một khối code thực thi được, thường bằng ngôn ngữ bậc cao như Python.

So sánh action bằng code và bằng JSON

Cách tiếp cận này có một số ưu điểm:

  • Giàu biểu đạt: code biểu diễn tự nhiên logic phức tạp, gồm vòng lặp, điều kiện và hàm lồng nhau, linh hoạt hơn JSON.
  • Tính mô-đun và tái sử dụng: code được sinh có thể chứa hàm và module dùng lại được cho nhiều action hoặc tác vụ khác nhau.
  • Dễ gỡ lỗi hơn: với cú pháp lập trình được định nghĩa rõ, lỗi trong code thường dễ phát hiện và sửa hơn.
  • Tích hợp trực tiếp: Code Agent có thể tích hợp thẳng với thư viện và API bên ngoài, cho phép các thao tác phức tạp hơn như xử lý dữ liệu hay ra quyết định theo thời gian thực.

Ví dụ, một Code Agent được giao lấy thông tin thời tiết có thể sinh đoạn Python sau:

python
# Code Agent Example: Retrieve Weather Information
def get_weather(city):
    import requests
    api_url = f"https://api.weather.com/v1/location/{city}?apiKey=YOUR_API_KEY"
    response = requests.get(api_url)
    if response.status_code == 200:
        data = response.json()
        return data.get("weather", "No weather information available")
    else:
        return "Error: Unable to fetch weather data."

# Execute the function and prepare the final answer
result = get_weather("New York")
final_answer = f"The current weather in New York is: {result}"
print(final_answer)

Trong ví dụ này, Code Agent:

  • Lấy dữ liệu thời tiết qua một lời gọi API,
  • Xử lý phản hồi,
  • Và dùng hàm print() để xuất câu trả lời cuối cùng.

Phương pháp này cũng tuân theo cách tiếp cận stop and parse bằng cách phân định rõ khối code và báo hiệu khi việc thực thi hoàn tất (ở đây là bằng cách in final_answer).

Tổng kết

Chúng ta đã học rằng action là cầu nối giữa suy luận nội bộ của agent và các tương tác với thế giới thực, bằng cách thực thi những tác vụ rõ ràng, có cấu trúc, dù qua JSON, code hay function call.

Việc thực thi có chủ đích này đảm bảo mỗi action đều chính xác và sẵn sàng cho xử lý bên ngoài qua cách tiếp cận stop and parse. Ở bài tiếp theo, chúng ta sẽ tìm hiểu Observation để xem agent thu nhận và tích hợp phản hồi từ môi trường thế nào.

Sau đó, chúng ta sẽ cuối cùng cũng sẵn sàng xây agent đầu tiên!

Nguồn