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

Пользователи могут создавать собственные функции, если владеют языком программирования 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. Тестирование: Перед интеграцией функции в платформу, убедитесь, что она протестирована и работает корректно.

Заключение

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