Ejemplo de herramienta de personalización de Dify

1. Tiempo (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": {}
}
}

Este código es un archivo JSON de la especificación OpenAPI que describe una API para obtener datos meteorológicos.En pocas palabras, la API permite al usuario consultar datos meteorológicos para una ubicación específica.

  • "openapi": "3.1.0": Indica que la versión de la especificación OpenAPI utilizada es la 3.1.0.
  • "info"Esta sección proporciona información básica sobre la API, como el título, la descripción y la versión.
  • "servers"Esta sección enumera las URL de servidor para la API.
  • "paths"Esta sección define las rutas y operaciones de la API. En este ejemplo, hay una operación GET con la ruta/locationque se utiliza para obtener el tiempo de un lugar determinado. Esta operación requiere un archivo llamadolocationEl parámetro de consulta, que es obligatorio, es de tipo cadena.
  • "components"Esta sección se utiliza para definir los patrones utilizados en la API, pero en este ejemplo está vacía.

En la especificación OpenAPI, la variableparameterses una matriz que define los parámetros de entrada para las operaciones de la API.parametersdefine un archivo llamadolocationEl parámetro de consulta, que es obligatorio, es de tipo cadena. Cada parámetro es un objeto que contiene las siguientes propiedades:

  • "name"Nombre del parámetro.
  • "in"Ubicación del parámetro. Puede ser"query""header""path"tal vez"cookie".
  • "description"Descripción del parámetro.
  • "required"Si paratrueEste parámetro es necesario si
  • "schema"Tipo de datos del parámetro.

Centrándonos en la posición de los parámetros, a continuación se muestran los 4 casos:

  • para pasar la clave API en la cabecera de la solicitud.
  • para especificar el ID del objeto que debe recuperarse en la ruta URL.
  • El parámetro cookie, utilizado para pasar el ID de sesión del usuario en una cookie.
  • El parámetro de consulta, añadido a la URL, suele utilizarse para proporcionar filtrado de información.

Crear una interfaz de herramienta personalizada:

Dify自定义工具例子

Interfaz de la herramienta de pruebas:

Dify自定义工具例子

 

2. Tienda de mascotas (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 es un archivo de especificación OpenAPI que describe y define la interfaz de una API llamada "Swagger Petstore". Este archivo utiliza el formato YAML, que es un estándar de serialización de datos legibles por humanos para escribir archivos de configuración. Este archivo ofrece una definición clara de la interfaz de la API para que los desarrolladores sepan cómo interactuar con la API "Swagger Petstore". Las partes principales del archivo incluyen:

  • openapiEste campo especifica la versión de la especificación OpenAPI utilizada, en este caso "3.0.0".
  • infoEsta sección proporciona información básica sobre la API, incluida la versión, el título y la licencia.
  • serversEsta sección define la URL del servidor para la API.
  • pathsEsta sección define todas las rutas y operaciones de la API. Por ejemplo./pets La ruta tiene dos operaciones:get responder cantando post.get se utiliza para listar todas las mascotas.post Las operaciones se utilizan para crear una nueva mascota. Cada operación tiene sus propios parámetros, respuestas y otros detalles.
  • componentsEsta sección define esquemas reutilizables que pueden usarse en la aplicación paths Citado en la sección. Por ejemplo.PetyPets responder cantando Error Modo.
Dify自定义工具例子

Convierta el archivo YAML anterior a formato 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. Plantilla en blanco

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

Nota: Parece que el formato JSON es más intuitivo.

Dify自定义工具例子

 

Tutorial de salida estructurada:¿Cómo utilizar el objeto jsonarray en Dify?

© declaración de copyright

Artículos relacionados

Sin comentarios

Debe iniciar sesión para participar en los comentarios.
Acceder ahora
ninguno
Sin comentarios...