Vai al contenuto principale
OpenAI ChatGPT è un potente sistema di dialogo AI che, inserendo una parola chiave, può generare risposte fluide e naturali in pochi secondi. ChatGPT si distingue nel settore per la sua eccellente comprensione e capacità di generazione del linguaggio; oggi, ChatGPT è ampiamente utilizzato in vari settori e ambiti, la sua influenza è sempre più significativa. Che si tratti di conversazioni quotidiane, scrittura creativa, consulenze professionali o programmazione di codice, ChatGPT può fornire un’assistenza intelligente sorprendente, aumentando notevolmente l’efficienza e la creatività umana. Questo documento descrive principalmente il processo di utilizzo dell’API OpenAI Chat Completion, che ci consente di utilizzare facilmente le funzionalità di dialogo ufficiali di OpenAI ChatGPT.

Processo di richiesta

Per utilizzare l’API OpenAI Chat Completion, è possibile visitare la pagina OpenAI Chat Completion API e fare clic sul pulsante “Acquire” per ottenere le credenziali necessarie per la richiesta: Se non si è ancora registrati o loggati, si verrà automaticamente reindirizzati alla pagina di accesso per registrarsi e accedere; dopo aver effettuato la registrazione e l’accesso, si tornerà automaticamente alla pagina corrente. Alla prima richiesta, verrà fornito un credito gratuito, che consente di utilizzare l’API senza costi.

Utilizzo di base

Successivamente, è possibile compilare i contenuti corrispondenti nell’interfaccia, come mostrato nell’immagine:

Quando si utilizza l’interfaccia per la prima volta, è necessario compilare almeno tre contenuti: uno è authorization, che può essere selezionato direttamente dal menu a discesa. Un altro parametro è model, che rappresenta la categoria del modello di OpenAI ChatGPT che si desidera utilizzare; qui abbiamo principalmente 20 modelli, i dettagli possono essere consultati nei modelli forniti. L’ultimo parametro è messages, che è un array di parole chiave che inseriamo; rappresenta un array che consente di caricare più parole chiave contemporaneamente, ogni parola chiave contiene role e content, dove role indica il ruolo del richiedente; abbiamo fornito tre identità: user, assistant, system. L’altro content è il contenuto specifico della nostra domanda. Inoltre, si può notare che a destra c’è un codice di chiamata corrispondente generato; è possibile copiare il codice e eseguirlo direttamente, oppure fare clic sul pulsante “Try” per testarlo. Parametri opzionali comuni:
  • max_tokens: limita il numero massimo di token nella risposta.
  • temperature: genera casualità, tra 0-2, valori più alti portano a maggiore dispersione.
  • n: quante risposte candidate generare in una volta.
  • response_format: impostazione del formato di ritorno.

Dopo la chiamata, scopriamo che il risultato restituito è il seguente:
{
  "id": "chatcmpl-Cmd6uwSxN75F4PAdQSFEO8f2QPs4E",
  "object": "chat.completion",
  "created": 1765706120,
  "model": "gpt-5.2",
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": "Hello! What can I help you with today?",
        "refusal": null,
        "annotations": []
      },
      "finish_reason": "stop"
    }
  ],
  "usage": {
    "prompt_tokens": 7,
    "completion_tokens": 13,
    "total_tokens": 20,
    "prompt_tokens_details": {
      "cached_tokens": 0,
      "audio_tokens": 0
    },
    "completion_tokens_details": {
      "reasoning_tokens": 0,
      "audio_tokens": 0,
      "accepted_prediction_tokens": 0,
      "rejected_prediction_tokens": 0
    }
  },
  "service_tier": "default",
  "system_fingerprint": null
}
Il risultato restituito contiene diversi campi, descritti come segue:
  • id, l’ID della generazione di questo compito di dialogo, utilizzato per identificare univocamente questo compito di dialogo.
  • model, il modello di OpenAI ChatGPT selezionato.
  • choices, le informazioni di risposta fornite da ChatGPT in base alle parole chiave.
  • usage: informazioni statistiche sui token per questa domanda e risposta.
Tra cui choices contiene le informazioni di risposta di ChatGPT, dove si può notare come mostrato nell’immagine.

Si può vedere che il campo content all’interno di choices contiene il contenuto specifico della risposta di ChatGPT.

Risposta in streaming

Questa interfaccia supporta anche le risposte in streaming, il che è molto utile per l’integrazione web, consentendo di visualizzare il contenuto parola per parola. Se si desidera restituire una risposta in streaming, è possibile modificare il parametro stream nell’intestazione della richiesta, impostandolo su true. La modifica è mostrata nell’immagine, ma il codice di chiamata deve essere adeguatamente modificato per supportare la risposta in streaming.

Dopo aver modificato stream in true, l’API restituirà i dati JSON riga per riga; a livello di codice, è necessario apportare le modifiche necessarie per ottenere i risultati riga per riga. Esempio di codice di chiamata in Python:
import requests

url = "https://api.acedata.cloud/openai/chat/completions"

headers = {
    "accept": "application/json",
    "authorization": "Bearer {token}",
    "content-type": "application/json"
}

payload = {
    "model": "gpt-4",
    "messages": [{"role":"user","content":"hello"}],
    "stream": True
}

response = requests.post(url, json=payload, headers=headers)
print(response.text)
L’output sarà il seguente:
data: {"choices": [{"delta": {"role": "assistant"}, "index": 0}], "created": 1721007348, "id": "chatcmpl-YzczYjVhNjhjMzMwNDQ5MDkyNGYzOGZjZGE1ZGQ5OGU", "model": "gpt-4", "object": "chat.completion.chunk", "recipient": "all"}

data: {"choices": [{"delta": {"content": "Ciao", "role": "assistant"}, "index": 0}], "created": 1721007348, "id": "chatcmpl-YzczYjVhNjhjMzMwNDQ5MDkyNGYzOGZjZGE1ZGQ5OGU", "model": "gpt-4", "object": "chat.completion.chunk", "recipient": "all"}

data: {"choices": [{"delta": {"content": " lì", "role": "assistant"}, "index": 0}], "created": 1721007348, "id": "chatcmpl-YzczYjVhNjhjMzMwNDQ5MDkyNGYzOGZjZGE1ZGQ5OGU", "model": "gpt-4", "object": "chat.completion.chunk", "recipient": "all"}

data: {"choices": [{"delta": {"content": "!", "role": "assistant"}, "index": 0}], "created": 1721007348, "id": "chatcmpl-YzczYjVhNjhjMzMwNDQ5MDkyNGYzOGZjZGE1ZGQ5OGU", "model": "gpt-4", "object": "chat.completion.chunk", "recipient": "all"}

data: {"choices": [{"delta": {"content": " Come", "role": "assistant"}, "index": 0}], "created": 1721007348, "id": "chatcmpl-YzczYjVhNjhjMzMwNDQ5MDkyNGYzOGZjZGE1ZGQ5OGU", "model": "gpt-4", "object": "chat.completion.chunk", "recipient": "all"}

data: {"choices": [{"delta": {"content": " posso", "role": "assistant"}, "index": 0}], "created": 1721007348, "id": "chatcmpl-YzczYjVhNjhjMzMwNDQ5MDkyNGYzOGZjZGE1ZGQ5OGU", "model": "gpt-4", "object": "chat.completion.chunk", "recipient": "all"}

data: {"choices": [{"delta": {"content": " aiutarti", "role": "assistant"}, "index": 0}], "created": 1721007348, "id": "chatcmpl-YzczYjVhNjhjMzMwNDQ5MDkyNGYzOGZjZGE1ZGQ5OGU", "model": "gpt-4", "object": "chat.completion.chunk", "recipient": "all"}

data: {"choices": [{"delta": {"content": " oggi", "role": "assistant"}, "index": 0}], "created": 1721007348, "id": "chatcmpl-YzczYjVhNjhjMzMwNDQ5MDkyNGYzOGZjZGE1ZGQ5OGU", "model": "gpt-4", "object": "chat.completion.chunk", "recipient": "all"}

data: {"choices": [{"delta": {"content": "?", "role": "assistant"}, "index": 0}], "created": 1721007348, "id": "chatcmpl-YzczYjVhNjhjMzMwNDQ5MDkyNGYzOGZjZGE1ZGQ5OGU", "model": "gpt-4", "object": "chat.completion.chunk", "recipient": "all"}

data: {"choices": [{"delta": {"role": "assistant"}, "index": 0}], "created": 1721007348, "id": "chatcmpl-YzczYjVhNjhjMzMwNDQ5MDkyNGYzOGZjZGE1ZGQ5OGU", "model": "gpt-4", "object": "chat.completion.chunk", "recipient": "all"}

data: {"choices": [{"delta": {"role": "assistant"}, "finish_reason": "stop", "index": 0}], "created": 1721007349, "id": "chatcmpl-YzczYjVhNjhjMzMwNDQ5MDkyNGYzOGZjZGE1ZGQ5OGU", "model": "gpt-4", "object": "chat.completion.chunk", "recipient": "all"}

data: [FINE]

Puoi vedere che nella risposta ci sono molti data, data contiene choices che rappresentano il contenuto della risposta più recente, coerente con quanto descritto in precedenza. choices è il contenuto della risposta aggiunto, che puoi integrare nel tuo sistema. Inoltre, la fine della risposta in streaming è determinata dal contenuto di data; se il contenuto è [FINE], significa che la risposta in streaming è completamente terminata. I risultati restituiti da data hanno diversi campi, descritti come segue:
  • id, l’ID generato per questa attività di conversazione, utilizzato per identificare univocamente questa attività di conversazione.
  • model, il modello scelto dal sito ufficiale di OpenAI ChatGPT.
  • choices, le informazioni di risposta fornite da ChatGPT in base alla domanda.
JavaScript è supportato, ad esempio, il codice per la chiamata in streaming di Node.js è il seguente:
const options = {
  method: "post",
  headers: {
    accept: "application/json",
    authorization: "Bearer {token}",
    "content-type": "application/json",
  },
  body: JSON.stringify({
    model: "gpt-4",
    messages: [{ role: "user", content: "ciao" }],
    stream: true,
  }),
};

fetch("https://api.acedata.cloud/openai/chat/completions", options)
  .then((response) => response.json())
  .then((response) => console.log(response))
  .catch((err) => console.error(err));
Esempio di codice Java:
JSONObject jsonObject = new JSONObject();
jsonObject.put("model", "gpt-4");
jsonObject.put("messages", [{"role":"user","content":"ciao"}]);
jsonObject.put("stream", true);
MediaType mediaType = "application/json; charset=utf-8".toMediaType();
RequestBody body = jsonObject.toString().toRequestBody(mediaType);
Request request = new Request.Builder()
  .url("https://api.acedata.cloud/openai/chat/completions")
  .post(body)
  .addHeader("accept", "application/json")
  .addHeader("authorization", "Bearer {token}")
  .addHeader("content-type", "application/json")
  .build();

OkHttpClient client = new OkHttpClient();
Response response = client.newCall(request).execute();
System.out.print(response.body!!.string())
Altre lingue possono essere riscritte autonomamente, il principio è lo stesso.

Conversazione a più turni

Se desideri integrare la funzionalità di conversazione a più turni, devi caricare più domande nel campo messages, un esempio specifico di più domande è mostrato nell’immagine sottostante:

Esempio di codice Python:
import requests

url = "https://api.acedata.cloud/openai/chat/completions"

headers = {
    "accept": "application/json",
    "authorization": "Bearer {token}",
    "content-type": "application/json"
}

payload = {
    "model": "gpt-4",
    "messages": [{"role":"user","content":"Ciao"},{"role":"assistant","content":"Ciao! Come posso assisterti oggi?"},{"role":"user","content":"Cosa ho appena detto?"}]
}

response = requests.post(url, json=payload, headers=headers)
print(response.text)
Attraverso il caricamento di più domande, è possibile realizzare facilmente un dialogo a più turni, ottenendo la seguente risposta:
{
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": "Hai detto, \"Ciao.\""
      },
      "finish_reason": "stop"
    }
  ],
  "created": 1721323012,
  "id": "chatcmpl-NWZmOTA5MDlkZjBjNDRjNGEwMzRjYzA5NmM1MzQwMWY",
  "model": "gpt-4",
  "object": "chat.completion.chunk",
  "recipient": "all",
  "usage": {
    "prompt_tokens": 31,
    "completion_tokens": 6,
    "total_tokens": 37
  }
}
Si può notare che le informazioni contenute in choices sono coerenti con il contenuto di base utilizzato, includendo il contenuto specifico delle risposte di ChatGPT a più dialoghi, permettendo così di rispondere a domande corrispondenti in base ai contenuti di più dialoghi.

Integrazione con OpenAI-Python

Il servizio OpenAI Chat Completion API è alimentato dal servizio ufficiale di OpenAI, per dettagli si può consultare il OpenAI-Python ufficiale, in questo articolo verrà fornita una breve introduzione su come utilizzare il servizio fornito ufficialmente.
  1. Prima di tutto, è necessario impostare un ambiente Python locale, questo processo può essere cercato su Google.
  2. Scaricare e installare l’ambiente di sviluppo, ad esempio installare l’editor VSCode.
  3. Configurare le variabili d’ambiente OpenAI.
  • Nella cartella del progetto, creare un file chiamato .env e salvarlo.
  • Contenuto del file .env:
OPENAI_API_KEY="sk-xxx"
OPENAI_BASE_URL="https://api.acedata.cloud/openai"  # Ricorda: se utilizzi la chiave OpenAI ufficiale, non utilizzare questo indirizzo.
Sostituisci sk-xxx con la tua chiave. OPENAI_BASE_URL è l’interfaccia proxy per accedere a OpenAI.
  1. Installare i pacchetti dipendenti del progetto
pip install openai
Il comando per Mac OS è:
pip3 install openai
  1. Creare un file di codice sorgente di esempio
Supponiamo di aver creato un codice di esempio index.py, il contenuto specifico è il seguente:
import os
from openai import OpenAI

client = OpenAI(api_key=os.environ.get("OPENAI_API_KEY"))

response = client.chat.completions.create(
    messages=[
        {
            "role": "user",
            "content": "ciao",
        }
    ],
    model="gpt-4",
)

print(response.text)

Modello di navigazione

I modelli gpt-3.5-browsing e gpt-4-browsing sono diversi dagli altri modelli, possono effettuare ricerche online in base alle domande e restituire i risultati della ricerca online con le dovute modifiche, in questo articolo verrà mostrato un esempio concreto per dimostrare la funzionalità di navigazione, successivamente si possono compilare i contenuti corrispondenti nell’interfaccia OpenAI Chat Completion API, come mostrato nell’immagine:

Allo stesso tempo, puoi notare che a destra ci sono i codici di chiamata generati corrispondenti, puoi copiare il codice e eseguirlo direttamente, oppure puoi semplicemente fare clic sul pulsante “Prova” per testarlo.

Dopo la chiamata, abbiamo scoperto che il risultato restituito è il seguente:
{
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": "Per le ultime notizie in Cina oggi, puoi controllare i principali siti di notizie come:\n\n- [BBC News Cina](https://www.bbc.com/news/world/asia/china)\n- [CNN Notizie Cina](https://edition.cnn.com/china)\n- [Reuters Cina](https://www.reuters.com/news/archive/china-news)\n\nQueste fonti avranno informazioni aggiornate sugli eventi attuali in Cina."
      },
      "finish_reason": "stop"
    }
  ],
  "created": 1721009347,
  "id": "chatcmpl-YzA0M2RjZDVkYThlNDkxNTkzOThmZWQ4OGMzNzdhNzA",
  "model": "gpt-4-browsing",
  "object": "chat.completion.chunk",
  "recipient": "all",
  "usage": {
    "prompt_tokens": 325,
    "completion_tokens": 82,
    "total_tokens": 407
  }
}
Si può notare che le informazioni di risposta all’interno di choices sono state ottenute in base alla ricerca online e sono stati forniti anche i link pertinenti, le informazioni di risposta all’interno di choices devono essere renderizzate utilizzando la sintassi markdown, in modo da ottenere la migliore esperienza, infine questo dimostra anche il potente vantaggio della funzionalità di navigazione del nostro modello.

Modello visivo

gpt-4o è un modello linguistico di grandi dimensioni multimodale sviluppato da OpenAI, che ha aumentato la capacità di comprensione visiva sulla base di GPT-4. Questo modello può gestire simultaneamente input di testo e immagini, realizzando una comprensione e generazione cross-modale. L’elaborazione del testo utilizzando il modello gpt-4o è coerente con il contenuto di base utilizzato in precedenza, di seguito verrà fornita una breve introduzione su come utilizzare la capacità di elaborazione delle immagini del modello. L’uso della capacità di elaborazione delle immagini del modello gpt-4o avviene principalmente aggiungendo un campo type al contenuto content originale, attraverso il quale si può sapere se ciò che viene caricato è testo o immagine, permettendo così di utilizzare la capacità di elaborazione delle immagini del modello gpt-4o, di seguito si parlerà principalmente di come chiamare questa funzionalità utilizzando Curl e Python.
  • Metodo Curl
curl -X POST 'https://api.acedata.cloud/openai/chat/completions' \
-H 'accept: application/json' \
-H 'authorization: Bearer {token}' \
-H 'content-type: application/json' \
-d '{
    "model": "gpt-4o",
    "messages": [
      {
        "role": "user",
        "content": [
          {
            "type": "text",
            "text": "Cosa c'è in questa immagine?"
          },
          {
            "type": "image_url",
            "image_url": {
              "url": "https://upload.wikimedia.org/wikipedia/commons/thumb/d/dd/Gfp-wisconsin-madison-the-nature-boardwalk.jpg/2560px-Gfp-wisconsin-madison-the-nature-boardwalk.jpg"
            }
          }
        ]
      }
    ]
  }'
  • Metodo Python
```python
import requests

url = "https://api.acedata.cloud/openai/chat/completions"

headers = {
    "accept": "application/json",
    "authorization": "Bearer {token}",
    "content-type": "application/json"
}

payload = {
    "model": "gpt-4o",
    "messages": [
        {
            "role": "user",
            "content": [
                {
                    "type": "text", "text": "Cosa c'è in questa immagine?"
                },
                {
                    "type": "image_url",
                    "image_url": {
                        "url": "https://upload.wikimedia.org/wikipedia/commons/thumb/d/dd/Gfp-wisconsin-madison-the-nature-boardwalk.jpg/2560px-Gfp-wisconsin-madison-the-nature-boardwalk.jpg"
                    }
                },
            ],
        }
    ]
}

response = requests.post(url, json=payload, headers=headers)
print(response.text)
Poi si può ottenere il seguente risultato, le informazioni dei campi nel risultato sono coerenti con quelle sopra, nello specifico come segue:
{
  "id": "chatcmpl-123",
  "object": "chat.completion",
  "created": 1677652288,
  "model": "gpt-4-vision-preview",
  "system_fingerprint": "fp_44709d6fcb",
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": "\n\nQuesta immagine mostra un ponte di legno che si estende attraverso una lussureggiante palude verde."
      },
      "logprobs": null,
      "finish_reason": "stop"
    }
  ],
  "usage": {
    "prompt_tokens": 9,
    "completion_tokens": 12,
    "total_tokens": 21
  }
}
Si può notare che il contenuto della risposta è basato sull’immagine, quindi attraverso i due metodi sopra si può facilmente utilizzare le capacità di elaborazione di testo e immagine del modello gpt-4-vision. Oltre a gpt-4o, c’è un modello a costo inferiore chiamato gpt-4o-mini. gpt-4o-mini è l’ultima generazione di modelli di linguaggio di grandi dimensioni sviluppati da OpenAI, che non solo ha una velocità di risposta rapida, ma è anche più economico e supporta il multimodale. L’uso delle funzionalità di visione può fare riferimento al contenuto dell’uso del modello gpt-4o sopra.

Modello di disegno GPT-4o

Esempio di richiesta:
{
  "model": "gpt-4o-image",
  "messages": [
    {
      "role": "user",
      "content": [
        {
          "type": "text",
          "text": "Genera un'immagine in stile Ghibli e metti un cappello"
        },
        {
          "type": "file_url",
          "file_url": {
            "url": "https://cdn.acedata.cloud/qzx2z1.png"
          }
        }
      ]
    }
  ],
  "stream": false
}
Esempio di risultato:
{
  "id": "chatcmpl-89CXTr5EHi7WgiO3qSzWxvmqwfryP",
  "object": "chat.completion.chunk",
  "model": "gpt-4o-image",
  "created": 1744395060,
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": "{\n  \"prompt\": \"Una giovane donna con lunghi capelli neri che indossa un vestito bianco in un ambiente esterno scenico. L'immagine è nello stile dell'animazione dello Studio Ghibli, con colori tenui e dettagli delicati. Indossa un cappello carino e alla moda, con un sorriso caldo e allegro. Lo sfondo mostra una vegetazione lussureggiante e un'atmosfera pacifica, con la luce del sole che filtra attraverso gli alberi.\",\n  \"size\": \"1024x1024\"\n}\n\n\n![file-96TSnzJ6MipkZwCmmYEZSA](https://filesystem.site/cdn/20250412/s8EFrYVqeRWc5SfTmF1SbgBS2WFGXb.webp)\n[Scarica⏬](https://filesystem.site/cdn/download/20250412/s8EFrYVqeRWc5SfTmF1SbgBS2WFGXb.webp)\n\nEcco l'immagine creata nello stile dello Studio Ghibli, che presenta una giovane donna che indossa un vestito bianco e un cappello elegante in un ambiente esterno scenico. L'atmosfera morbida e calda è catturata con dettagli delicati e colori vivaci."
      },
      "finish_reason": "stop"
    }
  ],
  "usage": {
    "prompt_tokens": 70,
    "completion_tokens": 17,
    "total_tokens": 87
  }
}

Gestione degli errori

Quando si chiama l’API, se si verifica un errore, l’API restituirà il codice di errore e le informazioni corrispondenti. Ad esempio:
  • 400 token_mismatched: Richiesta non valida, probabilmente a causa di parametri mancanti o non validi.
  • 400 api_not_implemented: Richiesta non valida, probabilmente a causa di parametri mancanti o non validi.
  • 401 invalid_token: Non autorizzato, token di autorizzazione non valido o mancante.
  • 429 too_many_requests: Troppe richieste, hai superato il limite di frequenza.
  • 500 api_error: Errore interno del server, qualcosa è andato storto sul server.

Esempio di risposta di errore

{
  "success": false,
  "error": {
    "code": "api_error",
    "message": "fetch failed"
  },
  "trace_id": "2cf86e86-22a4-46e1-ac2f-032c0f2a4e89"
}

Conclusione

Attraverso questo documento, hai compreso come utilizzare facilmente l’API OpenAI Chat Completion per implementare le funzionalità di conversazione di OpenAI ChatGPT. Speriamo che questo documento possa aiutarti a integrare e utilizzare meglio questa API. Se hai domande, non esitare a contattare il nostro team di supporto tecnico.