¡Nos complace anunciar el lanzamiento de nuestra API de Respuestas Abiertas! Esta nueva API ofrece:
La API de Respuestas Abiertas facilita la integración con tus aplicaciones existentes mientras añade capacidades nuevas y potentes.
¿Listo para probarlo? Consulta nuestra documentación de la API de Respuestas Abiertas para comenzar.
Julep es una plataforma sin servidor que ayuda a equipos de datos y ML a construir flujos de trabajo de IA sofisticados. Proporciona una base robusta para orquestar operaciones complejas de IA, gestionar estados entre interacciones e integrarse con tu infraestructura y herramientas de datos existentes.
Ya sea que estés construyendo pipelines de datos o creando flujos de trabajo de IA, Julep facilita la composición y escalabilidad de flujos de trabajo impulsados por LLM sin gestionar infraestructura. Imagina que quieres construir un agente de IA que pueda hacer más que responder preguntas simples: necesita manejar tareas complejas, recordar interacciones pasadas y quizás incluso usar otras herramientas o APIs. Ahí es donde entra Julep. Nuestra plataforma maneja el trabajo pesado para que puedas enfocarte en construir soluciones inteligentes para tu negocio.
💡 Para aprender más sobre Julep, consulta la Documentación.
🧠 | Memoria Inteligente | Agentes que recuerdan contexto y aprenden de interacciones pasadas |
🔄 | Motor de Flujos de Trabajo | Construye procesos complejos de múltiples pasos con bifurcaciones y bucles |
⚡ | Procesamiento en Paralelo | Ejecuta múltiples operaciones simultáneamente para máxima eficiencia |
🛠️ | Integración de Herramientas | Conéctate sin problemas con APIs y servicios externos |
🔌 | Configuración Fácil | Comienza rápidamente con SDKs para Python y Node.js |
🔒 | Confiable y Seguro | Manejo de errores, reintentos y características de seguridad integradas |
📊 | Monitoreo | Rastrea el progreso y rendimiento de tareas en tiempo real |
💡 Para aprender más sobre Julep, consulta la Documentación.
Julep está compuesto por los siguientes componentes:
Piensa en Julep como una plataforma que combina componentes tanto del lado del cliente como del servidor para ayudarte a construir agentes de IA avanzados. Así es como puedes visualizarlo:
Tu Código de Aplicación:
Servicio Backend de Julep:
Integración con Herramientas y APIs:
Para comenzar con Julep, instálalo usando npm o pip:
npm install @julep/sdk
# or
bun add @julep/sdk
pip install julep
[!NOTE] 🔑 Obtén tu clave API aquí.
Contáctanos en Discord para conocer más sobre Julep.
La CLI de Julep es una herramienta de línea de comandos que te permite interactuar con la plataforma Julep directamente desde tu terminal. Proporciona una forma conveniente de gestionar tus flujos de trabajo de IA, tareas y agentes sin necesidad de escribir código.
pip install julep-cli
Para más detalles, consulta la Documentación de la CLI de Julep.
[!NOTE] La CLI está actualmente en beta y disponible solo para Python. ¡Próximamente soporte para Node.js!
Imagina un agente de investigación de IA que pueda hacer lo siguiente:
[!NOTE] En Julep, esto sería una sola tarea con menos de 80 líneas de código y se ejecutaría completamente gestionado por sí solo. Todos los pasos se ejecutan en los servidores de Julep y no necesitas hacer nada.
Aquí tienes un ejemplo completo de una definición de tarea:
# yaml-language-server: $schema=https://raw.githubusercontent.com/julep-ai/julep/refs/heads/dev/schemas/create_task_request.json
name: Research Agent
description: A research assistant that can search the web and send the summary to Discord
########################################################
####################### INPUT ##########################
########################################################
# Define the input schema for the task
input_schema:
type: object
properties:
topic:
type: string
description: The main topic to research
num_questions:
type: integer
description: The number of search queries to generate
########################################################
####################### TOOLS ##########################
########################################################
# Define the tools that the agent can use
tools:
- name: web_search
type: integration
integration:
provider: brave
setup:
api_key: "<your-brave-api-key>"
- name: discord_webhook
type: api_call
api_call:
url: https://discord.com/api/webhooks/<your-webhook-id>/<your-webhook-token>
method: POST
headers:
Content-Type: application/json
########################################################
####################### MAIN WORKFLOW #################
########################################################
# Special variables:
# - steps[index].input: for accessing the input to the step at that index
# - steps[index].output: for accessing the output of the step at that index
# - _: for accessing the output of the previous step
# Define the main workflow
main:
# Step 0: Generate search queries
- prompt:
- role: system
content: >-
$ f"""
You are a research assistant.
Generate {{steps[0].input.num_questions|default(30, true)}} diverse search queries related to the topic:
{steps[0].input.topic}
Write one query per line.
"""
unwrap: true
# Step 1: Evaluate the search queries using a simple python expression
- evaluate:
search_queries: $ _.split(NEWLINE)
# Step 2: Run the web search in parallel for each query
- over: $ _.search_queries
map:
tool: web_search
arguments:
query: $ _
parallelism: 5
# Step 3: Collect the results from the web search
- evaluate:
search_results: $ _
# Step 4: Summarize the results
- prompt:
- role: system
content: >
$ f"""
You are a research summarizer. Create a comprehensive summary of the following research results on the topic {steps[0].input.topic}.
The summary should be well-structured, informative, and highlight key findings and insights. Keep the summary concise and to the point.
The length of the summary should be less than 150 words.
Here are the search results:
{_.search_results}
"""
unwrap: true
settings:
model: gpt-4o-mini
# Step 5: Send the summary to Discord
- evaluate:
discord_message: |-
$ f'''
**Research Summary for {steps[0].input.topic}**
{_}
'''
# Step 6: Send the summary to Discord
- tool: discord_webhook
arguments:
json_:
content: $ _.discord_message[:2000] # Discord has a 2000 character limit
Aquí puedes ejecutar el flujo de trabajo anterior usando el SDK de Julep:
from julep import Client
import yaml
import time
# Initialize the client
client = Client(api_key=JULEP_API_KEY)
# Create the agent
agent = client.agents.create(
name="Julep Browser Use Agent",
description="A Julep agent that can use the computer tool to interact with the browser.",
)
# Load the task definition
with open('./research_agent.yaml', 'r') as file:
task_definition = yaml.safe_load(file)
# Create the task
task = client.tasks.create(
agent_id=agent.id,
**task_definition
)
# Create the execution
execution = client.executions.create(
task_id=task.id,
input={
"topic": "artificial intelligence",
"num_questions": 30
}
)
# Wait for the execution to complete
while (result := client.executions.get(execution.id)).status not in ['succeeded', 'failed']:
print(result.status)
time.sleep(1)
# Print the result
if result.status == "succeeded":
print(result.output)
else:
print(f"Error: {result.error}")
import { Julep } from '@julep/sdk';
import yaml from 'yaml';
import fs from 'fs';
// Initialize the client
const client = new Julep({
apiKey: 'your_julep_api_key'
});
// Create the agent
const agent = await client.agents.create({
name: "Julep Browser Use Agent",
description: "A Julep agent that can use the computer tool to interact with the browser.",
});
// Parse the task definition
const taskDefinition = yaml.parse(fs.readFileSync('./research_agent.yaml', 'utf8'));
// Create the task
const task = await client.tasks.create(
agent.id,
taskDefinition
);
// Create the execution
const execution = await client.executions.create(
task.id,
{
input: {
"topic": "artificial intelligence",
"num_questions": 30
}
}
);
// Wait for the execution to complete
let result;
while (true) {
result = await client.executions.get(execution.id);
if (result.status === 'succeeded' || result.status === 'failed') break;
console.log(result.status);
await new Promise(resolve => setTimeout(resolve, 1000));
}
// Print the result
if (result.status === 'succeeded') {
console.log(result.output);
} else {
console.error(`Error: ${result.error}`);
}
En este ejemplo, Julep gestionará automáticamente ejecuciones en paralelo, reintentos de pasos fallidos, reenvío de solicitudes API y mantendrá las tareas ejecutándose de manera confiable hasta su finalización.
Esto se ejecuta en menos de 30 segundos y devuelve el siguiente resultado:
Resumen de Investigación para IA
Resumen de Resultados de Investigación sobre Inteligencia Artificial (IA)
Introducción
El campo de la Inteligencia Artificial (IA) ha experimentado avances significativos en los últimos años, marcados por el desarrollo de métodos y tecnologías que permiten a las máquinas percibir su entorno, aprender de datos y tomar decisiones. El enfoque principal de este resumen son las conclusiones derivadas de varios hallazgos de investigación relacionados con la IA.
Hallazgos Clave
Definición y Alcance de la IA:
- La IA se define como una rama de la informática enfocada en crear sistemas que puedan realizar tareas que requieren inteligencia similar a la humana, incluyendo aprendizaje, razonamiento y resolución de problemas (Wikipedia).
- Abarca varios subcampos, incluyendo aprendizaje automático, procesamiento de lenguaje natural, robótica y visión por computadora.
Impacto y Aplicaciones:
- Las tecnologías de IA se están integrando en numerosos sectores, mejorando la eficiencia y productividad. Las aplicaciones van desde vehículos autónomos y diagnósticos médicos hasta automatización de servicio al cliente y pronósticos financieros (OpenAI).
- El compromiso de Google de hacer que la IA sea beneficiosa para todos destaca su potencial para mejorar significativamente la vida diaria al mejorar experiencias de usuario en varias plataformas (Google AI).
Consideraciones Éticas:
- Existe un discurso continuo sobre las implicaciones éticas de la IA, incluyendo preocupaciones sobre privacidad, sesgos y responsabilidad en procesos de toma de decisiones. Se enfatiza la necesidad de un marco que garantice el uso seguro y responsable de las tecnologías de IA (OpenAI).
Mecanismos de Aprendizaje:
- Los sistemas de IA utilizan diferentes mecanismos de aprendizaje, como aprendizaje supervisado, no supervisado y por refuerzo. Estos métodos permiten que la IA mejore su rendimiento con el tiempo al aprender de experiencias y datos pasados (Wikipedia).
- La distinción entre aprendizaje supervisado y no supervisado es crítica; el aprendizaje supervisado depende de datos etiquetados, mientras que el no supervisado identifica patrones sin etiquetas predefinidas (Unsupervised).
Direcciones Futuras:
- Se espera que los futuros desarrollos de IA se centren en mejorar la interpretabilidad y transparencia de los sistemas de IA, asegurando que puedan proporcionar decisiones y acciones justificables (OpenAI).
- También hay un impulso hacia hacer los sistemas de IA más accesibles y fáciles de usar, fomentando una adopción más amplia en diferentes demografías e industrias (Google AI).
Conclusión
La IA representa una fuerza transformadora en múltiples dominios, prometiendo remodelar industrias y mejorar la calidad de vida. Sin embargo, a medida que sus capacidades se expanden, es crucial abordar las implicaciones éticas y sociales que surgen. La investigación continua y la colaboración entre tecnólogos, éticos y legisladores serán esenciales para navegar el futuro panorama de la IA.
[!TIP] 💡 Consulta más tutoriales en la sección Tutoriales de la documentación.
💡 Si eres principiante, recomendamos comenzar con la Guía de Inicio Rápido.
💡 Si buscas más ideas, revisa la sección Ideas del repositorio.
💡 Si prefieres recetas estilo libro de cocina, revisa la sección Libro de Recetas del repositorio.
Explora nuestra documentación de API para aprender más sobre agentes, tareas, herramientas y la CLI de Julep aquí: Referencia de la API
Clona el repositorio desde tu fuente preferida:
git clone <repository_url>
Cambia al directorio raíz del proyecto:
cd <repository_root>
.env
en el directorio raíz..env.example
para una lista de variables requeridas..env
.Crea un volumen de Docker llamado grafana_data
, memory_store_data
, temporal-db-data
, prometheus_data
, seaweedfs_data
:
docker volume create grafana_data
docker volume create memory_store_data
docker volume create temporal-db-data
docker volume create prometheus_data
docker volume create seaweedfs_data
Puedes ejecutar el proyecto en dos modos diferentes: Single Tenant o Multi-Tenant. Elige uno de los siguientes comandos según tu requerimiento:
Ejecuta el proyecto en modo single-tenant:
docker compose --env-file .env --profile temporal-ui --profile single-tenant --profile self-hosted-db --profile blob-store --profile temporal-ui-public up --build --force-recreate --watch
Nota: En modo single-tenant, puedes interactuar con el SDK directamente sin necesidad de una API KEY.
Ejecuta el proyecto en modo multi-tenant:
docker compose --env-file .env --profile temporal-ui --profile multi-tenant --profile embedding-cpu --profile self-hosted-db --profile blob-store --profile temporal-ui-public up --force-recreate --build --watch
Nota: En modo multi-tenant, necesitas generar un token JWT localmente que actúe como API KEY para interactuar con el SDK.
Generar un Token JWT (Solo para Modo Multi-Tenant)
Para generar un token JWT, se requiere jwt-cli
. Instálalo antes de proceder con los siguientes pasos.
Usa el siguiente comando y reemplaza JWT_SHARED_KEY
con la clave correspondiente de tu archivo .env
para generar un token JWT:
jwt encode --secret JWT_SHARED_KEY --alg HS512 --exp=$(date -d '+10 days' +%s) --sub '00000000-0000-0000-0000-000000000000' '{}'
Este comando genera un token JWT que será válido por 10 días.
.env
.from julep import Client
client = Client(api_key="your_jwt_token")
Nota: En el SDK en modo multi-tenant, necesitas generar un token JWT localmente que actúe como API KEY para interactuar con el SDK. Además, al inicializar el cliente, deberás configurar el entorno a local_multi_tenant
y la api key al token JWT generado en el paso anterior. Mientras que en modo single-tenant puedes interactuar con el SDK directamente sin necesidad de API KEY y configurar el entorno a local
.
.env
.docker compose logs
para ver registros detallados para depuración.¡Estamos emocionados de dar la bienvenida a nuevos contribuidores al proyecto Julep! Hemos creado varios "good first issues" para ayudarte a comenzar.
Tus contribuciones, grandes o pequeñas, son valiosas para nosotros. ¡Construyamos algo increíble juntos! 🚀
Julep está licenciado bajo la Apache License 2.0.
Consulta el archivo LICENSE para más detalles.