PL ▾
Pobierz klucz API

VS Code LLM API: podłącz edytor do własnego klucza

Możesz wskazać VS Code na dowolny endpoint zgodny z OpenAI, podając rozszerzeniu trzy wartości: base URL, klucz API i ID modelu. Ta strona pokazuje, gdzie wpisać te wartości i jak je przetestować.

Zaktualizowano

Abstrakcyjny edytor kodu połączony kablem z świecącym sześcianem serwera, reprezentujący połączenie VS Code LLM API

Kluczowe punkty

  • Przetestuj klucz curl przed dotknięciem edytora, aby wiedzieć, po której stronie jest problem.
  • Rozszerzenia takie jak Continue i Cline wymagają tych samych trzech wartości: base URL, klucz, ID modelu.
  • Użyj ID modelu uncensored i base URL https://api.codingllmapi.com/v1.
  • API obsługuje tylko ukończenia czatu, więc funkcje wymagające osobnego endpointu ukończeń mogą nie działać.

Czego potrzebujesz przed rozpoczęciem

Konfiguracja VS Code LLM API nie wymaga magii. VS Code samo w sobie nie komunikuje się z modelami językowymi. Robi to rozszerzenie, które musi wiedzieć, gdzie wysyłać zapytania i jak się zidentyfikować. Każde rozszerzenie obsługujące niestandardowego dostawcę zgodnego z OpenAI może korzystać z tej usługi.

Najpierw zbierz te trzy wartości.

  • Base URL: https://api.codingllmapi.com/v1
  • Identyfikator modelu: uncensored
  • Klucz API: utworzony na stronie kluczy API. Po rejestracji możesz zrealizować $0,50 darmowego kredytu próbnego jednym kliknięciem, ważny przez 7 dni i bez konieczności podania karty.

Klucz jest przekazywany w zapytaniu jako Authorization: Bearer <key>. Rozszerzenia dodają ten nagłówek automatycznie po wklejeniu klucza w ich ustawieniach.

Krok 1: przetestuj klucz poza edytorem

Debugowanie wewnątrz rozszerzenia jest wolniejsze niż w terminalu. Otwórz terminal w VS Code (Ctrl+` w Windows i Linux, Cmd+` w macOS), zapisz klucz w zmiennej środowiskowej i wykonaj dwa wywołania. Pierwsze wylicza modele. Drugie wysyła małe zapytanie czatu.

export LLM_API_KEY="paste-your-key-here"

curl -s https://api.codingllmapi.com/v1/models \
  -H "Authorization: Bearer $LLM_API_KEY"

curl -s https://api.codingllmapi.com/v1/chat/completions \
  -H "Authorization: Bearer $LLM_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model":"uncensored","messages":[{"role":"user","content":"Reply with the word ready."}],"max_tokens":10}'

Jeśli drugie wywołanie zwróci JSON z wiadomością, klucz, URL i ID modelu są poprawne. Wszystko, co pójdzie nie tak później, to problem z ustawieniami rozszerzenia, a nie Twoim kontem. Jeśli otrzymasz błąd uwierzytelnienia tutaj, sprawdź, czy skopiowałeś cały klucz i czy nie dołączyły przypadkowe cudzysłowy czy spacje.

Krok 2: skonfiguruj rozszerzenie

Ustawienia rozszerzeń zmieniają się między wersjami, więc traktuj poniższe nazwy pól jako wskazówkę i sprawdź dokumentację rozszerzenia, jeśli etykieta się różni. Trzy wartości są zawsze takie same.

Continue

Continue to asystent open source dla VS Code i JetBrains. Odczytuje plik konfiguracyjny z Twojego katalogu domowego. Nowsze wersje używają pliku YAML, a starsze config.json. Wpis modelu zawiera te same pola w obu formatach. W formacie JSON wygląda tak:

{
  "models": [
    {
      "title": "Uncensored",
      "provider": "openai",
      "model": "uncensored",
      "apiBase": "https://api.codingllmapi.com/v1",
      "apiKey": "paste-your-key-here"
    }
  ]
}

Dostawcą jest openai, ponieważ format przesyłania danych jest zgodny z OpenAI. Tylko apiBase mówi Continue, aby komunikowało się z innym serwerem. Po zapisaniu przeładuj okno i wybierz model z listy rozwijanej w panelu czatu.

Cline

Cline to rozszerzenie agenta, które może czytać pliki, edytować je i uruchamiać polecenia terminala za Twoją zgodą. Otwórz jego ustawienia i wybierz dostawcę o nazwie OpenAI Compatible. Wypełnij Base URL, API Key i Model ID. Wklej https://api.codingllmapi.com/v1, swój klucz i uncensored. Zapisz, rozpocznij zadanie i zatwierdź jego pierwsze użycie narzędzia.

Inne rozszerzenia

Wiele narzędzi stosuje ten sam schemat pod nazwami takimi jak „niestandardowy endpoint”, „kompatybilny z OpenAI” lub „przynieś własny klucz”. Szukaj pola, które przyjmuje Base URL. Jeśli rozszerzenie oferuje tylko stałą listę dostawców bez pola URL, nie można go skierować na to API.

Co działa, a co może nie działać

To API implementuje POST /v1/chat/completions i GET /v1/models. Obejmuje to panele czatu, polecenia edycji, akcje wyjaśniania kodu i pętle agentów. Nie obejmuje wszystkiego, o co może prosić edytor.

Funkcja edytoraOczekiwany wynik
Czat na temat otwartego plikuDziała
Zaznacz kod i poproś o edycjęDziała
Zadania agenta z wywoływaniem funkcjiDziała, jeśli rozszerzenie używa standardowego pola tools lub własnego formatu promptu
Autouzupełnianie inlineZależy od rozszerzenia. Jeśli wymaga osobnego endpointu ukończenia lub uzupełniania w miejscu, to API go nie zapewnia
Embeddingi i indeksowanie bazy koduNiedostępne tutaj, ponieważ nie ma endpointu embeddingów. Użyj innego źródła embeddingów lub wyłącz indeksowanie
Wejście lub generowanie obrazuNiedostępne, API jest tylko tekstowe

Jeśli rozszerzenie zawodzi w funkcji z tej tabeli, wyłącz tę konkretną funkcję w jej ustawieniach, zamiast zakładać, że Twój klucz jest błędny. Aby uzyskać przegląd możliwości tego modelu w pracy programistycznej, zobacz stronę o modelu bez cenzury dla agentów kodujących.

Poza rozszerzeniami: skrypty uruchamiane z edytora

Rozszerzenie to nie jedyny sposób na użycie klucza z VS Code. Wielu programistów utrzymuje mały skrypt w projekcie, który wysyła plik do modelu i wypisuje odpowiedź, a następnie uruchamia go w zintegrowanym terminalu lub wiąże z zadaniem. Daje to pełną kontrolę nad promptem i unika niespodzianek ze strony ukrytych instrukcji rozszerzenia.

Oto krótki skrypt Python, który przegląda dowolną ścieżkę pliku, którą mu podasz. Czyta klucz ze zmiennej środowiskowej, więc nic tajnego nie ląduje w Twoim repozytorium.

import os
import sys
from openai import OpenAI

client = OpenAI(
    base_url="https://api.codingllmapi.com/v1",
    api_key=os.environ["LLM_API_KEY"],
)

path = sys.argv[1]
with open(path, encoding="utf-8") as f:
    source = f.read()

resp = client.chat.completions.create(
    model="uncensored",
    messages=[
        {"role": "system", "content": "Review the code. List bugs first, then style issues. Be brief."},
        {"role": "user", "content": source},
    ],
    temperature=0.2,
)
print(resp.choices[0].message.content)

Uruchom go poleceniem python review.py src/app.py. Duże pliki są OK w oknie kontekstu 100 000 tokenów, ale mniejszy prompt odpowiada szybciej i jest tańszy. Jeśli chcesz, aby odpowiedź pojawiała się w miarę pisania, przekaż stream=True i wypisuj delta.content każdego chunka, gdy przybywa.

Ten sam pomysł działa jako zadanie VS Code w .vscode/tasks.json: zdefiniuj zadanie, którego polecenie to ten skrypt z bieżącym plikiem jako argumentem, i uruchom go z palety poleceń. To niewielki nakład konfiguracji, a wynikiem jest polecenie review, które w pełni rozumiesz.

Naprawianie typowych błędów

Większość problemów sprowadza się do kilku przyczyn. Pracuj od góry tej listy.

  1. 401 lub „nieprawidłowy klucz API”. Klucz został wklejony ze spacją na końcu lub użyłeś klucza przeznaczonego dla innej strony. Wygeneruj nowy i wklej go ponownie.
  2. 404 lub „model nie znaleziony”. Identyfikator modelu jest błędnie wpisany, w bazowym URL brakuje /v1 lub występuje on dwukrotnie. Poprawny identyfikator to uncensored. Wywołaj /v1/models, aby sprawdzić, co zwraca serwer.
  3. 429 z rate_limited. Przekroczyłeś limit zapytań na minutę: 300 dla pełnego klucza, 60 dla klucza próbnego. Agenci wykonujący szybkie pętle szybko go osiągają. Poczekaj i wyślij zapytanie ponownie lub zmniejsz liczbę automatycznych kroków.
  4. 429 z concurrency. Zbyt wiele zapytań jednocześnie: 8 dla pełnego klucza, 2 dla klucza próbnego. Niektóre rozszerzenia wysyłają wiele wywołań równolegle w ramach jednego zadania. Odpowiedź strumieniowa zajmuje slot do momentu zakończenia, więc utknuty strumień może blokować nowe wywołania.
  5. 429 z nagłówkiem Retry-After: 5. Tymczasowe przeciążenie. Rozszerzenie powinno ponowić zapytanie po pięciu sekundach. Jeśli nie zrobi tego automatycznie, powtórz je ręcznie.
  6. Zapytanie zostało odrzucone jako zbyt duże. Limit rozmiaru treści zapytania (body) to 8 MB, a okno kontekstu wynosi 100 000 tokenów dla promptu i odpowiedzi. Agenci dołączający wiele plików mogą ten limit przekroczyć. Zwęż kontekst lub wyczyść rozmowę.

Prosząc o pomoc, podaj wartość nagłówka odpowiedzi X-Request-Id. Możesz go wyświetlić poleceniem curl -i.

Widoczność kosztów

Agenci edytorów wysyłają dużo tekstu, ponieważ każdy krok zwykle zawiera pliki i historię do tego momentu. Cennik to $0,15 za 1 mln tokenów wejściowych i $0,50 za 1 mln tokenów wyjściowych. Dzięki temu pojedyncze zapytania są tanie, ale pętle szybko sumują koszty.

Przykład: krok agenta z 30 000 tokenami wejściowymi i 1000 tokenami wyjściowymi kosztuje 30 000 x $0,15 / 1 000 000 = $0,0045 za wejście i 1000 x $0,50 / 1 000 000 = $0,0005 za wyjście, czyli $0,005 za krok. Zadanie składające się z 40 takich kroków kosztuje $0,20. To tylko przybliżone oszacowanie, nie obietnica, ponieważ rzeczywiste kroki różnią się wielkością.

  • Sprawdź nagłówek odpowiedzi X-Balance-USD, aby zobaczyć stan kredytu po wywołaniu.
  • Rozpoczynaj nowe zadania w nowych rozmowach, aby stara historia nie była przetrzymywana na zawsze.
  • Ustaw limit kroków lub zapytań w rozszerzeniu, jeśli taka opcja istnieje.

Kredyt jest przedpłacony, więc wydatki kończą się, gdy saldo się wyczerpie, i nigdy nie wygasa. Doładowania wynoszą od $20 do $500 w pełnych kwotach, z bonusem 5% od $50, 10% od $100 i 15% od $200. Akceptowane są karty (Visa, Mastercard, Apple Pay, Google Pay) oraz kryptowaluty (USDT w sieci TRC20, USDC na Base). Szczegóły znajdziesz na stronie z cenami, a dokumentacja wymienia wszystkie obsługiwane parametry.

Uwaga dotycząca prywatności i użytkowania

Kod, który wysyłasz, trafia na serwery dostawcy, więc nie wklejaj sekretów takich jak klucze produkcyjne, hasła czy dane klientów do promptów. Prompty w tej usłudze nie są używane do trenowania. Model jest dostrojony do odpowiadania bez odrzuceń treści dla legalnego użytku przez dorosłych, co oznacza, że nie będzie prawił ci kazań o teście bezpieczeństwa czy skrypcie gry w ciemnym motywie, ale to Ty ponosisz odpowiedzialność za to, o co go prosisz. Treści seksualne z udziałem nieletnich są zawsze zabronione.

Pytania i odpowiedzi

Czy mogę użyć tego API z GitHub Copilot w VS Code?

Copilot jest ściśle powiązany z własną usługą, więc ten klucz go nie zastępuje. Użyj rozszerzenia akceptującego niestandardowy endpoint, takiego jak Continue lub Cline.

Jaki identyfikator modelu wpisać?

Wpisz uncensored. Możesz to potwierdzić, wywołując GET /v1/models ze swoim kluczem.

Dlaczego edytor zgłasza nieudane połączenie?

Najpierw wykonaj test curl. Jeśli curl zadziała, sprawdź ponownie bazowy URL w rozszerzeniu, w tym końcówkę /v1 i brak dodatkowych spacji.

Czy autouzupełnianie w miejscu działa?

Tylko jeśli rozszerzenie może użyć zwykłych ukończeń czatu. To API nie ma osobnego endpointu do ukończeń, więc sprawdź ustawienia autouzupełniania w rozszerzeniu.

Czy jest darmowy sposób na przetestowanie?

Nowi użytkownicy mogą uzyskać $0,50 kredytu próbnego na stronie klucza API po zalogowaniu się. Nie wymaga karty, trwa 7 dni i jest przydzielany raz na osobę.

Twój klucz jest o jeden formularz stąd

Utwórz konto, skopiuj klucz, zmień bazowy URL. To cała konfiguracja.

Pobierz klucz API