Snak
Un motor de agentes para crear Agentes de IA potentes y seguros impulsados por Starknet.
Documentación
Un motor de agentes para crear agentes de IA potentes y seguros impulsados por Starknet. Disponible tanto como paquete NPM como backend listo para usar.
Inicio rápido
Requisitos previos
- Billetera Starknet (recomendada: Argent X)
- Clave API del proveedor de IA (Anthropic/OpenAI/Google Gemini/Ollama)
- Docker y Docker compose instalados
- Node.js y pnpm instalados
Instalación
git clone https://github.com/kasarlabs/snak.git
cd snak
pnpm install
Configuración
- Crea un archivo
.envcopiando.env.example:
cp .env.example .env
Luego, completa los valores necesarios en tu archivo .env:
# --- Starknet configuration (mandatory) ---
STARKNET_PUBLIC_ADDRESS="YOUR_STARKNET_PUBLIC_ADDRESS"
STARKNET_PRIVATE_KEY="YOUR_STARKNET_PRIVATE_KEY"
STARKNET_RPC_URL="YOUR_STARKNET_RPC_URL"
# --- AI Model API Keys (mandatory) ---
# Add the API keys for the specific AI providers you use in config/models/default.models.json
# The agent will automatically load the correct key based on the provider name.
# Example for OpenAI:
OPENAI_API_KEY="YOUR_OPENAI_API_KEY" # (e.g., sk-...)
# Example for Anthropic:
ANTHROPIC_API_KEY="YOUR_ANTHROPIC_API_KEY" # (e.g., sk-ant-...)
# Example for Google Gemini:
GEMINI_API_KEY="YOUR_GEMINI_API_KEY"
# Example for DeepSeek:
DEEPSEEK_API_KEY="YOUR_DEEPSEEK_API_KEY"
# Note: You do not need an API key if using a local Ollama model.
# --- General Agent Configuration (mandatory) ---
SERVER_API_KEY="YOUR_SERVER_API_KEY" # A secret key for your agent server API
SERVER_PORT="3001"
# --- PostgreSQL Database Configuration (mandatory) ---
POSTGRES_USER=admin
POSTGRES_HOST=localhost
POSTGRES_DB=postgres
POSTGRES_PASSWORD=admin
POSTGRES_PORT=5432
# --- LangSmith Tracing (Optional) ---
# Set LANGSMITH_TRACING=true to enable tracing
LANGSMITH_TRACING=false
LANGSMITH_ENDPOINT="https://api.smith.langchain.com"
LANGSMITH_API_KEY="YOUR_LANGSMITH_API_KEY" # (Only needed if LANGSMITH_TRACING=true)
LANGSMITH_PROJECT="Snak" # (Optional project name for LangSmith)
# --- Node Environment ---
NODE_ENV="development" # "development" or "production"
-
Configura los modelos de IA (opcional): El archivo
config/models/default.models.jsondefine los modelos de IA predeterminados utilizados para diferentes tareas (fast,smart,cheap). Puedes personalizar este archivo o crear nuevas configuraciones de modelos (por ejemplo,my_models.json) y especificarlas al ejecutar el agente. Consultaconfig/models/example.models.jsonpara conocer la estructura.El agente utiliza el campo
provideren la configuración del modelo para determinar qué clave API cargar desde el archivo.env(por ejemplo, siprovideresopenai, cargaOPENAI_API_KEY). -
Crea tu archivo de configuración del agente (por ejemplo,
default.agent.jsonomy_agent.json) en el directorioconfig/agents/:
{
"name": "Your Agent name",
"group": "Your Agent group",
"description": "Your AI Agent Description",
"lore": ["Some lore of your AI Agent 1", "Some lore of your AI Agent 1"],
"objectives": [
"first objective that your AI Agent need to follow",
"second objective that your AI Agent need to follow"
],
"knowledge": [
"first knowledge of your AI Agent",
"second knowledge of your AI Agent"
],
"interval": "Your agent interval beetween each transaction of the Agent in ms,",
"chatId": "Your Agent Chat-id for isolating memory",
"max_iterations": "The number of iterations your agent will execute before stopping",
"mode": "The mode of your agent, can be interactive, autonomous or hybrid",
"memory": {
"enabled": "true or false to enable or disable memory",
"shortTermMemorySize": "The number of messages your agent will remember"
},
"plugins": ["Your first plugin", "Your second plugin"],
"mcp_servers": {
"nxp_server_example": {
"command": "npx",
"args": ["-y", "@npm_package_example/npx_server_example"],
"env": {
"API_KEY": "YOUR_API_KEY"
}
},
"local_server_example": {
"command": "node",
"args": ["node /path/to/local_server/dist/index.js"]
}
}
}
Puedes crear fácilmente tu propia configuración de agente usando nuestra herramienta en snakagent
Uso
Modo de aviso
Ejecuta el aviso:
# start with the default.agent.json
pnpm run start
# start with your custom configuration
pnpm run start --agent="name_of_your_config.json" --models="name_of_your_config.json"
Modo servidor
Ejecuta el servidor:
# start with the default.agent.json
pnpm run start:server
# start with your custom configuration
pnpm run start:server --agent="name_of_your_config.json" --models="name_of_your_config.json"
Modos disponibles
| Modo interactivo | Modo autónomo | |
|---|---|---|
| Modo de aviso | ✅ | ✅ |
| Modo servidor | ✅ | ✅ |
Implementa Snak en tu proyecto
- Instala el paquete snak
#using npm
npm install @snakagent
# using pnpm
pnpm add @snakagent
- Crea tu instancia de agente
import { SnakAgent } from 'starknet-agent-kit';
const agent = new SnakAgent({
provider: new RpcProvider({ nodeUrl: process.env.STARKNET_RPC_URL }),
accountPrivateKey: process.env.STARKNET_PRIVATE_KEY,
accountPublicKey: process.env.STARKNET_PUBLIC_ADDRESS,
aiModel: process.env.AI_MODEL,
aiProvider: process.env.AI_PROVIDER,
aiProviderApiKey: process.env.AI_PROVIDER_API_KEY,
signature: 'key',
agentMode: 'interactive',
agentconfig: y,
});
const response = await agent.execute("What's my ETH balance?");
Acciones
Para obtener más información sobre las acciones, puedes leer esta sección de la documentación. Una interfaz integral en el Kit proporcionará un catálogo fácil de navegar con todos los complementos disponibles y sus acciones, lo que simplificará el descubrimiento y el uso.
Para agregar acciones a tu agente, puedes seguir fácilmente la guía paso a paso aquí
Contribuciones
¡Las contribuciones son bienvenidas! No dudes en enviar una solicitud de extracción.
Licencia
Licencia MIT: consulta el archivo LICENSE para obtener más detalles.
Para documentación detallada, visita docs.kasar.io