Dify自定義工具例子

1.天氣(JSON)

{"openapi": "3.1.0","info": {"title": "Get weather data","description": "Retrieves current weather data for a location.","version": "v1.0.0"},"servers": [{"url": "https://weather.example.com"}],"paths": {"/location": {"get": {"description": "Get temperature for a specific location","operationId": "GetCurrentWeather","parameters": [{"name": "location","in": "query","description": "The city and state to retrieve the weather for","required": true,"schema": {"type": "string"}}],"deprecated": false}}},"components": {"schemas": {}}}

這段代碼是一個OpenAPI規范的JSON文件,用于描述一個獲取天氣數據的API。總的來說,這個API允許用戶查詢特定位置的天氣數據。

  • "openapi": "3.1.0":這表示使用的OpenAPI規范的版本是3.1.0。

  • "info":這部分提供了API的基本信息,包括標題、描述和版本。

  • "servers":這部分列出了API的服務器URL。

  • "paths":這部分定義了API的路徑和操作。在這個例子中,有一個GET操作,路徑是/location,用于獲取特定位置的天氣。這個操作需要一個名為location的查詢參數,這個參數是必需的,類型是字符串。

  • "components":這部分用于定義API中使用的模式,但在這個例子中,它是空的。

在OpenAPI規范中,parameters是一個數組,用于定義API操作的輸入參數。parameters定義了一個名為location的查詢參數,這個參數是必需的,類型是字符串。每個參數都是一個對象,包含以下屬性:

  • "name":參數的名稱。

  • "in":參數的位置。可以是"query", "header", "path""cookie"

  • "description":參數的描述。

  • "required":如果為true,則此參數是必需的。

  • "schema":參數的數據類型。

重點介紹下參數的位置,4種情況如下所示:

  • header參數,用于在請求頭中傳遞API密鑰。

  • path參數,用于在URL路徑中指定要檢索的對象的ID。

  • cookie參數,用于在cookie中傳遞用戶的會話ID。

  • query參數,附加在URL后面的參數,通常用于提供信息過濾。

創建自定義工具界面:

測試工具接口界面:

2.寵物商店(YAML)

# Taken from https://github.com/OAI/OpenAPI-Specification/blob/main/examples/v3.0/petstore.yamlopenapi: "3.0.0"info:version: 1.0.0title: Swagger Petstorelicense:name: MITservers:- url: https://petstore.swagger.io/v1paths:/pets:get:summary: List all petsoperationId: listPetstags:- petsparameters:- name: limitin: querydescription: How many items to return at one time (max 100)required: falseschema:type: integermaximum: 100format: int32responses:'200':description: A paged array of petsheaders:x-next:description: A link to the next page of responsesschema:type: stringcontent:application/json:    schema:$ref: "#/components/schemas/Pets"default:description: unexpected errorcontent:application/json:schema:$ref: "#/components/schemas/Error"post:summary: Create a petoperationId: createPetstags:- petsresponses:'201':description: Null responsedefault:description: unexpected errorcontent:application/json:schema:$ref: "#/components/schemas/Error"/pets/{petId}:get:summary: Info for a specific petoperationId: showPetByIdtags:- petsparameters:- name: petIdin: pathrequired: truedescription: The id of the pet to retrieveschema:type: stringresponses:'200':description: Expected response to a valid requestcontent:application/json:schema:$ref: "#/components/schemas/Pet"default:description: unexpected errorcontent:application/json:schema:$ref: "#/components/schemas/Error"components:schemas:Pet:type: objectrequired:- id- nameproperties:id:type: integerformat: int64name:type: stringtag:type: stringPets:type: arraymaxItems: 100items:$ref: "#/components/schemas/Pet"Error:type: objectrequired:- code- messageproperties:code:type: integerformat: int32message:type: string

pet.yaml 是一個 OpenAPI 規范文件,用于描述和定義一個名為 “Swagger Petstore” 的 API 的接口。這個文件使用了 YAML 格式,它是一種用于編寫配置文件的人類可讀的數據序列化標準。這個文件為開發者提供了一個清晰的 API 接口定義,使得開發者可以知道如何與 “Swagger Petstore” API 進行交互。文件中的主要部分包括:

  • openapi: 這個字段指定了使用的 OpenAPI 規范的版本,這里是 “3.0.0”。

  • info: 這個部分提供了 API 的基本信息,包括版本、標題和許可證。

  • servers: 這個部分定義了 API 的服務器 URL。

  • paths: 這個部分定義了 API 的所有路徑和操作。例如,/pets 路徑有兩個操作:getpostget 操作用于列出所有寵物,post 操作用于創建一個新的寵物。每個操作都有自己的參數、響應和其他詳細信息。

  • components: 這個部分定義了可重用的模式(schemas),這些模式可以在 paths 部分中引用。例如,PetPetsError 模式。

將上述YAML文件轉換為JSON格式:

{"openapi": "3.0.0","info": {"version": "1.0.0","title": "Swagger Petstore","license": {"name": "MIT"}},"servers": [{"url": "https://petstore.swagger.io/v1"}],"paths": {"/pets": {"get": {"summary": "List all pets","operationId": "listPets","tags": ["pets"],"parameters": [{"name": "limit","in": "query","description": "How many items to return at one time (max 100)","required": false,"schema": {"type": "integer","maximum": 100,"format": "int32"}}],"responses": {"200": {"description": "A paged array of pets","headers": {"x-next": {"description": "A link to the next page of responses","schema": {"type": "string"}}},"content": {"application/json": {"schema": {"$ref": "#/components/schemas/Pets"}}}},"default": {"description": "unexpected error","content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}}}},"post": {"summary": "Create a pet","operationId": "createPets","tags": ["pets"],"responses": {"201": {"description": "Null response"},"default": {"description": "unexpected error","content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}}}}},"/pets/{petId}": {"get": {"summary": "Info for a specific pet","operationId": "showPetById","tags": ["pets"],"parameters": [{"name": "petId","in": "path","required": true,"description": "The id of the pet to retrieve","schema": {"type": "string"}}],"responses": {"200": {"description": "Expected response to a valid request","content": {"application/json": {"schema": {"$ref": "#/components/schemas/Pet"}}}},"default": {"description": "unexpected error","content": {"application/json": {"schema": {"$ref": "#/components/schemas/Error"}}}}}}}},"components": {"schemas": {"Pet": {"type": "object","required": ["id", "name"],"properties": {"id": {"type": "integer","format": "int64"},"name": {"type": "string"},"tag": {"type": "string"}}},"Pets": {"type": "array","maxItems": 100,"items": {"$ref": "#/components/schemas/Pet"}},"Error": {"type": "object","required": ["code", "message"],"properties": {"code": {"type": "integer","format": "int32"},"message": {"type": "string"}}}}}
}

3.空白模板

{"openapi": "3.1.0","info": {"title": "Untitled","description": "Your OpenAPI specification","version": "v1.0.0"},"servers": [{"url": ""}],"paths": {},"components": {"schemas": {}}}

注解:貌似JSON格式看上去更加直觀。

參考文獻

[1] OpenAPI Specification:https://swagger.io/specification/

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/38341.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/38341.shtml
英文地址,請注明出處:http://en.pswp.cn/web/38341.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

動態規劃——打家劫舍(C++)

好像,自己讀的書確實有點少了。 ——2024年7月2日 198. 打家劫舍 - 力扣(LeetCode) 題目描述 你是一個專業的小偷,計劃偷竊沿街的房屋。每間房內都藏有一定的現金,影響你偷竊的唯一制約因素就是相鄰的房屋裝有相互連…

Linux 靜態庫和動態庫

不管是Linux還是Windows中的庫文件其本質和工作模式都是相同的, 只不過在不同的平臺上庫對應的文件格式和文件后綴不同。程序中調用的庫有兩種 靜態庫和動態庫,不管是哪種庫文件本質是還是源文件,只不過是二進制格式只有計算機能夠識別,作為一…

【Node-RED 4.0.2】4.0版本新增特性(官方版)

二、重要功能 *1.時間戳格式改進 過去,node-red 只提供了 最原始的 timestamp 的格式(1970-01-01 ~ now) 但是現在,額外增加了 2 種格式: ISO 8601 -A COMMON FORMAT(YYYY-MM-DDTHH:mm:ss:sssZ&#xff…

思考如何學習一門編程語言?

一、什么是編程語言 編程語言是一種用于編寫計算機程序的人工語言。通過編程語言,程序員可以向計算機發出指令,控制計算機執行各種任務和操作。編程語言由一組語法規則和語義規則組成,這些規則定義了如何編寫代碼以及代碼的含義。 編程語言…

linux和mysql基礎指令

Linux中nano和vim讀可以打開記事文件。 ifdown ens33 ifup ens33 關閉,開啟網絡 rm -r lesson1 gcc -o code1 code1.c 編譯c語言代碼 ./code1 執行c語言代碼 rm -r dir 刪除文件夾 mysql> show databases-> ^C mysql> show databases; -------…

常見網絡端口號

在網絡工程領域,了解和掌握默認端口號是至關重要的。端口號是計算機網絡中最基本的概念之 一,用于標識特定的網絡服務或應用程序。 1、什么是端口號? 端口號是計算機網絡中的一種標識,用于區分不同的網絡服務和應用程序。每個端…

【C++進階學習】第五彈——二叉搜索樹——二叉樹進階及set和map的鋪墊

二叉樹1:深入理解數據結構第一彈——二叉樹(1)——堆-CSDN博客 二叉樹2:深入理解數據結構第三彈——二叉樹(3)——二叉樹的基本結構與操作-CSDN博客 二叉樹3:深入理解數據結構第三彈——二叉樹…

想要打造超高性能的接口API?試試這12條小技巧。

1. 并行處理 簡要說明 舉個例子:在價格查詢鏈路中,我們需要獲取多種獨立的價格配置項信息,如基礎價、折扣價、商戶活動價、平臺活動價等等。 CompletableFuture 是銀彈嗎? 使用 CompletableFuture 的確能夠幫助我們解決許多獨…

走進IT的世界

引言 隨著高考的結束,對于即將踏入IT(信息技術)領域的新生而言,這個假期不僅是放松身心的時間,更是提前規劃、深化專業知識、為大學生活奠定堅實基礎的寶貴機會。以下是一份詳盡的高考假期預習與規劃指南,…

Android自動化測試實踐:uiautomator2 核心功能與應用指南

Android自動化測試實踐:uiautomator2 核心功能與應用指南 uiautomator2 是一個用于Android應用的自動化測試Python庫,支持多設備并行測試操作。它提供了豐富的API來模擬用戶對App的各種操作,如安裝、卸載、啟動、停止以及清除應用數據等。此外…

30個!2024重大科學問題、工程技術難題和產業技術問題發布

【SciencePub學術】中國科協自2018年開始,組織開展重大科技問題難題征集發布活動,引導廣大科技工作者緊跟世界科技發展大勢,聚焦國家重大需求,開展原創性、引領性研究,不斷夯實高質量發展的科技支撐。 自2024年征集活動…

飛書文檔轉markdown 超級快捷方法。

直接使用那個github的高贊官方的工具轉換,需要設置什么小應用那種東西,還要審批,社恐人表示怕了怕了。而且文檔我分享出去,是有權限的,反正無論如何生成不了 我的方法是 直接全選,然后粘貼進Arya - 在線 …

C#的五大設計原則-solid原則

什么是C#的五大設計原則,我們用人話來解釋一下,希望小伙伴們能學會: 好的,讓我們以一種幽默的方式來解釋C#的五大設計原則(SOLID): 單一職責原則(Single Responsibility Principle…

PCL 漸進形態過濾器實現地面分割

點云地面分割 一、代碼實現二、結果示例?? 概述 漸進形態過濾器:采用先腐蝕后膨脹的運算過程,可以有效濾除場景中的建筑物、植被、車輛、行人以及交通附屬設施,保留道路路面及路緣石點云。 一、代碼實現 #include <iostream> #include <pcl/io/pcd_io.h> #in…

【LeetCode】976. 三角形的最大周長

1. 題目 2. 分析 需要分析好再動手編程。 如果要構成三角形的最大周長&#xff0c;那么就需要盡可能用最長的邊構建。所以可以先對數組排個序&#xff0c;然后基于排序得到的結果從大往小的逐個檢查長度為3的窗口&#xff0c;判斷該窗口的值是否滿足三角形的構成條件&#x…

鴻蒙開發Ability Kit(程序訪問控制):【安全控件概述】

安全控件概述 安全控件是系統提供的一組系統實現的ArkUI組件&#xff0c;應用集成這類組件就可以實現在用戶點擊后自動授權&#xff0c;而無需彈窗授權。它們可以作為一種“特殊的按鈕”融入應用頁面&#xff0c;實現用戶點擊即許可的設計思路。 相較于動態申請權限的方式&am…

構造,析構,拷貝【類和對象(中)】

P. S.&#xff1a;以下代碼均在VS2019環境下測試&#xff0c;不代表所有編譯器均可通過。 P. S.&#xff1a;測試代碼均未展示頭文件stdio.h的聲明&#xff0c;使用時請自行添加。 博主主頁&#xff1a;LiUEEEEE ??????????????????? ?? …

Excel_VBA編程

在Excel中&#xff0c;VBA&#xff08;Visual Basic for Applications&#xff09;是一種強大的工具&#xff0c;可以用來自動化各種任務。下面介紹一些常用的VBA函數和程序結構&#xff1a; 常用函數 MsgBox&#xff1a;用于顯示消息框。 MsgBox "Hello, World!"In…

【python全棧系列】day07-python數據類型-集合

Python中的集合&#xff08;Set&#xff09;是一個無序的、不包含重復元素的數據結構。它主要用于數學上的集合操作&#xff0c;如并集、交集、差集和對稱差集等。集合的基本用途包括去重和關系測試。 1、集合的特性 無序性&#xff1a;集合中的元素是無序的&#xff0c;這意…

gin-vue -admin 初始化安裝后 進入 后臺首頁報錯

報錯原因&#xff1a; 因為 我是使用的phpstudy 小皮的數據庫 默認的是MySam 的引擎 mysql 引擎需要是 innoDB 解決辦法 &#xff1a; 在linux 的環境下 配置一個數據庫 &#xff0c; 我是用的是vmware 虛擬機