> ## Documentation Index
> Fetch the complete documentation index at: https://ayakaleaf-pro.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Integrazione AI

> Configurare la chat AI, i suggerimenti per gli errori LaTeX, le quote e i servizi di ricerca in un deployment Kubernetes.

L'assistente AI e l'assistente per gli errori LaTeX vengono eseguiti nel servizio **web** (i moduli `workbench` e `error-assistant`) di ogni pod di Ayakaleaf Pro. Cosa fa ciascuna impostazione, l'accesso degli utenti e le quote sono descritti in [Integrazione AI](https://ayakaleaf-pro.mintlify.site/it/on-premises/configuration/overleaf-toolkit/integrations/ai-integration.md); questa pagina spiega come inserirla in Kubernetes.

| | |
| - | - |
| Servizio | web, in ogni pod di Ayakaleaf Pro; letto all'avvio di web. Lo strumento `web_fetch` passa attraverso linked-url-proxy nello stesso pod |
| Pod → esterno | `AI_BASE_URL`; `WEB_SEARCH_URL` (predefinito `https://api.tavily.com/search`) e `DOCS_MCP_URL` se la ricerca è attiva; le pagine che il modello legge con `web_fetch` |
| Esterno → Overleaf | nessuno |
| Stato | i contatori delle quote di token in Redis, condivisi da tutte le repliche; la cronologia della chat resta nel browser |
| Job periodici | nessuno |

### Configurazione

**1. ConfigMap**

```yaml title="30-config.yaml (additions)" wrap theme={null}
  AI_ENABLED: "true"
  AI_BASE_URL: https://ai-gateway.example.com/v1
  AI_MODEL: YOUR_TEXT_MODEL_ID
  # optional, see the Toolkit page
  # AI_IMAGE_MODEL: YOUR_IMAGE_CAPABLE_MODEL_ID
  # AI_PDF_MODEL: YOUR_PDF_CAPABLE_MODEL_ID
  # AI_TOKEN_QUOTA: "200000"
  # AI_TOKEN_QUOTA_PERIOD: month
  # AI_PROXY_URL: http://proxy.example.com:3128
```

`AI_ENABLED` deve essere esattamente `"true"`. L'assistente compare solo quando `AI_ENABLED`, `AI_BASE_URL`, `AI_MODEL` e `AI_API_KEY` sono tutti impostati.

**2. Secret**

```bash theme={null}
kubectl -n overleaf patch secret overleaf-secrets --type merge -p '{"stringData":{
  "AI_API_KEY":"<gateway key>",
  "TAVILY_API_KEY":"<search key, optional>"}}'
```

**3. Applica, riavvia e verifica il gateway da ogni pod**

```bash theme={null}
kubectl apply -f 30-config.yaml
kubectl -n overleaf rollout restart deployment/overleaf     # or statefulset/overleaf
for p in $(kubectl -n overleaf get pod -l app=overleaf -o name); do   # app=overleaf-ha for several replicas
  kubectl -n overleaf exec "$p" -- curl -sS -o /dev/null -w "$p %{http_code}\n" https://ai-gateway.example.com/v1/models
done
```

Qualsiasi stato HTTP significa che il gateway è raggiungibile; `000` significa che non lo è.

Lo strumento `web_fetch` recupera le pagine tramite lo stesso proxy dei file da [URL esterno](https://ayakaleaf-pro.mintlify.site/it/on-premises/configuration/kubernetes/external-url.md), quindi le impostazioni `OVERLEAF_LINKED_URL_*` limitano anche ciò che il modello può leggere.

### Più repliche

Non serve altro. La quota di token viene conteggiata in Redis, quindi l'utilizzo di un utente è lo stesso su ogni replica, e l'azzeramento eseguito da un amministratore si applica ovunque.

### Testato su Kubernetes

Contro un mock di un gateway compatibile con OpenAI, di Tavily e dell'endpoint MCP di GitBook (considerati attendibili tramite `NODE_EXTRA_CA_CERTS` da `overleaf-certs`), su Kubernetes 1.37, i nostri test end-to-end vengono superati: per l'assistente AI su tre repliche dietro HAProxy (31 casi), chat con chiamate a strumenti e modifiche suggerite, ricerca sul web e nella documentazione, lettura di pagine web tramite linked-url-proxy limitata da `OVERLEAF_LINKED_URL_ALLOWED_RESOURCES`, allegati di immagini e PDF, consenso, la quota di token conteggiata in Redis, AI disattivata per un utente e per l'istanza, e connessioni lente al gateway; per l'assistente per gli errori su una replica (15 casi), correzioni suggerite, consenso, la quota di token condivisa e AI disattivata.


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