Strona główna → Pomoc

Wywołanie działa w curl, ale nie z twojej aplikacji

curl i twoja aplikacja nie wysyłają tego samego żądania. Zwykle winne są: proxy respektowane tylko przez jedno z nich, zmienna środowiskowa nadpisująca base_url, klucz ograniczony do konkretnych adresów źródłowych albo biblioteka klienta dopisująca ścieżkę, której się nie spodziewałeś.

Co widzisz

Dlaczego tak się dzieje

OPENAI_BASE_URL, OPENAI_API_KEY i HTTPS_PROXY są automatycznie odczytywane przez wiele SDK. Nieaktualna wartość w środowisku po cichu wygrywa z argumentem przekazanym w kodzie.

Firmowe proxy i urządzenia inspekcji TLS inaczej wpływają na stosy HTTP bibliotek, a inaczej na curl. Błąd certyfikatu z SDK przy czystym curl to charakterystyczny podpis.

Klucze mogą być ograniczone według IP źródłowego. Twój laptop jest dozwolony, serwer nie, a błąd to odmowa autoryzacji, która w niczym nie przypomina problemu z IP.

Sprawdź, czy to ta przyczyna

Niech aplikacja wypisze, czego naprawdę zamierza użyć:

# Python
import os
print(os.getenv('OPENAI_BASE_URL'), os.getenv('HTTPS_PROXY'))
print(client.base_url)
# then reproduce curl from inside the same host
curl -s -o /dev/null -w '%{http_code}\n' \
  'YOUR_BASE_URL/models' -H 'Authorization: Bearer YOUR_KEY'

Uruchom curl z tej samej maszyny i tej samej powłoki co aplikacja. Odtworzenie tego z laptopa testuje inną trasę sieciową i niczego nie dowodzi.

Jak to naprawić

  1. Wyczyść lub ujednolić środowiskoUsuń nieaktualne zmienne OPENAI_* albo ustaw je na wartości, które zamierzasz. Jawne przekazanie base_url w kodzie nie zawsze wygrywa.
  2. Sprawdź ograniczenie IP na kluczuJeśli klucz jest ograniczony do określonych adresów, dodaj wychodzący IP serwera albo użyj dla tego wdrożenia klucza bez ograniczenia.
  3. Testuj z hosta, na którym nie działaOdtwórz problem curl-em na maszynie, na której nie działa, a nie na tej, na której działa. Połowa takich przypadków okazuje się problemem sieci, nie kodu.
Klucze APICLAN można zablokować do konkretnych adresów źródłowych za pomocą listy dozwolonych IP dla danego klucza. Warto to ustawić dla klucza działającego z jednego stałego serwera – i warto sprawdzić to w pierwszej kolejności, gdy działający klucz nagle przestaje działać z nowego hosta.

Powiązane

Unexpected token '<' przy wywołaniu API zgodnego z OpenAI401 invalid API key – gdy klucz wygląda dobrze, a i tak nie działa

Ostatnio sprawdzono 2026-10-01. Napisane na podstawie problemów zdiagnozowanych na działającej bramce zgodnej z OpenAI, a nie zebrane z innych stron.