Powrót do bloga

Pierwsze krokiPrzewodnik

Pierwsze żądanie API w VS Code: plik .http, klucz z .env

Wyślij pierwsze chat completion do CheapTokens z VS Code za pomocą rozszerzenia REST Client, trzymaj klucz poza gitem i znajdź odpowiedź oraz zużycie tokenów.

Autor: CheapTokens TeamOpublikowano 4 min czytania

Plik żądania w VS Code z POST do API CheapTokens i kluczem odczytywanym z .env
Na tej stronie
  1. Zainstaluj rozszerzenie i umieść klucz w .env
  2. Napisz plik .http
  3. Wyślij żądanie i znajdź odpowiedź
  4. Zmień model w jednej linii
  5. Jeśli to nie działa

Możesz wysłać pierwsze żądanie do CheapTokens bez wychodzenia z VS Code: zainstaluj rozszerzenie REST Client, napisz plik .http, trzymaj klucz w pliku .env obok niego i naciśnij Ctrl+Alt+R. Odpowiedź otwiera się w panelu obok pliku, a tekst i liczba tokenów to dwa pola, które znajdziesz na pierwszy rzut oka.

Jeśli masz już otwarty edytor, to lepsze niż instalowanie kolejnej aplikacji tylko po to, by powiedzieć modelowi „Hello”. A żądanie pozostaje w zwykłym pliku tekstowym, więc możesz uruchomić je ponownie jutro lub zacommitować (bez klucza) dla kolegi z zespołu. Inne sposoby wysłania tego samego żądania opisano w Pierwsze żądanie z HTTPie i Twoje pierwsze żądanie API z CheapTokens.

Zainstaluj rozszerzenie i umieść klucz w .env#

REST Client to rozszerzenie humao.rest-client. W VS Code naciśnij F1, wpisz ext install, wyszukaj rest-client i zainstaluj je. (Sprawdzone z README rozszerzenia 9 listopada 2026 r.)

Teraz klucz. README opisuje {{$dotenv NAME}}: odczytuje wartość z pliku .env, który znajduje się w tym samym katalogu co plik .http. Dokładnie tego chcemy, ponieważ klucz nigdy nie pojawia się w pliku żądania. Utwórz folder na eksperyment i umieść w nim dwa pliki.

.env:

text
CHEAPTOKENS_API_KEY=paste-your-key-here

.gitignore:

text
.env

Utwórz klucz na swoim koncie CheapTokens i wklej go w miejsce placeholdera. Dlaczego linia ignorowania ma znaczenie i co zrobić, jeśli klucz kiedykolwiek trafi do commita, opisano w Bezpieczne przechowywanie klucza API.

Ustaw w kolejności

Ustaw konfigurację we właściwej kolejności

  1. Zainstaluj rozszerzenie REST Client
  2. Dodaj .env do .gitignore
  3. Umieść klucz w .env obok pliku .http
  4. Naciśnij Ctrl+Alt+R na żądaniu

Napisz plik .http#

Utwórz first.http w tym samym folderze. Składnia jest krótka: linia żądania (POST URL HTTP/1.1, metoda jest opcjonalna i domyślnie przyjmuje GET), linie nagłówków Name: value do pierwszej pustej linii, a następnie treść po pustej linii. Żądania oddziela linia trzech lub więcej #.

http
### First request
POST https://api.cheaptokens.dev/v1/chat/completions
Authorization: Bearer {{$dotenv CHEAPTOKENS_API_KEY}}
Content-Type: application/json

{
  "model": "zai-org/GLM-5.3-Flash",
  "messages": [{ "role": "user", "content": "Hello" }]
}

Trzy rzeczy do zauważenia. Adres to baza API CheapTokens, https://api.cheaptokens.dev/v1, plus /chat/completions. Model jest zapisany pełnym identyfikatorem, zai-org/GLM-5.3-Flash: model z kontekstem 390K, który może napisać do 8 192 tokenów na odpowiedź. A klucz to tylko placeholder {{$dotenv …}}, więc ten plik można bezpiecznie commitować.

Klucz znajduje się w .env; first.http zawiera tylko odwołanie do niego
Klucz znajduje się w .env, first.http zawiera tylko odwołanie do niego

Jeśli Twoja konfiguracja nie odczytuje pliku .env, README opisuje również {{$processEnv NAME}}, który odczytuje zmienną ze środowiska Twojej maszyny.

Wyślij żądanie i znajdź odpowiedź#

Kliknij „Send Request” nad linią żądania lub naciśnij Ctrl+Alt+R (Cmd+Alt+R na macOS). Możesz też kliknąć prawym przyciskiem myszy lub użyć F1. Odpowiedź otwiera się w osobnym panelu. Jeśli wolisz zwykłą kartę edytora, w której możesz wyszukiwać i zwijać, ustaw rest-client.previewResponseInUntitledDocument na true w ustawieniach.

Odpowiedź to standardowy JSON chat-completions. Dwa miejsca mają znaczenie od pierwszego dnia:

  • choices[0].message.content to tekst odpowiedzi. Obok niego finish_reason mówi, dlaczego model się zatrzymał. length oznacza, że odpowiedź została ucięta przez limit tokenów.
  • usage zawiera liczby tokenów dla tego żądania: tokeny, które wysłałeś, i tokeny, które napisał model. Za to płacisz, więc zaglądaj tam za każdym razem.
Od Ctrl+Alt+R do tekstu odpowiedzi i pola usage
Gdzie patrzeć w panelu odpowiedzi
Spróbuj samWypróbuj: jak rozpoznać, że odpowiedź została ucięta?Pokaż odpowiedź

Spójrz na finish_reason w odpowiedzi. Jeśli mówi length, model osiągnął limit tokenów, zanim skończył. Dodaj linię "max_tokens" do treści lub zwiększ ją i wyślij ponownie.

Aby wyczuć koszty: powiedzmy, że wysyłasz to żądanie 100 razy z około 1 000 tokenów na wejściu i 300 na wyjściu (założenie do przykładu, nie pomiar).

Model Za żądanie 100 żądań OpenRouter, 100 żądań
GLM-5.3-Flash $0.000032 $0.0032 $0.0058
DeepSeek-V4-Flash $0.000045 $0.0045 $0.0112
MiniMax-M2.7 $0.000095 $0.0095 $0.114

1000 tokenów wejściowych i 300 tokenów wyjściowych na żądanie. Ceny za 1 mln tokenów są aktualne i zmieniają się wraz z naszymi taryfami; kolumna OpenRouter pokazuje ceny referencyjne dla tego samego obciążenia.

Tabela pokazuje aktualną cenę tego obciążenia na każdym modelu, z kolumną OpenRouter do porównania. Drobne „Hello” kosztuje znacznie mniej.

Zmień model w jednej linii#

Wygodna część zwykłego pliku tekstowego: zmień jedną linię i wyślij ponownie. Zastąp identyfikator modelu przez deepseek-ai/DeepSeek-V4-Flash-0731 (kontekst 380K, do 32 768 tokenów na odpowiedź, jedna cena o każdej porze dnia, w sumie taniej niż OpenRouter przy liczeniu wejścia i wyjścia razem) i naciśnij Ctrl+Alt+R jeszcze raz. Ta sama treść, ten sam klucz, inna odpowiedź i inne usage.

Chcesz zachować oba? Wklej drugie żądanie poniżej linii ### z innym identyfikatorem modelu. Każde żądanie ma własny link Send Request, więc możesz uruchomić je jedno po drugim i porównać. Nie jesteś pewien identyfikatora? Wyświetl modele za pomocą GET /v1/models pokazuje dokładne ciągi.

Jeśli to nie działa#

Dopasuj pary

Dopasuj objaw do przyczyny

  • 401 UnauthorizedKlucz jest pusty lub błędny, często dlatego, że .env nie znajduje się w tym samym folderze co plik .http
  • 404 Not FoundLiterówka w ścieżce URL lub w identyfikatorze modelu
  • Odpowiedź urywa się w połowie zdania, finish_reason to lengthOsiągnięto limit tokenów, zwiększ max_tokens

W przypadku dwóch pierwszych API 401 lub 404: zły klucz, bazowy URL lub identyfikator modelu przeprowadza przez kontrole. Pełne szczegóły żądania są w dokumentacji CheapTokens, a aktualne ceny na stronie z cenami.

To cały przepływ pracy: jeden plik, jeden klucz w .env, jeden skrót. Stąd możesz dodać wiadomość systemową, zmienić max_tokens lub zamienić tę samą treść w kod w dowolnym języku.