Создание собственной функции

Пользователи могут создавать собственные функции, если владеют языком программирования Python.  Для тех, кто не владеет Python, есть решение с использованием бота. Сперва необходимо с помощью функции №65 Внешний API проверить работоспособность идеи. У каждого сервиса, который предоставляет открытый API есть документация, необходимо использовать её для того, чтобы создать рабочую связь с сервисом.

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

Как только вы убедились, что связь с сервисом по API работает и необходимый функционал выполняется, то переходите к написанию функции. Для этого в личном кабинете ProTalk найдите раздел Мои функции и нажмите синий плюсик "Добавить функцию". Перед вами откроется форма заполнения данных. 

Чтобы правильно создать определение и код функции используйте другого бота: Мастера по созданию функций. Он поможет вам написать и правильно оформить функцию для отправки на модерацию. Ему достаточно указать какой из известных сервисов вы хотите интегрировать с ProTalk, написать какие параметры хотите использовать и он напишет описание, определение и код функции. Останется только отправить его нам в разделе личного кабинета "Добавить функцию".

Обратите внимание на то, что для быстрой модерации вашей функции необходимо приложить ссылку на файл Google Colab. Файл создавайте по такому шаблону:

Документация для разработчиков функций

(для тех, кто сам готов написать код для функции)

Пример готовой функции в Google Colab:

Данная документация предназначена для разработчиков, которые создают функции для интеграции с ИИ платформой. Функции позволяют расширить возможности платформы, добавляя новые возможности для обработки запросов и выполнения задач.

Структура функции

Функция состоит из двух основных частей:

  1. Определение функции: JSON-объект, который описывает параметры функции и её назначение.

  2. Код функции: Реализация логики функции на языке Python.

Определение функции

Определение функции представляет собой JSON-объект, который содержит следующие поля:

  • name: Имя функции. Должно быть уникальным и описывать назначение функции.

  • description: Краткое описание функции, которое объясняет, что она делает.

  • parameters: Объект, описывающий параметры функции. Включает в себя:

  • type: Тип объекта (обычно object).

  • properties: Свойства параметров функции. Каждое свойство описывает один параметр и включает:

    • type: Тип параметра (например, integer, string).

    • description: Описание параметра.

    • enum (опционально): Список допустимых значений для параметра.

  • required: Список обязательных параметров.

Пример определения функции:

{
"name": "neon_calc",
"description": "Калькулятор стоимости изготовления вывески",
"parameters": {
"type": "object",
"properties": {
"height": {
"type": "integer",
"description": "Высота вывески в сантиметрах"
},
"letter_count": {
"type": "integer",
"description": "Количество букв в вывеске"
},
"wire_length": {
"type": "integer",
"description": "Длина провода в метрах для подведения питания к вывеске"
},
"has_frame": {
"type": "string",
"enum": ["Да", "Нет"],
"description": "Нужен ли каркас в вывеске"
},
"has_backplate": {
"type": "string",
"enum": ["Да", "Нет"],
"description": "Нужна ли подложка в вывеске"
}
},
"required": ["height", "letter_count"]
}
}

Код функции

Код функции реализует логику, описанную в определении функции. Он должен быть написан на языке Python и соответствовать следующим требованиям:

  • Импорты: Все необходимые импорты должны быть выполнены внутри функции, после её объявления.

  • Параметры: Функция принимает один аргумент arguments, который содержит все переданные параметры.

  • Логика: Внутри функции должна быть реализована логика обработки параметров и выполнения необходимых вычислений.

  • Возвращаемое значение: Функция должна возвращать результат вычислений.

Пример кода функции:

def neon_calc(arguments):
import math
height = arguments['height']
letter_count = arguments['letter_count']

wire_length = 0
has_frame = False
has_backplate = False

if 'wire_length' in arguments:
wire_length = arguments['wire_length']
if 'has_frame' in arguments:
has_frame = True if arguments['has_frame'] == 'Да' else False
if 'has_backplate' in arguments:
has_backplate = True if arguments['has_backplate'] == 'Да' else False

base_cost_per_unit = 90 # Рубли за единицу
frame_cost_percentage = 5 # Процент стоимости каркаса от общей стоимости вывески
backplate_cost_percentage = 30 # Процент стоимости подложки от общей стоимости вывески
installation_cost_percentage = 25 # Процент стоимости монтажа от общей стоимости вывески
wire_cost_per_meter = 400 # Стоимость провода за метр
rent_cost_per_meter = 850 # Ежемесячная стоимость аренды за метр вывески

sign_cost = base_cost_per_unit * height * letter_count

if has_frame:
frame_cost = sign_cost * frame_cost_percentage / 100
sign_cost += frame_cost

if has_backplate:
backplate_cost = sign_cost * backplate_cost_percentage / 100
sign_cost += backplate_cost

if wire_length > 0:
wire_cost = wire_length * wire_cost_per_meter
sign_cost += wire_cost

installation_cost = sign_cost * installation_cost_percentage / 100
sign_cost += installation_cost

print(f"Общая стоимость вывески: {sign_cost} рублей")

return sign_cost

Рекомендации по разработке

  1. Именование функций: Имя функции должно быть уникальным и отражать её назначение.

  2. Описание параметров: Все параметры должны быть описаны в определении функции, чтобы пользователи могли понять, какие данные необходимо передать.

  3. Обработка ошибок: Убедитесь, что функция корректно обрабатывает отсутствующие или некорректные параметры.

  4. Тестирование: Перед интеграцией функции в платформу, убедитесь, что она протестирована и работает корректно.

Заключение

Создание функций для ИИ платформы требует внимательного подхода к определению параметров и реализации логики. Следуя рекомендациям, изложенным в данной документации, вы сможете создавать эффективные и удобные функции для интеграции с платформой.

© ProTalk 2023-2025 ИП Горелов Максим Николаевич ИНН 500104951533 ОГРН 309500106900065 

Новая, 8, 9 Реутов, Московская область 143964 Россия