VIP Le Club IA VIP
REJOINDRE LE CLUB
← RETOUR À L'AGENT

GUIDE · LE CLUB IA VIP

Construire un agent vocal utile

Exemple fil rouge : un agent qui répond au téléphone d'un restaurant. Modèle utilisé : grok-voice-think-fast-1.0.

1. Comment ça marche, en 30 secondes

2. Les 4 fichiers à connaître

FichierRôleEdit
web/config/system_prompt.txtPersonnalité, mission, règles.Souvent
web/config/tools.jsonOutils que l'agent peut appeler.Oui
web/static/voice.jsImplémentations des function tools côté navigateur.Si tu ajoutes un tool
web/server.pyMint du token éphémère, sert /config, endpoints API.Rarement
Pas besoin de redémarrer le serveur pour changer le prompt ou les outils — /config relit le disque à chaque session. Recharge juste la page et clique Start.

3. Écrire un bon system prompt

Le prompt système conditionne tout. Pour un agent qui marche bien :

4. Les outils — le cœur d'un vrai agent

Un agent qui ne peut que parler n'est pas un agent — c'est un chatbot. Quatre familles d'outils :

4.1 function — tools maison

Tu déclares un nom + un schéma JSON. Quand le modèle appelle la fonction, il émet response.function_call_arguments.done. Ton code l'exécute et renvoie le résultat.

// tools.json
{
  "type": "function",
  "name": "book_reservation",
  "description": "Book a table. Call after oral confirmation.",
  "parameters": {
    "type": "object",
    "properties": {
      "name":      { "type": "string" },
      "phone":     { "type": "string" },
      "date":      { "type": "string", "description": "YYYY-MM-DD" },
      "time":      { "type": "string", "description": "HH:MM" },
      "party_size":{ "type": "integer" }
    },
    "required": ["name","phone","date","time","party_size"]
  }
}

4.2 web_search — recherche web (zéro code)

xAI exécute la recherche, pas toi.

{ "type": "web_search" }

4.3 x_search — recherche sur X / Twitter

{ "type": "x_search", "allowed_x_handles": ["votre_resto"] }

4.4 file_search — RAG sur tes documents

Upload ton menu via la Collections API, récupère un collection_id, puis :

{
  "type": "file_search",
  "vector_store_ids": ["ton-collection-id"],
  "max_num_results": 8
}

4.5 mcp — serveurs externes

Si tu as un serveur MCP (Stripe, Notion, ton CRM) :

{
  "type": "mcp",
  "server_url": "https://mcp.example.com/mcp",
  "server_label": "crm",
  "authorization": "Bearer ton-token"
}

4.6 Google Calendar — fait dans ce projet

Pas de MCP Google Calendar officiel. Pour un test perso, l'API directe est plus simple. On utilise un function tool qui POST vers /api/calendar/book ; le serveur FastAPI utilise l'API Google Calendar via OAuth Desktop, refresh-token sur disque.

Setup en 5 étapes :

  1. console.cloud.google.com → projet → active Google Calendar API.
  2. APIs & Services → Credentials → Create Credentials → OAuth client IDDesktop app.
  3. Sauve le JSON sous web/config/google_oauth_client.json.
  4. Lance python setup_google.py — un navigateur s'ouvre, tu autorises, le token est sauvé.
  5. Recharge l'app, clique Start, dis : "I'd like to book a table for 4 tomorrow at 7 PM, name Eric, phone…"
Sécurité : google_token.json et google_oauth_client.json sont dans .gitignore. Pour la prod multi-utilisateurs, utilise un service account (Workspace) ou OAuth complet par utilisateur.

5. Recette : agent restaurant complet

  1. Identité & mission dans system_prompt.txt.
  2. Réservationsbook_reservation → Google Calendar / Resy / DB.
  3. Annulation / modifcancel_reservation, find_reservation_by_phone.
  4. Menu & allergènes — menu PDF via Collections API → file_search.
  5. Horaires — outil simple get_hours(date?).
  6. Spéciaux du jourweb_search sur ton site/Insta.
  7. Escalade humainerequest_callback(phone, reason) qui SMS un manager (Twilio).
  8. Bonussend_confirmation_sms, collect_feedback.

6. Connecter à un vrai téléphone (Twilio)

7. 24/7 dans le cloud

8. Astuces

9. Debug

10. Ressources

← RETOUR À L'AGENT