# KI Integration

# KI Proxy Konfiguration

Wenn Sie Squeeze mit dem KI Proxy verwenden möchten, dann folgen Sie folgendem Leitfaden für die Konfiguration.

<p class="callout info">Die Integration des KI Proxies ist erst ab Squeeze 2.6 verfügbar.</p>

<p class="callout info">Ab Squeeze 2.13 müssen sie <span style="text-decoration: underline;">keinen</span> KI Proxy Token konfigurieren, <span style="text-decoration: underline;">falls</span> ihr Squeeze Mandant bereits mit dem Portal verknüpft wurde. In diesem Fall authentifiziert sich Squeeze beim KI Proxy mittels OAuth über das Portal.</p>

### Integration konfigurieren

#### Authentifizierung mittels KI Proxy Token (Bisheriges Verfahren)

Um die Integration der KI für alle Mandanten eines Servers zu konfigurieren, fügen Sie folgende Konfiguration der Server-Konfiguration hinzu:

```JSON
{
    "dexp": {
        "aiProxy": {
            "baseUrl": "https://ocr-proxy.squeeze.one",
            "token": "...",
            "version": "v0"
        }
    }
}
```

Ersetzen Sie "..." durch den Access Token, der Ihnen zur Verfügung gestellt wurde.

#### Authentifizierung mittels Portal

Bei der Authentifizierung über das Portal, müsste die Konfiguration wie folgt aussehen. Mehr zur Integration des Portals, finden sie [hier](https://docs.squeeze.one/books/squeeze-2-admin-handbuch/page/portal-integration "Portal Integration").

<p class="callout warning">Hinterlegen Sie die Portal-Konfiguration **nie** in der Serverkonfiguration, sondern nur in der Mandantenkonfiguration.</p>

```JSON
{
    "dexp": {
        "aiProxy": {
            "baseUrl": "https://ocr-proxy.squeeze.one",
            "version": "v0"
        }
    },
    "portal": {
      	"enabled": true,
      	"host": "https://portal.dexpro.de",
        "auth": {
			"clientId": "...",
            "secret": "..."
        }
    }
}
```

### Integration nutzen

Wenn sie die Konfiguration in der Server- oder Mandantenkonfiguration hinzugefügt haben, dann können sie in der Admin-UI die KI konfigurieren.

Siehe dazu:

- [Stapelklassen-Eigenschaften](https://docs.squeeze.one/books/squeeze-2-admin-handbuch/page/stapelklassen-eigenschaften "Stapelklassen-Eigenschaften")
- [Stapelklasseneigenschaften OCR-Texterkennung](https://docs.squeeze.one/books/squeeze-2-admin-handbuch/page/stapelklasseneigenschaften-ocr-texterkennung "Stapelklasseneigenschaften OCR-Texterkennung")

### Ablaufende Credentials prüfen

Um server-weit zu prüfen, ob verwendete Credentials ablaufen werden, können Sie das **Squeezer** CLI nutzen:

```shell
squeezer server:check-ai-proxy-tokens -d 600

SQUEEZE Ai Proxy Token Check
============================

 [WARNING] terstegen.squeeze.one: Token expires on 2024-11-22 12:36            
```

So können Sie sich die Hilfe des Tools anzeigen lassen:

```shell
squeezer server:check-ai-proxy-tokens -h    
Description:
  Checks if ai proxy tokens are expired

Usage:
  server:check-ai-proxy-tokens [options]

Options:
  -d, --days[=DAYS]     numbers of days before ai proxy token expires; default 28 days
  -h, --help            Display help for the given command. When no command is given display help for the list command
  -q, --quiet           Do not output any message
  -V, --version         Display this application version
      --ansi|--no-ansi  Force (or disable --no-ansi) ANSI output
  -n, --no-interaction  Do not ask any interactive question
  -v|vv|vvv, --verbose  Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
```

# LLM-Proxy Konfiguration

Für die LLM-gestützte Extraktion spricht Squeeze einen **LLM-Proxy** an — analog zum bestehenden KI-Proxy, aber über einen eigenen Endpunkt und mit eigener Konfiguration. Dieser Leitfaden beschreibt, wie Sie die Anbindung server- bzw. mandantenseitig einrichten.

<p class="callout info">Die LLM-gestützte Extraktion befindet sich aktuell in der Einführung und ist noch nicht allgemein freigegeben. Verfügbar ab Squeeze <b>2.34</b>.</p>

<p class="callout warning">Die Authentifizierung am LLM-Proxy erfolgt <b>ausschließlich über das DEXPRO Portal</b>. Anders als beim KI-Proxy gibt es <b>kein</b> Proxy-Token als Alternative. Ist das Portal für den Mandanten nicht (korrekt) eingerichtet, ist die LLM-Extraktion nicht verfügbar und die Verarbeitung bricht mit der Meldung <code>LLM proxy integration not available: DEXPRO Portal is not configured.</code> ab.</p>

## Voraussetzungen

- Der Squeeze-Mandant ist mit dem DEXPRO Portal verknüpft (siehe [Portal Integration](https://docs.squeeze.one/books/squeeze-2-admin-handbuch/page/portal-integration)).
- Der LLM-Proxy-Endpunkt für Ihre Umgebung ist bekannt (wird von DEXPRO bereitgestellt).
- Das Feature-Flag `llmExtraction` ist aktiviert (siehe [Features verwalten](https://docs.squeeze.one/books/squeeze-2-admin-handbuch/page/features-verwalten)).

## Integration konfigurieren

Ergänzen Sie die **Mandantenkonfiguration** um den Basis-URL des LLM-Proxys sowie – falls noch nicht vorhanden – um die Portal-Anbindung:

```json
{
    "dexp": {
        "llmProxy": {
            "baseUrl": "https://<llm-proxy-host>"
        }
    },
    "portal": {
        "enabled": true,
        "host": "https://portal.dexpro.de",
        "auth": {
            "clientId": "...",
            "secret": "..."
        }
    }
}
```

Ersetzen Sie `<llm-proxy-host>` durch den Endpunkt, der Ihnen zur Verfügung gestellt wurde, sowie `clientId`/`secret` durch die Portal-Zugangsdaten des Mandanten.

<p class="callout info">Für den LLM-Proxy sind – im Gegensatz zum KI-Proxy – <b>keine</b> Schlüssel <code>version</code> oder <code>token</code> erforderlich. Es genügt <code>dexp.llmProxy.baseUrl</code> in Verbindung mit einer gültigen Portal-Konfiguration.</p>

<p class="callout warning">Hinterlegen Sie die Portal-Konfiguration <b>nie</b> in der Serverkonfiguration, sondern ausschließlich in der Mandantenkonfiguration. Der Schlüssel <code>dexp.llmProxy.baseUrl</code> kann hingegen – wie beim KI-Proxy – bei Bedarf server-weit in der <a href="https://docs.squeeze.one/books/squeeze-2-admin-handbuch/page/server-und-mandantenkonfiguration">Serverkonfiguration</a> gepflegt werden, sofern alle Mandanten denselben Proxy nutzen.</p>

## Integration nutzen

Nach der Konfiguration aktivieren Sie das Feature in zwei Schritten:

1. **Feature-Flag setzen** – `llmExtraction` für den Mandanten aktivieren (siehe [Features verwalten](https://docs.squeeze.one/books/squeeze-2-admin-handbuch/page/features-verwalten)).
2. **Dokumentenklasse kennzeichnen** – an der gewünschten Dokumenten- bzw. Stapelklasse die Eigenschaft **LLMExtraction** aktivieren. Erst dann durchläuft ein Dokument dieser Klasse die LLM-gestützte Extraktion.

<p class="callout info">Die fachliche Nutzung (Prompts hinterlegen, Filtersystem, System-Prompt, Aktivierung je Dokumentenklasse) wird im Kapitel <i>LLM-Extraktion</i> beschrieben. <b>&lt;Verlinken, sobald das Tenant-Admin-Kapitel angelegt ist.&gt;</b></p>

## Konfiguration prüfen

Ob das Feature-Flag greift, lässt sich über die [System-Information und -Prüfungen](https://docs.squeeze.one/books/squeeze-2-admin-handbuch/page/system-information-und-prufungen) kontrollieren (Merkmal *LLM-Extraktion*).

Schlägt die Verarbeitung mit `LLM proxy integration not available` fehl, prüfen Sie:

- Ist `portal.enabled` auf `true` gesetzt und sind `host`, `auth.clientId` und `auth.secret` korrekt hinterlegt?
- Ist `dexp.llmProxy.baseUrl` gesetzt und erreichbar?