Construye y administra flujos de trabajo de IA por medio de agentes modulares y escalables, basados en plantillas reutilizables y compuestas
🐍 Instalación • ⚡ Inicio rápido • 🎯 Características • 👀 Ejemplos • 🐳 Imágenes de docker • 📙 Documentación • 📚 Paquetes de sinapsis disponibles 🔍 Licencia
Te damos la bienvenida a Sinapsis.
La plataforma nativa de IA todo-en-uno, que integra las más poderosas e innovadoras herramientas de IA: visión por computadoras, procesamiento de lenguaje natural, IA generativa, procesamiento de habla, análisis de series de tiempo, y más. Ya sea que estés construyendo, experimentando o desarrollando, Sinapsis te permitirá crear flujos de trabajo integrados, desbloquear nuevas posibilidades y acelerar la innovación con IA como nunca antes. Únete a darle forma al futuro de la IA.
Important
Sinapsis requiere Python 3.10 o posterior.
Recomendamos el uso de uv, aunque cualquier administrador de paquetes debería funcionar. Si necesitas instalar uv, por favor revisa la documentación oficial.
- Instala usando tu administrador de paquetes de preferencia:
Ejemplo con uv:
uv pip install sinapsis --extra-index-url https://pypi.sinapsis.techO con pip:
pip install sinapsis --extra-index-url https://pypi.sinapsis.techUso de la interfaz de línea de comandos (CLI)
La CLI de Sinapsis provee una manera fácil de ejecutar agentes y obtener información sobre las plantillas:
# Ejecutar un agente con un archivo de configuración
sinapsis run config.yml
# Ejecutar un agente con perfilador
sinapsis run config.yml --enable-profiler
# Enlistar las plantillas disponibles
sinapsis info --all-template-names
# Obtener información detallada sobre una plantilla específica
sinapsis info --template NombreDeLaPlantilla
# Obtener un ejemplo de configuración de plantilla
sinapsis info --example-template-config NombreDeLaPlantilla
# Mostrar información de todas las plantillas
sinapsis info --all📖 ¡Hola mundo! en Sinapsis
Crea un archivo de configuración llamado mi_agente_de_prueba.yml:
agent:
name: mi_agente_de_prueba
templates:
- template_name: InputTemplate-1
class_name: InputTemplate
attributes: {}
- template_name: HelloWorld-1
class_name: HelloWorld
template_input: InputTemplate-1
attributes:
display_text: "¡Hola, esta es mi primera plantilla!"También puedes probar con los agentes disponibles en el directorio src/configs/
Ejecuta el agente:
sinapsis run mi_agente_de_prueba.ymlResultado
... | DEBUG | mi_agente_de_prueba:__instantiate_templates:105 - Initialized template: InputTemplate-1
... | DEBUG | mi_agente_de_prueba:__instantiate_templates:105 - Initialized template: HelloWorld-1
... | DEBUG | mi_agente_de_prueba:_log_agent_execution_order:119 - Execution Order
... | DEBUG | mi_agente_de_prueba:_log_agent_execution_order:122 - Order: <<0>>, template name: <<InputTemplate-1>>
... | DEBUG | mi_agente_de_prueba:_log_agent_execution_order:122 - Order: <<1>>, template name: <<HelloWorld-1>>
... | INFO | mi_agente_de_prueba:_lazy_init:63 - Agent and templates initialized
... | INFO | mi_agente_de_prueba:signal_block_if_needed:156 - Signaling block mode for HelloWorld-1 no: 2/2
... | INFO | mi_agente_de_prueba:all_templates_finished:192 - All templates returned finished, stopping execution...
... | DEBUG | .../run_agent_from_config.py:run_agent_from_config:41 - result: DataContainer(container_id=abc..., images=[], audios=[], texts=[TextPacket(content='¡Hola, esta es mi primera plantilla!!', id='abc...', source='HelloWorld-1', modified_by_templates=['HelloWorld-1'], embedding=[], generic_data={}, annotations=None)], time_series=[], binary_data=[], generic_data={})
Agentes
- Flujos de trabajo declarativos
- Múltiples modos de ejecución:
- Generador
- Ejecución única
- Ejecución continua
- Organización de plantillas sofisticada:
- Orden de ejecución topológico
- Ejecución de plantillas en paralelo
- Bloques de control de ejecución
- Capacidades de perfilado integradas:
- Rastreo de tiempos de ejecución
- Manejo de estado:
- Actualización de atributos dinámica
- Manejo de errores
Plantillas
- Componentes independientes
- Ejecución modular centrada en tareas
- Evaluación estricta o perezosa
- Definiciones de plantillas dinámicas
- Plantillas compuestas
- Sub-agentes
Contenedores de datos
- Transporte universal de datos
- Diseño agnóstico de dominio
- Soporte nativo para imágenes, audio, texto, series de tiempo
- Datos multimodales
General
- Validación de datos y seguridad de tipos por medio de Pydantic
- Archivos de configuración basados en YAML
- Interfaz de línea de comandos
Aquí puedes encontrar algunas implementaciones específicas de plantillas:
-
Plantillas estáticas
-
Plantillas dinámicas
🐳 Imágenes de docker
Sinapsis provee imágenes de docker con todas las dependencias pre-configuradas. Cuando quieras usar docker para probar una aplicación dentro del proyecto, asegúrate de que las imágenes base de sinapsis están instaladas en el sistema. Para construir las imágenes:
- Clona el repositorio:
git clone git@github.com:Sinapsis-ai/sinapsis.git
cd sinapsis- Construye la imagen
docker compose -f docker/compose.yaml buildEsto creará dos imágenes de docker:
- sinapsis:base: Contiene el administrador de paquetes
uv, git con soporte de SSH y ambiente Python 3.10. - sinapsis-nvidia:base: Igual que sinapsis-base, con soporte adicional para aceleración de GPU con CUDA 12.4.0.
La documentación se encuentra disponible en el sitio web de sinapsis
Los tutoriales para distintos proyectos se encuentran disponibles en el sitio de tutoriales de sinapsis
El sistema de sinapsis contiene una lista de paquetes públicos con plantillas que cubren un amplio rango de tareas, por ejemplo: visión de computadoras, series de tiempo, procesamiento de lenguaje natural, modelos de lenguaje (LLM), entre otros. Estos paquetes incluyen:
sinapsis anomaly detection
sinapsis chatbots
sinapsis data tools
sinapsis framework converter
sinapsis huggingface
sinapsis image transforms
sinapsis langchain
sinapsis ocr
sinapsis object detection
sinapsis openai
sinapsis retina face trt
sinapsis speech
sinapsis time series
sinapsis trackers
Este proyecto está incluido bajo la licencia AGPLv3, que fomenta la colaboración abierta e intercambio. Para más detalles, favor de consultar el archivo de licencia. Para uso comercial, por favor consulta nuestro sitio oficial para información sobre como conseguir una licencia comercial.