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 moduleTrường
identitylà 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
_assetscủ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ặcselect, 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ànhsecret-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.parametersDanh sách tham sốnameTên tham số, duy nhất, không trùng với các tham số kháctypeLoạ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ốngrequiredYêu cầu hoặc khôngTrong chế độ
llm, nếu tham số này là bắt buộc, Agent phải suy luận tham số nàyTrong 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
optionsCá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àyTrong chế độ
form, khitypelàselect, frontend sẽ hiển thị các tùy chọn này
defaultGiá trị mặc địnhlabelNhãn tham số, cho việc hiển thị ở frontendhuman_descriptionGiới thiệu cho việc hiển thị ở frontend, hỗ trợ nhiều ngôn ngữllm_descriptionGiớ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àyformLoại biểu mẫu, hiện tại hỗ trợllm,formhai 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 và 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 và 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.