Appel d'outil programmatique GPT-6 Astra : Quand et pourquoi l'utiliser
Apprenez quand GPT-6 Astra doit appeler des outils dans les programmes générés, comment fonctionnent allowed_callers et output_schema, et comment contrôler les coûts, la sécurité et les approbations.

L'appel de fonction traditionnel met le modèle en pause, renvoie une demande d'outil à l'application, attend un résultat, puis reprend. Cette boucle est claire et contrôlable, mais elle devient inefficace lorsqu'une tâche nécessite de nombreux appels dépendants, un filtrage local ou une agrégation. L'appel d'outil programmatique (PTC) de GPT-6 Astra permet au modèle d'écrire un programme qui invoque les outils éligibles dans un seul flux d'exécution.
Quoi de neuf
Activez l'outil hébergé programmatic_tool_calling, puis marquez les outils éligibles avec allowed_callers.
const outils = [ { type: "programmatic_tool_calling" } { type: "function", name: "obtenir_ventes", description : "Retourner les enregistrements de ventes pour une région et un mois.", allowed_callers: ["programmatique"], strict: true, paramètres : { type: "objet", propriétés : { region: { type: "string" }, mois : { type : "string" } }, requis : ["région", "mois"], additionalProperties: false } } ];
Si `allowed_callers` est omis ou défini sur `["direct"]`, l'outil est directement appelable. `["programmatique"]` le restreint au code généré, tandis que `["direct", "programmatique"]` permet les deux. Il s'agit d'un contrôle de politique d'exécution, donc examinez-le comme des autorisations plutôt que comme un libellé d'invite.
PTC prend en charge les classes d'outils documentées, notamment les fonctions et les outils personnalisés, MCP, l'application de correctifs, le shell local ou hébergé, et l'interpréteur de code. Le support ne signifie pas que tous les outils doivent être exposés.
## Quand le PTC est le meilleur modèle
Utilisez-le lorsque le modèle doit :
- récupérer de nombreux enregistrements indépendants et les agréger ;
- appeler un outil en fonction d'un résultat précédent ;
- filtrer un grand résultat avant de le renvoyer au contexte de raisonnement ;
- comparer les sorties structurées entre sources ;
- exécuter une boucle de traitement de données limitée.
Par exemple, une analyse trimestrielle peut nécessiter douze appels région-mois suivis de totaux et de détection d'anomalies. Un programme peut effectuer les appels et renvoyer un résumé compact au lieu de forcer douze allers-retours de modèle.
Préférez l'appel direct de fonction pour une ou deux opérations simples, des écritures à haut risque, des workflows nécessitant une décision explicite de l'application entre chaque étape, ou des tâches dont le graphe doit être déterministe. Le PTC n'est pas automatiquement moins cher : un programme mal borné peut effectuer trop d'appels.
## Les sorties structurées améliorent les programmes
Pour les fonctions prévisibles, définissez un `output_schema`. Le `function_call_output.output` réel reste une chaîne JSON, mais le schéma donne au code généré une forme fiable. Les types stables réduisent l'analyse défensive et les hypothèses accidentelles.
Retournez des données compactes telles que des identifiants, des métriques typées et des objets d'erreur explicites. Évitez la prose là où le code a besoin de chiffres. Rendez la pagination, le nombre maximal de lignes et la troncature visibles dans le résultat afin que le programme ne puisse pas confondre un ensemble de données partiel avec la population totale.
## Recherche d'outils et chargement différé
La recherche d'outils reste une capacité de premier niveau. Le guide officiel avertit que les outils différés doivent être chargés avant le démarrage du programme, car un programme en cours d'exécution ne peut pas invoquer la recherche d'outils. Planifiez d'abord la découverte, puis l'exécution. Si le catalogue est dynamique, laissez le modèle charger le petit sous-ensemble requis et seulement ensuite commencer le PTC.
## Contrôles de sécurité
Limite chaque programme par le temps d'exécution, le nombre d'appels, les octets de sortie, les destinations réseau et le coût. Restreignez les outils au privilège minimum et conservez les secrets dans l'environnement d'exécution plutôt que dans le code généré.
L'approbation MCP peut mettre un programme en pause. Préservez l'état du programme tout en présentant un aperçu d'approbation pertinent. Pour les écritures, utilisez des clés d'idempotence et une autorisation côté serveur. Le code généré n'est pas fiable, même lorsque le modèle l'a écrit à partir d'instructions fiables.
Enregistrez le hachage du programme ou le code source expurgé, la séquence d'outils, les arguments nettoyés, les approbations, les résultats, l'utilisation des jetons et la durée. Évitez de stocker des identifiants ou des données sensibles brutes.
## Un cadre de décision pour la production
Posez quatre questions :
1. Y a-t-il suffisamment d'appels ou de dépendances pour justifier un programme embarqué ?
2. Chaque outil peut-il être délimité et typé en toute sécurité ?
3. L'application est-elle à l'aise pour déléguer le contrôle intermédiaire ?
4. Le workflow peut-il reprendre après une approbation ou un échec partiel ?
Si une réponse est non, conservez l'orchestration dans le code de l'application. Un code déterministe que vous possédez est souvent le bon choix pour les pipelines fixes.
## Expérience de coût et de justesse
Évaluez PTC par rapport à une boucle conventionnelle en utilisant des tâches identiques. Incluez un petit cas à un seul appel, un cas dépendant à cinq appels et un cas d'agrégation volumineux. Mesurez le nombre total de jetons, les appels d'outils, le temps écoulé, le taux d'échec et l'exactitude du résultat calculé. Une réponse plus rapide qui supprime silencieusement des enregistrements paginés n'est pas une amélioration.
Forcer les échecs partiels : une région expire, un résultat viole son schéma de sortie, une opération MCP demande une approbation et un jeu de données est vide. Le programme généré doit préserver les entrées qui ont réussi, éviter de traiter l'absence comme zéro et renvoyer suffisamment de détails pour que le modèle explique les limitations.
Placez des limites strictes en dessous des limites d'infrastructure afin que le programme échoue de manière prévisible. Un résultat clair `CALL_BUDGET_EXCEEDED` est plus facile à gérer qu'un arrêt du conteneur. Pour les charges de travail analytiques, recalculez indépendamment un échantillon des résultats dans un code déterministe. Pour tout résultat financier ou de conformité, privilégiez des calculs vérifiés plutôt que de vous fier aveuglément à une agrégation générée.
Cette expérience révèle souvent une conception mixte : PTC pour l'exploration à forte lecture et du code appartenant à l'application pour les écritures finales ou les calculs réglementés. L'orchestration hybride est une force, et non un échec à utiliser la fonctionnalité la plus récente partout.
## FAQ
### Est-ce que PTC est la même chose que multi-agent ?
Non. PTC exécute un programme d'appel d'outils. Le multi-agent délègue un travail limité à des sous-agents avec leurs propres contextes.
### PTC peut-elle appeler un outil MCP nécessitant une approbation ?
Oui. L'approbation peut mettre le programme en pause. Votre application doit préserver l'état et continuer en toute sécurité.
### Est-ce que PTC supprime les schémas de fonctions ?
Non. Les contrats d'entrée et de sortie forts deviennent encore plus importants car le code généré les consomme.
### Chaque outil devrait-il permettre les deux modes d'appel ?
Non. Autorisez uniquement les modes requis par le flux de travail, en particulier pour les outils sensibles.
## Conclusion
L'appel d'outils programmatique est précieux lorsque l'orchestration des outils elle-même constitue le goulot d'étranglement : de nombreux appels, des dépendances, du filtrage et de l'agrégation. Utilisez-le de manière sélective, chargez les outils différés avant l'exécution, définissez des sorties structurées et imposez des limites strictes en matière de ressources et d'autorisations. Pour les flux de travail courts ou à haut risque, une boucle conventionnelle contrôlée par l'application reste plus facile à auditer.




























































































