Ir para o conteúdo

Formato JSON para Ferramentas LLM

Introdução

Compartilhar uma ferramenta de uma maneira que possa ser rapidamente adicionada a um programa ou editor de ferramentas seria muito melhorada com uma maneira padrão de representar uma ferramenta e como usá-la. Queremos habilitar recursos como os seguintes:

  • Um ícone para representar visualmente a ferramenta
  • Metadados para o prompt:
  • Um nome para a ferramenta
  • Uma descrição para a ferramenta
  • Notas de uso para a ferramenta
  • Parâmetros de placeholder incluídos na string de ferramenta
  • Saída esperada
  • Versionamento e carimbos de data/hora.

Especificação do Formato JSON

{
  "version": "string ou inteiro",
  "model_prompt": "string com espaços reservados {{variable_name}}",
  "metadata": {
    "prompt_name": "string",
    "description": "string",
    "usage_notes": "string",
    "model_version": ["string", "string", ],
    "creator": {
      "name": "string",
      "email": "string",
      "organization": "string"
    },
    "parameters": {
      "temperature": "float",
      "max_tokens": "inteiro",
      "top_p": "float",
      "frequency_penalty": "float",
      "presence_penalty": "float"
    },
    "variables": [
      {
        "name": "nome da variável 1",
        "type": "texto",
        "description": "string",
        "default": "string",
      },
      {
        "name": "nome da variável 2",
        "type": "seleção única",
        "description": "string",
        "default": "valor1",
        "allowed_values": ["valor1", "valor2", "valor3"]
      },
      {
        "name": "nome da variável 3",
        "type": "seleção múltipla",
        "description": "string",
        "default": ["valor1", "valor2"]
        "allowed_values": ["valor1", "valor2", "valor3"]
      },
      ...
    ],
    "expected_output": {
      "type": "string (p.ex., texto, código, limitado)",
      "format": "string (opcional, p.ex., JSON, XML, CSV)",
      "language": "string (opcional, p.ex., Python, JavaScript)",
      "allowed_values": ["string1", "string2", ...] (opcional)
    },
    "avatar_type": "string (p.ex., url, base64)",
    "avatar": "string (URL ou imagem codificada em base64), recomendado 256x256 pixels",
    "timestamp": "string (formato ISO 8601)"
  }
}

Você pode baixar nosso exemplo de JSON aqui.

Descrição dos Campos

  • model_prompt: Uma string que contém o prompt do modelo GPT.
  • metadata: Um objeto que contém informações adicionais sobre o prompt do modelo GPT, incluindo os seguintes sub-campos:
  • model_version: Uma string que indica a versão do modelo GPT utilizado.
  • creator: Um objeto que contém informações sobre o criador do prompt do modelo GPT, com os seguintes sub-campos:
    • name: Uma string que representa o nome do criador.
    • email: Uma string que representa o email do criador.
    • organization: Uma string que representa a organização à qual o criador é afiliado.
  • parameters: Um objeto que contém informações sobre os parâmetros do modelo GPT, com os seguintes sub-campos:
    • temperature: Um float que indica a temperatura utilizada para controlar a aleatoriedade da saída.
    • max_tokens: Um inteiro que indica o número máximo de tokens na resposta gerada.
    • top_p: Um float que representa o limiar de probabilidade de amostragem do núcleo.
    • frequency_penalty: Um float que representa a penalidade aplicada aos tokens com base em sua frequência no conjunto de dados.
    • presence_penalty: Um float que representa a penalidade aplicada a novos tokens com base em sua presença no prompt.
  • timestamp: Uma string no formato ISO 8601 que representa a data e hora em que o prompt do modelo GPT foi criado ou modificado pela última vez.
  • expected_output (Opcional): Um objeto que contém campos relacionados à saída esperada do model_prompt, incluindo os seguintes sub-campos:
    • type: Uma string que indica o tipo de saída esperado do model_prompt.
    • format (Opcional): Uma string que representa o formato da saída esperada, se aplicável.
    • language (Opcional): Uma string que representa a linguagem de programação da saída esperada se o tipo for code.
    • allowed_values (Opcional): Um array de strings que contém uma lista de valores de saída permitidos se o tipo for limited.
  • variables (Opcional): Uma lista contendo variáveis que podem ser inseridas na string model_prompt em um estilo de f-string. Cada variável contém os seguintes sub-campos:
    • name: Uma string representando o nome da variável.
    • type: Uma string mostrando o tipo de variável. Atualmente, os possíveis valores de type são text para a variável padrão, e single-select ou multi-select para variáveis de seleção.
    • description: Uma string mostrando a descrição da variável, incluindo usos e exemplos.
    • default: Um valor mostrando o valor padrão da variável. Este valor é uma string se type for text ou single-select, e um array de strings para multi-select.
    • allowed_values: Um array de strings que contém uma lista de valores permitidos se o tipo de variável for single-select ou multi-select
  • avatar (Opcional): Um objeto que contém campos relacionados à imagem gráfica que atua como um avatar ou ícone para o prompt, incluindo os seguintes sub-campos:
    • avatar_type: Uma string especificando o tipo de dados do avatar incluído.
    • avatar: Uma string contendo o URL que aponta para a imagem se o avatar_type for url, ou uma string codificada em base64 que representa a imagem se o avatar_type for base64.
  • prompt_name (Opcional): Uma string representando o nome do prompt.
  • description (Opcional): Uma string fornecendo uma breve descrição da ferramenta e sua finalidade.
  • usage_notes (Opcional): Uma string contendo notas de uso livre do criador sobre o uso ou quaisquer considerações específicas relacionadas à ferramenta.

Para especificar o formato da saída esperada do model_prompt, você pode adicionar um objeto expected_output dentro do objeto metadata. Dependendo do tipo de saída esperada, você pode incluir os sub-campos relevantes no objeto expected_output.

Para incluir campos para variáveis que podem ser inseridas na string model_prompt em um estilo de f-string, você pode adicionar uma lista variables separada dentro do objeto metadata.

Para incluir uma imagem gráfica atuando como um avatar ou ícone para o prompt, você pode adicionar um campo avatar dentro do objeto metadata.

A inclusão dos campos expected_output, variables, avatar, prompt_name, description, e usage_notes dentro do objeto metadata ajuda a manter todas as informações contextuais sobre o prompt em um só lugar, facilitando o gerenciamento e o entendimento.

Você pode usar o campo version no nível superior do objeto JSON para rastrear explicitamente a versão de todo o arquivo JSON