> ## 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.

# Eine Entscheidung treffen

> Bewerte typisierte Fragen anhand des Anwendungszustands mit unterstützten Entscheidungsmodellen.

Verwende `POST /v1/decisions`, wenn deine Anwendung strukturierte Antworten benötigt, die der Code direkt verarbeiten kann. Unterstützte Modelle sind TypeSafe Jev 1.13 (`typesafe/jev-1.13.0`), Together Tev1 4B Experimental (`together/tev1-4b-experimental`) und Respan Span-01 (`respan/span-01:free` und `respan/span-01`).

Die Anfrage enthält:

* `state`: ein String, Objekt oder Array mit den zu bewertenden Informationen.
* `questions`: eine Map benannter Fragen. Jede Frage setzt `type` auf `noul`, `choice` oder `score` und enthält `instructions`; unterstützte Typen hängen vom ausgewählten Modell ab.
* `model`: die Phaseo-Modell-ID. Verwende `typesafe/jev-1.13.0` für Jev 1.13 oder `typesafe/jev-latest`, um jeweils die neueste Jev-Version zu nutzen.

Liquid D1 (`liquid-ai/d1:free`, auch als `liquid-ai/d1` verfügbar) und Perplexity Decider 27B (`perplexity/decider-27b`) unterstützen alle drei Fragetypen. D1 ist während des experimentellen Early Access kostenlos. Decider kostet 0,04 USD pro Million Eingabetokens einschließlich Bildtokens; Ausgabetokens sind kostenlos. Hinterlege in Phaseo Anbieter-Zugangsdaten für Perplexity, um Decider zu nutzen. Sein Bildzustand verwendet Base64-Daten-URLs für PNG, JPEG oder WebP; entfernte Bild-URLs werden nicht unterstützt. Jede Auswahlfrage akzeptiert bis zu 255 Optionen und jede Bewertungsfrage bis zu 10 Stufen. Prüfe vor dem Aufruf die Verfügbarkeit des jeweiligen Modells.

Für Respan Span-01 muss `state` ein Gesprächsabschnitt mit einem `input`-Array vorheriger Nachrichten und einer `output`-Assistentennachricht sein. Span-01 unterstützt nur `noul`-Fragen. Die `noul`-Antwort ist die Wahrscheinlichkeit, dass das Verhalten vorliegt; `probabilities` enthält außerdem Wahrscheinlichkeiten für fehlendes und nicht beobachtbares Verhalten.

```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` ist das kostenlose Lite-Modell mit einem Tageslimit; Phaseo ordnet es der Respan-API-Modell-ID `span-01-free` zu. `respan/span-01` entspricht der Respan-API-Modell-ID `span-01-pro` und wird von Respan mit 0,02 USD pro Million Eingabetokens abgerechnet; Ausgabetokens sind kostenlos. Span-01 befindet sich im Early Access, daher muss Respan den Zugriff für deine Organisation freischalten. Hinterlege vor dem Aufruf dieser Modelle deinen Respan-API-Schlüssel als Respan-Anbieter-Zugangsdaten in Phaseo.

Antworten verwenden dieselben Schlüssel wie `questions`. `choice`-Antworten enthalten die gewählte Option, Wahrscheinlichkeiten und Konfidenz; `noul`-Antworten enthalten eine Wahrscheinlichkeit von 0 bis 1; `score`-Antworten enthalten einen wahrscheinlichkeitsgewichteten Score, eine Legende, Wahrscheinlichkeiten und Konfidenz.

Für das Respan-Beispiel sieht eine Antwort so aus:

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

Jev unterstützt alle drei Fragetypen gemeinsam in einer Anfrage; Span-01 unterstützt nur `noul`-Fragen. Im [Schnellstart](../../quickstart) findest du kopierbare Beispiele für cURL, JavaScript, das TypeScript-SDK und das Python-SDK. Jev 1.13 wird mit 0,042 USD pro Million Eingabetokens abgerechnet; Ausgabetokens sind kostenlos.

Die Fragensemantik des Anbieters ist in der [API-Referenz](https://docs.typesafe.ai/api) von TypeSafe beschrieben.

### Bildentscheidungen mit Clef

`cloudflare/clef` und `cloudflare/clef-flash` unterstützen alle drei Fragetypen und eingebettete Bilder über Cloudflare Workers AI. Beide haben ein Kontextfenster von 65.536 Token. Die Eingabe kostet 0,24 USD pro Million Token für Clef und 0,09 USD für 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?" }
  }
}
```

Sie können auch eine Zeichenfolge `data:image/png;base64,...` in `images` übergeben. Clef akzeptiert bis zu vier PNG-, JPEG- oder WebP-Bilder mit jeweils höchstens 4 MiB und 16 Megapixeln, insgesamt höchstens 8 MiB dekodierten Bilddaten und einem Anfragekörper von 13 MiB. Remote-URLs werden nicht unterstützt. Cloudflare prüft Bildformate und Abmessungen. Modelle ohne Bildunterstützung lehnen Bildanfragen ab.

Clef akzeptiert höchstens 64 Fragen mit IDs aus bis zu 100 Buchstaben, Ziffern, Unterstrichen, Punkten oder Bindestrichen. Auswahlfragen benötigen 2–255 Optionen; Bewertungsfragen benötigen 2–10 Stufen. Siehe die [Clef-Dokumentation](https://developers.cloudflare.com/workers-ai/models/clef/) von Cloudflare.


## OpenAPI

````yaml de/openapi/v1/openapi.localized.yaml POST /decisions
openapi: 3.0.3
info:
  title: Phaseo Gateway API
  description: >-
    Eine Gateway-API für den Zugriff auf verschiedene KI-Modelle über
    OpenAI-kompatible Endpunkte.
  version: 1.0.0
  contact:
    name: Phaseo
    url: https://phaseo.app
    email: danielbutler500@gmail.com
servers:
  - url: https://api.phaseo.app/v1
    description: Globales Routing
security:
  - BearerAuth: []
tags:
  - name: Gateway
    description: Core Phaseo Gateway operations.
paths:
  /decisions:
    post:
      tags:
        - Gateway
      summary: Strukturierte Entscheidungen treffen
      description: >-
        Bewertet typisierte Noul-, Choice- und Score-Fragen anhand eines
        strukturierten Zustands mit einem Entscheidungsmodell wie TypeSafe Jev.
      operationId: makeDecision
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DecisionsRequest'
      responses:
        '200':
          description: Antwort mit strukturierten Entscheidungen
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DecisionsResponse'
components:
  schemas:
    DecisionsRequest:
      type: object
      required:
        - model
        - state
        - questions
      properties:
        model:
          type: string
          description: Kanonische Phaseo-Modell-ID oder Modellalias des Anbieters.
          default: typesafe/jev-1.13.0
        state:
          description: Vom Modell bewerteter strukturierter Zustand.
          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: >-
            Eingebettete Bilder für bildfähige Entscheidungsmodelle. Clef
            akzeptiert PNG, JPEG oder WebP; Remote-URLs werden nicht
            unterstützt. Höchstens 4 MiB und 16 Megapixel pro Bild, insgesamt 8
            MiB dekodierte Daten und 13 MiB pro Anfragekörper.
          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: >-
        Gateway-Debug-Steuerungen. Diese Flags werden niemals an den Anbieter
        weitergeleitet.
      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: Anbieterrouting-Präferenzen für die Auswahl durch das Gateway.
      properties:
        order:
          type: array
          items:
            type: string
        only:
          type: array
          items:
            type: string
        ignore:
          type: array
          items:
            type: string
        include_alpha:
          type: boolean
          description: >-
            Alpha-Anbieter in das Routing einbeziehen (standardmäßig
            deaktiviert).
        allow_fallbacks:
          type: boolean
          nullable: true
          description: Nach einem Fehler auf einen anderen geeigneten Anbieter ausweichen.
        require_parameters:
          type: boolean
          nullable: true
          description: >-
            Vor dem Routing die Unterstützung der angeforderten Parameter durch
            den Anbieter voraussetzen.
        required_execution_region:
          type: string
          nullable: true
          description: >-
            Das Routing auf Anbieter mit der angeforderten Ausführungsregion
            beschränken.
        required_data_region:
          type: string
          nullable: true
          description: >-
            Das Routing auf Anbieter mit der angeforderten Datenregion
            beschränken.
        require_zero_data_retention:
          type: boolean
          nullable: true
          description: >-
            Das Routing auf Anbieter beschränken, die keine Datenspeicherung
            unterstützen.
        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: >-
            Anbieter für diese Anfrage sortieren, zum Beispiel nach Preis,
            Latenz oder Durchsatz.
        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: Authentifizierung mit Bearer-Token

````

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