Passer au contenu principal
Ce guide montre comment tirer parti des outils d’UBIK pour effectuer des tâches complexes. Vous apprendrez à lister les outils disponibles, à en exécuter un avec les entrées requises, puis à interroger les résultats de l’exécution.
1

Lister les Outils Disponibles

D’abord, voyons quels outils sont disponibles. Nous pouvons obtenir une liste de tous les outils qui nous sont accessibles en effectuant une requête GET vers l’endpoint /tools.
curl -X GET "https://app.ubik-agent.com/api/v1/tools" \
     -H "X-API-KEY: VOTRE_CLE_API"
import requests

api_key = "VOTRE_CLE_API"
headers = {"X-API-KEY": api_key}

response = requests.get("https://app.ubik-agent.com/api/v1/tools", headers=headers)

if response.status_code == 200:
    tools = response.json()
    print(tools['items'])
else:
    print(f"Erreur: {response.status_code}", response.text)
const apiKey = "VOTRE_CLE_API";
const url = "https://app.ubik-agent.com/api/v1/tools";

fetch(url, {
  method: 'GET',
  headers: { 'X-API-KEY': apiKey }
})
.then(response => {
  if (!response.ok) {
    throw new Error(`Erreur HTTP: ${response.status}`);
  }
  return response.json();
})
.then(data => console.log(data.items))
.catch(error => console.error('Erreur:', error));
La réponse sera une liste paginée d’outils. Pour ce guide, supposons que nous voulons utiliser un outil nommé “Extracteur de Données Financières”. Trouvez-le dans la liste et copiez son id.
2

Exécuter l'Outil

Maintenant, nous allons démarrer l’outil en effectuant une requête POST vers l’endpoint /tools/{tool_id}/execute. Vous aurez besoin de l’id de l’étape précédente. Dans le corps de la requête, nous fournirons les inputs requis par l’outil.
curl -X POST "https://app.ubik-agent.com/api/v1/tools/VOTRE_ID_OUTIL/execute" \
     -H "X-API-KEY: VOTRE_CLE_API" \
     -H "Content-Type: application/json" \
     -d '{
          "inputs": {
            "document_id": "VOTRE_ID_DOCUMENT",
            "data_points": ["revenue", "net_income", "ebitda"]
          }
        }'
import requests

api_key = "VOTRE_CLE_API"
tool_id = "VOTRE_ID_OUTIL"

headers = {
    "X-API-KEY": api_key,
    "Content-Type": "application/json"
}
payload = {
    "inputs": {
        "document_id": "VOTRE_ID_DOCUMENT",
        "data_points": ["revenue", "net_income", "ebitda"]
    }
}

response = requests.post(
    f"https://app.ubik-agent.com/api/v1/tools/{tool_id}/execute",
    headers=headers,
    json=payload
)

if response.status_code == 202: # Accepted
    execution_info = response.json()
    print(execution_info)
    # Sauvegardez l'execution_id pour vérifier le statut plus tard
else:
    print(f"Erreur: {response.status_code}", response.text)
const apiKey = "VOTRE_CLE_API";
const toolId = "VOTRE_ID_OUTIL";
const url = `https://app.ubik-agent.com/api/v1/tools/${toolId}/execute`;

const payload = {
  inputs: {
    document_id: "VOTRE_ID_DOCUMENT",
    data_points: ["revenue", "net_income", "ebitda"]
  }
};

fetch(url, {
  method: 'POST',
  headers: {
    'X-API-KEY': apiKey,
    'Content-Type': 'application/json'
  },
  body: JSON.stringify(payload)
})
.then(response => {
  if (response.status !== 202) { // Accepted
    throw new Error(`Erreur HTTP: ${response.status}`);
  }
  return response.json();
})
.then(executionInfo => {
  console.log(executionInfo);
  // Sauvegardez l'execution_id pour vérifier le statut plus tard
})
.catch(error => console.error('Erreur:', error));
L’API répondra avec un statut 202 Accepted, indiquant que la tâche a été reçue. Le corps de la réponse contient un execution_id et une details_url. Nous utiliserons cette URL pour obtenir le résultat final.
Isolation des Utilisateurs: Si vous exécutez des outils pour le compte de vos utilisateurs finaux, vous pouvez isoler leurs données en passant l’en-tête X-End-User-ID.curl -H "X-End-User-ID: user_123" ...Pour plus de détails sur l’isolation des données et le multi-tenancy, voir le Guide Authentification & Sécurité.
3

Vérifier le Résultat de l'Exécution

Comme l’outil s’exécute de manière asynchrone, nous devons interroger la details_url pour vérifier le résultat final. Vous devrez vérifier cet endpoint périodiquement jusqu’à ce que le status passe à completed ou failed.
curl -X GET "https://app.ubik-agent.com/api/v1/tool-executions/VOTRE_ID_EXECUTION" \
     -H "X-API-KEY: VOTRE_CLE_API"
import requests
import time

api_key = "VOTRE_CLE_API"
execution_id = "VOTRE_ID_EXECUTION"

headers = {"X-API-KEY": api_key}
url = f"https://app.ubik-agent.com/api/v1/tool-executions/{execution_id}"

while True:
    response = requests.get(url, headers=headers)
    if response.status_code == 200:
        result = response.json()
        print(f"Statut actuel: {result['status']}")
        if result['status'] in ['completed', 'failed']:
            print("Résultat Final:", result)
            break
    else:
        print(f"Erreur de polling: {response.status_code}", response.text)
        break
    time.sleep(5) # Attendre 5 secondes avant de recommencer
const apiKey = "VOTRE_CLE_API";
const executionId = "VOTRE_ID_EXECUTION";
const url = `https://app.ubik-agent.com/api/v1/tool-executions/${executionId}`;

const pollResult = async () => {
  try {
    const response = await fetch(url, {
      headers: { 'X-API-KEY': apiKey }
    });

    if (!response.ok) {
      throw new Error(`Erreur HTTP: ${response.status}`);
    }

    const result = await response.json();
    console.log(`Statut actuel: ${result.status}`);

    if (result.status === 'completed' || result.status === 'failed') {
      console.log('Résultat Final:', result);
      // Arrêter le polling
    } else {
      setTimeout(pollResult, 5000); // Réinterroger dans 5 secondes
    }
  } catch (error) {
    console.error('Erreur de polling:', error);
  }
};

pollResult();
Une fois que le statut est completed, le champ outputs contiendra les données extraites par l’outil.
Pour une expérience plus réactive et en temps réel, vous pouvez streamer les événements au lieu de faire du polling. Consultez notre guide sur l’Obtention de Résultats en Temps Réel avec SSE.
Vous savez maintenant comment découvrir et exécuter des outils puissants et pré-construits pour automatiser des séquences d’actions complexes avec l’API UBIK.