Как подключить API для ролевого чата?
Чтобы подключить API для ролевого чата с AI-персонажами, храните описание героя и историю в своём приложении, передавайте нужные сообщения в Chat Completions и сохраняйте завершённые ответы. В Dikaya для этого используются https://dikaya.cloud/v1, личный ключ и публичный ID модели. Сам API не создаёт постоянную память персонажа. Это руководство для разработчика: от карточки героя до управляемого диалога с понятным расходом.
Коротко о главном
- Характер, факты мира и последние реплики — разные части контекста; обновляйте их отдельно.
- История вашего приложения не появляется автоматически в браузерном чате Dikaya и наоборот.
- Ролевой чат без цензуры не означает бесконечную память, бесплатный доступ или гарантию любого ответа.
Чем AI-персонаж отличается от обычного запроса
AI-персонаж через API — это сценарий приложения, в котором модель получает устойчивую роль, факты вымышленного мира и актуальную реплику собеседника. Например, персонаж может быть смотрителем заброшенного маяка: он знает устройство острова, скрывает причину своего приезда и говорит короткими фразами. Именно ваши сообщения задают эту рамку; отдельная кнопка «создать личность» в протоколе не требуется.
Разделите карточку на четыре поля: кто герой, чего он хочет, что уже знает и как разговаривает. Не смешивайте голос персонажа с событиями, которые ещё не произошли. Если герой только подозревает обман, это не то же самое, что установленный факт. Такая структура помогает программе обновлять сюжет, не переписывая всю инструкцию после каждой реплики.
Позиционирование Dikaya как API без цензуры относится к выбору задач и работе с моделями, а не к измеренной вероятности отказа. Поведение конкретного персонажа нужно проверять на своих сценариях. Не обещайте аудитории, что модель всегда удержит характер или поддержит любую тему: проверяемый результат здесь — качество конкретного диалога, а не рекламная формула.
Где хранить память и историю ролевого диалога
Историю ролевого чата хранит ваше приложение: в базе, файле или другом выбранном хранилище. При следующем вызове API передайте нужные сообщения заново. Аккаунт Dikaya не связывает произвольные Chat Completions в самостоятельную сюжетную сессию по одному имени персонажа. Не путайте служебные журналы сервиса с памятью, которую вы явно включили в запрос.
Практично держать три слоя: неизменяемую карточку, короткую сводку подтверждённых событий и последние реплики. Сводка может содержать найденный предмет, договорённость или важную перемену в отношениях. Храните рядом исходные сообщения, из которых она получена. Тогда ошибочную выжимку можно исправить, а не незаметно превратить предположение модели в факт мира.
Для нескольких пользователей создайте отдельный идентификатор разговора и проверяйте его владельца на сервере. Не объединяйте всю аудиторию в одну глобальную переменную истории: один человек иначе увидит продолжение чужого сюжета. Пример ниже специально однопользовательский и хранит данные только до завершения процесса; это проверка механики, не готовая многопользовательская база.
Пример Python: один ход персонажа через API
Установите пакет командой python -m pip install openai и задайте DIKAYA_API_KEY в окружении серверного процесса. Сохраните пример как roleplay.py и запустите python roleplay.py. В нём один запрос, явные 512 выходных токенов и отключённые автоматические повторы. Ключ не вставляется в браузерный JavaScript или карточку персонажа.
Код добавляет в историю только завершённый текстовый ответ без отдельного поля refusal. Если модель вызвала инструмент или исчерпала длину, программа показывает причину завершения, но не записывает такой результат как нормальный ход. Полученную часть текста при этом можно прочитать в выводе. Для продукта вместо консоли предусмотрите отдельный статус и возможность вернуться к черновику.
import os
from openai import OpenAI
client = OpenAI(
base_url="https://dikaya.cloud/v1",
api_key=os.environ["DIKAYA_API_KEY"],
max_retries=0,
timeout=90.0,
)
history = [{"role": "system", "content": (
"Ты играешь взрослого смотрителя маяка Илью, 38 лет. "
"Говори сдержанно. Не описывай действия собеседника за него. "
"Не добавляй факты прошлого, которых нет в карточке."
)}]
def reply(text):
turn = {"role": "user", "content": text}
result = client.chat.completions.create(
model="seller-pro-2", max_tokens=512,
messages=history + [turn],
)
if not result.choices:
raise RuntimeError("Нет варианта ответа")
choice = result.choices[0]
answer = choice.message.content or ""
if (choice.finish_reason == "stop" and answer.strip()
and not getattr(choice.message, "refusal", None)):
history.extend([turn, {"role": "assistant", "content": answer}])
return {"text": answer, "finish_reason": choice.finish_reason}
if __name__ == "__main__":
print(reply("Я нашёл у причала твой старый компас. Почему ты его выбросил?"))Вопрос персонажу: проверьте голос и инициативу
Для проверки роли полезна реплика, которая требует от героя выбора, а не пересказа биографии. Задайте ситуацию с предметом, обстоятельством и скрытым конфликтом. Смотрите, отвечает ли персонаж на услышанное, не присваивает ли действия собеседника и оставляет ли пространство для следующего хода. Это наблюдаемые критерии, которые можно записать в тестовый набор.
Ниже — иллюстративная постановка и размытый образец ответа, а не результат вызова модели. Кнопка переносит вопрос в настоящий чат для вашей проверки; отправка остаётся ручной. В интеграции тот же вопрос можно передать как сообщение user вместе с карточкой героя. Оцените собственный ответ, прежде чем использовать шаблон в приложении.
Как сократить контекст и не потерять характер
Не отправляйте бесконечно растущий массив без отбора. Установите предел последних сообщений и отдельно обновляйте сводку сюжета. После сокращения проверяйте, остались ли имена, мотивация и незавершённый вопрос предыдущего хода. Механическое удаление первых сообщений может убрать саму карточку героя; поэтому системную инструкцию держите отдельно от очереди реплик.
Окно Pro 2 до 1 млн токенов не означает бесплатное хранение всей переписки или ответ такой же длины. Dikaya Pro 2 — доработанная версия на основе GLM-5.3; API-ID остаётся seller-pro-2. Для платного шлюза длина выхода по умолчанию 2048 токенов, явный предел до 65536 с учётом модели, а JSON-тело ограничено 16 МиБ. Вводные из примера не расширяют эти значения.
- Сохраняйте карточку отдельно от реплик.
- Обновляйте только подтверждённые факты сводки.
- Передавайте ограниченную последнюю историю.
- Не фиксируйте обрыв как завершённый ход.
Как ограничить расход и обработать неудачный ход
Для нового подходящего аккаунта предусмотрены разовое демо $0.5 и до 25 запросов. В демо только текстовый Chat Completions, до 512 выходных токенов и 6000 байт контекста, 10 RPM и один запрос одновременно. Короткий первый ход обычно удобнее для проверки интерфейса; выдача демо зависит от опубликованных условий и не обещана повторной регистрации.
В платном режиме учитывайте весь отправленный контекст, а не только последнюю фразу пользователя. История увеличивает вход, выход может включать рассуждение, а цена зависит от тарифа доступных средств. Если активирован код с отдельным бюджетом, его наценка относится к этому бюджету; после его исчерпания применяется следующий источник или обычный тариф. Текущие сведения смотрите в авторизованных /v1/models и /v1/balance.
До inference резервируются средства. Если исход неизвестен, резерв может сохраняться до сверки; повтор после таймаута способен создать отдельный расход. Покажите собеседнику состояние запроса и сохраните введённую реплику вместо скрытого перезапуска. Так подключение API для ролевого чата останется управляемым и по истории, и по оплате.
Что делать с приватными сюжетами пользователей
Объясните аудитории, какие данные хранит ваше приложение и какие отправляет в Dikaya. На стороне сервиса сохраняются запросы, ответы и финансово-служебные записи; администратору доступны защищённые журналы и приватные Telegram-уведомления. Название «без цензуры» не означает анонимную обработку без журналов. Не включайте в сюжет чужие секреты и ненужные персональные сведения.
Проверьте собственное удаление разговоров отдельно от удаления аккаунта у поставщика API. В разных хранилищах могут оставаться финансовые записи и резервные копии. Для первого релиза достаточно одного хорошо проверенного сценария: отдельная история, понятный статус хода, честный лимит и способ сообщить о проблеме. Затем расширяйте память и интерфейс по наблюдениям реальных пользователей.
Вопросы и ответы
Создаёт ли Chat Completions постоянную память персонажа?
Нет, для показанного сценария нужную историю хранит и передаёт ваше приложение. Карточку, сводку событий и последние сообщения удобно вести отдельно. Служебный журнал Dikaya не заменяет эту память и не добавляется автоматически к следующему вызову. Для нескольких пользователей также нужна серверная проверка владельца каждого разговора.
Можно ли подключить ролевой чат через Python?
Да, пример использует OpenAI Python SDK с base_url https://dikaya.cloud/v1, ключом из DIKAYA_API_KEY и моделью seller-pro-2. Он делает один короткий текстовый вызов и не включает скрытые повторы. Для рабочего сервиса дополните пример собственным хранением истории, авторизацией, ограничением параллельности и обработкой незавершённого ответа.
Гарантирует ли API без цензуры ответ на любой ролевой запрос?
Нет, это позиционирование сервиса, а не измеренная гарантия поведения каждой модели. Возможны отказ, ошибка, обрыв или потеря деталей роли. Проверяйте персонажа на своём наборе сцен и отличайте содержание ответа от технического статуса. Расход оценивайте по фактическим токенам и условиям бюджета, а не по числу видимых реплик.
Источники и условия
Материал подготовлен с помощью AI. Факты о Dikaya сверены с каталогом, документацией и правилами сервиса; примеры запросов не являются записью реального ответа или сравнительным тестом моделей. Внешние источники поясняют исходные технологии и не заменяют условия Dikaya. Публикует Dikaya — сервис, о котором идёт речь в руководстве.
Проверьте на своей задаче
Возьмите один пример, подставьте свои вводные и оцените результат. Для короткой проверки подойдёт доступное вашему аккаунту демо; для длинных запросов ознакомьтесь с условиями пополнения.
Открыть чат Dikaya Перейти к документации