Диагностика · opencode
opencode AI_APICallError — причины и решения
Сбои провайдера opencode показывает как AI_APICallError из Vercel AI SDK. Как прочитать завёрнутый код статуса и починить baseURL, ключ или модель под ним.
Что вы видите
AI_APICallErrorПочему возникает
- AI_APICallError — это обёртка, а не диагноз: AI SDK бросает её на любой неуспешный HTTP-ответ, а настоящая причина — завёрнутые статус и тело.
- 401 внутри — неверна опция apiKey провайдера, либо плейсхолдер {env:...} называет незаданную переменную.
- 404 внутри — baseURL не подходит протоколу провайдера: пропущенный /v1, удвоенный /v1/v1 или идентификатор модели, который эндпоинт не обслуживает.
- 429 или 529 внутри — пропускная способность или мощности апстрима; в вашей конфигурации ошибки нет.
Что делать
- Сначала прочитайте поля statusCode и responseBody у ошибки — в них настоящий ответ провайдера.
- Проверьте блок провайдера: baseURL точный, apiKey резолвится из переменной окружения, существующей в оболочке, запустившей opencode.
- Перезапускайте opencode после любого изменения opencode.json — конфигурация читается на старте.
Блок провайдера для этого шлюза
{
"provider": {
"apitoken": {
"npm": "@ai-sdk/openai-compatible",
"name": "apiToken.sale",
"options": {
"baseURL": "https://openai.api.apitoken.sale/v1",
"apiKey": "{env:APITOKEN_API_KEY}"
}
}
}
}Похожие запросы
opencode AI_APICallErroropencode api call error
Вопросы и ответы
AI_APICallError — это баг opencode?+
Нет — это AI SDK сообщает, что провайдер вернул неуспешный ответ. Завёрнутый код статуса называет настоящую проблему.
Откуда opencode читает мой API-ключ?+
Из options.apiKey провайдера. С плейсхолдером {env:NAME} переменная должна существовать в окружении, из которого запущен opencode.
Я поправил opencode.json, и ничего не изменилось — почему?+
opencode читает конфигурацию на старте. Перезапускайте его после каждого изменения.
Пропустите сломанную настройку
apiToken.sale отдаёт стандартный Anthropic API — те же модели, те же SDK, один предоплаченный баланс. Направьте base URL вашего инструмента на него, и конфигурация с этой страницы заработает как написано.