Exemple d'outil de personnalisation Dify

1. la météo (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": {}
}
}

Ce code est un fichier JSON de la spécification OpenAPI décrivant une API pour l'obtention de données météorologiques. En bref, l'API permet à l'utilisateur d'interroger les données météorologiques pour un lieu spécifique.

  • "openapi": "3.1.0": Ceci indique que la version de la spécification OpenAPI utilisée est la 3.1.0.
  • "info"Cette section fournit des informations de base sur l'API, notamment son titre, sa description et sa version.
  • "servers"URL de l'API : Cette section énumère les URL du serveur pour l'API.
  • "paths"Cette section définit les chemins et les opérations de l'API. Dans cet exemple, il y a une opération GET avec un chemin d'accès de/locationqui permet d'obtenir le temps qu'il fait à un endroit précis. Cette opération nécessite un fichier nommélocationLe paramètre de requête, qui est obligatoire, est de type chaîne de caractères.
  • "components"Cette section est utilisée pour définir les modèles utilisés dans l'API, mais dans cet exemple, elle est vide.

Dans la spécification OpenAPI, l'élémentparametersest un tableau qui définit les paramètres d'entrée pour les opérations de l'API.parametersdéfinit un fichier nommélocationLe paramètre de requête, qui est obligatoire, est de type chaîne de caractères. Chaque paramètre est un objet contenant les propriétés suivantes :

  • "name"Le nom du paramètre.
  • "in": L'emplacement du paramètre. Il peut s'agir de"query""header""path"peut-être"cookie".
  • "description"Description du paramètre.
  • "required"Si pourtrueCe paramètre est requis si le
  • "schema"Type de données : le type de données du paramètre.

En se concentrant sur la position des paramètres, les 4 cas sont présentés ci-dessous :

  • pour transmettre la clé API dans l'en-tête de la requête.
  • pour spécifier l'ID de l'objet à récupérer dans le chemin d'accès à l'URL.
  • Le paramètre cookie, utilisé pour transmettre l'identifiant de session de l'utilisateur dans un cookie.
  • Le paramètre de requête, ajouté à l'URL, est généralement utilisé pour filtrer les informations.

Créer une interface d'outil personnalisée :

Dify自定义工具例子

Interface de l'outil de test :

Dify自定义工具例子

 

2) Pet Shop (YAML)

# Taken from https://github.com/OAI/OpenAPI-Specification/blob/main/examples/v3.0/petstore.yaml
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

pet.yaml est un fichier de spécification OpenAPI qui décrit et définit l'interface d'une API appelée "Swagger Petstore". Ce fichier utilise le format YAML, qui est une norme de sérialisation de données lisibles par l'homme pour l'écriture de fichiers de configuration. Ce fichier fournit une définition claire de l'interface API pour que les développeurs sachent comment interagir avec l'API "Swagger Petstore". Les principales parties du fichier sont les suivantes

  • openapiCe champ indique la version de la spécification OpenAPI utilisée, en l'occurrence "3.0.0".
  • infoCette section fournit des informations de base sur l'API, notamment la version, le titre et la licence.
  • serversCette section définit l'URL du serveur pour l'API.
  • pathsCette section définit tous les chemins et opérations de l'API. Par exemple, cette section définit tous les chemins et toutes les opérations de l'API./pets Le chemin comporte deux opérations :get répondre en chantant post.get est utilisée pour dresser la liste de tous les animaux domestiques.post Les opérations sont utilisées pour créer un nouvel animal de compagnie. Chaque opération a ses propres paramètres, réponses et autres détails.
  • componentsCette section définit des schémas réutilisables qui peuvent être utilisés dans le cadre de l paths Cité dans la section. Par exemple.Pet,Pets répondre en chantant Error Mode.
Dify自定义工具例子

Convertir le fichier YAML ci-dessus au format 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. modèle vierge

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

Note : Il semble que le format JSON soit plus intuitif.

Dify自定义工具例子

 

Didacticiel sur les sorties structurées :Comment utiliser l'objet jsonarray dans Dify ?

© déclaration de droits d'auteur

Articles connexes

Pas de commentaires

Vous devez être connecté pour participer aux commentaires !
S'inscrire maintenant
aucun
Pas de commentaires...