ИП Горелов Максим Николаевич 8 (915) 093-74-75
Что такое функция?
Функции — внешние инструменты (фрагменты кода), к которым могут обращаться LLM модели для решения задач пользователей. Модель не исполняет функции, но самостоятельно принимает решение о том как, когда и с какими параметрами их следует вызвать. При принятии решения о вызове функции модель исходит из доступных знаний, данных текущего разговора и описания функции. После обращения к функции модель может обработать результат ее работы.
Что такое параметры?
Это входные данные, которые функция использует для выполнения своей задачи. Они позволяют сделать функцию гибкой и многоразовой, так как она может работать с разными данными без изменения своего кода. Например, функция для генерации изображений может принимать параметры query
(описание изображения) и resolution
(разрешение), чтобы создавать разные картинки по запросу. Параметры нужны, чтобы функция знала, что именно ей нужно обработать или какие условия учесть при выполнении действия.
Как научить ИИ агента использовать эти параметры в функции?
Чтобы объяснить ИИ, какой параметр нужно передать, вы должны включить в промпт бота четкие инструкции. Эти инструкции должны описывать:
Когда нужно вызвать функцию (условие или триггер).
Какую функцию вызвать (по названию или номеру).
Какие параметры и из какой информации в диалоге их брать.
Например, если у вас есть функция для отправки лида (№26), и она принимает параметры name
, phone
, email
, вы можете написать в промпте:
"Если клиент пришлет свой номер телефона, то сразу же вызови функцию №26 (отправка лида). В качестве phone
передай номер телефона клиента, в качестве name
используй имя, которое клиент указал в диалоге, а email
возьми, если клиент его предоставил."
ИИ будет анализировать диалог и, когда увидит соответствующее условие (например, клиент назвал свой номер телефона), он попытается извлечь нужные данные и передать их в указанную функцию.
С помощью функции бот может безопасно добавлять, просматривать, редактировать и удалять события в Google календаре. Необходимо в настройках вашего календаря с помощью браузера открыть доступ к этому пользователю: "dialogai@dialogai-385904.iam.gserviceaccount.com" с правами "Внесение изменений и предоставления доступа".
ID календаря может быть как в виде e-mail адреса, так и в виде собственного обозначения, если это не основной календарь (ID можно найти в настройках интеграции календаря). Если боту предоставить не правильный ID, будет выходить ошибка.
Параметры, которые можно передать в функцию google_calendar:
calendarId - ID календаря. Указывает уникальный идентификатор календаря, с которым вы хотите работать.
action - тип действия. Указывает, какое действие необходимо выполнить:
- "+" - добавление события.
- "?" - получение всех событий календаря.
- "-" - удаление события в календаре.
- "." - редактирование события в календаре.
event_ids - список ID событий в календаре в формате JSON строки. Передается при типах действия "-" или ".". Пример: "[{\"event_id\": \"3lsvlor3hjlgpgmv7er7e5juov\"}]".
events - список событий в формате JSON строки. Передается при типах действия "+" или ".".
start_date - дата начала периода в формате ISO 8601. Передается при типах действия "?" или "-". Пример: "2024-09-04T03:00:00+03:00".
end_date - дата окончания периода в формате ISO 8601. Передается при типах действия "?" или "-". Пример: "2024-09-04T05:30:00+03:00".
Правила и рекомендации:
1. Для работы с Google календарем необходим ID календаря, который нужно передавать в функцию "google_calendar". ID календаря может быть предоставлен и в виде Email адреса.
2. При показе запланированных событий после названия события желательно указывать его "event_id".
3. Тип действия. `+` - означает добавление события. `?` - означает получение всех событий календаря.. `-` - удалить событие в календаре. `.` - редактировать событие в календаре.
4. Просите в инструкции дату и время клиенту называть в удобном для него формате, а в функцию передавать в ISO 8601.
5. Для того, чтобы бот знал текущую дату, обязательно укажите в промпте в разделе Роль: `Сегодня ##date##`
6. Рекомендуем построить промпт таким образом, чтобы в начале диалога бот высылал клиенту все имеющиеся свободные и занятые слоты времени. Это нужно для того, чтобы надёжнее происходила процедура поиска свободных слотов.
Пример запроса:
"Добавь событие в календарь с ID primary: [{\"summary\": \"Встреча\", \"description\": \"Обсуждение проекта\", \"start\": {\"dateTime\": \"2024-09-04T10:00:00+03:00\"}, \"end\": {\"dateTime\": \"2024-09-04T11:00:00+03:00\"}}]."
"Покажи все события в календаре с ID primary за период с 2024-09-01T00:00:00+03:00 по 2024-09-30T23:59:59+03:00."
"Удали событие с ID 3lsvlor3hjlgpgmv7er7e5juov из календаря с ID primary."
"Редактируй событие с ID 3lsvlor3hjlgpgmv7er7e5juov в календаре с ID primary: [{\"summary\": \"Обновленная встреча\", \"description\": \"Обсуждение проекта с новыми данными\", \"start\": {\"dateTime\": \"2024-09-04T12:00:00+03:00\"}, \"end\": {\"dateTime\": \"2024-09-04T13:00:00+03:00\"}}]."
ИП Горелов Максим Николаевич ИНН 500104951533 ОГРН 309500106900065