Căn cứ vào các tác nhân RMI ADK dựa trên kiến thức chuyên môn về lĩnh vực bằng các kỹ năng

Tổng quan

Mô hình ngôn ngữ lớn có kiến thức chung rộng rãi, nhưng không biết các chỉ số cụ thể, lược đồ cơ sở dữ liệu hoặc công thức tính toán của miền. Nếu không có ngữ cảnh này, mô hình sẽ đoán, dẫn đến SQL không chính xác và phân tích sai sót.

RMI ADK Agent giải quyết hạn chế này thông qua các kỹ năng. Hãy xem xét một người dùng hỏi "đường Storrow Drive hôm qua có tắc nghẽn không?". Để trả lời, nhân viên hỗ trợ phải biết rằng RMI biểu thị tình trạng tắc nghẽn dưới dạng Chỉ số thời gian di chuyển (TTI), tỷ lệ giữa duration_in_seconds trực tiếp và static_duration_in_seconds thông thoáng trong bảng historical_travel_time. Thay vào đó, một tác nhân không có kỹ năng có thể tạo ra một cột average_speed (RMI chỉ báo cáo tốc độ theo danh mục, không bao giờ theo km/h) hoặc áp dụng công thức sai, tạo ra một câu trả lời tự tin nhưng sai.

Mặc dù tác nhân cần kiến thức về miền này, nhưng việc đưa mọi định nghĩa về chỉ số, giản đồ bảng và cảnh báo SQL vào một lời nhắc hệ thống duy nhất là không hiệu quả.

Các hạn chế đối với câu lệnh hệ thống lớn

Việc đưa tất cả các quy tắc và giản đồ miền vào một câu lệnh hệ thống duy nhất sẽ gây ra một số vấn đề:

  • Chi phí cao hơn và phản hồi chậm hơn: Việc gửi một câu lệnh lớn ở mỗi lượt sẽ lãng phí mã thông báo và tăng độ trễ, ngay cả đối với những câu hỏi không cần các quy tắc đó.
  • Khả năng tuân theo chỉ dẫn kém hơn: Khi câu lệnh dài hơn và có nhiều trường hợp đặc biệt, mô hình có nhiều khả năng bỏ qua hoặc quên các quy tắc cụ thể.
  • Khó bảo trì hơn: Việc kết hợp mọi thứ vào một câu lệnh khiến bạn khó cập nhật hoặc kiểm thử các quy tắc riêng lẻ mà không làm hỏng các quy tắc khác.

Kỹ năng

Kỹ năng của tác nhân sắp xếp kiến thức theo miền thành các thư mục mô-đun mà tác nhân chỉ tải khi cần. Mỗi kỹ năng là một thư mục chứa tệp SKILL.md có hướng dẫn Markdown và tiêu đề YAML.

Thay vì tải trước mọi thứ, tác nhân chỉ giữ description ngắn của từng kỹ năng trong câu lệnh cơ bản. Khi người dùng đặt một câu hỏi liên quan đến một kỹ năng, tác nhân sẽ tải toàn bộ hướng dẫn cho lượt đó. Việc này giúp các câu lệnh có kích thước nhỏ và tiết kiệm không gian ngữ cảnh cho nhật ký trò chuyện thực tế.

Các kỹ năng cũng giúp tách biệt rõ ràng các mối quan tâm: bạn có thể viết, kiểm thử và cập nhật từng chức năng riêng biệt mà không gặp phải các tác dụng phụ không mong muốn trên các miền không liên quan. Một tác nhân sản xuất thường sử dụng nhiều kỹ năng tập trung thay vì một câu lệnh khổng lồ.

Phân tích cấu trúc của một kỹ năng

Tệp SKILL.md có hai phần: một tiêu đề YAML để định tuyến và một nội dung Markdown cho hướng dẫn.

1. Tiêu đề YAML

---
name: rmi-traffic-metrics-grounding
description: >
  Standard traffic performance metrics computable from RMI BigQuery
  tables. Covers congestion severity (TTI), delay, travel time
  reliability (LOTTR, BTI, PTI, CoV), congestion frequency, speed
  breakdowns, and network-wide congestion rates. Use when the user asks
  about traffic conditions, congestion, reliability, delay, or network
  health.
---

Mô hình này sử dụng description để quyết định xem có tải kỹ năng hay không. Vì mô hình chỉ thấy nội dung mô tả này trước khi quyết định tải kỹ năng, hãy đảm bảo nội dung mô tả liệt kê rõ ràng các chủ đề được đề cập, cách diễn đạt thường dùng của người dùng và thời điểm kích hoạt kỹ năng.

2. Nội dung Markdown

Phần nội dung cung cấp hướng dẫn dành riêng cho miền mà mô hình tuân theo sau khi được tải. Phần nội dung kỹ năng về chỉ số RMI bao gồm công thức TTI chính xác (duration_in_seconds / static_duration_in_seconds), một mẫu SQL BigQuery đã xác minh cho từng chỉ số và các cụm từ kích hoạt giúp liên kết ý định của người dùng với chỉ số phù hợp. Việc cung cấp hướng dẫn có cấu trúc và đã xác minh giúp mô hình có cơ sở và ngăn mô hình đoán thông tin chi tiết về giản đồ hoặc công thức.

Đăng ký kỹ năng bằng ADK

Nhóm các kỹ năng thành một SkillToolset và thêm chúng vào danh sách công cụ của tác nhân:

from google.adk import skills
from google.adk.tools import skill_toolset

rmi_skill_toolset = skill_toolset.SkillToolset(
    skills=[
        # TRAFFIC_METRICS_SKILL_DIR points to the skill's SKILL.md folder.
        skills.load_skill_from_dir(TRAFFIC_METRICS_SKILL_DIR),
    ],
)

# root_agent = llm_agent.Agent(..., tools=[*bq_tools, rmi_skill_toolset])

Ở đây, TRAFFIC_METRICS_SKILL_DIR chỉ đến thư mục chứa kỹ năng cơ bản về chỉ số lưu lượng truy cập.

Kết hợp các công cụ với kỹ năng

Vì các kỹ năng là hướng dẫn dựa trên văn bản, nên việc chỉ dựa vào mô hình để diễn giải và thực thi logic phức tạp có thể dẫn đến sự không nhất quán. Việc đính kèm các công cụ thực thi vào một kỹ năng sẽ mang lại tính xác định: mã xử lý các phép tính, hoạt động xác thực và hoạt động tương tác API nghiêm ngặt, trong khi kỹ năng hướng dẫn mô hình về thời điểm và cách sử dụng các công cụ đó.

Các công cụ kết hợp cũng giúp tránh tình trạng phình to ngữ cảnh chung. Thay vì hiển thị trước mọi công cụ chuyên dụng, các công cụ sẽ được giới hạn để chỉ tải khi kỹ năng tương ứng của miền đang hoạt động.

Bạn có thể đính kèm các công cụ cụ thể trực tiếp vào một kỹ năng trong tiêu đề YAML của kỹ năng đó:

metadata:
  adk_additional_tools:
    - calculate_custom_metric

Điều này đảm bảo rằng mô hình nhận được cả giản đồ công cụ và hướng dẫn sử dụng cùng nhau ngay lập tức, giúp bộ công cụ cơ bản tinh gọn.

Ví dụ: Đặt nền tảng cho một câu hỏi về tình trạng tắc nghẽn

  1. Người dùng hỏi "Đường Storrow có tắc nghẽn vào giờ cao điểm buổi tối không?"
  2. Câu lệnh hệ thống cơ bản chỉ quảng cáo tên và nội dung mô tả của từng kỹ năng, vì vậy, tác nhân thấy rằng rmi-traffic-metrics-grounding đề cập đến "tình trạng tắc nghẽn" và gọi load_skill để lấy toàn bộ hướng dẫn cho truy vấn này.
  3. Khi kỹ năng được tải, tác nhân sẽ áp dụng định nghĩa TTI và mẫu SQL đã xác minh mà tác nhân cung cấp, tính toán tỷ lệ dựa trên historical_travel_time thay vì đoán công thức.

Vì nội dung của một kỹ năng chỉ được tìm nạp khi một truy vấn cần đến, nên những kỹ năng mà tác nhân không bao giờ sử dụng sẽ không bao giờ được đưa vào ngữ cảnh, giúp cho lời nhắc hệ thống cơ bản có kích thước nhỏ.

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

  • Cung cấp hướng dẫn theo miền: Cung cấp hướng dẫn, các ràng buộc và logic nghiệp vụ rõ ràng thay vì dựa vào các giả định chung của mô hình.
  • Sử dụng các kỹ năng theo mô-đun: Chia kiến thức thành các kỹ năng có trọng tâm thay vì một câu lệnh hệ thống khổng lồ để tiết kiệm mã thông báo, giảm độ trễ và cải thiện độ chính xác.
  • Viết nội dung mô tả rõ ràng: Thêm các cụm từ kích hoạt và từ khoá cụ thể vào nội dung mô tả của từng kỹ năng để tác nhân tải kỹ năng một cách đáng tin cậy.
  • Đưa ra ví dụ cụ thể: Thêm các ví dụ đã xác minh và quy trình tham chiếu vào nội dung kỹ năng để đảm bảo kết quả nhất quán và chính xác.
  • Công cụ gói để xác định: Đính kèm các công cụ có thể thực thi vào các kỹ năng để xử lý quá trình xác thực và thực thi nghiêm ngặt trong khi vẫn duy trì bộ công cụ cơ bản.

Các bước tiếp theo

Người đóng góp

Nathaniel Thomas | Thực tập sinh kỹ thuật phần mềm, Google Maps Platform