Source: https://aiprimetech.io/it/docs/getting-started/first-request/ [Home](/it/) / [Documentazione](/it/docs/) / La tua prima richiesta spiegata # La tua prima richiesta spiegata Una spiegazione riga per riga di una chiamata Messages: cosa fa ogni campo e cosa viene restituito. Copia pagina [ Visualizza in Markdown](/it/docs/getting-started/first-request.md) [ Chiedi a ChatGPT](https://chatgpt.com/?q=Read%20https%3A//aiprimetech.io/docs/getting-started/first-request.md%20and%20answer%20questions%20about%20it.%20Start%20with%20a%20short%20summary.) [ Chiedi in Claude](https://claude.ai/new?q=Read%20https%3A//aiprimetech.io/docs/getting-started/first-request.md%20and%20answer%20questions%20about%20it.%20Start%20with%20a%20short%20summary.) La guida rapida ti permette di ottenere una risposta. Questa pagina spiega il significato di ogni sua parte, così potrai scrivere autonomamente la richiesta successiva. ## La richiesta ``` Copycurl https://aiprimetech.io/v1/messages \ -H "x-api-key: $CLAUDEAPIKEY" \ -H "anthropic-version: 2023-06-01" \ -H "content-type: application/json" \ -d '{ "model": "claude-sonnet-4-6", "max_tokens": 1024, "messages": [{"role": "user", "content": "Hello"}] }' ``` | Campo | Obbligatorio | A cosa serve | model | sì | Quale modello eseguire. Deve corrispondere a un ID presente in /v1/models esattamente. | max_tokens | sì | Limite massimo rigido per l' output. Il modello si ferma a questo limite anche a metà frase. È un controllo dei costi, non un obiettivo. | messages | sì | La conversazione fino a questo momento, a partire dal messaggio più vecchio. Ogni voce ha un role (user o assistant) e content. | system | no | Istruzioni che si applicano all'intera conversazione. Un campo di primo livello, non un messaggio con role: system. | temperature | no | 0–1. Un valore più basso rende il comportamento più deterministico. Lascialo non impostato, a meno che tu non abbia un motivo per farlo. | stream | no | true restituisce eventi inviati dal server anziché un unico corpo JSON. Vedi [Streaming](/it/docs/api-reference/streaming/). ## La risposta ``` Copy{ "id": "msg_01ABC...", "type": "message", "role": "assistant", "model": "claude-sonnet-4-6", "content": [{"type": "text", "text": "Hello! How can I help?"}], "stop_reason": "end_turn", "usage": {"input_tokens": 9, "output_tokens": 12} } ``` - content è un array, non una stringa. Il testo si trova in content[0].text. Trattarlo come una stringa è il bug più comune nei client. - stop_reason indica perché la generazione è terminata: end_turn (completata), max_tokens (raggiunto il limite impostato — la risposta è troncata), stop_sequence, oppure tool_use. - usage è ciò su cui si basa la fatturazione. Registralo nei log; è l'unica base affidabile per l'attribuzione dei costi. Se stop_reason è max_tokens, la risposta è stata interrotta. Aumenta max_tokens oppure chiedi una risposta più breve — non riprovare alla cieca: paghi anche per l'output troncato. ## Conversazioni con più scambi L'API non mantiene lo stato. Per continuare una conversazione devi reinviare l'intera cronologia, incluse le risposte precedenti del modello: ``` Copy{ "model": "claude-sonnet-4-6", "max_tokens": 1024, "messages": [ {"role": "user", "content": "What is the capital of France?"}, {"role": "assistant", "content": "Paris."}, {"role": "user", "content": "And its population?"} ] } ``` Poiché la cronologia viene reinviata a ogni scambio, i token di input aumentano con la conversazione, così come il costo. Ecco perché le sessioni lunghe degli agenti diventano costose. [Caching dei prompt](/it/docs/guides/prompt-caching/) e [gestione del contesto](/it/docs/guides/context-management/) affrontano entrambi direttamente questo problema. [API MessagesRiferimento completo dei campi](/it/docs/api-reference/messages/)[StreamingRisposte token per token](/it/docs/api-reference/streaming/)[SDK PythonLa stessa chiamata in Python](/it/docs/sdks/python/) [PrecedenteURL di base](/it/docs/getting-started/base-urls/)[AvantiPanoramica dell'API](/it/docs/api-reference/overview/)