mirror of
https://github.com/crewAIInc/crewAI.git
synced 2026-01-09 08:08:32 +00:00
* docs: add pt-br translations Powered by a CrewAI Flow https://github.com/danielfsbarreto/docs_translator * Update mcp/overview.mdx brazilian docs Its en-US counterpart was updated after I did a pass, so now it includes the new section about @CrewBase
202 lines
7.5 KiB
Plaintext
202 lines
7.5 KiB
Plaintext
---
|
|
title: Snowflake Search Tool
|
|
description: O `SnowflakeSearchTool` permite que agentes CrewAI executem consultas SQL e realizem buscas semânticas em data warehouses Snowflake.
|
|
icon: snowflake
|
|
---
|
|
|
|
# `SnowflakeSearchTool`
|
|
|
|
## Descrição
|
|
|
|
O `SnowflakeSearchTool` foi desenvolvido para conectar-se a data warehouses Snowflake e executar consultas SQL com recursos avançados como pool de conexões, lógica de tentativas e execução assíncrona. Esta ferramenta permite que agentes CrewAI interajam com bases de dados Snowflake, sendo ideal para tarefas de análise de dados, relatórios e inteligência de negócios que requerem acesso a dados empresariais armazenados no Snowflake.
|
|
|
|
## Instalação
|
|
|
|
Para utilizar esta ferramenta, é necessário instalar as dependências requeridas:
|
|
|
|
```shell
|
|
uv add cryptography snowflake-connector-python snowflake-sqlalchemy
|
|
```
|
|
|
|
Ou, alternativamente:
|
|
|
|
```shell
|
|
uv sync --extra snowflake
|
|
```
|
|
|
|
## Passos para Começar
|
|
|
|
Para usar eficazmente o `SnowflakeSearchTool`, siga estes passos:
|
|
|
|
1. **Instale as Dependências**: Instale os pacotes necessários usando um dos comandos acima.
|
|
2. **Configure a Conexão com o Snowflake**: Crie um objeto `SnowflakeConfig` com suas credenciais do Snowflake.
|
|
3. **Inicialize a Ferramenta**: Crie uma instância da ferramenta com a configuração necessária.
|
|
4. **Execute Consultas**: Utilize a ferramenta para rodar consultas SQL no seu banco de dados Snowflake.
|
|
|
|
## Exemplo
|
|
|
|
O exemplo a seguir demonstra como usar o `SnowflakeSearchTool` para consultar dados de um banco de dados Snowflake:
|
|
|
|
```python Code
|
|
from crewai import Agent, Task, Crew
|
|
from crewai_tools import SnowflakeSearchTool, SnowflakeConfig
|
|
|
|
# Create Snowflake configuration
|
|
config = SnowflakeConfig(
|
|
account="your_account",
|
|
user="your_username",
|
|
password="your_password",
|
|
warehouse="COMPUTE_WH",
|
|
database="your_database",
|
|
snowflake_schema="your_schema"
|
|
)
|
|
|
|
# Initialize the tool
|
|
snowflake_tool = SnowflakeSearchTool(config=config)
|
|
|
|
# Define an agent that uses the tool
|
|
data_analyst_agent = Agent(
|
|
role="Data Analyst",
|
|
goal="Analyze data from Snowflake database",
|
|
backstory="An expert data analyst who can extract insights from enterprise data.",
|
|
tools=[snowflake_tool],
|
|
verbose=True,
|
|
)
|
|
|
|
# Example task to query sales data
|
|
query_task = Task(
|
|
description="Query the sales data for the last quarter and summarize the top 5 products by revenue.",
|
|
expected_output="A summary of the top 5 products by revenue for the last quarter.",
|
|
agent=data_analyst_agent,
|
|
)
|
|
|
|
# Create and run the crew
|
|
crew = Crew(agents=[data_analyst_agent],
|
|
tasks=[query_task])
|
|
result = crew.kickoff()
|
|
```
|
|
|
|
Você também pode customizar a ferramenta com parâmetros adicionais:
|
|
|
|
```python Code
|
|
# Initialize the tool with custom parameters
|
|
snowflake_tool = SnowflakeSearchTool(
|
|
config=config,
|
|
pool_size=10,
|
|
max_retries=5,
|
|
retry_delay=2.0,
|
|
enable_caching=True
|
|
)
|
|
```
|
|
|
|
## Parâmetros
|
|
|
|
### Parâmetros do SnowflakeConfig
|
|
|
|
A classe `SnowflakeConfig` aceita os seguintes parâmetros:
|
|
|
|
- **account**: Obrigatório. Identificador da conta Snowflake.
|
|
- **user**: Obrigatório. Nome de usuário do Snowflake.
|
|
- **password**: Opcional*. Senha do Snowflake.
|
|
- **private_key_path**: Opcional*. Caminho para o arquivo de chave privada (alternativa à senha).
|
|
- **warehouse**: Obrigatório. Nome do warehouse do Snowflake.
|
|
- **database**: Obrigatório. Banco de dados padrão.
|
|
- **snowflake_schema**: Obrigatório. Schema padrão.
|
|
- **role**: Opcional. Papel de usuário Snowflake.
|
|
- **session_parameters**: Opcional. Parâmetros de sessão personalizados como dicionário.
|
|
|
|
*É necessário fornecer `password` ou `private_key_path`.
|
|
|
|
### Parâmetros do SnowflakeSearchTool
|
|
|
|
O `SnowflakeSearchTool` aceita os seguintes parâmetros durante a inicialização:
|
|
|
|
- **config**: Obrigatório. Um objeto `SnowflakeConfig` contendo detalhes da conexão.
|
|
- **pool_size**: Opcional. Número de conexões no pool. O padrão é 5.
|
|
- **max_retries**: Opcional. Número máximo de tentativas para consultas que falharem. Padrão é 3.
|
|
- **retry_delay**: Opcional. Intervalo entre tentativas em segundos. Padrão é 1.0.
|
|
- **enable_caching**: Opcional. Define se o cache de resultados de consultas será habilitado. Padrão é True.
|
|
|
|
## Uso
|
|
|
|
Ao utilizar o `SnowflakeSearchTool`, você deve fornecer os seguintes parâmetros:
|
|
|
|
- **query**: Obrigatório. Consulta SQL a ser executada.
|
|
- **database**: Opcional. Sobrescreve o banco de dados padrão especificado na configuração.
|
|
- **snowflake_schema**: Opcional. Sobrescreve o schema padrão especificado na configuração.
|
|
- **timeout**: Opcional. Tempo limite da consulta em segundos. O padrão é 300.
|
|
|
|
A ferramenta retornará os resultados da consulta como uma lista de dicionários, onde cada dicionário representa uma linha com os nomes das colunas como chaves.
|
|
|
|
```python Code
|
|
# Example of using the tool with an agent
|
|
data_analyst = Agent(
|
|
role="Data Analyst",
|
|
goal="Analyze sales data from Snowflake",
|
|
backstory="An expert data analyst with experience in SQL and data visualization.",
|
|
tools=[snowflake_tool],
|
|
verbose=True
|
|
)
|
|
|
|
# The agent will use the tool with parameters like:
|
|
# query="SELECT product_name, SUM(revenue) as total_revenue FROM sales GROUP BY product_name ORDER BY total_revenue DESC LIMIT 5"
|
|
# timeout=600
|
|
|
|
# Create a task for the agent
|
|
analysis_task = Task(
|
|
description="Query the sales database and identify the top 5 products by revenue for the last quarter.",
|
|
expected_output="A detailed analysis of the top 5 products by revenue.",
|
|
agent=data_analyst
|
|
)
|
|
|
|
# Run the task
|
|
crew = Crew(
|
|
agents=[data_analyst],
|
|
tasks=[analysis_task]
|
|
)
|
|
result = crew.kickoff()
|
|
```
|
|
|
|
## Recursos Avançados
|
|
|
|
### Pool de Conexões
|
|
|
|
O `SnowflakeSearchTool` implementa pool de conexões para melhorar a performance reutilizando conexões com o banco de dados. Você pode controlar o tamanho do pool com o parâmetro `pool_size`.
|
|
|
|
### Tentativas Automáticas
|
|
|
|
A ferramenta tenta novamente consultas que falharem automaticamente, usando backoff exponencial. O comportamento das tentativas pode ser ajustado pelos parâmetros `max_retries` e `retry_delay`.
|
|
|
|
### Cache de Resultados de Consultas
|
|
|
|
Para melhorar a performance em consultas repetidas, a ferramenta pode armazenar resultados em cache. Este recurso está habilitado por padrão, mas pode ser desativado ao definir `enable_caching=False`.
|
|
|
|
### Autenticação por Par de Chaves
|
|
|
|
Além de autenticação por senha, a ferramenta também suporta autenticação por par de chaves para maior segurança:
|
|
|
|
```python Code
|
|
config = SnowflakeConfig(
|
|
account="your_account",
|
|
user="your_username",
|
|
private_key_path="/path/to/your/private/key.p8",
|
|
warehouse="COMPUTE_WH",
|
|
database="your_database",
|
|
snowflake_schema="your_schema"
|
|
)
|
|
```
|
|
|
|
## Tratamento de Erros
|
|
|
|
O `SnowflakeSearchTool` inclui uma gestão abrangente de erros para situações comuns no Snowflake:
|
|
|
|
- Falhas de conexão
|
|
- Timeout de consultas
|
|
- Erros de autenticação
|
|
- Erros de banco de dados e schema
|
|
|
|
Quando um erro ocorrer, a ferramenta tentará repetir a operação (se estiver configurado) e fornecerá informações detalhadas sobre o erro.
|
|
|
|
## Conclusão
|
|
|
|
O `SnowflakeSearchTool` oferece uma maneira poderosa de integrar data warehouses Snowflake com agentes CrewAI. Com recursos como pool de conexões, tentativas automáticas e cache de consultas, ele possibilita acesso eficiente e confiável aos dados empresariais. Esta ferramenta é particularmente útil para tarefas de análise de dados, relatórios e inteligência de negócios que demandam acesso a dados estruturados armazenados no Snowflake. |