Đại lý AI là gì? Cách chúng hoạt động, với vòng lặp tác nhân đơn giản, bạn có thể chạy

  1. Trang chủ
  2. Blog
  3. Trí tuệ nhân tạo

Trí tuệ nhân tạo

Đại lý AI là gì? Cách chúng hoạt động, bạn có thể chạy với vòng lặp tác nhân đơn giản

Một tác nhân AI làm được nhiều việc hơn là chỉ trả lời. Nó xác định mục tiêu, lựa chọn hành động, kiểm tra kết quả và tiếp tục. Tìm hiểu những gì bên trong nó, chạy một vòng lặp nhỏ trong Python và hiểu những rủi ro trước khi bạn tin tưởng vào nó.

Đọc 9 phút
Tác nhân AI là gì? Cách chúng hoạt động, với một vòng lặp tác nhân đơn giản, bạn có thể chạy

Điểm chính

  • Tác nhân AI thường là một mô hình ngôn ngữ chạy theo vòng lặp, có các công cụ và mục tiêu.
  • Vòng lặp rất đơn giản: quyết định, hành động, quan sát kết quả và lặp lại cho đến khi hoàn thành.
  • Mô hình chỉ đề xuất hành động. Mã của bạn chạy chúng, đó là nơi bạn thực thi các quy tắc.
  • Đại lý có thể lặp lại hoặc lạm dụng các công cụ, vì vậy hãy đặt giới hạn bước và yêu cầu phê duyệt đối với các hành động rủi ro.

Hãy hỏi chatbot về đơn hàng trễ và nó sẽ cho bạn một số lời khuyên. Hãy hỏi đại lý AI và họ có thể tra cứu đơn hàng, kiểm tra độ trễ, áp dụng phiếu thưởng và báo cáo lại. Sự khác biệt là tác nhân có thể thực hiện hành động và phản ứng với những gì xảy ra, thay vì chỉ đưa ra một phản hồi.

Thuật ngữ này được sử dụng rộng rãi trong tiếp thị, vì vậy hướng dẫn này tập trung vào cách các hệ thống này thực sự hoạt động. Để làm cho nó cụ thể, chúng tôi đã xây dựng một vòng lặp tác nhân nhỏ trong Python 3.13 và chạy nó, và kết quả đầu ra bên dưới là từ những lần chạy đó. “Mô hình” của chúng tôi là một chức năng theo kịch bản, không phải là mô hình AI thực sự, do đó bất kỳ ai cũng có thể chạy và kiểm tra vòng lặp. Nó cho thấy cấu trúc kiểm soát, không phải trí thông minh. Mới làm quen với những điều cơ bản? Trước tiên hãy đọc mô hình ngôn ngữ lớn là gì.

Đặc vụ AI là gì?

Không có định nghĩa thống nhất duy nhất. Trong thực tế hiện nay, tác nhân AI là phần mềm theo đuổi mục tiêu bằng cách liên tục quyết định việc cần làm tiếp theo, sử dụng các công cụ để hành động trên thế giới và điều chỉnh dựa trên kết quả. Thông thường, việc ra quyết định xuất phát từ một mô hình ngôn ngữ lớn.

Hãy nghĩ về sự khác biệt giữa người đưa ra chỉ dẫn và người chạy việc vặt. Những câu trả lời đầu tiên một lần. Người thứ hai đi ra ngoài, thấy cửa hàng đã đóng cửa, thử một cửa hàng khác và chỉ quay lại khi công việc hoàn thành.

Chatbot, quy trình làm việc hay đại lý?

Loại Ai quyết định các bước? Nó có thể hành động được không? Ví dụ
Chatbot Người dùng lái xe mỗi lượt Thường thì không Trả lời câu hỏi từ văn bản
Quy trình làm việc cố định Nhà phát triển trước Có, trên đường dẫn đã đặt Tóm tắt từng vé, sau đó định tuyến nó
đặc vụ AI Mô hình tại thời điểm chạy Có, trong giới hạn Điều tra và giải quyết một vé

Chúng tồn tại trên một quang phổ và nhiều hệ thống hữu ích là sự kết hợp. Câu hỏi quan trọng là có bao nhiêu đường dẫn được quyết định trong thời gian chạy.

Bên trong một đại lý có gì

phần Vai trò
người mẫu Quyết định bước tiếp theo, dựa trên mục tiêu và những gì đã xảy ra cho đến nay
Hướng dẫn Mục tiêu, quy tắc và giới hạn cần tuân theo
Công cụ Các chức năng mà nó có thể yêu cầu, như tìm kiếm hoặc gọi API
Bộ nhớ Những gì nó biết từ các bước trước đó hoặc các phiên trước đó
Vòng điều khiển Mã thông thường chạy các công cụ và thực thi các giới hạn

Vòng lặp đại lý

  1. Quyết định. Mô hình xem xét mục tiêu và lịch sử rồi chọn một hành động hoặc quyết định hành động đó đã kết thúc.
  2. Hành động. Mã của bạn chạy công cụ được yêu cầu.
  3. Quan sát. Kết quả được thêm vào lịch sử.
  4. Lặp lại, cho đến khi đạt được mục tiêu hoặc đạt đến giới hạn.

Đó là cốt lõi của hầu hết các đại lý. Sự tinh vi chủ yếu nằm ở mô hình, công cụ và các biện pháp bảo vệ xung quanh vòng lặp này.

Một vòng lặp bạn có thể chạy

Đại lý nhỏ của chúng tôi xử lý các đơn đặt hàng bị trì hoãn. Nó có hai công cụ và một trong số chúng cần có sự chấp thuận của con người vì nó tốn tiền:

ORDERS = {
    "A100": {"status": "delayed", "days_late": 6},
    "B200": {"status": "shipped", "days_late": 0},
}

def get_order(order_id):
    return ORDERS.get(order_id, {"error": "order not found"})

def issue_voucher(order_id, amount):
    return {"voucher": f"V-{order_id}", "amount": amount}

TOOLS = {"get_order": get_order, "issue_voucher": issue_voucher}
NEEDS_APPROVAL = {"issue_voucher"}

Và đây chính là vòng lặp. Đó là mã thông thường và mọi quy tắc an toàn đều tồn tại ở đây chứ không phải trong mô hình:

def run_agent(goal, model, approve, max_steps=5):
    history = []
    for step in range(1, max_steps + 1):
        decision = model(goal, history)
        if "finish" in decision:
            return decision["finish"]

        name, args = decision["tool"], decision["args"]
        if name in NEEDS_APPROVAL and not approve(name, args):
            result = {"denied": True}
        else:
            result = TOOLS[name](**args)

        history.append({"tool": name, "result": result})
    return None   # stopped: step limit reached

Để sử dụng mô hình thực, bạn sẽ thay thế hàm model bằng lệnh gọi tới API LLM, chuyển cho nó mục tiêu, lịch sử và mô tả về các công cụ của bạn. Vòng lặp gần như giữ nguyên.

Điều gì đã xảy ra trong cuộc chạy của chúng tôi

Chúng tôi đã thử năm tình huống với chức năng quyết định theo kịch bản và ghi lại từng bước.

Một đơn hàng bị trì hoãn, với chứng từ đã được phê duyệt

step 1: get_order({'order_id': 'A100'}) -> {'status': 'delayed', 'days_late': 6}
step 2: issue_voucher({'order_id': 'A100', 'amount': 200}) -> {'voucher': 'V-A100', 'amount': 200}
step 3: finish -> Sorry for the delay. Voucher V-A100 issued.

Mỗi bước sử dụng kết quả của bước trước đó. Chứng từ chỉ được xem xét khi sự chậm trễ đã được xác nhận.

Lệnh tương tự nhưng bị từ chối phê duyệt

step 2: issue_voucher({'order_id': 'A100', 'amount': 200}) -> {'denied': True}
step 3: finish -> Your order is late. A person will review compensation.

Con người nói không, công cụ không bao giờ chạy và nhân viên hỗ trợ đã điều chỉnh câu trả lời của mình.

Lệnh không xác định

step 1: get_order({'order_id': 'Z999'}) -> {'error': 'order not found'}
step 2: finish -> I could not find that order.

Việc cung cấp cho các công cụ thông báo lỗi rõ ràng sẽ giúp ích. Một người mẫu thực sự có thể đọc chúng và phản hồi một cách hợp lý thay vì đoán mò.

Một mô hình bị mắc kẹt

Chúng tôi cũng đã hoán đổi một chức năng quyết định bị lỗi lặp lại cùng một hành động mãi mãi:

step 1: get_order({'order_id': 'B200'}) -> {'status': 'shipped', 'days_late': 0}
step 2: get_order({'order_id': 'B200'}) -> {'status': 'shipped', 'days_late': 0}
step 3: get_order({'order_id': 'B200'}) -> {'status': 'shipped', 'days_late': 0}
stopped: step limit reached

Các đại lý thực sự có thể rơi vào những vòng lặp như thế này và mỗi bước với một mô hình thực đều tốn tiền. Nếu không có max_steps, điều này sẽ không bao giờ kết thúc.

Cách thức hoạt động của các công cụ

Đây là phần bị hiểu lầm nhiều nhất. Một mô hình ngôn ngữ không thể tự chạy bất cứ thứ gì. Nó tạo ra văn bản có cấu trúc cho biết nó muốn sử dụng công cụ nào, với những đối số nào. Mã của bạn quyết định có chạy mã đó hay không. Đó là lý do tại sao vòng lặp là nơi thích hợp cho các quyền, xác thực và ghi nhật ký.

Các nhà cung cấp mô hình cung cấp công cụ hoặc chức năng yêu cầu điều này. Giao thức bối cảnh mô hình (MCP) là một tiêu chuẩn mở để kết nối các mô hình với các công cụ và dữ liệu và bài viết của chúng tôi về Playwright MCP cho thấy một cách sử dụng. Viết tên và mô tả công cụ rõ ràng, vì mô hình dựa vào đó để lựa chọn chính xác.

Mẹo: Bắt đầu với các công cụ chỉ đọc. Một đại lý chỉ có thể tra cứu mọi thứ sẽ ít nguy hiểm hơn nhiều so với một đại lý có thể gửi, xóa hoặc thanh toán. Thêm quyền ghi vào từng công cụ một khi bạn đã thấy nó hoạt động như thế nào.

Bộ nhớ

Loại Giữ Ví dụ
Ngắn hạn Lịch sử của nhiệm vụ hiện tại Danh sách history trong vòng lặp của chúng tôi
Dài hạn Sự thật được lưu giữ giữa các phiên Tùy chọn người dùng trong cơ sở dữ liệu
Kiến thức Tài liệu được lấy ra khi cần thiết RAG sử dụng phần nhúng

Các tác vụ dài có thể vượt quá cửa sổ ngữ cảnh của mô hình, vì vậy hệ thống thường tóm tắt các bước cũ hơn. Các bản tóm tắt có thể mất thông tin chi tiết, đó là một lý do khiến các tác nhân hoạt động lâu dài có thể đi chệch hướng.

Hệ thống đa tác nhân

Một số hệ thống phân chia công việc giữa một số tác nhân chuyên biệt, chẳng hạn như người lập kế hoạch, nhà nghiên cứu và người đánh giá. Điều này có thể giúp thực hiện các nhiệm vụ lớn được phân chia gọn gàng. Nó cũng làm tăng thêm chi phí, nhiều cách dẫn đến lỗi hơn và khó gỡ lỗi hơn. Trước tiên hãy thử một tác nhân duy nhất với các công cụ tốt và chỉ chia tách nó khi có lý do rõ ràng.

Rủi ro và hạn chế

  • Hành động sai. Lỗi của chatbot là một câu nói tồi. Lỗi của nhân viên có thể là email đã gửi hoặc bản ghi bị xóa.
  • Chèn nhanh. Một trang web hoặc email mà nhân viên hỗ trợ đọc có thể chứa các hướng dẫn ẩn. Hãy coi tất cả đầu ra của công cụ là dữ liệu không đáng tin cậy, không phải là lệnh.
  • Lỗi gộp. Một lỗi nhỏ ban đầu có thể khiến mọi bước sau đó đi sai hướng.
  • Chi phí và độ trễ. Mỗi bước có thể là một lệnh gọi mô hình khác, do đó, một tác vụ có thể chậm hơn và tốn kém hơn nhiều so với một lời nhắc duy nhất.
  • Sự không nhất quán. Cùng một mục tiêu có thể đi theo một con đường khác nhau trong mỗi lần chạy, điều này khiến việc kiểm tra trở nên khó khăn hơn.
  • Trách nhiệm giải trình. Mọi người vẫn chịu trách nhiệm về những gì hệ thống thực hiện, vì vậy hãy lưu giữ hồ sơ.

Lan can quan trọng

  1. Đặc quyền tối thiểu. Chỉ cung cấp cho mỗi nhân viên những công cụ và quyền truy cập mà họ cần.
  2. Sự chấp thuận của con người đối với mọi thứ tốn kém, không thể thay đổi hoặc tác động bên ngoài, giống như bản demo của chúng tôi.
  3. Giới hạn cứng về số bước, thời gian và mức chi tiêu.
  4. Xác thực đầu vào của công cụ trong mã và không dựa vào hướng dẫn của mô hình.
  5. Ghi lại từng bước, để bạn có thể biết lý do xảy ra sự cố. Xem giám sát và khả năng quan sát.
  6. Thử nghiệm bằng các tình huống thực tế, bao gồm cả lỗi. Kiểm tra kết quả cuối cùng cũng như các câu trả lời riêng lẻ. Hướng dẫn của chúng tôi về các phương pháp hay nhất về tác nhân AI sẽ đi sâu hơn vào quá trình triển khai.

Khi nào nên sử dụng đại lý

Sử dụng đại lý khi Sử dụng một cái gì đó đơn giản hơn khi
Các bước không thể biết trước Các bước luôn giống nhau
Nhiệm vụ cần một số công cụ Một lời nhắc có thể thực hiện công việc
Kết quả thay đổi những gì xảy ra tiếp theo Một quy trình làm việc cố định sẽ hoạt động
Sai lầm là rẻ tiền, hoặc có thể xem xét lại Lỗi gây tốn kém và khó khắc phục

Trợ lý mã hóa là một trong những ví dụ hoàn thiện nhất hiện nay, vì họ có thể đọc tệp, chạy thử nghiệm, xem lỗi và thử lại với sự xem xét kết quả của con người. Một bộ thử nghiệm mang lại cho họ một tín hiệu rõ ràng về sự thành công. Hướng dẫn của chúng tôi về kỹ thuật nhanh chóng cũng áp dụng cho việc viết hướng dẫn tốt cho đại lý. Hãy bắt đầu với điều đơn giản nhất có thể thực hiện được, bởi vì một cuộc gọi đơn lẻ được nhắc nhở tốt thường đánh bại được một nhân viên phức tạp.

Lời kết

Tác nhân AI ít bí ẩn hơn ta tưởng: một mô hình, một số công cụ và một vòng lặp có giới hạn. Phần khó khăn là sự tin tưởng, không phải mã. Để tìm hiểu cách chúng hoạt động, hãy lấy vòng lặp nhỏ của chúng tôi, kết nối nó với một mô hình thực bằng các công cụ chỉ đọc và xem nhật ký khi nó hoạt động. Bạn sẽ sớm thấy nó tỏa sáng ở đâu và nó cần con người ở đâu.

Câu hỏi thường gặp

Nói một cách đơn giản, tác nhân AI là gì?

Đây là phần mềm hoạt động hướng tới mục tiêu bằng cách chọn hành động, sử dụng công cụ và kiểm tra kết quả theo vòng lặp, thay vì chỉ đưa ra một câu trả lời duy nhất.

Sự khác biệt giữa chatbot và tác nhân AI là gì?

Một chatbot chủ yếu trả lời từng tin nhắn. Một đại lý có thể lập kế hoạch cho một số bước, gọi công cụ và thay đổi hướng đi dựa trên những gì xảy ra trong quá trình thực hiện.

Các tác nhân AI có cần một mô hình ngôn ngữ lớn không?

Hầu hết những hệ thống hiện đại đều sử dụng LLM để đưa ra quyết định, mặc dù ý tưởng rộng hơn về các tác nhân phần mềm đã cũ hơn và có thể sử dụng các quy tắc hoặc các phương pháp AI khác.

Tác nhân AI có an toàn không?

Chúng ẩn chứa những rủi ro thực sự, bao gồm cả những hành động sai trái và tiêm chích kịp thời. Giới hạn quyền của họ, yêu cầu phê duyệt các bước rủi ro, đặt giới hạn cứng và ghi lại mọi thứ.

Tác nhân AI có thể thay thế nhà phát triển hoặc người thử nghiệm không?

Nói chung là không phải hôm nay. Họ có thể xử lý nhiều nhiệm vụ được xác định rõ ràng nhưng mọi người vẫn cần đặt ra mục tiêu, xem xét kết quả đầu ra và chịu trách nhiệm về kết quả.

Tiếp tục học hỏi

Làm việc với Stack Quora

Cần trợ giúp về kiểm tra, WordPress hoặc SEO?

Chúng tôi giúp các nhóm phát triển phần mềm tốt hơn và phát triển trang web của họ. Hãy cho chúng tôi biết bạn đang làm gì và chúng tôi sẽ đề xuất bước tiếp theo rõ ràng.

Tiếp tục đọc

Thêm hướng dẫn về thử nghiệm, AI và phát triển hiện đại

Bạn thích bài viết này? Chọn một chủ đề và chuyển ngay sang phần hướng dẫn mới nhất của chúng tôi.

Trí tuệ nhân tạo

Giải thích về ảo giác AI: Tại sao các mô hình ngôn ngữ lại tạo nên mọi thứ và cách giảm thiểu nó

Ảo giác AI đã giải thích: chúng là gì, tại sao mô hình ngôn ngữ tạo ra chúng, các loại phổ biến, cách giảm thiểu chúng bằng cách căn cứ và nhắc nhở …

Đọc bài viết →
DevOps

Giải thích về các biến môi trường: Tệp .env, bí mật và cấu hình được thực hiện đúng

Các biến môi trường được giải thích bằng các ví dụ Python mà chúng tôi đã chạy: đọc và thiết lập chúng, tại sao mọi giá trị đều là một chuỗi, tệp .e…

Đọc bài viết →
Phát triển phần mềm

Giải thích về giới hạn tỷ lệ API: Thuật toán, tiêu đề và xử lý lỗi 429

Giới hạn tốc độ API được giải thích bằng mô phỏng mà chúng tôi đã chạy: nhóm mã thông báo, cửa sổ cố định, cửa sổ trượt, 429 phản hồi, tiêu đề giới …

Đọc bài viết →
Tự động hóa kiểm thử

Chế giễu bằng Python: unittest.mock, patch và những sai lầm khiến bài kiểm tra nói dối

Mô phỏng bằng Python với unittest.mock, đã được thử nghiệm: Mock và return_value, side_effect, vá lỗi nơi sử dụng tên, thông số kỹ thuật và thông số…

Đọc bài viết →
Kiểm thử phần mềm

Giải thích về phạm vi bảo hiểm của mã: Phạm vi tuyến so với chi nhánh và ý nghĩa thực sự 100%

Phạm vi bảo hiểm mã được giải thích bằng cách chạy phạm vi bảo hiểm thực tế: phạm vi bảo hiểm dòng, chi nhánh và điều kiện, đọc báo cáo, lý do tại s…

Đọc bài viết →
Cơ sở dữ liệu & SQL

DELETE vs TRUNCATE vs DROP trong SQL: Sự khác biệt, khôi phục và thời điểm sử dụng mỗi loại

DELETE vs TRUNCATE vs DROP được giải thích bằng SQL đã được thử nghiệm: mỗi loại loại bỏ, khôi phục, kích hoạt, đặt lại danh tính, tốc độ và Postgre…

Đọc bài viết →
Cơ sở dữ liệu & SQL

Giải thích về Chế độ xem SQL: Tạo, sử dụng và tránh những cạm bẫy, kèm theo ví dụ

Chế độ xem SQL được giải thích bằng các truy vấn chúng tôi đã chạy: tạo chế độ xem, kết quả trực tiếp, ẩn cột, hiệu suất, chế độ xem có thể cập nhật…

Đọc bài viết →
Phát triển phần mềm

Giao diện TypeScript so với loại: Sự khác biệt thực sự, được thử nghiệm bằng trình biên dịch

Giao diện TypeScript so với loại, được kiểm tra bằng trình biên dịch thực: cả hai có thể làm gì, chỉ một người có thể làm gì, hợp nhất khai báo, mở …

Đọc bài viết →
Phát triển phần mềm

Giải thích về Python *args và **kwargs: Hàm linh hoạt với ví dụ rõ ràng

Python *args và **kwargs được giải thích bằng mã chúng tôi đã chạy: đóng gói và giải nén, thứ tự tham số, đối số chỉ từ khóa và chỉ vị trí, trình tr…

Đọc bài viết →
Phát triển phần mềm

Hàm Lambda của Python: Cú pháp, cách sử dụng thực tế và khi nào không nên sử dụng chúng

Các hàm lambda của Python được giải thích bằng mã chúng tôi đã chạy: cú pháp, sắp xếp bằng khóa, bản đồ và bộ lọc, các phần đóng, bẫy liên kết muộn …

Đọc bài viết →
Trí tuệ nhân tạo

Đại lý AI là gì? Cách chúng hoạt động, với vòng lặp tác nhân đơn giản, bạn có thể chạy

Tác nhân AI là gì? Hướng dẫn đơn giản về vòng lặp tác nhân, công cụ, bộ nhớ và lan can, với một vòng lặp Python nhỏ mà chúng tôi đã chạy, những rủi …

Đọc bài viết →
DevOps

Giám sát và Khả năng quan sát: Sự khác biệt thực sự, với nhật ký, số liệu và dấu vết

Giải thích về giám sát và khả năng quan sát: lỗi đã biết và chưa biết, nhật ký, số liệu và dấu vết, hướng dẫn về sự cố thanh toán, tín hiệu vàng, Op…

Đọc bài viết →
DevOps

Docker Volumes vs Bind Mounts: Duy trì dữ liệu vùng chứa đúng cách

Giải thích về khối lượng Docker và liên kết gắn kết: tại sao dữ liệu vùng chứa biến mất, khối lượng được đặt tên, liên kết gắn kết, tmpfs, ví dụ về …

Đọc bài viết →
Tự động hóa kiểm thử

TDD vs BDD: Key Differences, One Feature Built Both Ways and When to Use Each

TDD và BDD được giải thích bằng một tính năng giảm giá được xây dựng theo cả hai cách: tái cấu trúc màu đỏ-xanh với mã chúng tôi đã chạy, kịch bản C…

Đọc bài viết →
Phát triển phần mềm

Git merge vs rebase: khác biệt, ví dụ và khi nào dùng cái nào

Git merge vs rebase được giải thích bằng đầu ra log thực tế, bảng so sánh, quy tắc vàng của rebase và quy trình làm việc nhóm an toàn.

Đọc bài viết →
Phát triển phần mềm

List comprehension trong Python: cú pháp, ví dụ và khi nào nên tránh

List comprehension trong Python: cú pháp, lọc dữ liệu, if-else, vòng lặp lồng nhau, thời gian đo thực tế và khi nào vòng lặp for thông thường tốt hơn.

Đọc bài viết →
Cơ sở dữ liệu & SQL

Giải thích SQL JOIN kèm ví dụ (Inner, Left, Right, Full)

Hiểu SQL JOIN từng bước với bảng và truy vấn mẫu: INNER, LEFT, RIGHT, FULL, CROSS và SELF, cùng lỗi thường gặp và mẹo hiệu năng.

Đọc bài viết →