Czym jest API zgodne z OpenAI?

Wielu dostawców LLM i serwerów wnioskowania hostowanych samodzielnie — OpenAI, Azure OpenAI, Groq, OpenRouter, Together AI, Mistral, DeepSeek, vLLM, serwer llama.cpp, LM Studio oraz tryb zgodny z OpenAI w Ollama — udostępnia ten sam interfejs REST spopularyzowany przez OpenAI: żądania JSON do endpointów takich jak /v1/chat/completions, uwierzytelniane za pomocą tokenu Bearer w nagłówku Authorization. Dzięki temu można zmieniać dostawcę bez przepisywania kodu integracji.

Ręczne napisanie poprawnego polecenia cURL dla tych endpointów wymaga dokładnego ustawienia adresu URL, nagłówków i treści JSON, szczególnie podczas dostrajania parametrów próbkowania, takich jak temperatura i kary, lub przełączania między żądaniami czatu, starszych uzupełnień i embeddings.

Opis narzędzia

To narzędzie generuje gotowe do użycia polecenia cURL dla dowolnego API zgodnego z OpenAI. Ustaw adres bazowy, endpoint, model i parametry, a natychmiast otrzymasz poprawnie sformatowane polecenie cURL, gotowe do wklejenia do terminala lub skryptów.

Przykłady

Uzupełnianie czatu:

curl -X POST "https://api.openai.com/v1/chat/completions" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -d '{
  "model": "gpt-4o-mini",
  "messages": [
    { "role": "system", "content": "Jesteś pomocnym asystentem programistycznym." },
    { "role": "user", "content": "Napisz funkcję w Python do odwracania łańcucha znaków" }
  ],
  "temperature": 0.3,
  "stream": false
}'

Serwer hostowany samodzielnie (vLLM, llama.cpp, LM Studio, ...):

curl -X POST "http://localhost:8000/v1/chat/completions" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -d '{
  "model": "llama-3-8b-instruct",
  "messages": [
    { "role": "user", "content": "Podsumuj fabułę Hamleta w dwóch zdaniach" }
  ],
  "stream": true
}'

Embeddings:

curl -X POST "https://api.openai.com/v1/embeddings" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -d '{
  "model": "text-embedding-3-small",
  "input": "Szybki brązowy lis przeskakuje nad leniwym psem"
}'

Funkcje

  • Obsługuje trzy najczęściej używane endpointy zgodne z OpenAI: /chat/completions, /completions i /embeddings
  • Działa z dowolnym zgodnym adresem bazowym, dzięki czemu pasuje zarówno do OpenAI, Azure, Groq, OpenRouter i Together AI, jak i do serwerów hostowanych samodzielnie
  • Konfigurowalne parametry próbkowania: temperatura, top-p, kara za częstotliwość, kara za obecność, maksymalna liczba tokenów, liczba uzupełnień, sekwencje zatrzymania i seed
  • Opcjonalny format odpowiedzi jako obiekt JSON dla uzupełnień czatu
  • Żadne dane nie są nigdzie wysyłane — polecenie cURL jest tworzone całkowicie w przeglądarce, a klucz API nigdy nie opuszcza urządzenia

Objaśnienie opcji

Opcja Opis Wartość domyślna Zakres
Adres bazowy Główny adres API bez ścieżki endpointu. https://api.openai.com/v1 Dowolny URL
Endpoint Endpoint API, do którego ma zostać skierowane żądanie. /chat/completions chat, completions, embeddings
Temperatura Kontroluje losowość wyniku. Niższe wartości tworzą bardziej skupiony tekst, a wyższe zwiększają kreatywność. 1 0-2
Top P Próg próbkowania jądrowego. Model uwzględnia tokeny, których skumulowane prawdopodobieństwo osiąga tę wartość. 1 0-1
Kara za częstotliwość Nakłada karę na tokeny na podstawie tego, jak często już wystąpiły, ograniczając dosłowne powtórzenia. 0 -2-2
Kara za obecność Nakłada karę na tokeny, które już się pojawiły, zachęcając model do wprowadzania nowych tematów. 0 -2-2
Maksymalna liczba tokenów Maksymalna liczba tokenów generowanych w odpowiedzi. Pozostaw puste, aby pominąć tę opcję i użyć wartości domyślnej dostawcy. - Dowolna liczba całkowita
Uzupełnienia (n) Liczba wariantów czatu/uzupełnienia generowanych dla danych wejściowych. 1 Dowolna liczba całkowita
Seed Stała wartość seed zapewniająca możliwie powtarzalny wynik. Pozostaw puste, aby uzyskać losowe wyniki. - Dowolna liczba całkowita
Sekwencje zatrzymania Oddzielana przecinkami lista sekwencji, po których API przestaje generować kolejne tokeny. - Dowolny tekst
Format odpowiedzi Ustaw jako obiekt JSON, aby wymusić zwracanie przez model prawidłowego wyniku JSON (tylko endpoint czatu). Brak Brak / obiekt JSON
Strumieniowanie Po włączeniu odpowiedź jest przesyłana jako zdarzenia wysyłane przez serwer. Wyłącz, aby otrzymać całą odpowiedź jednocześnie. Wyłączone Włączone / Wyłączone