Перейти к основному содержимому

Как интегрировать Jay Copilot в проект

Начало работы с Jay Copilot

  1. Авторизуйтесь в Jay Copilot с помощью вашей учетной записи Conversational Cloud.
  2. Перейдите в раздел Личный кабинет и пополните баланс токенов для работы с Jay Copilot.
  3. Получите доступ к API Jay Copilot. Для этого отправьте запрос на адрес genai@just-ai.com. Укажите ваше имя, телефон и название компании.
  4. Начните диалог с нужным приложением — используйте диалог, чтобы проверить свою гипотезу. Во время общения вы сможете оценить качество ответов, выбрать наиболее подходящую модель и параметры.
  5. Выпустите API-ключ и укажите его в сценарии вашего бота.

Использование API Jay Copilot

Если сохранение контекста не требуется (например, для однократной саммаризации или запуска утилиты), оптимальная стратегия работы с API Jay Copilot включает:

  1. Создание диалога.
  2. Отправка запроса и получение ответа.
  3. Удаление диалога.

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

к сведению

Информацию о доступных методах API Jay Copilot и параметрах можно найти в документации Jay Copilot, а также в спецификации API.

Примеры функций

Создание диалога

  • Функция initConversation инициализирует диалог с приложением, принимая системный промт в качестве аргумента (строка 5).
  • Заголовок запроса содержит Jay Copilot API-ключ, а тело — название приложения ("template": "directLLM") и параметры модели (строки 6–9 и 10–26).
  • Отправляется запрос POST /api/appsAdapter/conversations (строка 27).
  • В ответ возвращается JSON-объект со статусом и ID созданного диалога (строка 29).
// URL для всех возможных запросов к API приложений Jay Copilot
var baseUrl = "https://app.jaycopilot.com/api/appsAdapter";

// Функция создания диалога с приложением «Прямой доступ к нейросетям → ChatGPT».
function initConversation(systemPrompt) {
var headers = {
// Получение токена от Jay Copilot из раздела «Токены и переменные» из JAICP
"x-api-key": $secrets.get("copilotToken")
};
var body = {
"app": {
"template": "directLLM",
"params": {
"modelName": "gpt-4",
"temperature": 0.5,
"topP": 1,
"presencePenalty": 0,
"frequencyPenalty": 0,
"systemPrompt": systemPrompt,
"maxInputTokensGpt4": 6000,
"maxTokensGpt4": 1024,
"autoContextReset": false,
"contextActions": false
}
}
};
var res = $http.post(baseUrl + "/conversations", { headers: headers, body: body });
if (!res.isOk || !res.data) throw new Error("Error calling Jay Copilot API");
return res.data.id;
};
подсказка

Список доступных шаблонов (template) и соответствующих параметров (params) можно получить с помощью метода: GET /api/appsAdapter/templates.

Отправка запроса и получение ответа

  • Функция conversate отправляет запрос в созданный диалог, принимая ID диалога в качестве аргумента (строка 2).
  • Заголовок запроса содержит токен Jay Copilot, а тело — текст запроса из переменной $.temp.query или $.request.query (строки 3–5 и 6–8).
  • Отправляется запрос POST /api/appsAdapter/conversations/{conversationId}/message (строка 9).
  • В ответ возвращается JSON-объект с ответом приложения (строка 11).
// Функция отправки запроса в созданный диалог
function conversate(conversationId) {
var headers = {
"x-api-key": $secrets.get("copilotToken")
};
var form = {
"text": $.temp.query || $.request.query // Возможность задать запрос в приложение из сценария, используя переменную $.temp.query или $.request.query
};
var res = $http.post(baseUrl + "/conversations/" + conversationId + "/message", { headers: headers, form: form, timeout: 25000 });
if (!res.isOk || !res.data) throw new Error("Error calling Jay Copilot API");
return res;
};

Удаление диалога

  • Функция deleteConversation завершает диалог, принимая ID диалога в качестве аргумента (строка 2).
  • Заголовок запроса содержит токен Jay Copilot (строка 3–5).
  • Отправляется запрос DELETE /api/appsAdapter/conversations/{conversationId} (строка 6).
  • В ответ возвращается JSON-объект со статусом удаления диалога (строка 8).
// Функция удаления созданного диалога.
function deleteConversation(conversationId) {
var headers = {
"x-api-key": $secrets.get("copilotToken")
};
var res = $http.delete(baseUrl + "/conversations/" + conversationId, { headers: headers });
if (!res.isOk) throw new Error("Error calling Jay Copilot API");
return res;
};

Возможная обработка NoMatch

Функция requestSummarization обрабатывает запросы пользователей, пытаясь определить соответствующий стейт. Если исходный запрос попадает в стейт NoMatch, функция получает краткое изложение запроса от ChatGPT и повторно классифицирует его c помощью $nlp.match. Результат повторной классификации возвращается функцией.

function requestSummarization() {
var systemPrompt = "Highlight the main idea of the user's request in one sentence. Your answer should be on behalf of the user. Answer in Russian language. Request:"
var conversation = initConversation(systemPrompt);
// ID диалога с приложением, который мы получили при создании диалога.
var conversationId = conversation.id;

var res = conversate(conversationId);
deleteConversation(conversationId);
// Классификация ответа от ChatGPT.
var matchResult = $nlp.match(res.data.content[0].text, "/");
return matchResult;
};

Примеры сценариев

Бот-болталка со стартовым сообщением от приложения

Ниже приведен пример использования данного подхода для бота-болталки со стартовым промтом и стартовым сообщением от приложения:

  1. Длинный стартовый промт можно поместить в словарь:

    require: prompt.yaml
    var = $Prompt

    Текст промта:

    Ты — дружелюбный и общительный бот-собеседник.
    Твоя задача — поддерживать увлекательный и информативный диалог с пользователем на любую тему.
    Ты можешь отвечать на вопросы, рассказывать истории, делиться интересными фактами, шутить и даже философствовать.
    Будь креативным и отзывчивым.
    Всегда старайся поддерживать контекст беседы и помнить предыдущие реплики пользователя.
  2. Здесь в стейте AppStart создается новое приложение в Jay Copilot, содержащее системный промт. В этом же стейте происходит первое общение с приложением, в результате которого оно приветствует пользователя, уже зная о теме обращения ($temp.issue).

    Последующие взаимодействия с приложением осуществляются в стейте Dialogue.

    state: AppStart
    script:
    $temp.issue = $request.query;
    $session.conversationId = initConversation(resolveVariables($Prompt.BotStart)); // resolveVariables позволяет помещать переменную {{ $temp.issue }} в промт
    $temp.query = "Начинай диалог."
    var res = conversate($session.conversationId);
    var answer = res.data.content[0].text;
    $reactions.answer(answer);

    state: Dialogue
    q: *
    script:
    var res = conversate($session.conversationId);
    var answer = res.data.content[0].text;
    $reactions.answer(answer);

Туториал: бот с обращением к языковым моделям

Мы также подготовили туториал по созданию бота, использующего языковые модели для общения. В примере используется приложение Jay Copilot с доступом к ChatGPT и сервис, который размещается в Caila. Бот сможет поддерживать беседу на любые темы через Jay Copilot и предоставлять ее краткое содержание через Caila.