API нейросети БотПрофи

Для работы с API нейросети БотПрофи нужно подключить платные запросы. При этом допустимый объем текста, отправляемого в нейросеть составляет 10 000 символов (текст выше этого лимита будет автоматически обрезан). Стоимость одной генерации ответа через API БотПрофи — 2 запроса.





Chat GPT совместимый API (рекомендуется)

POST
/v1/chat/completions

Описание

Мы предоставляем эндпоинт, полностью совместимый с OpenAI API. Вы можете использовать любые библиотеки и инструменты, предназначенные для работы с ChatGPT, просто изменив базовый URL на https://botprofi.ru/v1/.

В качестве модели (параметр model) следует указывать botprofi. Ключ доступа к API необходимо передавать в заголовке Authorization как Bearer токен.

Пример на Python с библиотекой OpenAI

from openai import OpenAI

# Укажите ваш API-ключ, полученный на https://botprofi.ru/account
api_key = "ВАШ_API_КЛЮЧ"

client = OpenAI(
    api_key=api_key,
    base_url="https://botprofi.ru/v1/"
)

chat_completion = client.chat.completions.create(
    messages=[
        {
            "role": "user",
            "content": "Напиши короткое предложение про рыбалку",
        }
    ],
    model="botprofi",
)

print(chat_completion.choices[0].message.content)

Пример на JavaScript

async function getBotProfiCompletion() {
  const apiKey = "ВАШ_API_КЛЮЧ";
  const apiUrl = "https://botprofi.ru/v1/chat/completions";

  try {
    const response = await fetch(apiUrl, {
      method: 'POST',
      headers: {
        'Content-Type': 'application/json',
        'Authorization': `Bearer ${apiKey}`
      },
      body: JSON.stringify({
        model: "botprofi",
        messages: [{ role: "user", content: "Напиши короткое предложение про рыбалку" }]
      })
    });

    if (!response.ok) {
      throw new Error(`Ошибка HTTP: ${response.status}`);
    }

    const data = await response.json();
    return data.choices[0].message.content; // Возвращаем результат

  } catch (error) {
    console.error("Не удалось выполнить запрос:", error);
    return null; // Возвращаем null в случае ошибки
  }
}

// Пример использования:
getBotProfiCompletion().then(result => {
  if (result) {
    console.log("Результат:", result);
  }
});

Устаревшие методы API:


Запросить генерацию ответа

POST
/api/generate_response

Request body

{
    "input_text": "История рыбной ловли",
    "mode": "text",
    "key": "98s21-2244-6314-2561-333321"
}

Описание

input_text текст запроса к нейросети.
mode режим нейросети.
key ключ доступа к API — получить на https://botprofi.ru/account.


Response body

{
    "request_id": 23972,
    "status": "processing",
    "balance": 224
}

Описание

request_id ID запроса для последующего получения ответа нейросети.
status Статус ответа нейросети. Может быть "processing" или "failed".
error_message (опционально) Сообщение об ошибке.
balance Баланс. Проверить: /api/balance или на https://botprofi.ru/account в графе "Оплаченные запросы".



Загрузка...
import json
import requests
HOST_URL = 'https://botprofi.ru/api/'


def post_request(endpoint, payload):
    url = f"{HOST_URL}{endpoint}"
    response = requests.post(url, data=json.dumps(payload))
    return response.json()


def generate_response(api_key, input_text, mode):
    payload = {'input_text': input_text, 'mode': mode, 'key': api_key}
    return post_request('generate_response', payload)
HTTP [200]
{
    "request_id": 22114,
    "status": "processing",
    "balance": 125
}
HTTP [403]
{
    "status": "failed",
    "error_message": "Недостаточно запросов для генерации. Баланс: 1. Нужно: 2. Оплатить запросы: https://botprofi.ru/price",
    "balance": 1
}
HTTP [400]
{
    "status": "failed",
    "error_message": "Отсутствуют необходимые параметры: key"
}

Получить результат

POST
/api/status
Цена: 0

Request body

{
    "request_id": 31567,
    "key": "98s21-2244-6314-2561-333321"
}

Описание

request_id ID запроса, который получен в методе /api/generate_response.
key ключ доступа к API — получить на https://botprofi.ru/account.


Response body

{
    "request_id": 22146,
    "status": "processing"
}

Описание

status Статус ответа нейросети. Может быть "processing", "failed" или "completed".
result Ответ нейросети.
error_message (опционально) Сообщение об ошибке.



import json
import requests
HOST_URL = 'https://botprofi.ru/api/'


def post_request(endpoint, payload):
    url = f"{HOST_URL}{endpoint}"
    response = requests.post(url, data=json.dumps(payload))
    return response.json()


def get_status(api_key, request_id):
    payload = {'request_id': request_id, 'key': api_key}
    return post_request('status', payload)
HTTP [200]
(Ответ успешно сгенерирован)
{
    "request_id": 35471,
    "status": "completed",
    "result": "Рыбалка учит терпению и дарит незабываемые моменты единения с природой."
}
HTTP [200]
(Ответ в процессе генерации)
{
    "request_id": 35471,
    "status": "processing"
}
HTTP [404]
{
    "status": "failed",
    "error_message": "Запрос с таким ID не найден"
}

Проверить баланс

POST
/api/balance
Цена: 0

Request body

{
    "key": "98s21-2244-6314-2561-333321"
}

Описание

key ключ доступа к API — получить на https://botprofi.ru/account.


Response body

{
    "balance": 123
}

Описание

balance Баланс. Также виден на https://botprofi.ru/account в графе "Оплаченные запросы".
error_message (опционально) Сообщение об ошибке.



import json
import requests
HOST_URL = 'https://botprofi.ru/api/'


def post_request(endpoint, payload):
    url = f"{HOST_URL}{endpoint}"
    response = requests.post(url, data=json.dumps(payload))
    return response.json()


def check_balance(api_key):
    payload = {'key': api_key}
    return post_request('balance', payload)
HTTP [200]
{
    "balance": 122
}
HTTP [403]
{
    "error_message": "Некорректный API ключ. Получить можно на https://botprofi.ru/account"
}

Реализация на Python (старый метод)

import time
import json
import requests

HOST_URL = 'https://botprofi.ru/api/'


def post_request(endpoint, payload):
    url = f"{HOST_URL}{endpoint}"
    response = requests.post(url, data=json.dumps(payload))
    return response.json()


def generate_response(api_key, input_text, mode):
    payload = {'input_text': input_text, 'mode': mode, 'key': api_key}
    return post_request('generate_response', payload)


def get_status(api_key, request_id):
    payload = {'request_id': request_id, 'key': api_key}
    return post_request('status', payload)


def check_balance(api_key):
    payload = {'key': api_key}
    return post_request('balance', payload)


def wait_for_completion(api_key, request_id, max_attempts=80, sleep_time=2):
    for _ in range(max_attempts):
        time.sleep(sleep_time)
        status_info = get_status(api_key, request_id)

        if status_info.get('status') == 'completed':
            return status_info['result']
        if status_info.get('status') == 'failed':
            print(f"Не удалось получить результат. Ошибка: {status_info.get('error_message', 'Неизвестная ошибка')}.")
            return None

    print("Истекло время ожидания результата.")
    return None


def solve(api_key, mode, input_text):
    response_info = generate_response(api_key, input_text, mode)

    if response_info.get('status') != 'processing':
        print(f"Не удалось запросить генерацию. Ошибка: {response_info.get('error_message', 'Неизвестная ошибка')}.")
        return None

    request_id = response_info['request_id']
    print(f"Создан запрос с id {request_id}.")

    return wait_for_completion(api_key, request_id)


if __name__ == '__main__':
    api_key = 'ВАШ_API_КЛЮЧ'
    mode = 'chat'  # Режим нейросети
    input_text = 'Напиши короткое предложение про рыбалку'
    print("Результат:\n", solve(api_key, mode, input_text))