Hoppa till huvudinnehåll
OpenAI ChatGPT är ett mycket kraftfullt AI-dialogsystem som kan generera flytande och naturliga svar på bara några sekunder genom att mata in en prompt. ChatGPT utmärker sig i branschen med sin enastående språkförståelse och genereringsförmåga, och idag används ChatGPT redan i många olika branscher och områden, med en alltmer framträdande påverkan. Oavsett om det handlar om vardagliga samtal, kreativt skrivande eller professionell rådgivning och kodprogrammering, kan ChatGPT erbjuda imponerande intelligent assistans, vilket avsevärt ökar människors arbetsproduktivitet och kreativitet. Detta dokument beskriver huvudsakligen användningsflödet för OpenAI Chat Completion API, vilket gör att vi enkelt kan använda den officiella OpenAI ChatGPT:s dialogfunktion.

Ansökningsprocess

För att använda OpenAI Chat Completion API kan du först gå till OpenAI Chat Completion API sidan och klicka på “Acquire” knappen för att få de nödvändiga autentiseringsuppgifterna: Om du inte har loggat in eller registrerat dig kommer du automatiskt att omdirigeras till inloggningssidan där du uppmanas att registrera dig och logga in. Efter att du har loggat in eller registrerat dig kommer du automatiskt att återvända till den aktuella sidan. Vid första ansökan kommer det att finnas en gratis kvot som ges, så att du kan använda API:et gratis.

Grundläggande Användning

Därefter kan du fylla i motsvarande innehåll på gränssnittet, som visas i bilden:

Vid första användningen av detta gränssnitt behöver vi fylla i minst tre fält, ett är authorization, som du enkelt kan välja från rullgardinsmenyn. Den andra parametern är model, model är den kategori av OpenAI ChatGPT-modeller som vi väljer att använda, här har vi huvudsakligen 20 olika modeller, detaljer kan ses i de modeller vi tillhandahåller. Den sista parametern är messages, messages är en array av våra inmatade frågor, den är en array som gör det möjligt att ladda upp flera frågor samtidigt, varje fråga innehåller role och content, där role representerar frågeställarens roll, vi har tre olika roller: user, assistant, system. Den andra content är det specifika innehållet i vår fråga. Samtidigt kan du notera att det finns motsvarande kod för anrop på höger sida, du kan kopiera koden och köra den direkt, eller så kan du klicka på “Try” knappen för att testa. Vanliga valfria parametrar:
  • max_tokens: Begränsar det maximala antalet tokens för ett enstaka svar.
  • temperature: Genererar slumpmässighet, mellan 0-2, ju högre värde desto mer spritt.
  • n: Hur många kandidatsvar som ska genereras åt gången.
  • response_format: Inställningar för returformat.

Efter anropet upptäckte vi att returresultatet ser ut som följer:
{
  "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
}
Returresultatet innehåller flera fält, som beskrivs nedan:
  • id, ID för den genererade dialoguppgiften, används för att unikt identifiera denna dialoguppgift.
  • model, den valda OpenAI ChatGPT-modellen.
  • choices, ChatGPT:s svarsinformation på frågorna.
  • usage: Statistik över tokens för denna fråge- och svarsinteraktion.
Där choices innehåller ChatGPT:s svarsinformation, och i den finns choices från ChatGPT, som kan ses i bilden.

Det kan ses att content fältet i choices innehåller det specifika innehållet i ChatGPT:s svar.

Strömmande Svar

Detta gränssnitt stöder också strömmande svar, vilket är mycket användbart för webbgränssnitt, eftersom det kan göra att webbsidan visar texten ord för ord. Om du vill ha strömmande svar kan du ändra stream parametern i begärningshuvudet till true. Ändringen visas i bilden, men anropskoden behöver göras motsvarande ändringar för att stödja strömmande svar.

När stream ändras till true kommer API:et att returnera motsvarande JSON-data rad för rad, och på kodnivå behöver vi göra nödvändiga ändringar för att få radresultaten. Python exempel på anropskod:
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)
Utdataeffekten ser ut som följer:
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": "Hej", "role": "assistant"}, "index": 0}], "created": 1721007348, "id": "chatcmpl-YzczYjVhNjhjMzMwNDQ5MDkyNGYzOGZjZGE1ZGQ5OGU", "model": "gpt-4", "object": "chat.completion.chunk", "recipient": "all"}

data: {"choices": [{"delta": {"content": " där", "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": " Hur", "role": "assistant"}, "index": 0}], "created": 1721007348, "id": "chatcmpl-YzczYjVhNjhjMzMwNDQ5MDkyNGYzOGZjZGE1ZGQ5OGU", "model": "gpt-4", "object": "chat.completion.chunk", "recipient": "all"}

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

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

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

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

data: {"choices": [{"delta": {"content": " idag", "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: [DONE]

Det kan ses att svaret innehåller många data, data innehåller choices som är det senaste svaret, vilket är i linje med den tidigare beskrivningen. choices är det nya svaret, och du kan koppla det till ditt system baserat på resultatet. Samtidigt är slutet av den strömmande svaret baserat på innehållet i data, om innehållet är [DONE], indikerar det att det strömmande svaret har avslutats helt. De returnerade data resultaten har flera fält, som beskrivs nedan:
  • id, ID för att generera denna dialoguppgift, används för att unikt identifiera denna dialoguppgift.
  • model, den valda OpenAI ChatGPT-modellen.
  • choices, ChatGPT:s svarsinformation på frågorna.
JavaScript stöds också, till exempel Node.js strömmande anropskod ser ut så här:
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: "hej" }],
    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));
Java exempel kod:
JSONObject jsonObject = new JSONObject();
jsonObject.put("model", "gpt-4");
jsonObject.put("messages", [{"role":"user","content":"hej"}]);
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())
Andra språk kan skrivas om på egen hand, principen är densamma.

Flera rundor av dialog

Om du vill koppla fler rundor av dialogfunktionalitet, behöver du ladda upp flera frågor i messages-fältet, specifika exempel på flera frågor visas nedan:

Python exempel anropskod:
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":"Hej"},{"role":"assistant","content":"Hej! Hur kan jag hjälpa dig idag?"},{"role":"user","content":"Vad sa jag nyss?"}]
}

response = requests.post(url, json=payload, headers=headers)
print(response.text)
Genom att ladda upp flera frågor kan man enkelt genomföra flerrundiga samtal och få följande svar:
{
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": "Du sa, \"Hej.\""
      },
      "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
  }
}
Man kan se att informationen i choices är i linje med det grundläggande användningsinnehållet, vilket innehåller ChatGPT:s specifika svar på flera samtal, så att man kan svara på motsvarande frågor baserat på flera samtalsinnehåll.

Integrera OpenAI-Python

OpenAI Chat Completion API-tjänstens upstream är den officiella OpenAI-tjänsten, mer information kan hittas på den officiella OpenAI-Python, denna artikel kommer kort att introducera hur man använder den officiellt tillhandahållna tjänsten.
  1. Först behöver du sätta upp en lokal Python-miljö, denna process kan du söka på Google.
  2. Ladda ner och installera utvecklingsmiljön, till exempel installera VSCode-redigeraren.
  3. Konfigurera OpenAI-miljövariabler.
  • I projektmappen, skapa en fil som heter .env och spara
  • Innehållet i .env-filen:
OPENAI_API_KEY="sk-xxx"
OPENAI_BASE_URL="https://api.acedata.cloud/openai"  # Återigen påminner jag: om du använder officiella OpenAI-nyckeln, använd inte denna adress.
Ersätt sk-xxx med din egen nyckel. OPENAI_BASE_URL är proxygränssnittet för att få tillgång till OpenAI.
  1. Installera projektets beroendepaket
pip install openai
Kommandot för Mac OS är:
pip3 install openai
  1. Skapa en exempel källkodfil
Anta att vi har skapat en exempel kod index.py, med följande innehåll:
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": "hej",
        }
    ],
    model="gpt-4",
)

print(response.text)

Nätverksmodell

gpt-3.5-browsing och gpt-4-browsing modellerna skiljer sig från andra modeller, de kan utföra nätverkssökningar baserat på frågorna och justera resultaten av nätverkssökningen för att returnera dem till dig. Denna artikel kommer att demonstrera nätverksfunktionen genom ett konkret exempel, och du kan fylla i motsvarande innehåll på OpenAI Chat Completion API-gränssnittet, som visas i bilden:

Samtidigt kan du notera att det finns motsvarande kodgenerering till höger, du kan kopiera koden för att köra den direkt, eller klicka på “Prova”-knappen för att testa.

Efter anropet upptäckte vi att det returnerade resultatet ser ut som följer:
{
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": "För de senaste nyheterna i Kina idag kan du kolla stora nyhetswebbplatser som:\n\n- [BBC News Kina](https://www.bbc.com/news/world/asia/china)\n- [CNN Kina Nyheter](https://edition.cnn.com/china)\n- [Reuters Kina](https://www.reuters.com/news/archive/china-news)\n\nDessa källor kommer att ha uppdaterad information om aktuella händelser i Kina."
      },
      "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
  }
}
Man kan se att svaret i choices är baserat på nätverksfrågan och ger också relevanta länkar. Informationen i choices måste renderas med markdown-syntax för att få den bästa upplevelsen, vilket också visar den kraftfulla fördelen med vår modells nätverksfunktion.

Visuell modell

gpt-4o är en multimodal stor språkmodell utvecklad av OpenAI, som har ökat den visuella förståelseförmågan baserat på GPT-4. Denna modell kan hantera både text- och bildinmatningar samtidigt, vilket möjliggör korsmodal förståelse och generering. Användningen av gpt-4o-modellens textbehandling är densamma som det grundläggande användningsinnehållet ovan, nedan kommer jag kort att introducera hur man använder modellens bildbehandlingskapacitet. Användningen av gpt-4o-modellens bildbehandlingskapacitet sker huvudsakligen genom att lägga till ett type-fält i det ursprungliga content-innehållet, vilket gör att man kan veta om det som laddas upp är text eller bild, och därmed använda gpt-4o-modellens bildbehandlingskapacitet. Nedan kommer jag att beskriva hur man anropar denna funktion med både Curl och Python.
  • Curl-skriptmetod
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": "Vad finns i denna bild?"
          },
          {
            "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"
            }
          }
        ]
      }
    ]
  }'
  • Python-skriptmetod
```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": "Vad finns i den här bilden?"
                },
                {
                    "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)
Sedan kan man få följande resultat, där fältinformationen är densamma som ovan, specifikt som följer:
{
  "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\nDenna bild visar en träbro som sträcker sig genom ett frodigt grönt träsk."
      },
      "logprobs": null,
      "finish_reason": "stop"
    }
  ],
  "usage": {
    "prompt_tokens": 9,
    "completion_tokens": 12,
    "total_tokens": 21
  }
}
Man kan se att svaret är baserat på bilden, så genom ovanstående två sätt kan man enkelt använda gpt-4-vision-modellens text- och bildbehandlingsförmåga. Förutom gpt-4o finns det en kostnadseffektivare modell som kallas gpt-4o-mini. gpt-4o-mini är OpenAI:s senaste generation av stora språkmodeller, som inte bara har snabbare svarstider utan också är billigare och stödjer multimodalitet. Användningen av vision-funktionen kan refereras till ovanstående innehåll om användningen av gpt-4o-modellen.

GPT-4o ritmodell

Exempel på begäran:
{
  "model": "gpt-4o-image",
  "messages": [
    {
      "role": "user",
      "content": [
        {
          "type": "text",
          "text": "Generera en bild i Ghibli-stil, och sätt på en hatt"
        },
        {
          "type": "file_url",
          "file_url": {
            "url": "https://cdn.acedata.cloud/qzx2z1.png"
          }
        }
      ]
    }
  ],
  "stream": false
}
Exempelresultat:
{
  "id": "chatcmpl-89CXTr5EHi7WgiO3qSzWxvmqwfryP",
  "object": "chat.completion.chunk",
  "model": "gpt-4o-image",
  "created": 1744395060,
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": "{\n  \"prompt\": \"En ung kvinna med långt svart hår som bär en vit klänning som står i en naturskön utomhusmiljö. Bilden är i stil med Studio Ghibli-animation, med mjuka färger och delikata detaljer. Hon bär en söt, stilfull hatt, med ett varmt och glatt leende. Bakgrunden visar frodig grönska och en lugn atmosfär, med solljus som filtreras genom träden.\",\n  \"size\": \"1024x1024\"\n}\n\n\n![file-96TSnzJ6MipkZwCmmYEZSA](https://filesystem.site/cdn/20250412/s8EFrYVqeRWc5SfTmF1SbgBS2WFGXb.webp)\n[Hämta⏬](https://filesystem.site/cdn/download/20250412/s8EFrYVqeRWc5SfTmF1SbgBS2WFGXb.webp)\n\nHär är bilden skapad i stil med Studio Ghibli, med en ung kvinna som bär en vit klänning och en stilfull hatt i en naturskön utomhusmiljö. Den mjuka, varma atmosfären fångas med försiktiga detaljer och livfulla färger."
      },
      "finish_reason": "stop"
    }
  ],
  "usage": {
    "prompt_tokens": 70,
    "completion_tokens": 17,
    "total_tokens": 87
  }
}

Felhantering

Vid anrop av API:et, om ett fel uppstår, kommer API:et att returnera motsvarande felkod och information. Till exempel:
  • 400 token_mismatched: Felaktig begäran, möjligtvis på grund av saknade eller ogiltiga parametrar.
  • 400 api_not_implemented: Felaktig begäran, möjligtvis på grund av saknade eller ogiltiga parametrar.
  • 401 invalid_token: Obefogad, ogiltig eller saknad auktoriseringstoken.
  • 429 too_many_requests: För många begärningar, du har överskridit hastighetsgränsen.
  • 500 api_error: Intern serverfel, något gick fel på servern.

Exempel på felrespons

{
  "success": false,
  "error": {
    "code": "api_error",
    "message": "hämtning misslyckades"
  },
  "trace_id": "2cf86e86-22a4-46e1-ac2f-032c0f2a4e89"
}

Slutsats

Genom detta dokument har du fått en förståelse för hur man använder OpenAI Chat Completion API för att enkelt implementera den officiella OpenAI ChatGPT:s samtalsfunktion. Vi hoppas att detta dokument kan hjälpa dig att bättre integrera och använda API:et. Om du har några frågor, tveka inte att kontakta vårt tekniska supportteam.