Published on

Phát triển Agent của Anthropic: Đơn giản vượt trội sự phức tạp

Tác giả
  • avatar
    Tên
    Ajax
    Twitter

Định nghĩa về Agent (Tác nhân)

Khái niệm về agent rất đa dạng. Một số người coi agent là "quản gia toàn năng" có khả năng tư duy độc lập, tự chủ quyết định và sử dụng công cụ để hoàn thành các nhiệm vụ phức tạp. Những người khác lại cho rằng agent là "nhân viên quy củ" thực hiện các quy trình công việc được thiết lập sẵn. Anthropic gọi chung cả hai loại này là hệ thống thông minh, và phân biệt giữa workflowagent:

  • Workflow (Quy trình làm việc): Hệ thống sắp xếp các mô hình ngôn ngữ lớn (LLM) và công cụ thông qua các đường dẫn mã được xác định trước.
  • Agent (Tác nhân): Hệ thống được LLM hướng dẫn một cách linh hoạt về quy trình và cách sử dụng công cụ, có thể tự chủ kiểm soát cách hoàn thành nhiệm vụ.

Khi nào nên sử dụng Agent?

Anthropic khuyến nghị tuân thủ nguyên tắc "đơn giản trước phức tạp" khi phát triển ứng dụng AI. Không phải mọi tình huống đều cần xây dựng hệ thống thông minh phức tạp. Hệ thống thông minh có chức năng mạnh mẽ, nhưng có thể dẫn đến phản hồi chậm hơn và chi phí tăng lên. Nhà phát triển cần cân bằng giữa chức năng và hiệu quả.

  • Workflow: Phù hợp với các nhiệm vụ rõ ràng, cần tính dự đoán và nhất quán.
  • Agent: Thích hợp hơn cho các tình huống quy mô lớn, đòi hỏi sự linh hoạt và quyết định dựa trên mô hình.

Đối với nhiều ứng dụng, việc sử dụng các prompt tốt kết hợp với tìm kiếm và các ví dụ trong ngữ cảnh, hỏi trực tiếp mô hình lớn thường là đủ.

Sử dụng Framework (Khung)

Hiện nay, có nhiều framework hỗ trợ nhà phát triển xây dựng AI agent, ví dụ như:

  • LangGraph của LangChain
  • AI Agent Framework của Amazon Bedrock
  • Công cụ xây dựng workflow mô hình lớn kéo thả Rivet
  • Công cụ GUI Vellum để xây dựng và thử nghiệm workflow phức tạp

Các framework này đơn giản hóa quy trình phát triển, nhưng cũng làm tăng lớp trừu tượng của code, khiến logic bên dưới không đủ minh bạch, tăng độ khó gỡ lỗi và có thể dẫn đến việc đưa ra các giải pháp quá phức tạp trong các tình huống đơn giản.

Anthropic khuyến nghị các nhà phát triển nên bắt đầu trực tiếp với API của mô hình lớn. Nhiều mẫu chỉ cần vài dòng code để thực hiện. Nếu chọn sử dụng framework, hãy đảm bảo hiểu rõ nguyên lý cơ bản của nó. Hiểu biết không đầy đủ về cơ chế bên dưới của framework là nguyên nhân chính dẫn đến các vấn đề phát triển.

Cookbook của Anthropic cung cấp các ví dụ cụ thể.

Các khối xây dựng, Workflow và Agent

Khối xây dựng cơ bản: LLM nâng cao

Khối xây dựng cơ bản của hệ thống thông minh là LLM nâng cao, có các chức năng như tìm kiếm và ghi nhớ. Các mô hình của Anthropic có thể chủ động sử dụng các khả năng này, ví dụ như tạo truy vấn tìm kiếm, lựa chọn công cụ và quyết định thông tin cần giữ lại.

Khi mở rộng chức năng, nên tập trung vào:

  • Tùy chỉnh chức năng theo từng trường hợp ứng dụng cụ thể
  • Đảm bảo cung cấp giao diện đơn giản và có tài liệu đầy đủ cho mô hình

Giao thức ngữ cảnh mô hình mà Anthropic mới phát hành đã đơn giản hóa việc tích hợp mô hình AI với hệ sinh thái công cụ của bên thứ ba.

Workflow: Chuỗi Prompt (Prompt Chain)

Chuỗi prompt phân tách các nhiệm vụ phức tạp thành nhiều bước, mỗi bước gọi mô hình lớn một lần, các bước tiếp theo dựa trên kết quả của bước trước. Nhà phát triển có thể thêm các điểm kiểm tra vào giữa các bước để đảm bảo quy trình diễn ra như mong đợi.

Chuỗi prompt phù hợp với các tình huống có thể phân tách rõ ràng các nhiệm vụ phức tạp thành một chuỗi các nhiệm vụ con cố định. Mỗi mô hình tập trung vào hoàn thành một nhiệm vụ đơn giản, mặc dù thời gian phản hồi tổng thể có thể hơi dài hơn, nhưng độ chính xác sẽ tăng lên đáng kể.

Ví dụ ứng dụng điển hình:

  • Tạo nội dung marketing trước, sau đó dịch sang các ngôn ngữ khác.
  • Viết phác thảo tài liệu và kiểm tra tuân thủ trước, sau đó viết tài liệu hoàn chỉnh dựa trên phác thảo.

Workflow: Phân luồng thông minh (Intelligent Routing)

Kỹ thuật phân luồng xác định loại nhiệm vụ đầu vào và phân bổ nó cho các module tương ứng. Thiết kế này cho phép mỗi module được tối ưu hóa cho một nhiệm vụ cụ thể, tránh sự can thiệp lẫn nhau giữa các loại nhiệm vụ khác nhau. Phân luồng thông minh phù hợp với các tình huống có đặc điểm phân loại rõ ràng. Hệ thống AI có thể thông qua mô hình ngôn ngữ lớn hoặc thuật toán truyền thống để xác định chính xác loại nhiệm vụ và thực hiện phân luồng.

Ví dụ ứng dụng điển hình:

  • Trong hệ thống chăm sóc khách hàng, hướng các câu hỏi tư vấn chung, yêu cầu hoàn tiền và hỗ trợ kỹ thuật đến các quy trình tương ứng.
  • Phân bổ các câu hỏi đơn giản, thường gặp cho các mô hình nhỏ hơn, các câu hỏi khó, hiếm gặp cho các mô hình mạnh mẽ hơn, để tối ưu chi phí và tốc độ.

Workflow: Song song (Parallel)

Mô hình ngôn ngữ lớn có thể xử lý nhiệm vụ đồng thời và tổng hợp đầu ra bằng lập trình. Đặc điểm của workflow song song:

  • Phân đoạn nhiệm vụ: Phân tách nhiệm vụ thành các nhiệm vụ con có thể chạy song song, sau đó tích hợp kết quả.
  • Cơ chế bỏ phiếu: Thực hiện một nhiệm vụ nhiều lần, chọn kết quả tối ưu hoặc tổng hợp nhiều câu trả lời.

Phương pháp song song rất hiệu quả khi các nhiệm vụ con có thể thực hiện song song để tăng tốc độ, hoặc cần thử nhiều góc độ để có kết quả đáng tin cậy hơn. Đối với các nhiệm vụ phức tạp, việc cho mỗi lần gọi tập trung vào xử lý một khía cạnh cụ thể sẽ mang lại kết quả tốt hơn.

Ví dụ ứng dụng điển hình:

  • Phân đoạn nhiệm vụ:
    • Bảo vệ an ninh: Một mô hình xử lý yêu cầu của người dùng, một mô hình khác thực hiện kiểm duyệt nội dung.
    • Đánh giá hiệu suất: Các mô hình khác nhau đánh giá các chỉ số hiệu suất của hệ thống.
  • Cơ chế bỏ phiếu:
    • Kiểm tra an ninh code: Nhiều mô hình kiểm tra cùng nhau phát hiện các lỗ hổng code.
    • Kiểm duyệt nội dung: Nhiều mô hình đánh giá tính an toàn của nội dung từ nhiều góc độ khác nhau.

Workflow: Lãnh đạo - Thực thi (Leader - Executor)

Mô hình ngôn ngữ lớn trung tâm phân tách nhiệm vụ một cách linh hoạt, phân bổ cho các mô hình thực thi và tổng hợp kết quả.

Workflow này phù hợp với các nhiệm vụ phức tạp khó xác định các bước cụ thể trước. Việc phân tách nhiệm vụ không cố định, mà do hệ thống AI quyết định một cách linh hoạt tùy theo tình hình.

Ví dụ ứng dụng điển hình:

  • Các ứng dụng lập trình cần sửa đổi phức tạp nhiều file.
  • Các nhiệm vụ tìm kiếm cần thu thập và phân tích thông tin liên quan từ nhiều nguồn.

Workflow: Đánh giá - Tối ưu (Evaluate - Optimize)

Một LLM gọi để tạo phản hồi, một LLM khác cung cấp đánh giá và phản hồi, tạo thành một vòng lặp.

Workflow này đặc biệt hiệu quả khi có tiêu chuẩn đánh giá rõ ràng, và việc tinh chỉnh lặp đi lặp lại có thể mang lại giá trị đáng kể. LLM có thể cung cấp phản hồi, tương tự như quá trình các nhà văn chỉnh sửa nhiều lần.

Ví dụ ứng dụng điển hình:

  • Dịch văn học: Mô hình đánh giá phát hiện các khác biệt ngôn ngữ mà bản dịch bỏ sót và đưa ra các đề xuất sửa đổi.
  • Tìm kiếm phức tạp: Mô hình đánh giá xác định có cần tiếp tục tìm kiếm sâu hơn không.

Agent (Tác nhân)

Agent xuất hiện khi LLM trưởng thành trong các khả năng quan trọng như hiểu đầu vào phức tạp, suy luận, lập kế hoạch, sử dụng công cụ và phục hồi lỗi.

Công việc của agent bắt đầu từ lệnh hoặc thảo luận tương tác của người dùng. Khi nhiệm vụ đã rõ ràng, agent sẽ tự lập kế hoạch và thao tác, có thể cần người dùng cung cấp thêm thông tin hoặc đưa ra quyết định.

Trong mỗi bước thực hiện, việc nhận được "tình hình thực tế" từ môi trường là rất quan trọng. Agent có thể tạm dừng ở các điểm kiểm tra hoặc khi gặp trở ngại để nhận phản hồi từ người dùng. Nhiệm vụ thường kết thúc sau khi hoàn thành, nhưng cũng thường bao gồm các điều kiện dừng.

Agent có thể xử lý các nhiệm vụ phức tạp, nhưng việc thực hiện thường đơn giản, thường chỉ là một vòng lặp sử dụng các mô hình ngôn ngữ lớn dựa trên phản hồi từ môi trường. Vì vậy, việc thiết kế bộ công cụ và tài liệu rõ ràng, chu đáo là rất quan trọng.

Agent phù hợp với các vấn đề mở, khó dự đoán số lượng bước cần thiết và không thể mã hóa cứng các đường dẫn cố định. Tính tự chủ của agent khiến nó trở thành lựa chọn lý tưởng để mở rộng nhiệm vụ trong môi trường tin cậy. Tính tự chủ của agent đồng nghĩa với chi phí cao hơn, và có thể có rủi ro tích lũy lỗi. Nên tiến hành thử nghiệm rộng rãi trong môi trường sandbox và thiết lập các biện pháp bảo vệ thích hợp.

Ví dụ ứng dụng của Agent:

  • Một code agent để giải quyết các nhiệm vụ SWE-bench liên quan đến việc chỉnh sửa nhiều file theo mô tả nhiệm vụ.
  • Tính năng "Computer use" của Anthropic, trong đó Claude sử dụng máy tính để hoàn thành nhiệm vụ.

Kết hợp và tùy chỉnh

Các khối xây dựng này không mang tính quy định, nhà phát triển có thể định hình và kết hợp chúng theo từng trường hợp sử dụng. Yếu tố then chốt để thành công là đo lường hiệu suất và thực hiện lặp đi lặp lại. Chỉ nên xem xét tăng độ phức tạp khi các giải pháp đơn giản hơn không thực hiện được. Thành công trong lĩnh vực LLM không nằm ở việc xây dựng hệ thống phức tạp nhất, mà là xây dựng hệ thống phù hợp với nhu cầu. Bắt đầu với các prompt đơn giản, tối ưu hóa chúng bằng đánh giá toàn diện, và chỉ thêm hệ thống agent nhiều bước khi các giải pháp đơn giản hơn không thực hiện được.

Khi triển khai agent, cần tuân thủ các nguyên tắc sau:

  • Giữ thiết kế agent đơn giản.
  • Ưu tiên đảm bảo tính minh bạch của agent, thể hiện rõ từng bước trong kế hoạch.
  • Xây dựng cẩn thận giao diện agent-máy tính (ACI) thông qua tài liệu và thử nghiệm công cụ toàn diện.