Konfiguracja klucza API OpenCode AI — ustawienia zgodne z OpenAI
Jak skonfigurować OpenCode AI z własnym kluczem API z APIMaster.ai. Dodaj APIMaster jako dostawcę zgodnego z OpenAI w opencode.jsonc i uzyskaj dostęp do Claude, GPT-5.5 oraz DeepSeek z obsługą wejścia obrazów (Vision) i opcjonalnymi poziomami Reasoning.
OpenCode Desktop to graficzny klient dla OpenCode (obecnie wersja beta): lokalne sesje agenta, edycja plików i wykonywanie poleceń powłoki. APIMaster.ai jest zgodny z OpenAI – dodaj go w Ustawienia → Dostawcy → Własny dostawca.
Najpierw uzyskaj klucz API. Użyj poniżej zastępczego
twoj_klucz_apimaster; zrzuty ekranu maskują prawdziwe klucze.
Wymagania wstępne
- OpenCode Desktop zainstalowany ze strony opencode.ai/download.
- Windows:
opencode-desktop-win-x64.exe - macOS:
brew install --cask opencode-desktoplub.dmg - Linux:
.deb/.rpm/ AppImage
- Windows:
- Klucz API APIMaster z konsoli.
Krok 1 – Otwórz dostawców
- Uruchom OpenCode Desktop i otwórz obszar roboczy.
- Kliknij ikonę koła zębatego (lewy dolny róg).
- Wybierz Dostawcy w panelu bocznym.
- Przewiń do Własny dostawca (Dodaj dostawcę zgodnego z OpenAI za pomocą podstawowego adresu URL).
- Kliknij + Połącz.

Krok 2 – Formularz własnego dostawcy
| Pole | Wartość |
|---|---|
| Identyfikator dostawcy | apimaster |
| Nazwa wyświetlana | APIMaster.ai |
| Podstawowy URL | https://apimaster.ai/v1 |
| Klucz API | Twój klucz APIMaster |

Pozostaw Nagłówki puste, chyba że uwierzytelniasz się wyłącznie przez nagłówki.
Krok 3 – Dodaj modele i zatwierdź
Na następnym ekranie przypisz modele (lewa strona = etykieta w OpenCode, prawa strona = identyfikator modelu wysyłany do APIMaster – zazwyczaj ten sam):
| Lewa | Prawa |
|---|---|
gpt-5.4 |
gpt-5.4 |
claude-sonnet-4-6 |
claude-sonnet-4-6 |
- Kliknij + Dodaj model, aby dodać więcej wierszy.
- Kliknij Zatwierdź.

Wybierz identyfikatory z rynku. Unikaj modeli służących tylko do generowania obrazów (np. gpt-image-2) w czacie agenta.
Potrzebujesz rozpoznawania obrazów (Vision)?
gpt-5.5,claude-sonnet-4-6,claude-opus-4-7,claude-opus-4-8orazclaude-haiku-4-5obsługują wejście obrazów, ale OpenCode wymaga dodatkowej deklaracji możliwości – zobacz Włącz wejście obrazów dla GPT i Claude.
Krok 4 – Wybierz model
- Rozpocznij lub otwórz sesję.
- Otwórz menu rozwijane modelu poniżej pola wprowadzania.
- W sekcji APIMaster.ai wybierz model (np.
claude-sonnet-4-6).

Krok 5 – Test
Wyślij hello lub małe zadanie programistyczne. Normalna odpowiedź asystenta (edycja plików / powłoka) oznacza, że APIMaster jest podłączony.

Zaawansowane: opencode.jsonc i Reasoning
Powyższy interfejs GUI wystarczy do szybkiego startu. Aby skonfigurować poziomy Reasoning / wysiłek myślenia (low, high, max, …) dla tego samego identyfikatora modelu, edytuj opencode.jsonc.
Lokalizacja pliku konfiguracyjnego
| System | Ścieżka |
|---|---|
| macOS / Linux | ~/.config/opencode/opencode.jsonc |
| Windows | C:\Users\<nazwa_użytkownika>\.config\opencode\opencode.jsonc |
Utwórz plik, jeśli nie istnieje. Uruchom ponownie OpenCode Desktop lub rozpocznij nową sesję po zapisaniu.
Klucz API (nie umieszczaj w jsonc)
Nie przechowuj swojego klucza API w opencode.jsonc.
Użyj:
/connectw terminalu, lub- Ustawienia → Dostawcy → Połącz dostawcę (tak samo jak w krokach 1–2 powyżej).
Przechowuj sekrety w magazynie uwierzytelniania OpenCode; jsonc definiuje tylko dostawcę, modele i warianty Reasoning.
Dostawca APIMaster w jsonc
Identyfikator dostawcy: apimaster. Pakiet npm: @ai-sdk/openai-compatible.
baseURL musi być:
https://apimaster.ai/v1
Nie https://apimaster.ai/ – OpenCode dodaje /chat/completions. Bez /v1 otrzymasz https://apimaster.ai/chat/completions → 404 Nie znaleziono.
Również nie
https://api.apimaster.ai/v1– host z prefiksemapi.może powodować błędy TLS / połączenia podczas testów. Poprawny host tohttps://apimaster.ai/v1.
Pełny przykład z wariantami Reasoning – pobierz i zastąp konfigurację OpenCode:
- Pobierz opencode.jsonc
- Zastąp (lub zapisz jako):
- macOS / Linux:
~/.config/opencode/opencode.jsonc - Windows:
C:\Users\<nazwa_użytkownika>\.config\opencode\opencode.jsonc
- macOS / Linux:
- Skonfiguruj klucz API przez
/connectlub GUI (nigdy w jsonc). - Uruchom ponownie OpenCode Desktop lub rozpocznij nową sesję.
Zrób kopię zapasową istniejącego pliku przed zastąpieniem lub scal tylko blok
provider.apimaster.
Minimalna struktura:
{
"$schema": "https://opencode.ai/config.json",
"provider": {
"apimaster": {
"name": "APIMaster.ai",
"npm": "@ai-sdk/openai-compatible",
"options": { "baseURL": "https://apimaster.ai/v1" },
"models": {
"gpt-5.5": {
"name": "gpt-5.5",
"attachment": true,
"modalities": {
"input": ["text", "image"],
"output": ["text"]
},
"variants": {
"low": { "reasoningEffort": "low" },
"high": { "reasoningEffort": "high" }
}
}
}
}
}
}
Pola
attachmentimodalitiesnagpt-5.5powyżej włączają wejście obrazów (Vision) – zobacz Włącz wejście obrazów dla GPT i Claude. Pomiń je, jeśli potrzebujesz tylko czatu tekstowego.
Zasady Reasoning
variants= wiele poziomów Reasoning dla jednego identyfikatora modelu w GUI.- Dla API zgodnych z OpenAI, OpenCode mapuje
reasoningEffort→reasoning_effortw treści żądania. - Nazwy wariantów powinny odpowiadać rzeczywistemu parametrowi (
high→"reasoningEffort": "high"). - Każdy model obsługuje inne poziomy – skonfiguruj zgodnie z oficjalną dokumentacją; nie ma ukrytego mapowania.
Poziomy Reasoning według modelu
| Model | Warianty Reasoning | Uwagi |
|---|---|---|
gpt-5.4 |
low, medium, high, xhigh |
Reasoning GPT |
gpt-5.5 |
low, medium, high, xhigh |
Reasoning GPT |
deepseek-v4-flash |
high, max |
Myślenie DeepSeek (zalecane) |
deepseek-v4-pro |
high, max |
Myślenie DeepSeek (zalecane) |
claude-sonnet-4-6 |
low, medium, high, max |
Wysiłek Claude Sonnet |
claude-opus-4-7 |
low, medium, high, xhigh, max |
Wysiłek Claude Opus |
claude-opus-4-8 |
low, medium, high, xhigh, max |
Wysiłek Claude Opus |
claude-haiku-4-5 |
brak | Brak niepotwierdzonych poziomów wysiłku |
minimax-m3 |
brak | Brak niepotwierdzonych poziomów wysiłku |
Pełny plik znajdziesz w opencode.jsonc.
Przełączanie Reasoning w OpenCode
- Zapisz
opencode.jsonc, następnie uruchom ponownie lub nowa sesja. - Użyj menu rozwijanego model / Reasoning (np.
gpt-5.4 / high). - Jeśli obsługiwane w twojej kompilacji:
Ctrl + Shift + Dcyklicznie przełącza poziomy Reasoning.
Włącz wejście obrazów dla GPT i Claude
Modele APIMaster.ai, takie jak gpt-5.5, claude-sonnet-4-6, claude-opus-4-7, claude-opus-4-8 oraz claude-haiku-4-5, obsługują wejście obrazów / Vision – odczytywanie zrzutów ekranu, zdjęć, wykresów w celu rozpoznawania, opisywania, OCR lub kodowania na podstawie obrazu.
Obsługa obrazów przez model ≠ wysłanie obrazu przez OpenCode. Nawet jeśli sam model APIMaster.ai obsługuje Vision, musisz zadeklarować tę możliwość w
opencode.jsonc. W przeciwnym razie OpenCode może nie wysłać obrazu jako wejścia multimodalnego – umieści jedynie nazwę załącznika / pliku w promptcie, a model odpowie coś w stylu „bieżący model nie obsługuje wejścia obrazów”.
Dwa pola do zadeklarowania
Dla każdego modelu, którego chcesz używać z obrazami, dodaj:
"attachment": true,
"modalities": {
"input": ["text", "image"],
"output": ["text"]
}
attachment: trueinformuje OpenCode, że ten model przyjmuje załączniki.modalities.inputzawierające"image"informuje OpenCode, że ten model obsługuje wejście obrazów, więc OpenCode konwertuje obraz na multimodalną treśćimage_url.
Pełny przykład (GPT i Claude)
Pobierz opencode.jsonc (pola już zawarte) lub scal poniższy blok provider.apimaster z istniejącą konfiguracją:
{
"$schema": "https://opencode.ai/config.json",
"disabled_providers": [],
"provider": {
"apimaster": {
"name": "APIMaster.ai",
"npm": "@ai-sdk/openai-compatible",
"options": {
"baseURL": "https://apimaster.ai/v1"
},
"models": {
"gpt-5.5": {
"name": "gpt-5.5",
"attachment": true,
"modalities": {
"input": ["text", "image"],
"output": ["text"]
},
"variants": {
"low": { "reasoningEffort": "low" },
"medium": { "reasoningEffort": "medium" },
"high": { "reasoningEffort": "high" },
"xhigh": { "reasoningEffort": "xhigh" }
}
},
"claude-sonnet-4-6": {
"name": "claude-sonnet-4-6",
"attachment": true,
"modalities": {
"input": ["text", "image"],
"output": ["text"]
},
"variants": {
"low": { "reasoningEffort": "low" },
"medium": { "reasoningEffort": "medium" },
"high": { "reasoningEffort": "high" },
"max": { "reasoningEffort": "max" }
}
},
"claude-opus-4-7": {
"name": "claude-opus-4-7",
"attachment": true,
"modalities": {
"input": ["text", "image"],
"output": ["text"]
},
"variants": {
"low": { "reasoningEffort": "low" },
"medium": { "reasoningEffort": "medium" },
"high": { "reasoningEffort": "high" },
"xhigh": { "reasoningEffort": "xhigh" },
"max": { "reasoningEffort": "max" }
}
},
"claude-opus-4-8": {
"name": "claude-opus-4-8",
"attachment": true,
"modalities": {
"input": ["text", "image"],
"output": ["text"]
},
"variants": {
"low": { "reasoningEffort": "low" },
"medium": { "reasoningEffort": "medium" },
"high": { "reasoningEffort": "high" },
"xhigh": { "reasoningEffort": "xhigh" },
"max": { "reasoningEffort": "max" }
}
},
"claude-haiku-4-5": {
"name": "claude-haiku-4-5",
"attachment": true,
"modalities": {
"input": ["text", "image"],
"output": ["text"]
}
}
}
}
}
}
Uwagi:
- Aby włączyć wejście obrazów tylko dla
gpt-5.5, dodajattachmentimodalitieswyłącznie dogpt-5.5; pozostaw inne bez zmian. - Aby włączyć tylko Claude, dodaj te pola wyłącznie do modeli Claude.
- Zachowaj istniejące warianty Reasoning każdego modelu (
low/medium/high/xhigh/max) – pola obrazów i Reasoning nie kolidują ze sobą. - Po edycji
opencode.jsonccałkowicie zamknij i uruchom ponownie OpenCode lub przynajmniej rozpocznij nową sesję, aby konfiguracja została przeładowana. - Nigdy nie umieszczaj klucza API w tym pliku – skonfiguruj go przez
/connectlub GUI (zobacz Bezpieczeństwo poniżej).
Źródło obrazu: preferuj lokalne przesyłanie / base64
- Zalecane: prześlij lokalny plik PNG / JPG w OpenCode. Idealnie OpenCode konwertuje go na base64 data URL (
data:image/png;base64,...) przed wysłaniem do APIMaster – to zweryfikowana, działająca ścieżka. - Bezpośrednie przekazanie publicznego URL obrazu może się nie powieść. APIMaster / usługa nadrzędna mogą nie pobrać publicznego obrazu z powodu sieci, formatu, rozmiaru, MIME lub ochrony przed hotlinkingiem, zwracając:
W takim przypadku użyj base64 data URL lub lokalnego przesyłania zamiast polegać na tym, że model pobierze publiczny URL.Error while downloading file. Upstream status code: 400.
Sprawdź, czy rozpoznawanie obrazów działa
Opcja A – Test w OpenCode
- Przełącz się na
apimaster/gpt-5.5lubapimaster/claude-sonnet-4-6w menu rozwijanym modelu. - Prześlij obraz PNG / JPG.
- Wpisz:
Describe the main content of this image.
- Przy poprawnej konfiguracji model powinien opisać treść obrazu.
- Jeśli model wspomina jedynie o nazwie pliku / załącznika lub odpowiada „image input not supported”, OpenCode prawdopodobnie nie wysyła treści obrazu – sprawdź pola
attachmentimodalitiesmodelu oraz uruchom ponownie OpenCode.
Opcja B – Test bezpośrednio przez API
Przydatne do odróżnienia problemu z modelem APIMaster od problemu z adapterem OpenCode. Nigdy nie umieszczaj prawdziwego klucza na stałe – użyj zmiennej środowiskowej.
Linux / macOS:
export APIMASTER_API_KEY="your APIMaster API key"
curl https://apimaster.ai/v1/chat/completions \
-H "Authorization: Bearer $APIMASTER_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-5.5",
"messages": [
{
"role": "user",
"content": [
{ "type": "text", "text": "Describe this image." },
{
"type": "image_url",
"image_url": {
"url": "data:image/png;base64,YOUR_IMAGE_BASE64"
}
}
]
}
],
"max_tokens": 1000
}'
Zmień model na claude-sonnet-4-6, aby przetestować Claude w ten sam sposób (zweryfikowane HTTP 200 z rozpoznawaniem obrazów).
Windows PowerShell:
$env:APIMASTER_API_KEY = "your APIMaster API key"
# Convert a local image to base64, put it into image_url.url as data:image/png;base64,...
# Then call https://apimaster.ai/v1/chat/completions with the same JSON body.
Odpowiedź 200, która opisuje obraz, oznacza, że wejście obrazów działa po stronie APIMaster; jeśli OpenCode nadal zawodzi, problem tkwi w konfiguracji
attachment/modalitiesOpenCode lub w braku ponownego uruchomienia.
Rozwiązywanie problemów
Konfiguracja przez GUI
| Problem | Rozwiązanie |
|---|---|
| 401 | Sprawdź klucz; wygeneruj nowy, jeśli został ujawniony |
| Model nie znaleziony | Podstawowy URL musi być https://apimaster.ai/v1; identyfikator modelu musi zgadzać się z rynkiem |
| Brak modeli APIMaster | Edytuj dostawcę w Ustawieniach → dodaj mapowania → Zatwierdź |
| Wolno / przekroczenie czasu | Wypróbuj inny model; użyj Testera kluczy API |
Reasoning / jsonc
Dlaczego tylko high i max dla DeepSeek?
Oficjalny wysiłek myślenia zgodny z OpenAI dla DeepSeek to high i max. Unikaj low / medium / xhigh, które są nieprzewidywalnie mapowane.
Dlaczego max dla Claude Sonnet, a nie xhigh?
Najwyższy poziom Sonnet to max; xhigh jest dla Opus (claude-opus-4-7 / claude-opus-4-8).
Dlaczego brak wariantów dla Haiku lub MiniMax M3?
Bez udokumentowanych wartości reasoningEffort, pomiń warianty – model nadal działa; GUI po prostu nie pokaże podpoziomów Reasoning.
Nadal błąd 400?
baseURL=https://apimaster.ai/v1(nie główna strona).- Pisownia identyfikatora modelu zgadza się z rynkiem.
- Klucz skonfigurowany przez
/connectlub GUI. - Tymczasowo usuń
variants– jeśli zwykłe żądania działają, wybranyreasoning_effortmoże być nieobsługiwany dla tego modelu.
Wejście obrazów / Vision
Dlaczego OpenCode mówi „the current model does not support image input”?
gpt-5.5APIMaster.ai i kilka modeli Claude obsługują wejście obrazów; ten komunikat zwykle oznacza, że OpenCode nie wysyła obrazu jako wejścia multimodalnego.- Sprawdź, czy model w
opencode.jsoncma:"attachment": true, "modalities": { "input": ["text", "image"], "output": ["text"] } - Potwierdź, że uruchomiłeś ponownie OpenCode po edycji.
- Potwierdź, że
baseURLtohttps://apimaster.ai/v1. - Potwierdź, że klucz API APIMaster jest ważny.
- Jeśli publiczny URL obrazu zawodzi, użyj base64 data URL lub lokalnego przesyłania.
Dlaczego model widzi tylko nazwę załącznika, a nie obraz?
- Zazwyczaj OpenCode nie odczytał i nie przekonwertował załącznika na wejście obrazu – umieścił jedynie nazwę pliku / załącznika w promptcie.
- Włącz
attachment: trueimodalities.input: ["text", "image"]oraz użyj modelu obsługującego wejście obrazów.
Dlaczego publiczny URL obrazu zwraca błąd?
- APIMaster lub usługa nadrzędna mogą być ograniczone przez sieć, format, rozmiar pliku, MIME, ochronę przed hotlinkingiem lub proxy podczas pobierania publicznego obrazu.
- Przy
Error while downloading file. Upstream status code: 400.przełącz się na base64 data URL.
Nadal nie działa po dodaniu attachment?
- Całkowicie zamknij i uruchom ponownie OpenCode.
- Rozpocznij nową sesję, aby przetestować.
- Potwierdź, że aktywny model sesji jest tym, który skonfigurowałeś z polami obrazów.
- Potwierdź, że klucz API jest ważny.
- Sprawdź logi OpenCode pod kątem błędów 401 / 400 / unsupported image / invalid content type.
- Użyj Opcji B – Test bezpośrednio przez API z obrazem base64, aby oddzielić problem z modelem APIMaster od problemu z adapterem OpenCode.
Bezpieczeństwo
- Nie umieszczaj klucza API APIMaster w
opencode.jsonc; ten plik przechowuje tylko dostawcę, modele, możliwości obrazów i Reasoning. - Nie wklejaj klucza do czatu, zrzutów ekranu, zgłoszeń, publicznej dokumentacji ani repozytoriów kodu.
- Wygeneruj ponownie klucze, które pojawiły się na zrzutach ekranu lub w logach – odwołaj i wygeneruj ponownie w konsoli, a następnie zaktualizuj dostawcę w OpenCode.
- Preferuj przepływ
/connectOpenCode, zmienne środowiskowe lub lokalny magazyn poświadczeń do zarządzania kluczem API. - OpenCode może odczytywać/zapisywać pliki i uruchamiać polecenia powłoki – używaj tylko zaufanych obszarów roboczych.
Lista kontrolna
- Zainstalowano OpenCode Desktop
- Podłączono własnego dostawcę lub dodano
apimasterwopencode.jsonc - Podstawowy URL /
baseURL=https://apimaster.ai/v1(niehttps://apimaster.ai/) - Klucz API przez
/connectlub GUI (nie w jsonc) - Zamapowano co najmniej jeden model czatu
- (Opcjonalnie) Warianty Reasoning zgodne z oficjalnymi poziomami
- Testowa wiadomość zakończona sukcesem
Lista kontrolna wejścia obrazów
-
baseURLtohttps://apimaster.ai/v1(niehttps://api.apimaster.ai/v1) - Używasz modelu obsługującego Vision, np.
gpt-5.5lub modelu Claude z obsługą Vision - Model ma
attachment: true -
modalities.inputmodelu zawiera"image" - OpenCode uruchomiony ponownie po edycji
opencode.jsonc - Klucz API jest ważny
- Obraz testowy jest w popularnym formacie (PNG / JPG)
- Jeśli publiczny URL obrazu zawodzi, wypróbowano base64 data URL
Podsumowanie
- Kluczowe elementy:
baseURL(https://apimaster.ai/v1), identyfikator modelu, klucz API (/connectlub GUI), opcjonalne warianty Reasoning. - Nazwy wariantów = rzeczywiste wartości
reasoning_effort. - Konfiguruj poziomy dla każdego modelu; pomiń warianty, gdy nie są obsługiwane (Haiku, MiniMax M3).