Aller au contenu principal

Outils et Function Calling en Vocal

Donner des capacites a votre agent vocal

Un assistant vocal qui ne peut que discuter a un interet limite. La puissance du Voice Agent reside dans sa capacite a executer des actions pendant la conversation : consulter une base de donnees, effectuer une recherche web, appeler une API externe, ou interagir avec des serveurs MCP.

Les types d’outils disponibles

Le Voice Agent supporte cinq categories d’outils :

Recherche web

{ "type": "web_search" }

L’agent peut interroger le web en temps reel pour obtenir des informations actualisees. Utile pour les questions factuelles, les actualites ou les donnees changeantes.

Recherche sur X

{
  "type": "x_search",
  "allowed_x_handles": ["@corsen_ai"]
}

Permet de chercher des publications sur la plateforme X. Le parametre allowed_x_handles restreint optionnellement la recherche a certains comptes.

Recherche de fichiers (Collections)

{
  "type": "file_search",
  "vector_store_ids": ["vs_abc123"],
  "max_num_results": 10
}

Interroge des collections de documents vectorises pour trouver des informations dans votre base documentaire.

Fonctions personnalisees

{
  "type": "function",
  "name": "verifier_commande",
  "description": "Verifie le statut d'une commande client",
  "parameters": {
    "type": "object",
    "properties": {
      "numero_commande": {
        "type": "string",
        "description": "Le numero de commande au format CMD-XXXX"
      }
    },
    "required": ["numero_commande"]
  }
}

Les fonctions personnalisees vous permettent de connecter l’agent a n’importe quel systeme : CRM, ERP, calendrier, base de donnees interne.

Serveurs MCP

{
  "type": "mcp",
  "server_url": "https://mcp.example.com/sse",
  "server_label": "Mon serveur MCP"
}

Le protocole MCP (Model Context Protocol) permet de connecter l’agent a des serveurs d’outils standardises.

Le cycle d’execution d’une fonction

Quand l’agent decide d’utiliser une fonction, le flux est le suivant :

  1. Le serveur envoie response.function_call_arguments.delta avec les arguments en streaming
  2. Une fois complet, response.function_call_arguments.done arrive avec le call_id et les arguments finaux
  3. Votre application execute la fonction avec ces arguments
  4. Vous renvoyez le resultat via conversation.item.create :
{
  "type": "conversation.item.create",
  "item": {
    "type": "function_call_output",
    "call_id": "call_abc123",
    "output": "{\"statut\": \"expediee\", \"date_livraison\": \"2026-04-05\"}"
  }
}
  1. Vous envoyez response.create pour que l’agent integre le resultat dans sa reponse vocale

Appels de fonctions paralleles

Le modele peut decider d’appeler plusieurs fonctions en meme temps. Dans ce cas :

  1. Vous recevez plusieurs function_call_arguments.done avec des call_id differents
  2. Executez toutes les fonctions (en parallele si possible)
  3. Soumettez tous les resultats avec autant de conversation.item.create
  4. Envoyez un seul response.create a la fin
// Recevoir et executer toutes les fonctions
const results = await Promise.all(
  pendingCalls.map(call => executeFunction(call))
);

// Soumettre tous les resultats
for (const result of results) {
  ws.send(JSON.stringify({
    type: "conversation.item.create",
    item: {
      type: "function_call_output",
      call_id: result.callId,
      output: JSON.stringify(result.data)
    }
  }));
}

// Declencher la reponse
ws.send(JSON.stringify({ type: "response.create" }));

Bonnes pratiques pour les outils vocaux

  • Timeout court : les utilisateurs n’attendent pas plus de 3 a 5 secondes en conversation vocale. Si votre fonction est lente, envoyez un message intermediaire
  • Resultats concis : renvoyez des donnees structurees mais pas trop volumineuses. L’agent doit les synthetiser vocalement
  • Descriptions claires : la description de chaque fonction aide le modele a decider quand l’utiliser. Soyez precis
  • Gestion des erreurs : renvoyez un message d’erreur clair dans output plutot que de ne rien renvoyer

Points cles a retenir

  • Le Voice Agent supporte cinq types d’outils : web search, X search, file search, fonctions et MCP
  • Le cycle d’un appel de fonction passe par la reception des arguments, l’execution, le renvoi du resultat et le declenchement de la reponse
  • Les appels paralleles sont possibles : executez tout, soumettez tout, puis un seul response.create
  • En vocal, le temps de reponse des fonctions est critique : visez moins de 3 secondes