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.mzph.cn/web/38341.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

动态规划——打家劫舍(C++)

好像,自己读的书确实有点少了。 ——2024年7月2日 198. 打家劫舍 - 力扣(LeetCode) 题目描述 你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连…

【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; -------…

【C++进阶学习】第五弹——二叉搜索树——二叉树进阶及set和map的铺垫

二叉树1:深入理解数据结构第一弹——二叉树(1)——堆-CSDN博客 二叉树2:深入理解数据结构第三弹——二叉树(3)——二叉树的基本结构与操作-CSDN博客 二叉树3:深入理解数据结构第三弹——二叉树…

想要打造超高性能的接口API?试试这12条小技巧。

1. 并行处理 简要说明 举个例子:在价格查询链路中,我们需要获取多种独立的价格配置项信息,如基础价、折扣价、商户活动价、平台活动价等等。 CompletableFuture 是银弹吗? 使用 CompletableFuture 的确能够帮助我们解决许多独…

Android自动化测试实践:uiautomator2 核心功能与应用指南

Android自动化测试实践:uiautomator2 核心功能与应用指南 uiautomator2 是一个用于Android应用的自动化测试Python库,支持多设备并行测试操作。它提供了丰富的API来模拟用户对App的各种操作,如安装、卸载、启动、停止以及清除应用数据等。此外…

30个!2024重大科学问题、工程技术难题和产业技术问题发布

【SciencePub学术】中国科协自2018年开始,组织开展重大科技问题难题征集发布活动,引导广大科技工作者紧跟世界科技发展大势,聚焦国家重大需求,开展原创性、引领性研究,不断夯实高质量发展的科技支撑。 自2024年征集活动…

C#的五大设计原则-solid原则

什么是C#的五大设计原则,我们用人话来解释一下,希望小伙伴们能学会: 好的,让我们以一种幽默的方式来解释C#的五大设计原则(SOLID): 单一职责原则(Single Responsibility Principle…

鸿蒙开发Ability Kit(程序访问控制):【安全控件概述】

安全控件概述 安全控件是系统提供的一组系统实现的ArkUI组件,应用集成这类组件就可以实现在用户点击后自动授权,而无需弹窗授权。它们可以作为一种“特殊的按钮”融入应用页面,实现用户点击即许可的设计思路。 相较于动态申请权限的方式&am…

构造,析构,拷贝【类和对象(中)】

P. S.:以下代码均在VS2019环境下测试,不代表所有编译器均可通过。 P. S.:测试代码均未展示头文件stdio.h的声明,使用时请自行添加。 博主主页:LiUEEEEE                        …

gin-vue -admin 初始化安装后 进入 后台首页报错

报错原因: 因为 我是使用的phpstudy 小皮的数据库 默认的是MySam 的引擎 mysql 引擎需要是 innoDB 解决办法 : 在linux 的环境下 配置一个数据库 , 我是用的是vmware 虚拟机

《昇思25天学习打卡营第8天|CarpeDiem》

《昇思25天学习打卡营第8天|CarpeDiem》 模型训练构建数据集定义神经网络模型定义超参、损失函数和优化器超参损失函数优化器 训练与评估 打卡 今天是昇思25天学习打卡营的第8天,终于迎来 模型训练 的部分了!!! 兴奋 发癫 模型训…

数据库。

数据库安全性 论述题5’ 编程题10’ sql语言实现权限控制 一、概述 1、不安全因素 (1)⾮授权对数据库的恶意存取和破坏 (2)数据库中重要的数据泄露 (3)安全环境的脆弱性 2、⾃主存取控制⽅法 gr…

基于KMeans的航空公司客户数据聚类分析

💐大家好!我是码银~,欢迎关注💐: CSDN:码银 公众号:码银学编程 实验目的和要求 会用Python创建Kmeans聚类分析模型使用KMeans模型对航空公司客户价值进行聚类分析会对聚类结果进行分析评价 实…

Linux修炼之路之进程概念,fork函数,进程状态

目录 一:进程概念 二:Linux中的进程概念 三:用getpid(),getppid()获取该进程的PID,PPID 四:用fork()来创建子进程 五:操作系统学科的进程状态 六:Linux中的进程状态 接下来的日子会顺顺利利&#xf…

配置windows环境下独立浏览器爬虫方案【不依赖系统环境与chrome】

引言 由于部署浏览器爬虫的机器浏览器版本不同,同时也不想因为部署了爬虫导致影响系统浏览器数据,以及避免爬虫过程中遇到的chrome与webdriver版本冲突。我决定将特定版本的chrome浏览器与webdriver下载到项目目录内,同时chrome_driver在初始…

我使用 GPT-4o 帮我挑西瓜

在 5 月 15 日,OpenAI 旗下的大模型 GPT-4o 已经发布,那时网络上已经传开, 但很多小伙伴始终没有看到 GPT-4o 的体验选项。 在周五的时候,我组建的 ChatGPT 交流群的伙伴已经发现了 GPT-4o 这个选项了,是在没有充值升…

NSSCTF-Web题目21(文件上传-phar协议、RCE-空格绕过)

目录 [NISACTF 2022]bingdundun~ 1、题目 2、知识点 3、思路 [FSCTF 2023]细狗2.0 4、题目 5、知识点 6、思路 [NISACTF 2022]bingdundun~ 1、题目 2、知识点 文件上传,phar伪协议 3、思路 点击upload,看看 这里提示我们可以上传图片或压缩包&…

Unity 解包工具(AssetStudio/UtinyRipper)

文章目录 1.UtinyRipper2.AssetStudio 1.UtinyRipper 官方地址: https://github.com/mafaca/UtinyRipper/ 下载步骤: 2.AssetStudio 官方地址: https://github.com/Perfare/AssetStudio 下载步骤: