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

# Xcode

> Aggiungi Venice come chat provider nelle impostazioni Intelligence di Xcode per usare i modelli privati di Venice nel coding assistant di Xcode su macOS.

[Xcode](https://developer.apple.com/xcode/) include un coding assistant che può rispondere a domande sul tuo progetto, scrivere e fare refactoring del codice e correggere errori. Oltre ai provider integrati, Xcode accetta qualsiasi chat provider che supporti la Chat Completions API, quindi puoi aggiungere Venice nelle impostazioni Intelligence di Xcode e usare i modelli Venice nelle conversazioni con il coding assistant.

> **Coding assistant**
>
> Fai domande, genera codice e fai refactoring con i modelli Venice

> **Connessione diretta**
>
> Xcode invia le richieste dal tuo Mac direttamente a Venice

> **Scelta della privacy**
>
> Scegli un modello con il livello di privacy di cui il tuo codice ha bisogno

***

## Prerequisiti

* Una API key Venice da [venice.ai/settings/api](https://venice.ai/settings/api?utm_source=venice-api-documentation)
* [Xcode](https://developer.apple.com/xcode/) 26.3 o successivo (le versioni precedenti di Xcode 26 possono perdere i chat provider personalizzati al riavvio di Xcode)
* macOS Tahoe 26 o successivo (Xcode 27 richiede macOS Tahoe 26.6 o successivo e un Mac con Apple silicon)

***

## Configurazione

**1. Ottieni la tua API key Venice**

Genera una key da [venice.ai/settings/api](https://venice.ai/settings/api?utm_source=venice-api-documentation). Per Xcode è sufficiente una key **Inference Only**.

Valuta di creare una key dedicata con un **Epoch Consumption Limit**, così puoi limitare la spesa di Xcode e revocare la key senza influire sulle altre app. Consulta [Generare una API key](https://docs.venice.ai/it/guides/getting-started/generating-api-key.md).

**2. Apri le impostazioni Intelligence**

In Xcode, scegli **Xcode > Settings** e seleziona **Intelligence** nella barra laterale.

**3. Aggiungi Venice come chat provider**

In **Chat**, fai clic su **Add a Chat Provider** e seleziona **Internet Hosted**. In alcune versioni di Xcode 26 il pulsante si chiama **Add a Model Provider**.

Inserisci i seguenti valori, poi fai clic su **Add**:

| Campo | Valore |
| - | - |
| URL | `https://api.venice.ai/api` |
| API Key | `Bearer your-venice-api-key` |
| API Key Header | `Authorization` |
| Description | `Venice` |

Mantieni l'URL esattamente come mostrato, senza `/v1` e senza slash finale. Xcode vi aggiunge `/v1/models` e `/v1/chat/completions`, ottenendo così gli endpoint standard di Venice sotto `https://api.venice.ai/api/v1`.

Xcode invia il campo **API Key** come valore completo dell'header `Authorization`. Sostituisci `your-venice-api-key` con la tua key e mantieni il prefisso `Bearer `.

**4. Scegli i tuoi modelli**

Seleziona il provider Venice in **Chat**. Xcode recupera l'elenco dei modelli da Venice. Attiva i modelli che vuoi usare e aggiungi una stella a quelli che usi più spesso, così appariranno in cima al menu dei modelli.

L'elenco include tutti i modelli di testo Venice, ma il coding assistant funziona solo con i modelli che supportano il tool calling. Controlla i [requisiti dei modelli](#requisiti-dei-modelli) prima di scegliere, oppure inizia con `z-ai-glm-5-3-flash`.

**5. Avvia una conversazione**

Apri un progetto, poi fai clic sul pulsante **Coding Assistant** o premi **Command-0**. Fai clic su **New Conversation** e scegli un modello Venice in **Chat**. Il testo segnaposto nel campo del messaggio indica quale modello usa la conversazione.

Invia un breve prompt per testare la connessione:

```txt theme={"system"}
Summarize what this project does in three bullet points.
```

***

## Verificare la configurazione

L'invio del prompt di test è la vera verifica. Un elenco completo di modelli in Xcode non dimostra che la tua key funzioni, perché l'endpoint `GET /models` di Venice restituisce il catalogo con o senza una key valida. Venice controlla la key solo quando invii un messaggio.

Se il prompt non va a buon fine, verifica la tua API key al di fuori di Xcode:

```bash theme={"system"}
curl https://api.venice.ai/api/v1/api_keys/rate_limits \
  -H "Authorization: Bearer $VENICE_API_KEY"
```

Questo endpoint richiede una key valida, quindi un `401` qui indica un problema con la key e non con la configurazione di Xcode. Se la key funziona, confronta le impostazioni del provider con la sezione [Risoluzione dei problemi](#risoluzione-dei-problemi).

***

## Requisiti dei modelli

> [!WARNING]
>
> **Il modello deve supportare il tool calling.** Nelle conversazioni chat, Xcode fornisce al modello strumenti per cercare e modificare il tuo progetto, quindi un modello senza tool calling non può gestire le richieste del coding assistant.

Il [catalogo dei modelli di testo](https://docs.venice.ai/it/models/text.md) indica questa capacità come **Function Calling**, e la maggior parte dei modelli di testo Venice la supporta.

Idealmente, il modello dovrebbe avere anche una context window di 200K token o più. Xcode non ha un'impostazione per la context window dei chat provider e, con **Project Context** attivo, una richiesta può includere molto codice del progetto oltre alle definizioni degli strumenti di Xcode.

Per elencare i modelli Venice che soddisfano entrambi i requisiti:

```bash theme={"system"}
curl -s https://api.venice.ai/api/v1/models \
  | jq -r '.data[] | select(.model_spec.capabilities.supportsFunctionCalling and .model_spec.availableContextTokens >= 200000) | .id'
```

***

## Scegliere i modelli

Questi modelli soddisfano entrambi i requisiti:

| Caso d'uso | ID modello di esempio |
| - | - |
| Coding | `deepseek-v4-pro-0813` |
| Costo inferiore | `z-ai-glm-5-3-flash` |
| Attività più difficili | `grok-4-7` |
| Screenshot e mockup con **Upload files** | `qwen-3-8-27b` |

Quando confronti altri modelli:

* [`GET /models/traits?type=text`](https://docs.venice.ai/it/api-reference/endpoint/models/traits) restituisce le scelte attuali di Venice, come `default_code` per il coding.
* **Project Context** rende le richieste molto grandi, quindi il prezzo dei token di input conta più del solito. Confronta i prezzi nel [catalogo dei modelli di testo](https://docs.venice.ai/it/models/text.md).

Venice ritira e sostituisce regolarmente i modelli. Se un modello smette di funzionare, controlla [Deprecazioni](https://docs.venice.ai/it/overview/deprecations.md) e passa a uno attuale.

***

## Agenti

I chat provider alimentano solo le conversazioni chat. Gli agenti integrati di Xcode, come Claude Agent e Codex, e qualsiasi agente che aggiungi tramite l'Agent Client Protocol (ACP) vengono configurati separatamente e non inviano richieste tramite un chat provider. Gli agenti hanno inoltre accesso a più funzionalità di Xcode rispetto alla chat, come la build e il test della tua app.

Per eseguire un agente sui modelli Venice con accesso al tuo progetto Xcode, configura un agente da terminale per Venice e collegalo al server Model Context Protocol (MCP) fornito da Xcode 26.3 e successivi:

**1. Consenti gli agenti esterni**

Nelle impostazioni Intelligence di Xcode, in **Model Context Protocol**, attiva **Allow external agents to use Xcode tools**.

**2. Configura l'agente con Venice**

Segui la guida di [Codex CLI](https://docs.venice.ai/it/guides/integrations/codex-cli.md) o di [Claude Code](https://docs.venice.ai/it/guides/integrations/claude-code.md).

**3. Collega l'agente a Xcode**

Registra il server MCP di Xcode nell'agente:

```bash Codex CLI theme={"system"}
codex mcp add xcode -- xcrun mcpbridge
```

```bash Claude Code theme={"system"}
claude mcp add --transport stdio xcode -- xcrun mcpbridge
```

**4. Invia un prompt all'agente**

Apri prima il tuo progetto in Xcode, poi invia un prompt all'agente nel Terminale. Xcode ti avvisa quando l'agente si connette.

***

## Privacy

Xcode invia le richieste chat dal tuo Mac direttamente a Venice. **Project Context** è attivo per impostazione predefinita nelle conversazioni chat, quindi Xcode include in ogni richiesta il codice rilevante e altro contesto del tuo progetto. Per limitare ciò che Xcode invia, disattiva **Project Context** nel campo del messaggio e fai riferimento esplicitamente a file e simboli con `@`.

Venice non memorizza né registra il contenuto di prompt e risposte nel suo proxy. Il modello che scegli determina il livello di privacy in fase di esecuzione:

* I modelli **Private** usano un'infrastruttura a zero data retention.
* I modelli **Anonymized** nascondono la tua identità al provider upstream, ma quel provider può elaborare il tuo codice.
* I modelli **TEE**, con ID modello `e2ee-`, vengono eseguiti all'interno di un enclave hardware. Xcode non può cifrare i prompt sul tuo Mac, quindi quando li usi da Xcode questi modelli funzionano in modalità TEE anziché in modalità con crittografia end-to-end.

Controlla l'etichetta di privacy di ciascun modello nel [catalogo dei modelli di testo](https://docs.venice.ai/it/models/text.md) e leggi [Privacy di Venice](https://docs.venice.ai/it/overview/privacy.md) prima di inviare codice proprietario.

***

## Risoluzione dei problemi

> **Errore 401 o di autenticazione**
>
> Verifica che **API Key** sia `Bearer ` seguito da una key Venice da [venice.ai/settings/api](https://venice.ai/settings/api?utm_source=venice-api-documentation), senza spazi aggiuntivi. Xcode carica l'elenco dei modelli anche con una key errata, perché quell'elenco è pubblico, quindi gli errori di autenticazione compaiono solo quando invii un messaggio. Testa la key con il comando in [Verificare la configurazione](#verificare-la-configurazione).

> **Xcode non riesce a caricare i modelli o rifiuta il provider**
>
> Verifica che l'URL sia esattamente `https://api.venice.ai/api`. Un URL che termina con `/v1` fa sì che Xcode richieda `/api/v1/v1/models`, mentre uno slash finale produce `/api//v1/models`. Venice restituisce `404` in entrambi i casi. Aggiungi di nuovo il provider con l'URL corretto.

> **Errori dell'endpoint quando invii un messaggio**
>
> Verifica che la conversazione usi un modello che supporta il tool calling e che, idealmente, abbia una context window di 200K token o più. Xcode invia definizioni degli strumenti e contesto del progetto con ogni richiesta: un modello senza tool calling non può gestirli e un progetto di grandi dimensioni può superare una context window più piccola. Attiva un modello che soddisfi i [requisiti dei modelli](#requisiti-dei-modelli), poi avvia una nuova conversazione con quel modello.

> **Errore 402 o payment required**
>
> Venice restituisce `402` in due casi:
>
> * La richiesta è arrivata a Venice senza un header `Authorization`. Venice ignora altri header, come `x-api-key`, e risponde con una challenge di pagamento x402. Imposta **API Key Header** su `Authorization`.
> * La key ha raggiunto il suo limite di spesa, oppure il tuo saldo è esaurito. Consulta [Risoluzione degli errori del limite di spesa](https://docs.venice.ai/it/guides/getting-started/generating-api-key.md#risoluzione-degli-errori-di-limite-di-spesa).

> **Modello non trovato**
>
> Venice potrebbe aver ritirato il modello. Controlla [Deprecazioni](https://docs.venice.ai/it/overview/deprecations.md), scegli un modello attuale dall'elenco dei modelli del provider e avvia una nuova conversazione.

***

## Risorse

> **[Configurare la coding intelligence](https://developer.apple.com/documentation/xcode/setting-up-coding-intelligence)**
>
> La guida di Apple ad agenti e chat provider in Xcode

> **[Scrivere codice con Intelligence](https://developer.apple.com/documentation/xcode/writing-code-with-intelligence-in-xcode)**
>
> Usa il coding assistant, il contesto del progetto e la cronologia

> **[Modelli di testo Venice](https://docs.venice.ai/it/models/text.md)**
>
> Sfoglia gli ID dei modelli attuali, le capacità e i livelli di privacy

> **[Generare una API key](https://docs.venice.ai/it/guides/getting-started/generating-api-key.md)**
>
> Crea una key dedicata con limiti di spesa


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