Aller au contenu principal

enterprise_ai.tools

Source : sdks/python/src/enterprise_ai/tools/__init__.py. Retour à l'index de la référence du SDK Python.

remarque

Cette page est générée par tools/docs/gen_sdk_reference.py depuis les sources du SDK et les dossiers de textes OpenAPI. Ne la modifiez pas à la main : changez la source et régénérez.

Classe LocalTool​

Une fonction Python exposée comme outil, avec son manifeste et sa définition d'outil OpenAI.

Attributs :

NomTypeRequisDescription
actionouiType d'action de l'outil, par exemple read.
data_classificationouiClassification la plus haute des données traitées par l'outil.
descriptionouiDescription montrée au modèle.
fnouiFonction Python enveloppée.
idempotentouiRépéter un appel n'a pas d'effet supplémentaire.
input_schemaouiSchéma JSON des arguments, construit à partir des annotations de type et des lignes :param de la docstring.
is_asyncouiVrai quand la fonction enveloppée est une fonction coroutine.
nameouiNom de l'outil utilisé dans les appels d'outils et dans le manifeste.
ownerouiPropriétaire inscrit dans les métadonnées du manifeste.
requires_approvalouiChaque appel demande une approbation humaine.
risk_levelouiNiveau de risque inscrit dans le manifeste.
scopesouiScopes requis pour invoquer l'outil.
side_effectsouiL'outil modifie quelque chose en dehors de l'agent.
versionouiVersion inscrite dans les métadonnées du manifeste.

Constructeur LocalTool​

LocalTool(fn: Callable[..., Any], name: str | None = None, description: str | None = None, action: str = 'read', scopes: list[str] | None = None, data_classification: str = 'internal', requires_approval: bool = False, side_effects: bool | None = None, idempotent: bool | None = None, version: str = '0.1.0', owner: str = 'team@example.com', risk_level: str = 'minimal') -> None

Enveloppe une fonction comme outil ; le schéma d'entrée vient de ses annotations de type et la description de sa docstring.

NomTypeDéfautRequisDescription
fnCallable[..., Any]ouiFonction Python à exposer ; appelée avec les arguments décodés.
namestr | NoneNonenonNom de l'outil ; par défaut, le nom de la fonction au format DNS (search_orders donne search-orders).
descriptionstr | NoneNonenonDescription montrée au modèle ; par défaut, le premier paragraphe de la docstring, sinon le nom.
actionstr'read'nonType d'action de l'outil (read par défaut) ; il fixe les valeurs par défaut de side_effects et idempotent.
scopeslist[str] | NoneNonenonScopes requis pour invoquer l'outil, inscrits dans scopes_required.
data_classificationstr'internal'nonClassification la plus haute des données traitées par l'outil (internal par défaut).
requires_approvalboolFalsenonChaque appel demande une approbation humaine (False par défaut).
side_effectsbool | NoneNonenonL'outil modifie quelque chose ; par défaut True pour toute action autre que read.
idempotentbool | NoneNonenonRépéter un appel n'a pas d'effet supplémentaire ; par défaut True seulement pour les outils read.
versionstr'0.1.0'nonVersion inscrite dans les métadonnées du manifeste (0.1.0 par défaut).
ownerstr'team@example.com'nonPropriétaire inscrit dans les métadonnées du manifeste (team@example.com par défaut).
risk_levelstr'minimal'nonNiveau de risque inscrit dans le manifeste (minimal par défaut).

LocalTool.invoke​

invoke(arguments: dict[str, Any] | str) -> Any

Appelle la fonction avec des arguments JSON (chaîne ou dict), tels que produits par un appel d'outil du modèle.

NomTypeDéfautRequisDescription
argumentsdict[str, Any] | strouiArguments sous forme de dict ou de chaîne JSON ; vide signifie aucun argument.

Retour : Any. Valeur renvoyée par la fonction (une coroutine pour une fonction asynchrone).

LocalTool.manifest​

manifest(endpoint: dict[str, Any] | None = None, **metadata: Any) -> dict[str, Any]

Un Tool Manifest (kind: Tool) pour cette fonction.

NomTypeDéfautRequisDescription
endpointdict[str, Any] | NoneNonenonPoint d'accès de l'outil ; par défaut, un POST /tools/<nom> HTTP local avec un délai de 30 secondes.
**metadataAnynonChamps supplémentaires fusionnés dans metadata (après name, version, owner).

Retour : dict[str, Any]. Dict de Tool Manifest (apiVersion enterprise-ai.io/v1) avec le schéma, les scopes, la classification et les réglages d'approbation.

LocalTool.openai_tool​

openai_tool() -> dict[str, Any]

L'entrée tools d'une requête de chat compatible OpenAI.

Cet élément ne prend aucun paramètre.

Retour : dict[str, Any]. Dict {type: function, function: {name, description, parameters}}.

Classe ToolsClient​

/v1/tools : registre et Tool Gateway (scopes, politique, DLP, approbation, coût).

Resource

ToolsClient.create​

create(manifest: dict[str, Any]) -> Any

Enregistrer un outil. Applique un manifeste Tool : crée ou met à jour l'outil (apply_status : created, updated ou unchanged). Contrôles : schémas JSON d'entrée et de sortie valides, un point d'accès http demande une URL http(s) permise par la politique de sortie réseau, un point d'accès mcp demande mcp_server, un gestionnaire builtin doit être echo ou time.now, le niveau de risque unacceptable est refusé (422 invalid_manifest). Demande tenant_admin, developer ou application_owner ; l'appelant devient propriétaire ReBAC. Audité sous tool.apply.

Route : /v1/tools (POST).

NomTypeDéfautRequisDescription
manifestdict[str, Any]ouiTool Manifest envoyé comme corps de la requête.

Retour : Any. Réponse JSON décodée de l'opération « Enregistrer un outil ».

Erreurs levées : les erreurs typées du transport (Erreurs).

ToolsClient.delete​

delete(name: str) -> Any

Supprimer un outil. Retire l'outil du registre. Demande tenant_admin et la relation ReBAC owner. 404 tool_not_found. Audité sous tool.delete.

Route : /v1/tools/{name} (DELETE).

NomTypeDéfautRequisDescription
namestrouiNom de l'outil.

Retour : Any. Réponse JSON décodée de l'opération « Supprimer un outil ».

Erreurs levées : les erreurs typées du transport (Erreurs).

ToolsClient.discover​

discover(status: str | None = 'approved', **page: Any) -> Any

Lister les outils. Outils du tenant dans l'ordre des noms, éventuellement d'un seul statut. Une seule page.

Route : /v1/tools (GET).

NomTypeDéfautRequisDescription
statusstr | None'approved'nonSeulement ce statut : draft, approved, restricted, deprecated ou blocked.
**pageAnynonOptions de pagination : limit (nombre maximal d'outils par page) et cursor (curseur de la page à lire).

Retour : Any. Réponse JSON décodée de l'opération « Lister les outils ».

Erreurs levées : les erreurs typées du transport (Erreurs).

ToolsClient.get​

get(name: str) -> Any

Lire un outil. Renvoie l'outil avec son manifeste, son niveau de risque, son propriétaire et son statut. Demande la relation ReBAC viewer. 404 tool_not_found.

Route : /v1/tools/{name} (GET).

NomTypeDéfautRequisDescription
namestrouiNom de l'outil.

Retour : Any. Réponse JSON décodée de l'opération « Lire un outil ».

Erreurs levées : les erreurs typées du transport (Erreurs).

ToolsClient.invocations​

invocations(tool: str | None = None, run_id: str | None = None, **page: Any) -> Any

Lister les invocations d'outils. Invocations enregistrées par la Tool Gateway, de la plus récente à la plus ancienne, paginées avec cursor : outil et version, acteur, run, agent, statut, décision, approbation, arguments et résultat expurgés, détections DLP, statut HTTP, erreur et durée. Les arguments et résultats ne sont conservés qu'expurgés.

Route : /v1/tools/invocations (GET).

NomTypeDéfautRequisDescription
toolstr | NoneNonenonSeulement les invocations de cet outil.
run_idstr | NoneNonenonSeulement les invocations faites par ce run.
**pageAnynonOptions de pagination : limit (nombre maximal d'invocations par page) et cursor (curseur de la page à lire).

Retour : Any. Réponse JSON décodée de l'opération « Lister les invocations d'outils ».

Erreurs levées : les erreurs typées du transport (Erreurs).

ToolsClient.invoke​

invoke(name: str, arguments: dict[str, Any], run_id: str | None = None, idempotency_key: str | None = None, **extra: Any) -> Any

Invoquer un outil via la passerelle. Exécute la chaîne de la passerelle décrite dans l'introduction du tag et renvoie l'invocation : status, result masqué, error, duration_ms, decision_id, détections DLP, événement d'usage et coût. Demande tenant_admin, developer ou agent et la relation ReBAC can_invoke. Réponses : 200 une fois exécuté (aussi quand l'amont a échoué, voir status et error) ; 202 pending_approval avec approval_id quand une validation humaine est requise (rappelez avec l'approval_id approuvé et les mêmes arguments) ; 202 pour un outil sandbox, avec l'identifiant de l'exécution en sandbox. Erreurs : 403 tool_blocked, insufficient_scope, tool_not_granted, classification_exceeded, policy_denied, dlp_blocked ; 422 invalid_arguments ; 409 approval_consumed (une approbation sert un seul appel réussi) ; 429 rate_limited avec Retry-After: 60 ou quota_exceeded.

Route : /v1/tools/{name}/invoke (POST).

NomTypeDéfautRequisDescription
namestrouiNom de l'outil.
argumentsdict[str, Any]ouiArguments, validés selon le input_schema de l'outil. Envoyés en corps JSON (chaîne de requête pour les points d'accès GET et DELETE).
run_idstr | NoneNonenonRun auquel appartient l'appel ; envoyé à un point d'accès HTTP en X-EAI-Run-Id et utilisé pour le comptage.
idempotency_keystr | NoneNonenonEn-tête Idempotency-Key : une reprise avec la même clé rejoue la première réponse.
**extraAnynonChamps supplémentaires fusionnés dans le corps de la requête.

Retour : Any. Réponse JSON décodée de l'opération « Invoquer un outil via la passerelle ».

Erreurs levées : les erreurs typées du transport (Erreurs).

ToolsClient.list​

list(**page: Any) -> Any

Lister les outils. Outils du tenant dans l'ordre des noms, éventuellement d'un seul statut. Une seule page.

Route : /v1/tools (GET).

NomTypeDéfautRequisDescription
**pageAnynonOptions de pagination : limit (nombre maximal d'outils par page) et cursor (curseur de la page à lire).

Retour : Any. Réponse JSON décodée de l'opération « Lister les outils ».

Erreurs levées : les erreurs typées du transport (Erreurs).

ToolsClient.register​

register(local: LocalTool, endpoint: dict[str, Any] | None = None) -> Any

Enregistrer un outil. Applique un manifeste Tool : crée ou met à jour l'outil (apply_status : created, updated ou unchanged). Contrôles : schémas JSON d'entrée et de sortie valides, un point d'accès http demande une URL http(s) permise par la politique de sortie réseau, un point d'accès mcp demande mcp_server, un gestionnaire builtin doit être echo ou time.now, le niveau de risque unacceptable est refusé (422 invalid_manifest). Demande tenant_admin, developer ou application_owner ; l'appelant devient propriétaire ReBAC. Audité sous tool.apply.

Route : /v1/tools (POST).

NomTypeDéfautRequisDescription
localLocalToolouiFonction décorée dont le manifeste est enregistré.
endpointdict[str, Any] | NoneNonenonPoint d'accès inscrit dans le manifeste ; le point d'accès local par défaut de LocalTool.manifest s'il est omis.

Retour : Any. Réponse JSON décodée de l'opération « Enregistrer un outil ».

Erreurs levées : les erreurs typées du transport (Erreurs).

ToolsClient.update​

update(name: str, **changes: Any) -> Any

Modifier un outil. Modifie le propriétaire, la description ou le statut. Un changement de statut demande tenant_admin ou security_officer, les autres champs tenant_admin, developer ou application_owner ; la relation ReBAC editor est vérifiée. approved passe par une promotion (202 avec approval_id) ; les autres statuts s'appliquent aussitôt (200). Audité sous tool.update.

Route : /v1/tools/{name} (PATCH).

NomTypeDéfautRequisDescription
namestrouiNom de l'outil.
**changesAnynonChamps de l'outil à modifier, envoyés comme corps du PATCH.

Retour : Any. Réponse JSON décodée de l'opération « Modifier un outil ».

Erreurs levées : les erreurs typées du transport (Erreurs).

ToolsClient.validate​

validate(manifest: dict[str, Any]) -> Any

Valider un document avec un contrat. Valide le corps avec le contrat, formats compris, sans rien enregistrer. La réponse donne contract, valid et errors, chacune avec le path JSON de la valeur fautive et un message. Ouvert à tout appelant authentifié. Un contrat inconnu répond 404 unknown_contract.

Route : /v1/contracts/{name}/validate (POST).

NomTypeDéfautRequisDescription
manifestdict[str, Any]ouiTool Manifest à valider sur le serveur.

Retour : Any. Réponse JSON décodée de l'opération « Valider un document avec un contrat ».

Erreurs levées : les erreurs typées du transport (Erreurs).

Fonctions​

schema_for​

schema_for(annotation: Any) -> dict[str, Any]

Schéma JSON pour une annotation de type Python (types natifs, Optional, Literal, Enum, list, dict, dataclass, pydantic).

NomTypeDéfautRequisDescription
annotationAnyouiAnnotation de type Python à convertir.

Retour : dict[str, Any]. Dict de schéma JSON ; vide pour Any, une annotation absente ou un type inconnu.

input_schema​

input_schema(fn: Callable[..., Any]) -> dict[str, Any]

Schéma objet des paramètres de fn (self, *args et **kwargs ignorés).

NomTypeDéfautRequisDescription
fnCallable[..., Any]ouiFonction dont la signature, les annotations de type et les lignes :param de la docstring sont lues.

Retour : dict[str, Any]. Schéma JSON {type: object, properties, required} sans propriétés supplémentaires ; les valeurs par défaut simples sont recopiées dans default.

tool_name​

tool_name(fn: Callable[..., Any]) -> str

Nom d'outil au format DNS tiré du nom d'une fonction (search_orders -> search-orders).

NomTypeDéfautRequisDescription
fnCallable[..., Any]ouiFonction dont le __name__ est converti.

Retour : str. Nom en minuscules avec - à la place de _ et de tout caractère autre que lettres, chiffres, . et - ; tool s'il est vide.

tool​

tool(fn: Callable[..., Any] | None = None, **options: Any) -> Any

Décorateur qui transforme une fonction en :class:LocalTool (utilisable avec ou sans arguments).

NomTypeDéfautRequisDescription
fnCallable[..., Any] | NoneNonenonFonction à envelopper ; si elle est omise, l'appel renvoie un décorateur qui applique les options données.
**optionsAnynonOptions de l'appel (clé d'idempotence, traceparent, en-têtes, signal d'annulation).

Retour : Any. Un LocalTool quand fn est fourni, sinon un décorateur qui en renvoie un.