Cortex Agents REST API¶
É possível usar a API REST Cortex Agent para criar, gerenciar e interagir com os objetos Cortex Agent em sua conta Snowflake.
Criação do Cortex Agent¶
POST /api/v2/databases/{database}/schemas/{schema}/agents
Cria um novo objeto Cortex Agent com os atributos e especificação especificados.
Solicitação¶
Parâmetros de caminho¶
| Parâmetro | Descrição | 
|---|---|
| 
 | (Obrigatório) URL da sua conta Snowflake. | 
| 
 | (Obrigatório) Identificador do esquema. | 
Parâmetros de consulta¶
| Parâmetro | Descrição | 
|---|---|
| 
 | (Opcional) Modo de criação de recurso. Valores válidos: 
 | 
Cabeçalhos de solicitação¶
| Cabeçalho | Descrição | 
|---|---|
| 
 | Token de autorização (obrigatório). Para obter mais informações, consulte Autenticação. | 
| 
 | Aplicativo/json (obrigatório) | 
Corpo da solicitação¶
| Campo | Tipo | Descrição | 
|---|---|---|
| 
 | string | Nome do agente. | 
| 
 | string | Comentário opcional sobre o agente. | 
| 
 | Informações de perfil do agente (nome de exibição, avatar, cor etc.). | |
| 
 | Configuração do modelo para o agente. Inclui o modelo de orquestração (por exemplo, claude-4-sonnet). Se não for fornecido, um modelo será selecionado automaticamente. Atualmente disponível apenas para a etapa  | |
| 
 | Instruções para o comportamento do agente, incluindo resposta, orquestração, sistema e perguntas de amostra. | |
| 
 | Configuração da orquestração, incluindo restrições orçamentárias (por exemplo, segundos, tokens). | |
| 
 | Matriz de Tool | Lista de ferramentas disponíveis para o agente usar. Cada ferramenta inclui uma tool_spec com tipo, nome, descrição e esquema de entrada. As ferramentas podem ter uma configuração correspondente em tool_resources. | 
| 
 | mapa de ToolResource | Configuração de cada ferramenta referenciada na matriz de ferramentas. As chaves devem corresponder ao nome da respectiva ferramenta. | 
Exemplo
{
  "name": "MY_AGENT",
  "comment": "An agent to answer questions about all my data",
  "profile": {
    "display_name": "My Agent"
  },
  "models": {
    "orchestration": "claude-4-sonnet"
  },
  "instructions": {
    "response": "You will respond in a friendly but concise manner",
    "orchestration": "For any query related to revenue we should use Analyst; For all policy questions we should use Search",
    "system": "You are a friendly agent ..."
  },
  "orchestration": {
    "budget": {
      "seconds": 30,
      "tokens": 16000
    }
  },
  "tools": [
    {
      "tool_spec": {
        "type": "generic",
        "name": "get_revenue",
        "description": "Fetch the delivery revenue for a location.",
        "input_schema": {
          "type": "object",
          "properties": {
            "location": {
              "type": "string",
              "description": "The city and state, e.g. San Francisco, CA"
            }
          }
        },
        "required": [
          "location"
        ]
      }
    }
  ],
  "tool_resources": {
    "get_revenue": {
      "type": "function",
      "execution_environment": {
        "type": "warehouse",
        "warehouse": "MY_WH"
      },
      "identifier": "DB.SCHEMA.UDF"
    }
  }
}
Resposta¶
Uma resposta bem-sucedida retorna um objeto JSON com detalhes sobre o status da criação do Cortex Agent.
Corpo da resposta¶
{"status": "Agent xxxx successfully created."}
Descrição do Cortex Agent¶
GET /api/v2/databases/{database}/schemas/{schema}/agents/{name}
Descreve um Cortex Agent.
Solicitação¶
Parâmetros de caminho¶
| Parâmetro | Descrição | 
|---|---|
| 
 | (Obrigatório) Identificador do banco de dados ao qual o recurso pertence. Você pode usar a solicitação /api/v2/databases GET para obter uma lista de bancos de dados disponíveis. | 
| 
 | Identificador (obrigatório) do esquema ao qual o recurso pertence. É possível usar a solicitação /api/v2/databases/{database}/schemas GET para obter uma lista de esquemas disponíveis para o banco de dados especificado. | 
| 
 | (Obrigatório) Identificador do agente. | 
Cabeçalhos de solicitação¶
| Cabeçalho | Descrição | 
|---|---|
| 
 | Token de autorização (obrigatório). Para obter mais informações, consulte Autenticação. | 
| 
 | Aplicativo/json (obrigatório) | 
Resposta¶
Uma resposta bem-sucedida retorna um objeto JSON que descreve o Cortex Agent.
Cabeçalhos de resposta¶
| Cabeçalho | Descrição | 
|---|---|
| 
 | ID único da solicitação da API. | 
| 
 | Links para a página de resultados (por exemplo, a primeira página, a última página, etc.). O cabeçalho pode incluir vários entradas url com diferentes valores do atributo rel que especificam a página a retornar (primeiro, próximo, anterior e último). | 
Corpo da resposta¶
O corpo da resposta contém os detalhes do Cortex Agent.
{
  "agent_spec": "{\"models\":{\"orchestration\":\"llama3.1-70B\"},\"experimental\":{\"foo\":\"bar\",\"nested\":{\"key\":\"value\"}},\"orchestration\":{\"budget\":{\"seconds\":30,\"tokens\":16000}},\"instructions\":{\"response\":\"You will respond in a friendly but concise manner\",\"orchestration\":\"For any revenue question use Analyst; for policy use Search\",\"system\":\"You are a friendly agent.\",\"sample_questions\":[{\"question\":\"question 1\"},{\"question\":\"question 2\"},{\"question\":\"question 3\"}]},\"tools\":[{\"tool_spec\":{\"type\":\"cortex_analyst_text_to_sql\",\"name\":\"Analyst1\",\"description\":\"test\"}},{\"tool_spec\":{\"type\":\"cortex_analyst_sql_exec\",\"name\":\"SQL_exec1\"}},{\"tool_spec\":{\"type\":\"cortex_search\",\"name\":\"Search1\"}},{\"tool_spec\":{\"type\":\"web_search\",\"name\":\"web_search_1\"}},{\"tool_spec\":{\"type\":\"generic\",\"name\":\"get_weather\",\"input_schema\":{\"type\":\"object\",\"properties\":{\"location\":{\"type\":\"string\",\"description\":\"The city and state\"}},\"required\":[\"Location\"]}}}],\"tool_unable_to_answer\":\"I don't know the answer to that\",\"tool_resources\":{\"Analyst1\":{\"semantic_model_file\":\"stage1\"},\"Analyst2\":{\"semantic_view\":\"db.schema.semantic_view\"},\"Search1\":{\"name\":\"db.schema.service_name\",\"Max_results\":\"5\",\"filter\":{\"@eq\":{\"region\":\"North America\"}},\"Title_column\":\"<title_name>\",\"ID_column\":\"<column_name>\"},\"SQL_exec1\":{\"Name\":\"my_warehouse\",\"Timeout\":\"30\",\"AutoExecute\":\"true\"},\"web_search\":{\"name\":\"web_search_1\",\"Function\":\"db/schema/search_web\"}}}",
  "name": "MY_AGENT1",
  "database_name": "TEST_DATABASE",
  "schema_name": "TEST_SCHEMA",
  "owner": "ACCOUNTADMIN",
  "created_on": "1967-06-23T07:00:00.123+00:00"
}
Atualização do Cortex Agent¶
PUT /api/v2/databases/{database}/schemas/{schema}/agents/{name}
Atualiza um Cortex Agent existente com os atributos e especificação definidos.
Solicitação¶
Parâmetros de caminho¶
| Parâmetro | Descrição | 
|---|---|
| 
 | (Obrigatório) URL da sua conta Snowflake. Você pode usar a solicitação  | 
| 
 | (Obrigatório) Identificador do esquema. Você pode usar a solicitação  | 
| 
 | (Obrigatório) Nome do agente. | 
Cabeçalhos de solicitação¶
| Cabeçalho | Descrição | 
|---|---|
| 
 | Token de autorização (obrigatório). Para obter mais informações, consulte Autenticação. | 
| 
 | Aplicativo/json (obrigatório) | 
Corpo da solicitação¶
| Campo | Tipo | Descrição | 
|---|---|---|
| 
 | string | Comentário opcional sobre o agente. | 
| 
 | Informações de perfil do agente (nome de exibição, avatar, cor etc.). | |
| 
 | Configuração do modelo para o agente. Inclui o modelo de orquestração (por exemplo, claude-4-sonnet). Se não for fornecido, um modelo será selecionado automaticamente. Atualmente disponível apenas para a etapa  | |
| 
 | Instruções para o comportamento do agente, incluindo resposta, orquestração, sistema e perguntas de amostra. | |
| 
 | Configuração da orquestração, incluindo restrições orçamentárias (por exemplo, segundos, tokens). | |
| 
 | Matriz de Tool | Lista de ferramentas disponíveis para o agente usar. Cada ferramenta inclui uma tool_spec com tipo, nome, descrição e esquema de entrada. As ferramentas podem ter uma configuração correspondente em tool_resources. | 
| 
 | mapa de ToolResource | Configuração de cada ferramenta referenciada na matriz de ferramentas. As chaves devem corresponder ao nome da respectiva ferramenta. | 
Exemplo
{
  "comment": "An agent to answer questions about all my data",
  "profile": {
    "display_name": "My Agent"
  },
  "models": {
    "orchestration": "claude-4-sonnet"
  },
  "instructions": {
    "response": "You will respond in a friendly but concise manner",
    "orchestration": "For any query related to revenue we should use Analyst; For all policy questions we should use Search",
    "system": "You are a friendly agent ..."
  },
  "orchestration": {
    "budget": {
      "seconds": 30,
      "tokens": 16000
    }
  },
  "tools": [
    {
      "tool_spec": {
        "type": "generic",
        "name": "get_revenue",
        "description": "Fetch the delivery revenue for a location.",
        "input_schema": {
          "type": "object",
          "properties": {
            "location": {
              "type": "string",
              "description": "The city and state, e.g. San Francisco, CA"
            }
          }
        },
        "required": [
          "location"
        ]
      }
    }
  ],
  "tool_resources": {
    "get_revenue": {
      "type": "function",
      "execution_environment": {
        "type": "warehouse",
        "warehouse": "MY_WH"
      },
      "identifier": "DB.SCHEMA.UDF"
    }
  }
}
Resposta¶
Uma resposta bem-sucedida retorna um objeto JSON com detalhes sobre o status da atualização do Cortex Agent.
Corpo da resposta¶
{"status": "Agent xxxx successfully updated."}
Listagem de Cortex Agents¶
GET /api/v2/databases/{database}/schemas/{schema}/agents
Lista os Cortex Agents no banco de dados e esquema especificados.
Solicitação¶
Parâmetros de caminho¶
| Parâmetro | Descrição | 
|---|---|
| 
 | (Obrigatório) Identificador do banco de dados ao qual o recurso pertence. Você pode usar a solicitação /api/v2/databases GET para obter uma lista de bancos de dados disponíveis. | 
| 
 | Identificador (obrigatório) do esquema ao qual o recurso pertence. É possível usar a solicitação /api/v2/databases/{database}/schemas GET para obter uma lista de esquemas disponíveis para o banco de dados especificado. | 
Parâmetros de consulta¶
| Parâmetro | Descrição | 
|---|---|
| 
 | (Opcional) Filtrar a saída pelo nome do recurso. Usa um padrão que não diferencia maiúsculas e minúsculas com suporte para caracteres curinga SQL. | 
| 
 | (Opcional) Habilite a busca de linhas seguindo apenas a primeira linha cujo nome do objeto corresponde à string especificada. Diferencia maiúsculas e minúsculas e não precisa ser o nome completo. | 
| 
 | (Opcional) Limite o número máximo de linhas retornadas pelo comando. Mínimo: 1. Máximo: 10000. | 
Cabeçalhos de solicitação¶
| Cabeçalho | Descrição | 
|---|---|
| 
 | Token de autorização (obrigatório). Para obter mais informações, consulte Autenticação. | 
| 
 | Aplicativo/json (obrigatório) | 
Resposta¶
Uma resposta bem-sucedida retorna uma matriz JSON de recursos do Cortex Agent.
Cabeçalhos de resposta¶
| Cabeçalho | Descrição | 
|---|---|
| 
 | ID único da solicitação da API. | 
| 
 | Links para a página de resultados (por exemplo, a primeira página, a última página, etc.). O cabeçalho pode incluir vários entradas url com diferentes valores do atributo rel que especificam a página a retornar (primeiro, próximo, anterior e último). | 
Corpo da resposta¶
[
 {
  "name": "my_agent",
  "database": "TEST_DB",
  "schema": "TEST_SCHEMA",
  "created_on": "2024-06-01T12:00:00Z",
  "owner": "ACCOUNTADMIN",
  "comment": "Sample agent"
 },
 {
  "name": "another_agent",
  "database": "TEST_DB",
  "schema": "TEST_SCHEMA",
  "created_on": "2024-06-02T08:30:00Z",
  "owner": "SYSADMIN",
  "comment": ""
 }
]
Exclusão do Cortex Agent¶
DELETE /api/v2/databases/{database}/schemas/{schema}/agents/{name}
Exclui um Cortex Agent com o nome especificado. Se o parâmetro ifExists for definido como true, a operação será bem-sucedida mesmo que o agente não exista. Caso contrário, a operação falhará se não for possível excluir o agente.
Solicitação¶
Parâmetros de caminho¶
| Parâmetro | Descrição | 
|---|---|
| 
 | (Obrigatório) Identificador do banco de dados ao qual o recurso pertence. Você pode usar a solicitação /api/v2/databases GET para obter uma lista de bancos de dados disponíveis. | 
| 
 | Identificador (obrigatório) do esquema ao qual o recurso pertence. É possível usar a solicitação /api/v2/databases/{database}/schemas GET para obter uma lista de esquemas disponíveis para o banco de dados especificado. | 
| 
 | (Obrigatório) Identificador do agente. | 
Parâmetros de consulta¶
| Parâmetro | Descrição | 
|---|---|
| 
 | (Opcional) Especifica como tratar a solicitação se o agente não existir. 
 | 
Cabeçalhos de solicitação¶
| Cabeçalho | Descrição | 
|---|---|
| 
 | Token de autorização (obrigatório). Para obter mais informações, consulte Autenticação. | 
| 
 | Aplicativo/json (obrigatório) | 
Resposta¶
Uma resposta bem-sucedida retorna uma mensagem de confirmação.
Corpo da resposta¶
{
 "status": "Request successfully completed"
}
Esquemas¶
AgentInstructions¶
| Campo | Tipo | Descrição | 
|---|---|---|
| 
 | string | Instruções para geração de respostas. | 
| 
 | string | Estas instruções personalizadas são usadas quando o agente está planejando quais ferramentas usar. | 
| 
 | string | Instruções do sistema para o agente. | 
Exemplo
{
  "response": "You will respond in a friendly but concise manner",
  "orchestration": "For any query related to revenue we should use Analyst; For all policy questions we should use Search",
  "system": "You are a friendly agent ..."
}
AgentProfile¶
As informações de perfil de um Data Cortex Agent.
| Campo | Tipo | Descrição | 
|---|---|---|
| 
 | string | Nome de exibição do agente. | 
Exemplo
{
  "display_name": "My Agent"
}
BudgetConfig¶
| Campo | Tipo | Descrição | 
|---|---|---|
| 
 | inteiro | Orçamento de tempo em segundos. | 
| 
 | inteiro | Orçamento de token. | 
Exemplo
{
  "seconds": 30,
  "tokens": 16000
}
ExecutionEnvironment¶
Configuração de ferramentas executadas pelo servidor.
| Campo | Tipo | Descrição | 
|---|---|---|
| 
 | string | O tipo de ambiente de execução, atualmente apenas  | 
| 
 | string | O nome do warehouse. Se for um identificador não delimitado entre aspas, forneça o nome em letras maiúsculas. | 
| 
 | inteiro | O tempo limite da consulta em segundos | 
Exemplo
{
  "type": "warehouse",
  "warehouse": "MY_WAREHOUSE",
  "query_timeout": 60
}
ModelConfig¶
| Campo | Tipo | Descrição | 
|---|---|---|
| 
 | string | Modelo a ser usado para orquestração. Se não for fornecido, um modelo será selecionado automaticamente. | 
Exemplo
{
  "orchestration": "claude-4-sonnet"
}
OrchestrationConfig¶
| Campo | Tipo | Descrição | 
|---|---|---|
| 
 | Restrições orçamentárias para o agente. Se mais de uma restrição for especificada, o que for atingido primeiro encerrará a solicitação. | 
Exemplo
{
  "budget": {
    "seconds": 30,
    "tokens": 16000
  }
}
Tool¶
Define uma ferramenta que pode ser usada pelo agente. As ferramentas fornecem capacidades específicas como análise de dados, pesquisa ou funções genéricas.
| Campo | Tipo | Descrição | 
|---|---|---|
| 
 | Especificação do tipo, da configuração e dos requisitos de entrada da ferramenta. | 
Exemplo
{
  "tool_spec": {
    "type": "generic",
    "name": "get_revenue",
    "description": "Fetch the delivery revenue for a location.",
    "input_schema": {
      "type": "object",
      "properties": {
        "location": {
          "type": "string",
          "description": "The city and state, e.g. San Francisco, CA"
        }
      }
    },
    "required": [
      "location"
    ]
  }
}
ToolInputSchema¶
| Campo | Tipo | Descrição | 
|---|---|---|
| 
 | string | O tipo do objeto de esquema de entrada. | 
| 
 | string | Uma descrição do que a entrada faz. | 
| 
 | mapa de ToolInputSchema | Se o tipo for  | 
| 
 | Se o tipo for  | |
| 
 | matriz de string | Se o tipo for  | 
Exemplo
{
  "type": "object",
  "description": "Input for my custom tool",
  "properties": {
    "location": {
      "type": "string",
      "description": "The city and state, e.g. San Francisco, CA"
    }
  },
  "items": {},
  "required": [
    "location"
  ]
}
ToolResource¶
Configuração da ferramenta de análise texto-para-SQL. Fornece parâmetros para geração e execução de consultas SQL. Exatamente um de semantic_model_file ou semantic_view deve ser fornecido.
Campo
Tipo
Descrição
semantic_model_filestring
O caminho para um arquivo armazenado em uma área de preparação do Snowflake com o modelo semântico yaml.
semantic_viewstring
O nome do objeto do modelo semântico nativo do Snowflake.
execution_environmentConfiguração de como executar a consulta SQL gerada.
Exemplo
{ "semantic_model_file": "@db.schema.stage/semantic_model.yaml", "semantic_view": "db.schema.semantic_view", "execution_environment": { "type": "warehouse", "warehouse": "MY_WAREHOUSE", "query_timeout": 60 } }Configuração da funcionalidade de pesquisa. Define como a pesquisa e recuperação de documentos deve ser realizada.
Campo
Tipo
Descrição
search_servicestring
O nome completo e qualificado do serviço de pesquisa.
title_columnstring
A coluna de título do documento.
id_columnstring
A coluna de ID do documento.
filterobjeto
Filtrar consulta para obter resultados de pesquisa.
Exemplo
{ "search_service": "database.schema.service_name", "title_column": "account_name", "id_column": "account_id", "filter": { "@eq": { "<column>": "<value>" } } }
Campo
Tipo
Descrição
typestring
Se a ferramenta for executada no lado do servidor, seja um procedimento armazenado ou uma UDF.
execution_environment
identifierstring
Nome totalmente qualificado do procedimento armazenado ou UDF.
Exemplo
{ "type": "function", "execution_environment": { "type": "warehouse", "warehouse": "MY_WAREHOUSE", "query_timeout": 60 }, "identifier": "MY_DB.MY_SCHEMA.MY_UDF" }
ToolSpec¶
Especificação do tipo, da configuração e dos requisitos de entrada da ferramenta.
| Campo | Tipo | Descrição | 
|---|---|---|
| 
 | string | O tipo de recurso da ferramenta. Podem ser tipos especializados como «cortex_analyst_text_to_sql» ou «generic» para ferramentas de uso geral. | 
| 
 | string | Identificador exclusivo para referenciar esta instância de ferramenta. Usado para corresponder à configuração em tool_resources. | 
| 
 | string | Descrição da ferramenta a ser considerada para o uso da ferramenta. | 
| 
 | Definição do esquema JSON dos parâmetros de entrada esperados para essa ferramenta. Será alimentado ao agente para que ele saiba a estrutura que deve seguir para ao gerar a entrada para ToolUses. Obrigatório para que ferramentas genéricas especifiquem seus parâmetros de entrada. | 
Exemplo
{
  "type": "generic",
  "name": "get_weather",
  "description": "lorem ipsum",
  "input_schema": {
    "type": "object",
    "properties": {
      "location": {
        "type": "string",
        "description": "The city and state, e.g. San Francisco, CA"
      }
    },
    "required": [
      "location"
    ]
  }
}