Tích hợp công cụ nhanh

Ở đây, chúng tôi sẽ sử dụng GoogleSearch như một ví dụ để minh họa cách tích hợp một công cụ một cách nhanh chóng.

1. Chuẩn bị tệp yaml của Nhà cung cấp Công cụ

Giới thiệu

Tệp yaml này khai báo một nhà cung cấp công cụ mới và bao gồm thông tin như tên nhà cung cấp, biểu tượng, tác giả và các chi tiết khác được lấy từ frontend để hiển thị.

Ví dụ

Chúng ta cần tạo một mô-đun google (thư mục) trong core/tools/provider/builtin, và tạo google.yaml. Tên phải phù hợp với tên mô-đun.

Sau đó, tất cả các hoạt động liên quan đến công cụ này sẽ được thực hiện trong mô-đun này.

identity: # Basic information of the tool provider
  author: Dify # Author
  name: google # Name, unique, no duplication with other providers
  label: # Label for frontend display
    en_US: Google # English label
    zh_Hans: Google # Chinese label
  description: # Description for frontend display
    en_US: Google # English description
    zh_Hans: Google # Chinese description
  icon: icon.svg # Icon, needs to be placed in the _assets folder of the current module
  • Trường identity là bắt buộc, nó chứa thông tin cơ bản của nhà cung cấp công cụ, bao gồm tác giả, tên, nhãn, mô tả, biểu tượng, v.v.

    • Biểu tượng cần được đặt trong thư mục _assets của mô-đun hiện tại, bạn có thể tham khảo: api/core/tools/provider/builtin/google/_assets/icon.svg

2. Chuẩn bị Chứng chỉ Nhà cung cấp

Google, như một công cụ của bên thứ ba, sử dụng API được cung cấp bởi SerpApi, đòi hỏi một Khóa API để sử dụng. Điều này có nghĩa là công cụ này cần một chứng chỉ để sử dụng. Đối với các công cụ như wikipedia, không cần phải điền vào trường chứng chỉ, bạn có thể tham khảo: api/core/tools/provider/builtin/wikipedia/wikipedia.yaml

Sau khi cấu hình trường chứng chỉ, hiệu ứng như sau:

  • type: Loại trường chứng chỉ, hiện tại có thể là secret-input, text-input, hoặc select, tương ứng với hộp nhập mật khẩu, hộp nhập văn bản và hộp thả xuống, tương ứng. Nếu thiết lập thành secret-input, nó sẽ ẩn nội dung nhập trên frontend và backend sẽ mã hóa nội dung nhập.

3. Chuẩn bị Công cụ yaml

Một nhà cung cấp có thể có nhiều công cụ, mỗi công cụ cần một tệp yaml để mô tả, tệp này chứa thông tin cơ bản, tham số, đầu ra, v.v. của công cụ.

Vẫn tiếp tục sử dụng GoogleSearch làm ví dụ, chúng ta cần tạo một mô-đun công cụ trong mô-đun google, và tạo tools/google_search.yaml, nội dung như sau.

  • Trường identitylà bắt buộc, nó chứa thông tin cơ bản của công cụ, bao gồm tên, tác giả, nhãn, mô tả, v.v.

  • parameters Danh sách tham số

    • name Tên tham số, duy nhất, không trùng với các tham số khác

    • type Loại tham số, hiện tại hỗ trợ bốn loại: string, number, boolean, select, tương ứng với văn bản, số, boolean, hộp thả xuống

    • required Yêu cầu hoặc không

      • Trong chế độ llm, nếu tham số này là bắt buộc, Agent phải suy luận tham số này

      • Trong chế độ form, nếu tham số này là bắt buộc, người dùng phải điền vào tham số này trên frontend trước khi cuộc trò chuyện bắt đầu

    • options Các tùy chọn của tham số

      • Trong chế độ llm, ChatX sẽ truyền tất cả các tùy chọn này cho LLM, LLM có thể suy luận dựa trên các tùy chọn này

      • Trong chế độ form, khi typeselect, frontend sẽ hiển thị các tùy chọn này

    • default Giá trị mặc định

    • label Nhãn tham số, cho việc hiển thị ở frontend

    • human_description Giới thiệu cho việc hiển thị ở frontend, hỗ trợ nhiều ngôn ngữ

    • llm_description Giới thiệu được truyền cho LLM, để LLM hiểu rõ hơn về tham số này, chúng tôi đề xuất viết thông tin chi tiết về tham số này càng nhiều càng tốt ở đây, để LLM có thể hiểu và sử dụng tham số này

    • form Loại biểu mẫu, hiện tại hỗ trợ llm, form hai loại, tương ứng với tự suy luận của Agent và điền trên frontend

4. Thêm Công cụ Logic

Sau khi hoàn thành cấu hình công cụ, chúng ta có thể bắt đầu viết mã công cụ xác định cách gọi nó.

Tạo google_search.py trong mô-đun google/tools, nội dung như sau.

Tham số

Logic tổng thể của công cụ nằm trong phương thức _invoke, phương thức này chấp nhận hai tham số: user_id tool_parameters, đại diện cho ID người dùng và các tham số công cụ tương ứng

Dữ liệu Trả về

Khi công cụ trả về, bạn có thể chọn trả về một tin nhắn hoặc nhiều tin nhắn, ở đây chúng ta trả về một tin nhắn, sử dụng create_text_message create_link_message có thể tạo ra một tin nhắn văn bản hoặc một tin nhắn liên kết.

5. Thêm Mã Nhà cung cấp

Cuối cùng, chúng ta cần tạo một lớp nhà cung cấp dưới mô-đun nhà cung cấp để triển khai logic xác minh chứng chỉ của nhà cung cấp. Nếu xác minh chứng chỉ thất bại, nó sẽ ném một ngoại lệ ToolProviderCredentialValidationError.

Tạo google.py trong mô-đun google, nội dung như sau.

Hoàn thành

Sau khi hoàn thành các bước trên, chúng ta có thể thấy công cụ này trên frontend và nó có thể được sử dụng trong Agent.

Tất nhiên, vì google_search cần một chứng chỉ, trước khi sử dụng nó, bạn cũng cần nhập chứng chỉ của mình trên frontend.

Last updated