Как интегрировать Jay Copilot в проект
Начало работы с Jay Copilot
- Авторизуйтесь в Jay Copilot с помощью вашей учетной записи Conversational Cloud.
- Перейдите в раздел Личный кабинет и пополните баланс токенов для работы с Jay Copilot.
- Получите доступ к API Jay Copilot. Для этого отправьте запрос на адрес genai@just-ai.com. Укажите ваше имя, телефон и название компании.
- Начните диалог с нужным приложением — используйте диалог, чтобы проверить свою гипотезу. Во время общения вы сможете оценить качество ответов, выбрать наиболее подходящую модель и параметры.
- Выпустите API-ключ и укажите его в сценарии вашего бота.
Использование API Jay Copilot
Если сохранение контекста не требуется (например, для однократной саммаризации или запуска утилиты), оптимальная стратегия работы с API Jay Copilot включает:
Этот подход исключает необходимость настройки многопоточности, так как каждый пользовательский запрос обрабатывается в отдельном диалоге, минимизируя время ожидания ответа.
Информацию о доступных методах 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;
};
Примеры сценариев
Бот-болталка со стартовым сообщением от приложения
Ниже приведен пример использования данного подхода для бота-болталки со стартовым промтом и стартовым сообщением от приложения:
-
Длинный стартовый промт можно поместить в словарь:
require: prompt.yaml
var = $PromptТекст промта:
Ты — дружелюбный и общительный бот-собеседник.
Твоя задача — поддерживать увлекательный и информативный диалог с пользователем на любую тему.
Ты можешь отвечать на вопросы, рассказывать истории, делиться интересными фактами, шутить и даже философствовать.
Будь креативным и отзывчивым.
Всегда старайся поддерживать контекст беседы и помнить предыдущие реплики пользователя. -
Здесь в стейте
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.