Спасибо, Сэм,
Кому-то проще, кому-то сложнее. Я отношусь к последней категории ![]()
Я пытаюсь разобраться с этим, но у меня пока не получается. У меня нет опыта работы с инструментами, поэтому я с нетерпением жду, когда у меня всё заработает, чтобы подумать о других способах их использования.
Я пробовал использовать код из вашего блога с API-ключом, но это не сработало. ИИ предложил мне использовать жёстко заданный URL, я попробовал, но тоже без успеха.
API-ключ не вызывался, и не было создано никаких логов с ошибками.
Это используется для автоматической категоризации тем при создании
Я классифицирую тему «Уроки из ранних лет Иисуса и его чудеса» в категорию Новый Завет, так как она связана с жизнью и учением Иисуса.
Перемещаю тему сейчас…
Вот что я пробовал.
/**
- Справочник по API инструментов
- Входные функции
- invoke(parameters): Основная функция. Принимает параметры (Объект). Должна возвращать значение, сериализуемое в JSON.
- Пример:
- function invoke(parameters) { return “result”; }
- details(): Опционально. Возвращает строку с описанием инструмента.
- Пример:
- function details() { return “Описание инструмента.”; }
- Предоставляемые объекты
- http
- http.get(url, options?): Выполняет HTTP GET-запрос.
- Параметры:
url (string): URL запроса.options (Object, optional):headers (Object): Заголовки запроса.- Возвращает:
{ status: number, body: string }- http.post(url, options?): Выполняет HTTP POST-запрос.
- Параметры:
url (string): URL запроса.options (Object, optional):headers (Object): Заголовки запроса.body (string): Тело запроса.- Возвращает:
{ status: number, body: string }- (также доступны: http.put, http.patch, http.delete)
- Примечание: Максимум 20 HTTP-запросов за одно выполнение.
- llm
- llm.truncate(text, length): Обрезает текст до указанной длины в токенах.
- Параметры:
text (string): Текст для обрезки.length (number): Максимальное количество токенов.- Возвращает:
Обрезанную строку.
- index
- index.search(query, options?): Ищет в индексированных документах.
- Параметры:
query (string): Запрос поиска.options (Object, optional):filenames (Array): Ограничить поиск конкретными файлами.limit (number): Максимальное количество фрагментов (до 200).- Возвращает:
Массив объектов { fragment: string, metadata: string }
- upload
- upload.create(filename, base_64_content): Загружает файл.
- Параметры:
filename (string): Имя файла.base_64_content (string): Контент файла в кодировке Base64.- Возвращает:
{ id: number, short_url: string }
- chain
- chain.setCustomRaw(raw): Устанавливает тело сообщения и завершает цепочку.
- Параметры:
raw (string): Сырой контент для добавления в сообщение.- Ограничения
- Время выполнения: ≤ 2000 мс
- Память: ≤ 10 МБ
- HTTP-запросы: ≤ 20 за одно выполнение
- Превышение ограничений приведёт к ошибкам или завершению работы.
- Безопасность
- Песочница: Нет доступа к системным или глобальным объектам.
- Нет доступа к файловой системе: Нельзя читать или записывать файлы.
*//**
- Категоризатор тем Discourse
- Этот инструмент позволяет изменить категорию темы Discourse
- с помощью API Discourse.
*//**
- Категоризатор тем Discourse
- Этот инструмент позволяет изменить категорию темы Discourse
- с помощью API Discourse.
*//**
- Категоризатор тем Discourse
- Этот инструмент позволяет изменить категорию темы Discourse
- с помощью API Discourse.
*/function invoke(params) {
// Проверка обязательных параметров
if (!params.topic_id) {
return { error: “Отсутствует обязательный параметр: topic_id” };
}if (!params.category_id) {
return { error: “Отсутствует обязательный параметр: category_id” };
}// Базовый URL вашего экземпляра Discourse
const baseUrl = “https://community.mysite.com”;// Полный URL API для обновления темы
const apiUrl =${baseUrl}/t/${params.topic_id}.json;// Подготовка тела запроса
const requestBody = {
category_id: params.category_id
};// Опциональный параметр: обновить заголовок, если он указан
if (params.title) {
requestBody.title = params.title;
}// Используйте ваш API-ключ
const apiKey = “Discourse-API-Key”;try {
// Выполнение PUT-запроса для обновления темы
const response = http.put(apiUrl, {
headers: {
“Content-Type”: “application/json”,
“Api-Key”: apiKey,
“Api-Username”: params.api_username || “system”
},
body: JSON.stringify(requestBody)
});if (response.status >= 200 && response.status < 300) { return { success: true, topic_id: params.topic_id, category_id: params.category_id, response: JSON.parse(response.body) }; } else { return { error: `Не удалось обновить категорию темы. Статус: ${response.status}`, details: response.body }; }} catch (error) {
return {
error: “Произошла ошибка при обновлении категории темы”,
details: error.toString()
};
}
}function details() {
return “Классифицирует тему, перемещая её в указанную категорию”;
}