Aprendizagem pessoal com IA
e orientação prática
讯飞绘镜

Exemplo de uma ferramenta de personalização da Dify

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

Esse código é um arquivo JSON da especificação OpenAPI que descreve uma API para obter dados meteorológicos. Em resumo, a API permite que o usuário consulte os dados meteorológicos de um local específico.

  • "openapi": "3.1.0"Versão da especificação OpenAPI: Indica que a versão da especificação OpenAPI usada é a 3.1.0.
  • "info"API: Esta seção fornece informações básicas sobre a API, incluindo título, descrição e versão.
  • "servers"URLs do servidor: Esta seção lista os URLs do servidor para a API.
  • "paths"API: Esta seção define os caminhos e as operações da API. Neste exemplo, há uma operação GET com um caminho de/locationque é usado para obter o clima em um local específico. Essa operação requer um arquivo chamadolocationO parâmetro de consulta, que é obrigatório, é do tipo string.
  • "components": Esta seção é usada para definir os padrões usados na API, mas, neste exemplo, ela está vazia.

Na especificação da OpenAPI, oparametersé uma matriz que define os parâmetros de entrada para operações de API.parametersdefine um arquivo chamadolocationO parâmetro de consulta, que é obrigatório, é do tipo string. Cada parâmetro é um objeto que contém as seguintes propriedades:

  • "name"Nome do parâmetro: O nome do parâmetro.
  • "in"Localização do parâmetro: A localização do parâmetro. Pode ser"query""header""path"talvez"cookie".
  • "description"Descrição do parâmetro: Descrição do parâmetro.
  • "required": Se paratrueEsse parâmetro é necessário se o
  • "schema"Tipo de dados: O tipo de dados do parâmetro.

Com foco na posição dos parâmetros, os quatro casos são mostrados abaixo:

  • para passar a chave de API no cabeçalho da solicitação.
  • path para especificar a ID do objeto a ser recuperado no caminho do URL.
  • O parâmetro cookie, usado para passar o ID da sessão do usuário em um cookie.
  • O parâmetro de consulta, anexado ao URL, geralmente é usado para fornecer filtragem de informações.

Criar uma interface de ferramenta personalizada:

Dify自定义工具例子-1


Interface da ferramenta de teste:

Dify自定义工具例子-2

 

2. loja de animais de estimação (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 é um arquivo de especificação OpenAPI que descreve e define a interface para uma API chamada "Swagger Petstore". Esse arquivo usa o formato YAML, que é um padrão de serialização de dados legível por humanos para gravar arquivos de configuração. Esse arquivo fornece uma definição clara da interface da API para que os desenvolvedores saibam como interagir com a API "Swagger Petstore". As partes principais do arquivo incluem:

  • openapiVersão da especificação OpenAPI: Este campo especifica a versão da especificação OpenAPI usada, neste caso "3.0.0".
  • infoEsta seção fornece informações básicas sobre a API, incluindo versão, título e licença.
  • serversURL do servidor: Esta seção define o URL do servidor para a API.
  • pathsAPI: Esta seção define todos os caminhos e operações da API. Por exemplo./pets O caminho tem duas operações:get responder cantando post.get é usada para listar todos os animais de estimação.post As operações são usadas para criar um novo animal de estimação. Cada operação tem seus próprios parâmetros, respostas e outros detalhes.
  • componentsEsta seção define esquemas reutilizáveis que podem ser usados no paths Citado na seção. Por exemplo.PetePets responder cantando Error Modo.

Dify自定义工具例子-3

Converta o arquivo YAML acima para o 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. modelo em branco

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

Observação: Parece que o formato JSON é mais intuitivo.

Dify自定义工具例子-4

 

Tutorial de saída estruturada:Como usar o objeto jsonarray no Dify?

Não pode ser reproduzido sem permissão:Chefe do Círculo de Compartilhamento de IA " Exemplo de uma ferramenta de personalização da Dify
pt_BRPortuguês do Brasil