Formato JSON para Ferramentas LLM

Uma Forma Portátil de Compartilhar Ferramentas

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

Last updated