
# Actions IA

La famille `ai` exécute des opérations de modèle de langage comme étapes d'automatisation. Quatre operators couvrent la génération libre, la classification, l'extraction structurée et l'exécution d'agents autonomes. Le fournisseur et le modèle sont explicites par action ; les informations d'identification proviennent d'une [connexion](/fr/docs/automation-connections) stockée. Pour les points de terminaison auto-hébergés ou personnalisés (par ex. Ollama), l'URL de base se configure une seule fois via la variable d'environnement `AI_BASE_URL`, et non par action.

| Operator   | Objectif                                                                                   |
| ---------- | ------------------------------------------------------------------------------------------ |
| `generate` | Produit du texte libre (ou du JSON) à partir d'un prompt.                                  |
| `classify` | Affecte une entrée à l'une d'un ensemble fixe de catégories.                               |
| `extract`  | Extrait des données structurées correspondant à un schéma à partir de texte non structuré. |
| `agent`    | Invoque un agent autonome configuré pour effectuer une tâche multi-étapes.                 |

**Props de fournisseur partagées :** `provider` vaut `openai` / `anthropic` / `ollama` / `custom` ; `model` est l'identifiant du modèle ; `connection` référence des informations d'identification stockées. Les points de terminaison auto-hébergés (par ex. Ollama) sont ciblés via la variable d'environnement `AI_BASE_URL`.

## generate

| Prop             | Description                                                      |
| ---------------- | ---------------------------------------------------------------- |
| `provider`       | `openai` / `anthropic` / `ollama` / `custom`. **Requis.**        |
| `model`          | Identifiant du modèle. **Requis.**                               |
| `prompt`         | Le prompt utilisateur (templatable). **Requis.**                 |
| `systemPrompt`   | Prompt système optionnel.                                        |
| `temperature`    | Température d'échantillonnage.                                   |
| `maxTokens`      | Nombre maximal de tokens à générer.                              |
| `responseFormat` | `text` (par défaut) ou `json`.                                   |
| `connection`     | Connexion stockée fournissant les informations d'identification. |

```yaml
- name: draftReply
  type: ai
  operator: generate
  props:
    provider: anthropic
    model: claude-sonnet
    systemPrompt: 'You are a concise support agent.'
    prompt: 'Draft a reply to: {{trigger.comment.body}}'
    responseFormat: text
    connection: anthropic-key
```

## classify

| Prop            | Description                                               |
| --------------- | --------------------------------------------------------- |
| `input`         | Texte à classer (templatable). **Requis.**                |
| `categories`    | Tableau de libellés de catégories candidates. **Requis.** |
| _(fournisseur)_ | `provider`, `model`, `connection?`                        |

```yaml
- name: triage
  type: ai
  operator: classify
  props:
    provider: openai
    model: gpt-4o-mini
    input: '{{trigger.data.message}}'
    categories: [bug, billing, feature-request, spam]
    connection: openai-key
```

## extract

| Prop            | Description                                                             |
| --------------- | ----------------------------------------------------------------------- |
| `input`         | Texte non structuré à partir duquel extraire (templatable). **Requis.** |
| `schema`        | JSON Schema décrivant la forme de sortie souhaitée. **Requis.**         |
| _(fournisseur)_ | `provider`, `model`, `connection?`                                      |

```yaml
- name: parseInvoice
  type: ai
  operator: extract
  props:
    provider: openai
    model: gpt-4o
    input: '{{extractText.result}}'
    schema:
      total: { type: number }
      due_date: { type: string }
      vendor: { type: string }
    connection: openai-key
```

## agent

Invoque un agent autonome configuré dans les agents IA de l'application. L'agent planifie et exécute plusieurs étapes avec ses outils délimités.

| Prop             | Description                                                      |
| ---------------- | ---------------------------------------------------------------- |
| `agent`          | Nom d'un agent configuré. **Requis.**                            |
| `task`           | L'instruction de tâche (templatable). **Requis.**                |
| `context`        | Contexte clé-valeur transmis à l'agent.                          |
| `maxSteps`       | Plafond sur les étapes de raisonnement/d'outil de l'agent.       |
| `responseFormat` | `text` (par défaut) ou `json`.                                   |
| `timeout`        | Timeout par invocation en ms.                                    |
| `connection`     | Connexion stockée fournissant les informations d'identification. |

```yaml
- name: resolve
  type: ai
  operator: agent
  props:
    agent: support-resolver
    task: 'Resolve ticket {{trigger.data.id}} using the knowledge base.'
    context: { customerTier: '{{trigger.data.tier}}' }
    maxSteps: 8
    responseFormat: json
```

:::callout
**Routage de fournisseur éco-responsable.** Les appels IA passent par le résolveur de précédence de fournisseurs régi par `ECO_AI_PROVIDER_PRECEDENCE` (par défaut `local-first`) — ne codez jamais en dur un fournisseur cloud unique lorsqu'un modèle local peut servir la requête. Voir [Vue d'ensemble de l'IA](/fr/docs/ai-overview).
:::

## Pages connexes

- [Vue d'ensemble de l'IA](/fr/docs/ai-overview) — fournisseurs, modèles et routage éco.
- [Agents IA](/fr/docs/ai-agents) — configuration des agents autonomes invoqués par `ai/agent`.
- [Connexions](/fr/docs/automation-connections) — informations d'identification pour les fournisseurs IA.
- [Approbation et délai](/fr/docs/automation-approval-delay) — filtres humains autour de la sortie IA.
