> ## Documentation Index
> Fetch the complete documentation index at: https://phaseo.app/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Prendre une décision

> Évaluez des questions typées à partir de l’état de l’application avec les modèles de décision pris en charge.

Utilisez `POST /v1/decisions` lorsque votre application a besoin de réponses structurées directement exploitables par le code. Les modèles pris en charge incluent TypeSafe Jev 1.13 (`typesafe/jev-1.13.0`), Together Tev1 4B Experimental (`together/tev1-4b-experimental`) et Respan Span-01 (`respan/span-01:free` et `respan/span-01`).

La requête contient :

* `state` : une chaîne, un objet ou un tableau contenant les informations à évaluer.
* `questions` : un dictionnaire de questions nommées. Chaque question définit `type` sur `noul`, `choice` ou `score` et inclut `instructions` ; les types pris en charge dépendent du modèle sélectionné.
* `model` : l’identifiant du modèle Phaseo. Utilisez `typesafe/jev-1.13.0` pour Jev 1.13 ou `typesafe/jev-latest` pour suivre la dernière version de Jev.

Liquid D1 (`liquid-ai/d1:free`, également disponible sous `liquid-ai/d1`) et Perplexity Decider 27B (`perplexity/decider-27b`) prennent en charge les trois types de questions. D1 est gratuit pendant l’accès anticipé expérimental. Decider coûte 0,04 USD par million de tokens d’entrée, y compris les tokens d’image ; les tokens de sortie sont gratuits. Ajoutez un identifiant de fournisseur Perplexity dans Phaseo pour utiliser Decider. Son état contenant des images utilise des URL de données base64 PNG, JPEG ou WebP ; les URL d’images distantes ne sont pas prises en charge. Chaque question de choix accepte jusqu’à 255 options, et chaque question de score jusqu’à 10 niveaux. Vérifiez la disponibilité avant d’appeler l’un ou l’autre modèle.

Pour Respan Span-01, `state` doit être un segment de conversation avec un tableau `input` de messages précédents et un message d’assistant `output`. Span-01 ne prend en charge que les questions `noul`. La réponse `noul` est la probabilité que le comportement soit présent ; `probabilities` inclut aussi les probabilités d’absence et de non-observabilité.

```json theme={null}
{
  "model": "respan/span-01:free",
  "state": {
    "input": [{ "role": "user", "content": "Please connect me to a person." }],
    "output": { "role": "assistant", "content": "I will connect you to support." }
  },
  "questions": {
    "escalation": {
      "type": "noul",
      "instructions": "Does the assistant offer a human handoff?"
    }
  }
}
```

`respan/span-01:free` est le modèle Lite gratuit avec une limite quotidienne ; Phaseo le fait correspondre à l’identifiant de modèle API `span-01-free` de Respan. `respan/span-01` correspond à `span-01-pro` et est facturé par Respan à 0,02 USD par million de tokens d’entrée ; les tokens de sortie sont gratuits. Span-01 est en accès anticipé : Respan doit donc activer l’accès pour votre organisation. Ajoutez votre clé API Respan comme identifiant de fournisseur Respan dans Phaseo avant d’appeler ces modèles.

Les réponses utilisent les mêmes clés que `questions`. Les réponses `choice` incluent l’option sélectionnée, les probabilités et la confiance ; les réponses `noul` incluent une probabilité entre 0 et 1 ; les réponses `score` incluent un score pondéré par les probabilités, une légende, les probabilités et la confiance.

Pour l’exemple Respan, une réponse ressemble à ceci :

```json theme={null}
{
  "answers": {
    "escalation": {
      "type": "noul",
      "noul": 0.73,
      "probabilities": {
        "true": 0.73,
        "false": 0.25,
        "not_observable": 0.02
      }
    }
  }
}
```

Jev permet de mélanger les trois types de questions dans une requête ; Span-01 ne prend en charge que les questions `noul`. Consultez le [démarrage rapide](../../quickstart) pour des exemples cURL, JavaScript, SDK TypeScript et SDK Python prêts à copier-coller. Jev 1.13 est facturé à 0,042 USD par million de tokens d’entrée ; les tokens de sortie sont gratuits.

Pour la sémantique des questions du fournisseur, consultez la [référence API](https://docs.typesafe.ai/api) de TypeSafe.

### Décisions sur les images avec Clef

`cloudflare/clef` et `cloudflare/clef-flash` prennent en charge les trois types de questions et les images intégrées via Cloudflare Workers AI. Chacun dispose d’une fenêtre de contexte de 65 536 jetons. L’entrée coûte 0,24 USD par million de jetons pour Clef et 0,09 USD pour Clef Flash.

```json theme={null}
{
  "model": "cloudflare/clef-flash",
  "state": "Inspect the attached product photo.",
  "images": [{ "content_type": "image/png", "base64": "<base64 image bytes>" }],
  "questions": {
    "damaged": { "type": "noul", "instructions": "Is the product visibly damaged?" }
  }
}
```

Vous pouvez également fournir une chaîne `data:image/png;base64,...` dans `images`. Clef accepte jusqu’à quatre images PNG, JPEG ou WebP, chacune de 4 MiB et 16 mégapixels au maximum, avec au plus 8 MiB de données d’image décodées au total et un corps de requête de 13 MiB. Les URL distantes ne sont pas prises en charge. Cloudflare valide les formats et dimensions des images. Les modèles ne prenant pas en charge les images rejettent les requêtes contenant des images.

Clef accepte au maximum 64 questions, avec des identifiants de 100 lettres, chiffres, traits de soulignement, points ou tirets au maximum. Les questions de choix nécessitent 2 à 255 options ; les questions de score, 2 à 10 niveaux. Consultez la [documentation de Clef](https://developers.cloudflare.com/workers-ai/models/clef/) de Cloudflare.


## OpenAPI

````yaml fr/openapi/v1/openapi.localized.yaml POST /decisions
openapi: 3.0.3
info:
  title: Phaseo Gateway API
  description: >-
    Une API de passerelle pour accéder à divers modèles d’IA via des points de
    terminaison compatibles avec OpenAI.
  version: 1.0.0
  contact:
    name: Phaseo
    url: https://phaseo.app
    email: danielbutler500@gmail.com
servers:
  - url: https://api.phaseo.app/v1
    description: Routage mondial
security:
  - BearerAuth: []
tags:
  - name: Gateway
    description: Core Phaseo Gateway operations.
paths:
  /decisions:
    post:
      tags:
        - Gateway
      summary: Prendre des décisions structurées
      description: >-
        Évalue des questions typées Noul, Choice et Score à partir d’un état
        structuré avec un modèle de décision tel que TypeSafe Jev.
      operationId: makeDecision
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DecisionsRequest'
      responses:
        '200':
          description: Réponse de décisions structurées
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DecisionsResponse'
components:
  schemas:
    DecisionsRequest:
      type: object
      required:
        - model
        - state
        - questions
      properties:
        model:
          type: string
          description: >-
            Identifiant canonique du modèle Phaseo ou alias du modèle du
            fournisseur.
          default: typesafe/jev-1.13.0
        state:
          description: État structuré évalué par le modèle.
          oneOf:
            - type: string
            - type: object
              additionalProperties: true
            - type: array
              items: {}
        questions:
          type: object
          minProperties: 1
          maxProperties: 128
          additionalProperties:
            oneOf:
              - $ref: '#/components/schemas/DecisionNoulQuestion'
              - $ref: '#/components/schemas/DecisionChoiceQuestion'
              - $ref: '#/components/schemas/DecisionScoreQuestion'
        images:
          type: array
          maxItems: 4
          description: >-
            Images intégrées pour les modèles de décision prenant en charge la
            vision. Clef accepte PNG, JPEG ou WebP ; les URL distantes ne sont
            pas prises en charge. Maximum de 4 MiB et 16 mégapixels par image, 8
            MiB de données décodées au total et 13 MiB par corps de requête.
          items:
            oneOf:
              - type: string
                pattern: >-
                  ^[Dd][Aa][Tt][Aa]:image/(png|jpeg|webp);base64,[A-Za-z0-9+/]+={0,2}$
              - $ref: '#/components/schemas/DecisionImage'
        meta:
          type: boolean
          default: false
        echo_upstream_request:
          type: boolean
        debug:
          $ref: '#/components/schemas/DebugOptions'
        provider:
          $ref: '#/components/schemas/ProviderRoutingOptions'
        routing:
          $ref: '#/components/schemas/ProviderRoutingOptions'
        metadata:
          type: object
          additionalProperties: true
    DecisionsResponse:
      type: object
      properties:
        model:
          type: string
        answers:
          type: object
          additionalProperties: true
        usage:
          $ref: '#/components/schemas/DecisionsUsage'
        request_id:
          type: string
          nullable: true
        meta:
          type: object
          additionalProperties: true
    DecisionNoulQuestion:
      type: object
      required:
        - type
        - instructions
      properties:
        type:
          type: string
          enum:
            - noul
        instructions:
          $ref: '#/components/schemas/DecisionInstructions'
        criteria:
          type: object
          properties:
            'true':
              type: string
            'false':
              type: string
          additionalProperties: true
    DecisionChoiceQuestion:
      type: object
      required:
        - type
        - instructions
        - criteria
      properties:
        type:
          type: string
          enum:
            - choice
        instructions:
          $ref: '#/components/schemas/DecisionInstructions'
        criteria:
          type: object
          minProperties: 1
          additionalProperties:
            type: string
            nullable: true
    DecisionScoreQuestion:
      type: object
      required:
        - type
        - instructions
        - criteria
      properties:
        type:
          type: string
          enum:
            - score
        instructions:
          $ref: '#/components/schemas/DecisionInstructions'
        criteria:
          type: array
          minItems: 2
          items:
            type: string
    DecisionImage:
      type: object
      required:
        - content_type
        - base64
      properties:
        content_type:
          type: string
          enum:
            - image/png
            - image/jpeg
            - image/webp
        base64:
          type: string
          pattern: ^[A-Za-z0-9+/]+={0,2}$
    DebugOptions:
      type: object
      description: >-
        Options de débogage de la passerelle. Ces indicateurs ne sont jamais
        transmis au fournisseur.
      properties:
        enabled:
          type: boolean
        return_upstream_request:
          type: boolean
        return_upstream_response:
          type: boolean
        trace:
          type: boolean
        trace_level:
          type: string
          enum:
            - summary
            - full
    ProviderRoutingOptions:
      type: object
      description: >-
        Préférences de routage des fournisseurs pour la sélection par la
        passerelle.
      properties:
        order:
          type: array
          items:
            type: string
        only:
          type: array
          items:
            type: string
        ignore:
          type: array
          items:
            type: string
        include_alpha:
          type: boolean
          description: >-
            Inclure les fournisseurs alpha dans le routage (désactivé par
            défaut).
        allow_fallbacks:
          type: boolean
          nullable: true
          description: >-
            Autoriser le repli vers un autre fournisseur éligible après un
            échec.
        require_parameters:
          type: boolean
          nullable: true
          description: >-
            Exiger la prise en charge des paramètres demandés par le fournisseur
            avant le routage.
        required_execution_region:
          type: string
          nullable: true
          description: >-
            Limiter le routage aux fournisseurs disposant de la région
            d’exécution demandée.
        required_data_region:
          type: string
          nullable: true
          description: >-
            Limiter le routage aux fournisseurs disposant de la région de
            données demandée.
        require_zero_data_retention:
          type: boolean
          nullable: true
          description: >-
            Limiter le routage aux fournisseurs qui prennent en charge la
            conservation nulle des données.
        data_collection:
          type: string
          nullable: true
          enum:
            - allow
            - deny
        zdr:
          type: boolean
          nullable: true
        enforce_distillable_text:
          type: boolean
          nullable: true
        quantizations:
          type: array
          nullable: true
          items:
            type: string
        sort:
          oneOf:
            - type: string
            - type: object
              additionalProperties: true
          description: >-
            Classer les fournisseurs pour cette requête, par exemple selon le
            prix, la latence ou le débit.
        max_price:
          type: object
          properties:
            prompt:
              oneOf:
                - type: number
                - type: string
            completion:
              oneOf:
                - type: number
                - type: string
            image:
              oneOf:
                - type: number
                - type: string
            audio:
              oneOf:
                - type: number
                - type: string
            request:
              oneOf:
                - type: number
                - type: string
        preferred_min_throughput:
          oneOf:
            - type: number
            - type: object
              additionalProperties:
                type: number
        preferred_max_latency:
          oneOf:
            - type: number
            - type: object
              additionalProperties:
                type: number
    DecisionsUsage:
      type: object
      properties:
        input_tokens:
          type: integer
          minimum: 0
        output_tokens:
          type: integer
          minimum: 0
        total_tokens:
          type: integer
          minimum: 0
    DecisionInstructions:
      oneOf:
        - type: string
        - type: object
          additionalProperties: true
        - type: array
          items: {}
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      description: Authentification par jeton Bearer

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.