Primeros Pasos

🌐 Otros idiomas


Esta guía te guiará a través de la configuración de Symbi y la creación de tu primer agente de IA.

Tabla de contenidos

  1. Prerrequisitos
    1. Dependencias Requeridas
    2. Dependencias Opcionales
  2. Instalación
    1. Opción 1: Docker (Recomendado)
    2. Opción 2: Instalación Local
    3. Verificar Instalación
  3. Tu Primer Agente
    1. 1. Crear Definición de Agente
    2. 2. Ejecutar el Agente
  4. Entendiendo el DSL
    1. Bloque de Metadatos
    2. Definición de Agente
    3. Definiciones de Políticas
    4. Contexto de Ejecución
  5. Siguientes Pasos
    1. Explorar Ejemplos
    2. Habilitar Funciones Avanzadas
      1. API HTTP (Opcional)
      2. Integración de Base de Datos Vectorial
  6. Configuración
    1. Variables de Entorno
    2. Configuración de Runtime
  7. Problemas Comunes
    1. Problemas con Docker
    2. Problemas de Construcción con Rust
    3. Problemas de Runtime
  8. Obtener Ayuda
    1. Documentación
    2. Soporte de la Comunidad
    3. Modo de Depuración
  9. ¿Qué Sigue?

Prerrequisitos

Antes de comenzar con Symbi, asegúrate de tener lo siguiente instalado:

Dependencias Requeridas

  • Docker (para desarrollo containerizado)
  • Rust 1.88+ (si construyes localmente)
  • Git (para clonar el repositorio)

Dependencias Opcionales

  • Qdrant base de datos vectorial (para capacidades de búsqueda semántica)
  • SchemaPin Go CLI (para verificación de herramientas)

Instalación

Opción 1: Docker (Recomendado)

La forma más rápida de empezar es usando Docker:

# Clonar el repositorio
git clone https://github.com/thirdkeyai/symbiont.git
cd symbiont

# Construir el contenedor unificado symbi
docker build -t symbi:latest .

# O usar contenedor pre-construido
docker pull ghcr.io/thirdkeyai/symbi:latest

# Ejecutar el entorno de desarrollo
docker run --rm -it -v $(pwd):/workspace symbi:latest bash

Opción 2: Instalación Local

Para desarrollo local:

# Clonar el repositorio
git clone https://github.com/thirdkeyai/symbiont.git
cd symbiont

# Instalar dependencias de Rust y construir
cargo build --release

# Ejecutar pruebas para verificar la instalación
cargo test

Verificar Instalación

Probar que todo funciona correctamente:

# Probar el analizador DSL
cd crates/dsl && cargo run && cargo test

# Probar el sistema de runtime
cd ../runtime && cargo test

# Ejecutar agentes de ejemplo
cargo run --example basic_agent
cargo run --example full_system

# Probar el CLI unificado symbi
cd ../.. && cargo run -- dsl --help
cargo run -- mcp --help

# Probar con contenedor Docker
docker run --rm symbi:latest --version
docker run --rm -v $(pwd):/workspace symbi:latest dsl parse --help
docker run --rm symbi:latest mcp --help

Tu Primer Agente

Vamos a crear un agente simple de análisis de datos para entender los conceptos básicos de Symbi.

1. Crear Definición de Agente

Crear un nuevo archivo my_agent.dsl:

metadata {
    version = "1.0.0"
    author = "your-name"
    description = "My first Symbi agent"
}

agent greet_user(name: String) -> String {
    capabilities = ["greeting", "text_processing"]
    
    policy safe_greeting {
        allow: read(name) if name.length <= 100
        deny: store(name) if name.contains_sensitive_data
        audit: all_operations with signature
    }
    
    with memory = "ephemeral", privacy = "low" {
        if (validate_name(name)) {
            greeting = format_greeting(name);
            audit_log("greeting_generated", greeting.metadata);
            return greeting;
        } else {
            return "Hello, anonymous user!";
        }
    }
}

2. Ejecutar el Agente

# Analizar y validar la definición del agente
cargo run -- dsl parse my_agent.dsl

# Ejecutar el agente en el runtime
cd crates/runtime && cargo run --example basic_agent -- --agent ../../my_agent.dsl

Entendiendo el DSL

El DSL de Symbi tiene varios componentes clave:

Bloque de Metadatos

metadata {
    version = "1.0.0"
    author = "developer"
    description = "Agent description"
}

Proporciona información esencial sobre tu agente para documentación y gestión del runtime.

Definición de Agente

agent agent_name(parameter: Type) -> ReturnType {
    capabilities = ["capability1", "capability2"]
    // implementación del agente
}

Define la interfaz, capacidades y comportamiento del agente.

Definiciones de Políticas

policy policy_name {
    allow: action_list if condition
    deny: action_list if condition
    audit: operation_type with audit_method
}

Políticas de seguridad declarativas que se aplican en tiempo de ejecución.

Contexto de Ejecución

with memory = "persistent", privacy = "high" {
    // implementación del agente
}

Especifica la configuración de runtime para gestión de memoria y requisitos de privacidad.


Siguientes Pasos

Explorar Ejemplos

El repositorio incluye varios agentes de ejemplo:

# Ejemplo de agente básico
cd crates/runtime && cargo run --example basic_agent

# Demostración completa del sistema
cd crates/runtime && cargo run --example full_system

# Ejemplo de contexto y memoria
cd crates/runtime && cargo run --example context_example

# Agente potenciado por RAG
cd crates/runtime && cargo run --example rag_example

Habilitar Funciones Avanzadas

API HTTP (Opcional)

# Habilitar la función de API HTTP
cd crates/runtime && cargo build --features http-api

# Ejecutar con endpoints de API
cd crates/runtime && cargo run --features http-api --example full_system

Endpoints de API Principales:

  • GET /api/v1/health - Verificación de salud y estado del sistema
  • GET /api/v1/agents - Listar todos los agentes activos
  • POST /api/v1/workflows/execute - Ejecutar flujos de trabajo

Integración de Base de Datos Vectorial

Para capacidades de búsqueda semántica:

# Iniciar base de datos vectorial Qdrant
docker run -p 6333:6333 qdrant/qdrant

# Ejecutar agente con capacidades RAG
cd crates/runtime && cargo run --example rag_example

Configuración

Variables de Entorno

Configurar tu entorno para rendimiento óptimo:

# Configuración básica
export SYMBI_LOG_LEVEL=info
export SYMBI_RUNTIME_MODE=development

# Base de datos vectorial (opcional)
export QDRANT_URL=http://localhost:6333

# Integración MCP (opcional)
export MCP_SERVER_URLS="http://localhost:8080"

Configuración de Runtime

Crear un archivo de configuración symbi.toml:

[runtime]
max_agents = 1000
memory_limit_mb = 512
execution_timeout_seconds = 300

[security]
default_sandbox_tier = "docker"
audit_enabled = true
policy_enforcement = "strict"

[vector_db]
enabled = true
url = "http://localhost:6333"
collection_name = "symbi_knowledge"

Problemas Comunes

Problemas con Docker

Problema: La construcción de Docker falla con errores de permisos

# Solución: Asegurar que el daemon de Docker esté ejecutándose y el usuario tenga permisos
sudo systemctl start docker
sudo usermod -aG docker $USER

Problema: El contenedor sale inmediatamente

# Solución: Revisar los logs de Docker
docker logs <container_id>

Problemas de Construcción con Rust

Problema: La construcción de Cargo falla con errores de dependencias

# Solución: Actualizar Rust y limpiar caché de construcción
rustup update
cargo clean
cargo build

Problema: Faltan dependencias del sistema

# Ubuntu/Debian
sudo apt-get update
sudo apt-get install build-essential pkg-config libssl-dev

# macOS
brew install pkg-config openssl

Problemas de Runtime

Problema: El agente falla al iniciar

# Revisar sintaxis de definición del agente
cargo run -- dsl parse your_agent.dsl

# Habilitar logging de depuración
RUST_LOG=debug cd crates/runtime && cargo run --example basic_agent

Obtener Ayuda

Documentación

Soporte de la Comunidad

Modo de Depuración

Para solución de problemas, habilitar logging detallado:

# Habilitar logging de depuración
export RUST_LOG=symbi=debug

# Ejecutar con salida detallada
cd crates/runtime && cargo run --example basic_agent 2>&1 | tee debug.log

¿Qué Sigue?

Ahora que tienes Symbi ejecutándose, explora estos temas avanzados:

  1. Guía DSL - Aprende funciones avanzadas del DSL
  2. Arquitectura de Runtime - Entiende los internos del sistema
  3. Modelo de Seguridad - Implementa políticas de seguridad
  4. Contribuir - Contribuye al proyecto

¿Listo para construir algo increíble? Comienza con nuestros proyectos de ejemplo o sumérgete en la especificación completa.