Первый запрос к API Liho LLM
Аккаунт, ключ и первый ответ модели. API работает в формате OpenAI Chat Completions, поэтому подойдут curl и официальный OpenAI SDK для Python или TypeScript — достаточно поменять адрес и ключ.
Что понадобится
- Аккаунт Liho LLM с положительным рублёвым балансом.
- curl, Python 3 с пакетом
openaiили Node.js с пакетомopenai.
Шаги
Зарегистрируйтесь
Откройте страницу регистрации Liho LLM и нажмите «Создать аккаунт». Нужны email, имя и пароль не короче 12 символов.
Регистрация в Liho LLMПополните баланс
В кабинете откройте раздел «Баланс и платежи» и пополните баланс в рублях. Перед каждым запросом сервис резервирует его максимально возможную стоимость, а после ответа списывает фактическую. Если доступных средств не хватает на резерв, запрос вернёт ошибку
402.Создайте API-ключ
Раздел «API-ключи» → «Создать ключ». Задайте имя ключа и, если нужно, лимит расходов и срок действия. Ключ начинается с
lh_и показывается один раз: скопируйте его, затем нажмите «Я сохранил ключ». Сохраните ключ в переменной окружения, а не в коде.shellexport LIHO_API_KEY="lh_…"powershell$env:LIHO_API_KEY = "lh_…"Отправьте запрос
Запрос отправляется на
https://llm.liho.dev/v1/chat/completions. Поляmodel,messagesиmax_tokensобязательны:max_tokensограничивает длину ответа и задаёт резерв стоимости. У моделей с рассуждением токены рассуждения входят в этот лимит, поэтому закладывайте запас. В OpenAI SDK меняются толькоbase_urlи ключ.shellcurl https://llm.liho.dev/v1/chat/completions \ -H "Authorization: Bearer $LIHO_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "model": "gpt-6-sol", "max_tokens": 512, "messages": [ {"role": "user", "content": "Объясни в двух предложениях, что такое API-шлюз."} ] }'pythonimport os from openai import OpenAI client = OpenAI( base_url="https://llm.liho.dev/v1", api_key=os.environ["LIHO_API_KEY"], timeout=900, ) response = client.chat.completions.create( model="gpt-6-sol", max_tokens=512, messages=[{"role": "user", "content": "Объясни в двух предложениях, что такое API-шлюз."}], ) print(response.choices[0].message.content)typescriptimport OpenAI from "openai"; const client = new OpenAI({ baseURL: "https://llm.liho.dev/v1", apiKey: process.env.LIHO_API_KEY, timeout: 900_000, }); const response = await client.chat.completions.create({ model: "gpt-6-sol", max_tokens: 512, messages: [{ role: "user", content: "Объясни в двух предложениях, что такое API-шлюз." }], }); console.log(response.choices[0].message.content);Проверьте стоимость
В ответе поле
usageсодержит число токенов иcost— списанную сумму в рублях. Тот же запрос появится в разделе «Логи» кабинета: модель, ключ, токены, стоимость и время ответа.Если списание ещё не окончательное, поля
costв ответе не будет — итоговая сумма появится в «Логах».Включите потоковый ответ
С
"stream": trueответ приходит частями в формате SSE и заканчивается строкойdata: [DONE]. Последний фрагмент перед ней содержитusageсо стоимостью. Ответ может занимать до 15 минут — ставьте таймаут клиента не меньше 900 секунд.shellcurl -N https://llm.liho.dev/v1/chat/completions \ -H "Authorization: Bearer $LIHO_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "model": "gemini-3.8-flash", "max_tokens": 512, "stream": true, "messages": [ {"role": "user", "content": "Объясни в двух предложениях, что такое API-шлюз."} ] }'pythonstream = client.chat.completions.create( model="gemini-3.8-flash", max_tokens=512, stream=True, messages=[{"role": "user", "content": "Объясни в двух предложениях, что такое API-шлюз."}], ) for chunk in stream: if chunk.choices and chunk.choices[0].delta.content: print(chunk.choices[0].delta.content, end="", flush=True) if chunk.usage: print("\n", chunk.usage) # в последнем фрагменте — токены и cost в рубляхВыберите модель
Идентификаторы моделей и цены за 1 млн токенов — в каталоге. Модель меняется одним полем
Каталог моделейmodel. Набор поддерживаемых параметров у моделей разный: он указан в карточке модели.
Что получится
- Рабочий ключ
lh_…и проверенный запрос к API. - Стоимость каждого запроса в рублях — в ответе и в разделе «Логи».
- Шаблон запроса для curl, Python или TypeScript, который можно перенести в своё приложение.
Ограничения
- Поддерживается только
POST /v1/chat/completions. Нет Responses API, эмбеддингов, генерации изображений и аудио. - Без
max_tokens(илиmax_completion_tokens) запрос вернёт ошибку400. - Протокол Anthropic (
/v1/messages) не поддерживается. - Структурированный вывод (
response_format) иstopсейчас не включены ни для одной модели каталога. - Документация в кабинете открывается после входа. Без входа доступны
openapi.yamlиllms.txt. - Ключ показывается только при создании. Если он потерян, отзовите его и создайте новый.