Прежде чем приступить к настройкам, рекомендуем ознакомиться со статьей об общей логике правил автоматизации в Омнидеске или посмотреть краткое видеоруководство по правилам
Задача: делегировать расчеты ассистенту OpenAI.
Инструменты на стороне OpenAI: для ассистента, указанного в правиле, должен быть активирован инструмент Code interpreter, который позволяет автоматизировать вычисления.
Code Interpreter — это инструмент, который в обычных условиях может выполнять код, анализировать данные, строить графики и работать с файлами. Однако в рамках нашей интеграции рекомендуется использовать его только для базовых вычислений. Не пытайтесь запускать с его помощью визуализации, сложную обработку данных или загрузку файлов — это не поддерживается и приведет к ошибкам.
Логика работы: когда клиенту требуется расчет, сотрудник ставит метку «расчет стоимости» → срабатывает правило для измененных обращений, которое отправляет данные, необходимые для расчета, в адрес ассистента. Результат расчета добавляется в заметку.
Пример правила:

Демонстрация работы:

Пример инструкции для ассистента
Пример дан исключительно в иллюстративных целях и может рассматриваться как один из возможных подходов, но не как образец.
Код для обработки данных о доставке:
import pandas as pd def load_data(path): try: return pd.read_csv(path) except: return f"Ошибка: {path}" def calculate_delivery(data, origin, destination, grams): kg = grams / 1000 filtered = data.query('Отправление == @origin and Прибытие == @destination') if filtered.empty: return "Нет доставки между городами" results = [] for _, row in filtered.iterrows(): min_kg = max(kg, row['Минимальный вес (г)']/1000) cost = max(row['Стоимость (копеек/кг)'] * min_kg / 100, row['Стоимость (копеек/кг)'] * row['Минимальный вес (г)'] / 100000) insurance = row['Страховка (копеек/кг)'] * kg / 100 results.append({ 'Тип': row['Тип доставки'], 'Срок': row['Срок доставки (дни)'], 'Стоимость': round(cost + insurance, 2) }) return "\n".join([f"{i}. {r['Тип']} - {r['Срок']}дн, {r['Стоимость']}₽" for i, r in enumerate(results, 1)]) if results else "Нет вариантов" # Использование files = ['/mnt/data/file-3xq7PNbwpYmGMD2EAvhGG9', '/mnt/data/file-7RX7B3FPZb1vXR7JPPQa6x'] df = pd.concat([d for f in files if isinstance((d := load_data(f)), pd.DataFrame)], ignore_index=True) print(calculate_delivery(df, 'Москва', 'Санкт-Петербург', 2000))
Примеры файлов, загруженных для Code Interpreter:
https://gist.github.com/cissav/8e5c2964a6039097ac020ccc3004f498
https://gist.github.com/cissav/9156b19a94843616b46bfdd40fbb0a53