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"
]
}
}