Документация API LakeGPT

Интегрируйте мощь передовых нейросетей LakeGPT в ваши приложения. Эта документация поможет вам начать работу с нашим API, понять его возможности, ограничения и лучшие практики использования.

Введение

Добро пожаловать в документацию по API LakeGPT! Наше API предоставляет программный доступ к разнообразным моделям искусственного интеллекта, позволяя разработчикам интегрировать возможности генерации текста, ответов на вопросы и выполнения других интеллектуальных задач непосредственно в свои продукты и сервисы.

API разработано с упором на простоту использования и гибкость. В основе лежит RESTful архитектура, взаимодействие происходит через стандартные HTTP-запросы, а данные передаются в формате JSON.

На данный момент API включает два основных эндпоинта:

  • /api/models: Получение списка доступных моделей ИИ.
  • /api/chat: Отправка запроса к выбранной модели ИИ и получение ответа.

Базовый URL для всех запросов к API: https://api.lakegpt.ru/api/

Важное замечание о CORS: На данный момент API сконфигурировано так, чтобы принимать запросы в основном с домена https://chat.lakegpt.ru. Если вы планируете использовать API с другого домена (например, с вашего локального сервера разработки или другого веб-приложения), вам может потребоваться настройка прокси или обращение к нам для возможной корректировки политики CORS.

Аутентификация и Заголовки

На текущий момент API LakeGPT не требует сложных ключей аутентификации для базового использования. Однако для обеспечения безопасности и предотвращения злоупотреблений, все POST запросы к API (включая /api/chat и /api/models) должны содержать специфический HTTP-заголовок:

X-Requested-With: XMLHttpRequest

Этот заголовок обычно автоматически добавляется JavaScript-библиотеками для AJAX-запросов (например, Fetch API, Axios, jQuery.ajax). Если вы делаете запросы из серверной среды (например, Python скрипт), вам нужно будет добавить этот заголовок вручную.

Запросы без этого заголовка будут отклонены с кодом ошибки 400 Bad Request и сообщением {"error": "Missing required headers"}.

Также все запросы должны отправляться с заголовком Content-Type: application/json, если тело запроса содержит JSON данные (как в случае с /api/chat).

Лимиты Запросов (Rate Limits)

Для обеспечения стабильной работы сервиса для всех пользователей и защиты от злонамеренной активности, API LakeGPT использует систему ограничения частоты запросов (rate limiting). Лимиты применяются на основе IP-адреса клиента.

  • Эндпоинт /api/chat: 20 запросов в минуту на IP-адрес.
  • Эндпоинт /api/models: 30 запросов в минуту на IP-адрес.

Если вы превысите установленный лимит, API вернет ошибку с кодом состояния 429 Too Many Requests. В этом случае вам следует подождать некоторое время перед отправкой следующего запроса.

Кроме того, сервер может блокировать запросы с IP-адресов, занесенных в черный список, или запросы с User-Agent, соответствующими известным ботам или скрейперам (например, стандартные User-Agent библиотек requests или aiohttp без кастомизации). В таких случаях будет возвращен код 403 Forbidden.

Эндпоинты API

Получение списка моделей

Этот эндпоинт позволяет получить актуальный список моделей ИИ, доступных через API LakeGPT, с их краткими описаниями.

Метод: POST

URL: https://api.lakegpt.ru/api/models

Заголовки запроса:

  • X-Requested-With: XMLHttpRequest (Обязательный)
  • Content-Type: application/json (Рекомендуется, хотя тело запроса пустое)

Тело запроса:

Не требуется.

Успешный ответ (Код 200):

Возвращает JSON-объект, где ключами являются идентификаторы моделей, а значениями - объекты с полями name (отображаемое имя) и description (описание).

{
  "deepseek-r1": {
    "name": "🟡 DeepSeek R1",
    "description": "Мощная модель для сложных задач"
  },
  "gemini-2.0-pro-exp": {
    "name": "🟡 Gemini 2.0 Pro",
    "description": "Экспериментальная модель от Google"
  },
  "o3-mini": {
    "name": "🔴 OpenAI o3 mini",
    "description": "Продвинутая модель для сложных задач"
  },
  "o1-mini": {
    "name": "🟢 OpenAI o1 mini",
    "description": "Продвинутая модель для сложных задач"
  },
   "searchgpt": {
    "name": "🟢 SearchGPT",
    "description": "Модель для поиска в реальном времени"
   },
  "gpt-4o-mini": {
    "name": "🔴 ChatGPT-4o mini",
    "description": "Обычная модель для повседневных задач"
  },
  "gpt-4o": {
    "name": "🟢 ChatGPT-4o",
    "description": "Обычная модель для повседневных задач"
  },
  "meta-llama/Llama-3.3-70B-Instruct-Turbo": {
    "name": "🔴 Llama 3.3 70B",
    "description": "Обычная модель для повседневных задач"
  },
  "mistralai/Mistral-Small-24B-Instruct-2501": {
    "name": "🔴 Mistral Small 3",
    "description": "Обычная модель для повседневных задач"
  },
  "claude-3-haiku-20240307": {
    "name": "🔴 Claude 3 Haiku",
    "description": "Обычная модель для повседневных задач"
  }
  // ... и другие модели
}

Пример кода на Python:

import requests
import json

api_url = "https://api.lakegpt.ru/api/models"
headers = {
    'X-Requested-With': 'XMLHttpRequest',
    'Content-Type': 'application/json',
    # Рекомендуется установить кастомный User-Agent
    'User-Agent': 'MyLakeGPTClient/1.0 (MyProject; +http://myproject.example.com)'
}

try:
    response = requests.post(api_url, headers=headers)
    response.raise_for_status() # Проверка на HTTP ошибки

    models_data = response.json()
    print("Доступные модели:")
    for model_id, details in models_data.items():
        print(f"- ID: {model_id}")
        print(f"  Имя: {details['name']}")
        print(f"  Описание: {details['description']}")
        print("-" * 20)

except requests.exceptions.RequestException as e:
    print(f"Ошибка при запросе списка моделей: {e}")
    if e.response is not None:
        print(f"Статус код: {e.response.status_code}")
        try:
            print(f"Тело ответа: {e.response.json()}")
        except json.JSONDecodeError:
            print(f"Тело ответа: {e.response.text}")

except json.JSONDecodeError:
    print("Ошибка декодирования JSON ответа.")

Запрос к чат-модели

Это основной эндпоинт для взаимодействия с моделями ИИ. Вы отправляете историю диалога и параметры, а API возвращает ответ, сгенерированный выбранной моделью.

Метод: POST

URL: https://api.lakegpt.ru/api/chat

Заголовки запроса:

  • X-Requested-With: XMLHttpRequest (Обязательный)
  • Content-Type: application/json (Обязательный)
  • User-Agent (Рекомендуется установить кастомный)

Тело запроса (JSON):

  • messages (array[object], Обязательный): Массив объектов, представляющих историю диалога. Каждый объект должен содержать:
    • role (string): Роль автора сообщения. Обычно "user" для сообщений пользователя и "assistant" для предыдущих ответов модели. Первое сообщение чаще всего имеет роль "user".
    • content (string): Текст сообщения.
  • model (string, Опциональный): Идентификатор модели, которую вы хотите использовать (из списка, полученного через /api/models). Если не указан, используется модель по умолчанию (o3-mini). Важно: Рекомендуется всегда указывать модель явно, выбирая из тех, которые подтвержденно работают (см. Примечание ниже).
  • max_tokens (integer, Опциональный): Максимальное количество токенов (примерно слов или частей слов), которое модель должна сгенерировать в ответе. *Примечание: текущая реализация на стороне сервера может не всегда строго соблюдать этот параметр для всех провайдеров моделей.*

Пример тела запроса:

{
  "messages": [
    {
      "role": "user",
      "content": "Привет! Расскажи анекдот про программиста."
    }
  ],
  "model": "gpt-4o"
}

Успешный ответ (Код 200):

Возвращает ответ модели в виде простого текста (text/plain).

Почему программисты предпочитают тёмную тему?
Потому что свет притягивает баги!

Обработка ошибок:

API может возвращать различные коды ошибок:

  • 400 Bad Request: Неверный формат запроса (например, отсутствует обязательное поле messages, неверный JSON, отсутствует заголовок X-Requested-With). Тело ответа будет содержать JSON с полем error.
  • 403 Forbidden: Доступ запрещен (например, IP в черном списке или заблокированный User-Agent).
  • 429 Too Many Requests: Превышен лимит запросов.
  • 500 Internal Server Error: Непредвиденная ошибка на сервере LakeGPT. Тело ответа может содержать JSON с полем error.
  • 502 Bad Gateway / 503 Service Unavailable: Проблема на стороне провайдера модели ИИ (например, LakeAI.com или LakeCoinAI). Тело ответа может содержать JSON с полем error.

Пример кода на Python:

import requests
import json

api_url = "https://api.lakegpt.ru/api/chat"
headers = {
    'X-Requested-With': 'XMLHttpRequest',
    'Content-Type': 'application/json',
    'User-Agent': 'MyLakeGPTClient/1.0 (MyProject; +http://myproject.example.com)'
}

payload = {
    "messages": [
        {"role": "user", "content": "Напиши простой Python скрипт для вывода 'Hello, World!'"}
    ],
    # Указываем конкретную рабочую модель:
    "model": "gpt-4o"
    # "model": "deepseek-chat" # Или другую доступную модель
    # "model": "searchgpt" # Для поиска в вебе
}

try:
    response = requests.post(api_url, headers=headers, json=payload)
    response.raise_for_status() # Проверка на HTTP ошибки (4xx, 5xx)

    # Ответ приходит как обычный текст
    ai_response = response.text
    print("Ответ от AI:")
    print(ai_response)

except requests.exceptions.RequestException as e:
    print(f"Ошибка при запросе к чату: {e}")
    if e.response is not None:
        print(f"Статус код: {e.response.status_code}")
        # Пытаемся прочитать тело ошибки как JSON, если не получается - как текст
        try:
            error_details = e.response.json()
            print(f"Детали ошибки: {error_details}")
        except json.JSONDecodeError:
            print(f"Тело ответа (не JSON): {e.response.text}")

except Exception as e:
    print(f"Произошла неожиданная ошибка: {e}")

Примечание о доступности моделей

Хотя эндпоинт /api/models возвращает широкий список моделей, текущая серверная логика маршрутизации запросов (в файле `app.py`) активно обрабатывает только следующие модели через соответствующих провайдеров:

  • Провайдер LakeCoinAI: deepseek-r1, deepseek-chat, gemini-2.0-pro-exp
  • Провайдер LakeAI.com: o1-mini, gpt-4o, searchgpt

Запросы к другим моделям, перечисленным в /api/models (например, o3-mini, gpt-4o-mini, Llama, Mistral, Claude), на данный момент могут не обрабатываться должным образом из-за особенностей реализации сервера и, скорее всего, приведут к ошибке 500 Internal Server Error с сообщением {"error": "AI service error"}.

Рекомендуется при вызове /api/chat явно указывать одну из моделей, перечисленных выше, для гарантированной работы.