Nous sommes ravis d'annoncer le lancement de notre API Open Responses ! Cette nouvelle API propose :
L'API Open Responses facilite l'intégration avec vos applications existantes tout en ajoutant de puissantes nouvelles fonctionnalités.
Prêt à essayer ? Consultez notre documentation de l'API Open Responses pour commencer !
Julep est une plateforme serverless qui aide les équipes Data et ML à construire des flux de travail AI sophistiqués. Elle fournit une base robuste pour orchestrer des opérations AI complexes, gérer l'état entre les interactions et s'intégrer à votre infrastructure et outils de données existants.
Que vous construisiez des pipelines de données ou des flux de travail AI, Julep facilite la composition et la mise à l'échelle de workflows alimentés par LLM sans gérer d'infrastructure. Imaginez vouloir construire un agent AI capable de faire plus que répondre à des questions simples - il doit gérer des tâches complexes, se souvenir des interactions passées et peut-être même utiliser d'autres outils ou APIs. C'est là que Julep intervient. Notre plateforme gère les tâches complexes pour que vous puissiez vous concentrer sur la construction de solutions intelligentes pour votre entreprise.
💡 Pour en savoir plus sur Julep, consultez la Documentation.
🧠 | Mémoire intelligente | Des agents qui retiennent le contexte et apprennent des interactions passées |
🔄 | Moteur de workflows | Construisez des processus complexes multi-étapes avec branchements et boucles |
⚡ | Traitement parallèle | Exécutez plusieurs opérations simultanément pour une efficacité maximale |
🛠️ | Intégration d'outils | Connectez-vous facilement à des APIs et services externes |
🔌 | Configuration facile | Démarrez rapidement avec les SDKs Python et Node.js |
🔒 | Fiable & sécurisé | Gestion des erreurs, nouvelles tentatives et fonctionnalités de sécurité intégrées |
📊 | Surveillance | Suivez la progression et les performances des tâches en temps réel |
💡 Pour en savoir plus sur Julep, consultez la Documentation.
Julep est composé des éléments suivants :
Considérez Julep comme une plateforme combinant composants client et serveur pour construire des agents AI avancés. Voici comment le visualiser :
Votre code d'application :
Service backend Julep :
Intégration avec outils et APIs :
Pour commencer avec Julep, installez-le via npm ou pip :
npm install @julep/sdk
# or
bun add @julep/sdk
pip install julep
[!NOTE] 🔑 Obtenez votre clé API ici.
Contactez-nous sur Discord pour en savoir plus sur Julep.
Le CLI Julep est un outil en ligne de commande permettant d'interagir directement avec la plateforme Julep. Il offre un moyen pratique de gérer vos workflows, tâches et agents AI sans écrire de code.
pip install julep-cli
Pour plus de détails, consultez la Documentation du CLI Julep.
[!NOTE] Le CLI est actuellement en bêta et disponible uniquement pour Python. Le support Node.js arrive bientôt !
Imaginez un agent de recherche AI capable de :
[!NOTE] Avec Julep, ce serait une seule tâche en moins de 80 lignes de code s'exécutant entièrement gérée sans intervention. Toutes les étapes s'exécutent sur les serveurs de Julep sans effort de votre part.
Voici un exemple complet de définition de tâche :
# 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
Voici comment exécuter ce workflow avec le SDK 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}`);
}
Dans cet exemple, Julep gère automatiquement les exécutions parallèles, les nouvelles tentatives, les requêtes API et maintient les tâches jusqu'à leur achèvement.
Cela s'exécute en moins de 30 secondes et retourne :
Résumé de recherche sur l'IA
Synthèse des résultats de recherche sur l'Intelligence Artificielle (IA)
Introduction
Le domaine de l'Intelligence Artificielle (IA) a connu des avancées significatives ces dernières années, marquées par le développement de méthodes et technologies permettant aux machines de percevoir leur environnement, d'apprendre à partir de données et de prendre des décisions. Ce résumé se concentre sur les insights tirés de diverses recherches concernant l'IA.
Principales découvertes
Définition et portée de l'IA :
- L'IA est définie comme une branche de l'informatique visant à créer des systèmes capables d'effectuer des tâches nécessitant une intelligence semblable à l'humain, incluant l'apprentissage, le raisonnement et la résolution de problèmes (Wikipedia).
- Elle englobe divers sous-domaines comme le machine learning, le traitement du langage naturel, la robotique et la vision par ordinateur.
Impact et applications :
- Les technologies IA sont intégrées dans de nombreux secteurs, améliorant efficacité et productivité. Les applications vont des véhicules autonomes et diagnostics médicaux à l'automatisation du service client et prévisions financières (OpenAI).
- L'engagement de Google à rendre l'IA bénéfique pour tous souligne son potentiel à améliorer significativement la vie quotidienne en enrichissant les expériences utilisateur (Google AI).
Considérations éthiques :
- Un débat persiste sur les implications éthiques de l'IA, incluant les préoccupations sur la vie privée, les biais et la responsabilité dans les processus décisionnels. La nécessité d'un cadre assurant une utilisation sûre et responsable est soulignée (OpenAI).
Mécanismes d'apprentissage :
- Les systèmes IA utilisent divers mécanismes comme l'apprentissage supervisé, non supervisé et par renforcement. Ces méthodes permettent à l'IA d'améliorer ses performances en apprenant des expériences passées (Wikipedia).
- La distinction entre apprentissage supervisé et non supervisé est cruciale ; le premier repose sur des données labellisées, le second identifie des motifs sans labels prédéfinis (Unsupervised).
Directions futures :
- Les développements futurs de l'IA se concentreront sur l'amélioration de l'interprétabilité et transparence des systèmes, assurant des décisions justifiables (OpenAI).
- Il y a également une poussée vers des systèmes IA plus accessibles et conviviaux, encourageant une adoption plus large (Google AI).
Conclusion
L'IA représente une force transformative impactant de multiples domaines, promettant de remodeler les industries et améliorer la qualité de vie. Cependant, à mesure que ses capacités s'étendent, il est crucial d'adresser les implications éthiques et sociétales. Une recherche continue et collaboration entre technologues, éthiciens et décideurs sera essentielle pour naviguer le futur paysage de l'IA.
[!TIP] 💡 Consultez plus de tutoriels dans la section Tutoriels de la documentation.
💡 Si vous êtes débutant, nous recommandons de commencer par le Guide de démarrage rapide.
💡 Pour plus d'idées, consultez la section Idées du dépôt.
💡 Pour des recettes de type cookbook, consultez la section Cookbook.
Explorez notre documentation API pour en savoir plus sur les agents, tâches, outils et le CLI Julep : Référence API
Clonez le dépôt depuis votre source préférée :
git clone <repository_url>
Allez dans le répertoire racine du projet :
cd <repository_root>
.env
dans le répertoire racine..env.example
pour la liste des variables requises..env
.Créez un volume Docker nommé 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
Vous pouvez exécuter le projet en deux modes : Single Tenant ou Multi-Tenant. Choisissez une des commandes suivantes selon votre besoin :
Exécutez le projet en mode 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
Note : En mode single-tenant, vous pouvez interagir directement avec le SDK sans clé API.
Exécutez le projet en mode 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
Note : En mode multi-tenant, vous devez générer un token JWT localement servant de clé API pour interagir avec le SDK.
Générer un token JWT (Mode Multi-Tenant uniquement)
Pour générer un token JWT, jwt-cli
est requis. Installez-le avant de procéder.
Utilisez la commande suivante en remplaçant JWT_SHARED_KEY
par la clé correspondante de votre .env
pour générer un token JWT :
jwt encode --secret JWT_SHARED_KEY --alg HS512 --exp=$(date -d '+10 days' +%s) --sub '00000000-0000-0000-0000-000000000000' '{}'
Cette commande génère un token JWT valable 10 jours.
.env
.from julep import Client
client = Client(api_key="your_jwt_token")
Note : En mode multi-tenant, vous devez fournir le token JWT comme clé API et définir l'environnement sur local_multi_tenant
. En mode single-tenant, définissez simplement l'environnement sur local
sans clé API.
.env
.docker compose logs
pour voir les logs de débogage.Nous sommes ravis d'accueillir de nouveaux contributeurs sur Julep ! Nous avons créé des "good first issues" pour vous aider à démarrer.
Vos contributions, grandes ou petites, nous sont précieuses. Construisons ensemble quelque chose d'incroyable ! 🚀
Julep est sous licence Apache License 2.0.
Consultez le fichier LICENSE pour plus de détails.