Procedure to train gpt-4.1-nano to classify customer requests into a fixed JSON, with a category and a priority. It starts from 60 hand-written examples, runs the fine-tuning from the Microsoft Foundry portal, compares the result with the base model and calls it from a .NET console application authenticated with Entra ID.
The examples are in Italian: categories, priorities and requests are the ones the model was trained on.
Required: an Azure account with an active subscription, a browser, .NET 10 and the Azure command-line interface on the computer. Duration: about an hour and a half, mostly waiting: in the test the training took 52 minutes. Cost: you pay for the training tokens (8,000 in the test) and for the tokens of the calls. The Developer and Global Standard deployments have no hourly fee.
The portal in the screenshots is in English: command names are reported as they appear on screen.
Prepare the data
1. Create the two files
Supervised fine-tuning takes JSONL files: one conversation per line, with the system message, the request and the expected answer. There are five categories (fatturazione billing, tecnico technical, spedizione shipping, account, reso return) and three priorities (alta high, media medium, bassa low). The system message is the same on every line and doesn't list the categories: the model has to learn them from the examples.
Save these 50 lines as training.jsonl:
{"messages": [{"role": "system", "content": "Classifica la richiesta del cliente in JSON."}, {"role": "user", "content": "Mi avete addebitato due volte l'abbonamento di novembre, rivoglio subito i soldi."}, {"role": "assistant", "content": "{\"categoria\": \"fatturazione\", \"priorità\": \"alta\"}"}]}
{"messages": [{"role": "system", "content": "Classifica la richiesta del cliente in JSON."}, {"role": "user", "content": "Potete mandarmi la fattura di ottobre anche in PDF?"}, {"role": "assistant", "content": "{\"categoria\": \"fatturazione\", \"priorità\": \"bassa\"}"}]}
{"messages": [{"role": "system", "content": "Classifica la richiesta del cliente in JSON."}, {"role": "user", "content": "Nella fattura c'è la partita IVA sbagliata, devo presentarla al commercialista entro venerdì."}, {"role": "assistant", "content": "{\"categoria\": \"fatturazione\", \"priorità\": \"media\"}"}]}
{"messages": [{"role": "system", "content": "Classifica la richiesta del cliente in JSON."}, {"role": "user", "content": "Vorrei sapere se è possibile pagare con bonifico invece che con la carta."}, {"role": "assistant", "content": "{\"categoria\": \"fatturazione\", \"priorità\": \"bassa\"}"}]}
{"messages": [{"role": "system", "content": "Classifica la richiesta del cliente in JSON."}, {"role": "user", "content": "La carta è stata rifiutata e ora il servizio è sospeso, non possiamo lavorare."}, {"role": "assistant", "content": "{\"categoria\": \"fatturazione\", \"priorità\": \"alta\"}"}]}
{"messages": [{"role": "system", "content": "Classifica la richiesta del cliente in JSON."}, {"role": "user", "content": "Come cambio l'intestazione delle prossime fatture?"}, {"role": "assistant", "content": "{\"categoria\": \"fatturazione\", \"priorità\": \"bassa\"}"}]}
{"messages": [{"role": "system", "content": "Classifica la richiesta del cliente in JSON."}, {"role": "user", "content": "Mi è arrivato un addebito di 480 euro che non riconosco."}, {"role": "assistant", "content": "{\"categoria\": \"fatturazione\", \"priorità\": \"alta\"}"}]}
{"messages": [{"role": "system", "content": "Classifica la richiesta del cliente in JSON."}, {"role": "user", "content": "Lo sconto annuale promesso non compare in fattura."}, {"role": "assistant", "content": "{\"categoria\": \"fatturazione\", \"priorità\": \"media\"}"}]}
{"messages": [{"role": "system", "content": "Classifica la richiesta del cliente in JSON."}, {"role": "user", "content": "Posso avere un riepilogo di tutti i pagamenti del 2026?"}, {"role": "assistant", "content": "{\"categoria\": \"fatturazione\", \"priorità\": \"bassa\"}"}]}
{"messages": [{"role": "system", "content": "Classifica la richiesta del cliente in JSON."}, {"role": "user", "content": "Il rinnovo automatico è partito anche se l'avevo disdetto a settembre."}, {"role": "assistant", "content": "{\"categoria\": \"fatturazione\", \"priorità\": \"media\"}"}]}
{"messages": [{"role": "system", "content": "Classifica la richiesta del cliente in JSON."}, {"role": "user", "content": "Il gestionale non si apre più da stamattina, tutto l'ufficio è fermo."}, {"role": "assistant", "content": "{\"categoria\": \"tecnico\", \"priorità\": \"alta\"}"}]}
{"messages": [{"role": "system", "content": "Classifica la richiesta del cliente in JSON."}, {"role": "user", "content": "L'esportazione in Excel mette le date in formato americano."}, {"role": "assistant", "content": "{\"categoria\": \"tecnico\", \"priorità\": \"media\"}"}]}
{"messages": [{"role": "system", "content": "Classifica la richiesta del cliente in JSON."}, {"role": "user", "content": "Il sito dà errore 500 quando i clienti provano a pagare."}, {"role": "assistant", "content": "{\"categoria\": \"tecnico\", \"priorità\": \"alta\"}"}]}
{"messages": [{"role": "system", "content": "Classifica la richiesta del cliente in JSON."}, {"role": "user", "content": "Si può cambiare il colore dei grafici nella dashboard?"}, {"role": "assistant", "content": "{\"categoria\": \"tecnico\", \"priorità\": \"bassa\"}"}]}
{"messages": [{"role": "system", "content": "Classifica la richiesta del cliente in JSON."}, {"role": "user", "content": "La sincronizzazione con il telefono è lenta, ma alla fine funziona."}, {"role": "assistant", "content": "{\"categoria\": \"tecnico\", \"priorità\": \"media\"}"}]}
{"messages": [{"role": "system", "content": "Classifica la richiesta del cliente in JSON."}, {"role": "user", "content": "Abbiamo perso tutti i dati del magazzino dopo l'aggiornamento di ieri sera."}, {"role": "assistant", "content": "{\"categoria\": \"tecnico\", \"priorità\": \"alta\"}"}]}
{"messages": [{"role": "system", "content": "Classifica la richiesta del cliente in JSON."}, {"role": "user", "content": "La stampante di etichette non viene riconosciuta dal programma."}, {"role": "assistant", "content": "{\"categoria\": \"tecnico\", \"priorità\": \"media\"}"}]}
{"messages": [{"role": "system", "content": "Classifica la richiesta del cliente in JSON."}, {"role": "user", "content": "C'è un modo per usare le scorciatoie da tastiera nell'editor?"}, {"role": "assistant", "content": "{\"categoria\": \"tecnico\", \"priorità\": \"bassa\"}"}]}
{"messages": [{"role": "system", "content": "Classifica la richiesta del cliente in JSON."}, {"role": "user", "content": "Le email di conferma ordine non partono più da due giorni."}, {"role": "assistant", "content": "{\"categoria\": \"tecnico\", \"priorità\": \"alta\"}"}]}
{"messages": [{"role": "system", "content": "Classifica la richiesta del cliente in JSON."}, {"role": "user", "content": "La ricerca non trova i clienti se scrivo il cognome con l'accento."}, {"role": "assistant", "content": "{\"categoria\": \"tecnico\", \"priorità\": \"media\"}"}]}
{"messages": [{"role": "system", "content": "Classifica la richiesta del cliente in JSON."}, {"role": "user", "content": "Il pacco doveva arrivare lunedì e non è ancora arrivato, mi serve per un evento domani."}, {"role": "assistant", "content": "{\"categoria\": \"spedizione\", \"priorità\": \"alta\"}"}]}
{"messages": [{"role": "system", "content": "Classifica la richiesta del cliente in JSON."}, {"role": "user", "content": "Posso cambiare l'indirizzo di consegna di un ordine già spedito?"}, {"role": "assistant", "content": "{\"categoria\": \"spedizione\", \"priorità\": \"media\"}"}]}
{"messages": [{"role": "system", "content": "Classifica la richiesta del cliente in JSON."}, {"role": "user", "content": "Quanto costa la spedizione verso la Svizzera?"}, {"role": "assistant", "content": "{\"categoria\": \"spedizione\", \"priorità\": \"bassa\"}"}]}
{"messages": [{"role": "system", "content": "Classifica la richiesta del cliente in JSON."}, {"role": "user", "content": "Il corriere ha lasciato il pacco aperto e mancano due pezzi."}, {"role": "assistant", "content": "{\"categoria\": \"spedizione\", \"priorità\": \"alta\"}"}]}
{"messages": [{"role": "system", "content": "Classifica la richiesta del cliente in JSON."}, {"role": "user", "content": "Il numero di tracciamento non dà risultati sul sito del corriere."}, {"role": "assistant", "content": "{\"categoria\": \"spedizione\", \"priorità\": \"media\"}"}]}
{"messages": [{"role": "system", "content": "Classifica la richiesta del cliente in JSON."}, {"role": "user", "content": "Fate consegne il sabato?"}, {"role": "assistant", "content": "{\"categoria\": \"spedizione\", \"priorità\": \"bassa\"}"}]}
{"messages": [{"role": "system", "content": "Classifica la richiesta del cliente in JSON."}, {"role": "user", "content": "Ho ricevuto il pacco di un altro cliente, con il suo nome e indirizzo."}, {"role": "assistant", "content": "{\"categoria\": \"spedizione\", \"priorità\": \"alta\"}"}]}
{"messages": [{"role": "system", "content": "Classifica la richiesta del cliente in JSON."}, {"role": "user", "content": "La consegna è in ritardo di tre giorni, non è urgente ma vorrei sapere quando arriva."}, {"role": "assistant", "content": "{\"categoria\": \"spedizione\", \"priorità\": \"media\"}"}]}
{"messages": [{"role": "system", "content": "Classifica la richiesta del cliente in JSON."}, {"role": "user", "content": "Si può ritirare l'ordine in magazzino invece di farlo spedire?"}, {"role": "assistant", "content": "{\"categoria\": \"spedizione\", \"priorità\": \"bassa\"}"}]}
{"messages": [{"role": "system", "content": "Classifica la richiesta del cliente in JSON."}, {"role": "user", "content": "Il pacco risulta consegnato ma io non ho ricevuto niente."}, {"role": "assistant", "content": "{\"categoria\": \"spedizione\", \"priorità\": \"alta\"}"}]}
{"messages": [{"role": "system", "content": "Classifica la richiesta del cliente in JSON."}, {"role": "user", "content": "Non riesco più ad accedere, dice che la password è sbagliata ma è quella di sempre."}, {"role": "assistant", "content": "{\"categoria\": \"account\", \"priorità\": \"media\"}"}]}
{"messages": [{"role": "system", "content": "Classifica la richiesta del cliente in JSON."}, {"role": "user", "content": "Qualcuno ha cambiato la mail del mio account senza che lo sapessi."}, {"role": "assistant", "content": "{\"categoria\": \"account\", \"priorità\": \"alta\"}"}]}
{"messages": [{"role": "system", "content": "Classifica la richiesta del cliente in JSON."}, {"role": "user", "content": "Come aggiungo un collega al nostro account aziendale?"}, {"role": "assistant", "content": "{\"categoria\": \"account\", \"priorità\": \"bassa\"}"}]}
{"messages": [{"role": "system", "content": "Classifica la richiesta del cliente in JSON."}, {"role": "user", "content": "Il codice di verifica via SMS non arriva e devo entrare per chiudere il mese."}, {"role": "assistant", "content": "{\"categoria\": \"account\", \"priorità\": \"alta\"}"}]}
{"messages": [{"role": "system", "content": "Classifica la richiesta del cliente in JSON."}, {"role": "user", "content": "Vorrei cambiare il nome utente."}, {"role": "assistant", "content": "{\"categoria\": \"account\", \"priorità\": \"bassa\"}"}]}
{"messages": [{"role": "system", "content": "Classifica la richiesta del cliente in JSON."}, {"role": "user", "content": "Un ex dipendente ha ancora accesso, toglietelo subito."}, {"role": "assistant", "content": "{\"categoria\": \"account\", \"priorità\": \"alta\"}"}]}
{"messages": [{"role": "system", "content": "Classifica la richiesta del cliente in JSON."}, {"role": "user", "content": "Dove si attiva l'autenticazione a due fattori?"}, {"role": "assistant", "content": "{\"categoria\": \"account\", \"priorità\": \"bassa\"}"}]}
{"messages": [{"role": "system", "content": "Classifica la richiesta del cliente in JSON."}, {"role": "user", "content": "Il mio account risulta bloccato dopo tre tentativi, quando si sblocca?"}, {"role": "assistant", "content": "{\"categoria\": \"account\", \"priorità\": \"media\"}"}]}
{"messages": [{"role": "system", "content": "Classifica la richiesta del cliente in JSON."}, {"role": "user", "content": "Vorrei cancellare definitivamente il mio account e i miei dati."}, {"role": "assistant", "content": "{\"categoria\": \"account\", \"priorità\": \"media\"}"}]}
{"messages": [{"role": "system", "content": "Classifica la richiesta del cliente in JSON."}, {"role": "user", "content": "Si può avere l'interfaccia in inglese per un collega?"}, {"role": "assistant", "content": "{\"categoria\": \"account\", \"priorità\": \"bassa\"}"}]}
{"messages": [{"role": "system", "content": "Classifica la richiesta del cliente in JSON."}, {"role": "user", "content": "Le scarpe sono di una taglia sbagliata, come le restituisco?"}, {"role": "assistant", "content": "{\"categoria\": \"reso\", \"priorità\": \"media\"}"}]}
{"messages": [{"role": "system", "content": "Classifica la richiesta del cliente in JSON."}, {"role": "user", "content": "Il prodotto è arrivato rotto e mi serviva per un cliente domani mattina."}, {"role": "assistant", "content": "{\"categoria\": \"reso\", \"priorità\": \"alta\"}"}]}
{"messages": [{"role": "system", "content": "Classifica la richiesta del cliente in JSON."}, {"role": "user", "content": "Entro quanti giorni posso fare il reso?"}, {"role": "assistant", "content": "{\"categoria\": \"reso\", \"priorità\": \"bassa\"}"}]}
{"messages": [{"role": "system", "content": "Classifica la richiesta del cliente in JSON."}, {"role": "user", "content": "Ho mandato indietro il pacco tre settimane fa e il rimborso non è ancora arrivato."}, {"role": "assistant", "content": "{\"categoria\": \"reso\", \"priorità\": \"media\"}"}]}
{"messages": [{"role": "system", "content": "Classifica la richiesta del cliente in JSON."}, {"role": "user", "content": "Il caricabatterie si surriscalda e ha fatto fumo, lo voglio restituire."}, {"role": "assistant", "content": "{\"categoria\": \"reso\", \"priorità\": \"alta\"}"}]}
{"messages": [{"role": "system", "content": "Classifica la richiesta del cliente in JSON."}, {"role": "user", "content": "Posso cambiare il colore invece di avere il rimborso?"}, {"role": "assistant", "content": "{\"categoria\": \"reso\", \"priorità\": \"bassa\"}"}]}
{"messages": [{"role": "system", "content": "Classifica la richiesta del cliente in JSON."}, {"role": "user", "content": "Il modulo di reso sul sito non si apre."}, {"role": "assistant", "content": "{\"categoria\": \"reso\", \"priorità\": \"media\"}"}]}
{"messages": [{"role": "system", "content": "Classifica la richiesta del cliente in JSON."}, {"role": "user", "content": "Il reso me l'avete rifiutato senza spiegazione."}, {"role": "assistant", "content": "{\"categoria\": \"reso\", \"priorità\": \"media\"}"}]}
{"messages": [{"role": "system", "content": "Classifica la richiesta del cliente in JSON."}, {"role": "user", "content": "Le spese di spedizione del reso sono a carico mio?"}, {"role": "assistant", "content": "{\"categoria\": \"reso\", \"priorità\": \"bassa\"}"}]}
{"messages": [{"role": "system", "content": "Classifica la richiesta del cliente in JSON."}, {"role": "user", "content": "Mi avete mandato un prodotto diverso da quello ordinato, mi serve quello giusto entro giovedì."}, {"role": "assistant", "content": "{\"categoria\": \"reso\", \"priorità\": \"alta\"}"}]}And these 10 as validation.jsonl, with requests that don't appear in the training file:
{"messages": [{"role": "system", "content": "Classifica la richiesta del cliente in JSON."}, {"role": "user", "content": "La fattura di settembre ha un importo diverso dal preventivo."}, {"role": "assistant", "content": "{\"categoria\": \"fatturazione\", \"priorità\": \"media\"}"}]}
{"messages": [{"role": "system", "content": "Classifica la richiesta del cliente in JSON."}, {"role": "user", "content": "Accettate PayPal?"}, {"role": "assistant", "content": "{\"categoria\": \"fatturazione\", \"priorità\": \"bassa\"}"}]}
{"messages": [{"role": "system", "content": "Classifica la richiesta del cliente in JSON."}, {"role": "user", "content": "Il server di produzione non risponde, i clienti non riescono a fare ordini."}, {"role": "assistant", "content": "{\"categoria\": \"tecnico\", \"priorità\": \"alta\"}"}]}
{"messages": [{"role": "system", "content": "Classifica la richiesta del cliente in JSON."}, {"role": "user", "content": "Il pulsante Salva a volte va premuto due volte."}, {"role": "assistant", "content": "{\"categoria\": \"tecnico\", \"priorità\": \"media\"}"}]}
{"messages": [{"role": "system", "content": "Classifica la richiesta del cliente in JSON."}, {"role": "user", "content": "Il pacco è fermo in deposito da una settimana."}, {"role": "assistant", "content": "{\"categoria\": \"spedizione\", \"priorità\": \"media\"}"}]}
{"messages": [{"role": "system", "content": "Classifica la richiesta del cliente in JSON."}, {"role": "user", "content": "Spedite anche in Albania?"}, {"role": "assistant", "content": "{\"categoria\": \"spedizione\", \"priorità\": \"bassa\"}"}]}
{"messages": [{"role": "system", "content": "Classifica la richiesta del cliente in JSON."}, {"role": "user", "content": "Ricevo mail di reimpostazione della password che non ho chiesto."}, {"role": "assistant", "content": "{\"categoria\": \"account\", \"priorità\": \"alta\"}"}]}
{"messages": [{"role": "system", "content": "Classifica la richiesta del cliente in JSON."}, {"role": "user", "content": "Come cambio la foto del profilo?"}, {"role": "assistant", "content": "{\"categoria\": \"account\", \"priorità\": \"bassa\"}"}]}
{"messages": [{"role": "system", "content": "Classifica la richiesta del cliente in JSON."}, {"role": "user", "content": "Il tablet si spegne da solo dopo cinque minuti, voglio restituirlo."}, {"role": "assistant", "content": "{\"categoria\": \"reso\", \"priorità\": \"media\"}"}]}
{"messages": [{"role": "system", "content": "Classifica la richiesta del cliente in JSON."}, {"role": "user", "content": "Il prodotto che ho ricevuto è scaduto ed è un alimento per neonati."}, {"role": "assistant", "content": "{\"categoria\": \"reso\", \"priorità\": \"alta\"}"}]}The Download button at the top right of each box saves the file ready to use, in UTF-8.
Create the project
2. Create the resource group
On portal.azure.com, search for Resource groups and press + Create.
| Field | Value |
|---|---|
| Resource group name | rg-guide-ft-01 |
| Region | (Europe) Sweden Central |
Press Review + create, then Create.

3. Create the project
On ai.azure.com press Create project, open Advanced options and fill in the fields.
| Field | Value |
|---|---|
| Project name | proj-guide-ft-01 |
| Foundry resource | proj-guide-ft-01-resource |
| Region | Sweden Central |
| Resource group | rg-guide-ft-01 |
Leave Set up recommended resources off and press Create.

Train the model
4. Open fine-tuning
In the left menu, under Improve, press Fine-tune, then Start fine-tuning.

5. Choose method, model and training type
| Field | Value |
|---|---|
| Customization method | Supervised |
| Model | gpt-4.1-nano |
| Training type | Developer |
Press Next.

Developer training uses spare capacity: the job can wait in the queue or be paused, then resume on its own, and the pauses aren't billed. If you need a predictable duration, choose Global.
6. Upload the files
Under Training data source press Upload and choose training.jsonl; under Validation data source (optional) do the same with validation.jsonl. The preview on the right shows the number of rows: 50 and 10.

Upload the files from here: files uploaded earlier from the Data section don't appear in the Select a dataset drop-down.
Press Next.
7. Name the job and submit
In Display name type classifica-richieste. Leave the defaults for Batch size, Number of epochs and Learning rate multiplier, and leave Automatically deploy model after job completion off. Press Submit.

The job appears in the list with the status Queued.

8. Wait for it to finish
In the test the job went through these phases:
| Time | Phase |
|---|---|
| 20:38 | Queued, file checks |
| 20:45 | Started |
| 21:00 | Waiting for free GPUs |
| 21:15 | Training started |
| 21:30 | Completed |
The status updates on its own in the Fine-tuning list.
Read the result
9. Look at the details
Press the job name. The Details tab shows the duration, the training type, the billed tokens and the parameters the service chose: in the test 3 epochs, a batch size of 1 and a multiplier of 0.1.

10. Look at the metrics
The Monitor tab shows the loss and the token accuracy, for training and for validation. In the test the training loss starts at 1.97 on the first step and ends close to zero; on the whole validation file the final accuracy is 0.99.

11. Look at the checkpoints
The Checkpoints tab lists the final model and two intermediate ones, at steps 50 and 100. Each one can be deployed as a model of its own.

Deploy and compare
12. Deploy the trained model
On the job page press Deploy and fill in the panel.
| Field | Value |
|---|---|
| Deployment name | classifica-richieste |
| Deployment type | Developer |
Leave the other fields at their defaults and press Deploy. In the test the deployment was ready in 4 minutes.

A Developer deployment has no hourly fee and is billed per token, but it's deleted after 24 hours and has no availability guarantee: it's meant for testing. For continuous use choose Global Standard or Standard, which have an hourly fee.
13. Deploy the base model
To ask the untrained model the same question you also need plain gpt-4.1-nano. Open Discover, Models tab, search for gpt-4.1-nano, open the model card and press Deploy, then Default settings.
14. Ask both models the same question
Open Models, press classifica-richieste and, in the playground, type the same system message as in the files into Instructions:
Classifica la richiesta del cliente in JSON.Then type the request at the bottom and press Enter:
Il pagamento con carta va in errore e oggi scade l'abbonamento.The trained model answers with the two fields and the values from the examples.

Repeat with gpt-4.1-nano, same instructions and same request. The base model answers in JSON, but with fields and values of its own.

Two things found in the test:
- without the instructions used in the files, the trained model also answers with advice instead of the JSON;
- the Compare models button puts the two models side by side, but the Instructions apply only to the one on the left: a like-for-like comparison needs the two separate playgrounds.
Call the model from .NET
15. Get the endpoint
In the classifica-richieste playground press Continue in code, with Language set to C# and Authentication method set to Entra ID authentication.
| Field | Value |
|---|---|
| Project endpoint | https://proj-guide-ft-01-resource.services.ai.azure.com/openai/v1 |
| Deployment | classifica-richieste |

16. Create and run the application
dotnet new console -n ft-demo
cd ft-demo
dotnet add package Azure.Identity --version 1.21.0
dotnet add package OpenAI --version 2.14.0
az loginThe code generated by the portal doesn't compile with the OpenAI 2.14.0 package; this is the tested version. It replaces Program.cs and sends the model the instructions from the files and three requests that don't appear in the examples.
using Azure.Identity;
using OpenAI.Responses;
using System.ClientModel.Primitives;
#pragma warning disable OPENAI001
const string deploymentName = "classifica-richieste";
const string endpoint = "https://proj-guide-ft-01-resource.services.ai.azure.com/openai/v1";
BearerTokenPolicy tokenPolicy = new(
new DefaultAzureCredential(),
"https://ai.azure.com/.default");
ResponsesClient client = new(
tokenPolicy,
new ResponsesClientOptions { Endpoint = new Uri(endpoint) });
string[] richieste =
[
"Il pagamento con carta va in errore e oggi scade l'abbonamento.",
"Avete un numero di telefono per l'assistenza?",
"Il pacco è arrivato bagnato e la scatola è rotta, ma il contenuto sembra a posto.",
];
foreach (string richiesta in richieste)
{
CreateResponseOptions options = new(
deploymentName,
[ResponseItem.CreateUserMessageItem(richiesta)])
{
Instructions = "Classifica la richiesta del cliente in JSON.",
};
var response = await client.CreateResponseAsync(options);
Console.WriteLine($"{richiesta}\n -> {response.Value.GetOutputText()}\n");
}dotnet runIl pagamento con carta va in errore e oggi scade l'abbonamento.
-> {"categoria": "fatturazione", "priorità": "alta"}
Avete un numero di telefono per l'assistenza?
-> {"categoria": "assistenza", "priorità": "bassa"}
Il pacco è arrivato bagnato e la scatola è rotta, ma il contenuto sembra a posto.
-> {"categoria": "spedizione", "priorità": "alta"}The second request doesn't fit any of the five categories and the model made up a sixth one, assistenza: with 50 examples the model learns the format, not the boundaries. The values can also change from one run to the next: in another run the third request came out with priority media.
Delete the resources
17. Delete the resource group
First delete the two deployments: as long as they exist, the Foundry resource isn't deleted and the group stays.
az cognitiveservices account deployment delete --resource-group rg-guide-ft-01 --name proj-guide-ft-01-resource --deployment-name classifica-richieste
az cognitiveservices account deployment delete --resource-group rg-guide-ft-01 --name proj-guide-ft-01-resource --deployment-name gpt-4.1-nanoOn portal.azure.com open rg-guide-ft-01. It holds two resources: the Foundry resource and the project. The trained model, the files and the deployments live inside the Foundry resource.

Press Delete resource group, type rg-guide-ft-01 again and press Delete, then confirm in the window that appears.

Once the group is deleted, the Foundry resource stays soft-deleted and its name can't be reused. To free it right away:
az cognitiveservices account purge --name proj-guide-ft-01-resource --location swedencentral --resource-group rg-guide-ft-01Screenshots from November 10, 2026, Sweden Central region.