Использование интерпретатора кода в примерах запросов

Note

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

Следующие примеры демонстрируют возможности интерпретатора кода для работы со сложными запросами.

Примеры предполагают, что вы создали новый запрос и включили интерпретатор кода в параметрах запроса.

Пример сценария 1: запрос интерпретатора кода для аудита транзакций

Менеджер по закупкам в компании Contoso регулярно проводит аудит транзакций по закупкам. Он получает периодический PDF-отчет со списком поставщиков с высоким уровнем риска и следует политике, согласно которой для операций на сумму свыше 10 000 долларов США требуется оформление заказа на покупку. Менеджер по закупкам использует PDF-отчет для аудита транзакций в Excel. Менеджер по закупкам использует запросы с интерпретатором кода для автоматизации этого процесса аудита.

Редактирование и тестирование запроса транзакций

Откройте редактор запросов и включите интерпретатор кода, затем выполните следующие шаги для создания запроса:

  1. Введите следующие инструкции для запроса:

    1. You are given:
    -An Excel file <parameter A> with thousands of procurement transactions, including vendor name, invoice amount, PO number, and transaction date.
    -A PDF file <parameter B> listing vendors flagged as "High Risk" in the latest compliance audit.
    
    2. Your tasks:
    -Process the Excel file to identify:
    -Transactions over $10,000 with missing or blank PO numbers.
    -Extract vendor names from the PDF file that are marked "High Risk".
    -Cross-reference the vendor names in Excel with those from the PDF file.
    -Flag transactions that meet either of the following criteria:
      -High-value transaction with missing PO
      -Vendor is classified as High Risk
    -For each flagged transaction:
      -Highlight the row in red
      -Add a comment explaining the issue (for example, "High Risk Vendor" or "PO Missing")
    
    3. Generate a summary report listing:
    -Total flagged transactions
    -Vendor names involved
    -Reasons for flagging
    
    4. Return:
    -The updated Excel file with highlights and comments
    -A summary audit report formatted as PDF
    -A summary of updates made in text
    
  2. В инструкциях замените <parameter A> на входной параметр файла Excel, который содержит транзакции по закупкам. Чтобы внести изменения, замените текст на /, а затем выберите Изображение или документ из контекстного меню. Назовите этот параметр, например "транзакции по закупкам", и отправьте пример файла Excel с транзакциями в ожидаемом формате.

    Убедитесь, что в файле транзакций есть следующие столбцы: идентификатор транзакции, имя поставщика, сумма счета, номер заказа на покупку и дата транзакции. Вы можете использовать другой запрос с включенным интерпретатором кода, чтобы при необходимости создать этот пример файла Excel.

  3. Выполните те же шаги, чтобы заменить текст <parameter B> в инструкции на загруженный PDF-документ отчета о рисках поставщика. В PDF-файле можно указать имена поставщиков в виде списка. Опять же, вы можете использовать другой запрос с включенным интерпретатором кода, чтобы создать пример PDF-файла по мере необходимости.

  4. Выберите Тест.

    Через несколько секунд вы увидите сводку в виде текстового ответа модели.

    Note

    Вы можете оставить модель по умолчанию GPT-4o или выбрать любую другую модель при необходимости.

  5. В разделе Ответ модели>Выходные данные выберите Документ в качестве формата ответа модели. В ответе модели также должен отображаться обновленный файл Excel с отмеченными транзакциями и сводный отчет в формате PDF. Вы можете загрузить эти файлы для проверки результатов.

  6. Для повторного тестирования с другими входными файлами отправьте новые примеры файлов в инструкции и выберите Тест без повторного создания.

    Снимок экрана параметра

Этот пример демонстрирует возможности интерпретатора кода, который позволяет выполнять сложные сценарии с использованием файлов непосредственно на основе запросов.

Пример сценария 2: запрос интерпретатора кода для создания визуальной сводки по таблицам Dataverse

Этот пример показывает, как создать запрос с включенным интерпретатором кода для чтения записей из таблиц Dataverse, анализа данных, а также генерации визуальной сводки (диаграммы) и текстовой сводки.

Редактирование и тестирование запроса Dataverse

Откройте редактор запросов и включите интерпретатор кода, затем выполните следующие шаги для создания запроса:

  1. Введите следующие инструкции для запроса:

    1. You are given:
    - Ticket data that gives the created date/time, first response date/time, and the first response SLA date/time:
    
    2. Your tasks:
    - Create a histogram of the tickets by day of the week created and show the first response SLA status
    - Create insights into trends in the data
    
    3. Return:
    - A graph. Make sure to return the graph as a base64 encoded image
    - A summary of insights
    
  2. Свяжите запрос с соответствующими таблицами Dataverse (например, запросами и расписаниями сотрудников), чтобы обеспечить его контекстом.

    1. Используйте /, чтобы открыть меню входных данных и базы знаний, и выберите Dataverse в разделе База знаний.

      Снимок экрана привязки запроса к соответствующим таблицам Dataverse.

    2. Выберите таблицу, затем выберите необходимые поля (например, статус запроса, назначенный агент, статус SLA) для запроса.

    3. Выберите Добавить, чтобы добавить поля из таблицы в запрос.

      Снимок экрана добавления полей в запрос.

    4. Выберите Атрибут фильтра по необходимости, чтобы фильтровать данные таблицы по конкретным атрибутам и значениям.

      Снимок экрана фильтрации данных таблицы.

  3. Выберите Тестировать, чтобы выполнить запрос.

  4. Убедитесь, что запрос читает данные запросов, применяет правила назначения и обновляет записи в Dataverse, как ожидается.

    Снимок экрана выполнения запроса для проверки функциональности.

  5. Сохраните запрос.

Интеграция запроса в поток агента в Copilot Studio

Затем можно создать поток агента, который будет использовать этот запрос и подключаться к Dataverse.

  1. Вернитесь на страницу Инструменты для агента и выберите Добавить инструмент>Новый инструмент>Поток агента.

    Откроется конструктор потоков агентов с начальным триггером Когда поток вызывается агентом.

  2. В конструкторе выберите Вставить>Выполнить запрос, чтобы добавить новое действие Выполнить запрос.

    Снимок экрана вставки нового действия для выполнения запроса в конструкторе потоков агентов.

  3. В узле Выполнить запрос выберите запрос интерпретатора кода.

    Снимок экрана, показывающий выбор запроса с интерпретатором кода в узле

  4. В конструкторе выберите Вставить>Ответить агенту, чтобы добавить новое действие Ответить агенту после действия Выполнить запрос.

  5. Затем откройте редактор узла Ответить агенту, чтобы выбрать параметры для передачи агенту в качестве выходных данных.

  6. С помощью команды Добавить выходные данные добавьте в поток текст сводки и данные изображения графика из запроса в качестве выходных данных.

    Назовите один из выходных параметров Summary и с помощью параметра динамического значения выберите выходную переменную Insights из действия Выполнить запрос.

    Назовите второй выходной параметр GraphBase64 и задайте выходное значение с помощью параметра выражения. Выберите выходные данные изображения Base64 из действия Выполнить запрос.

    Снимок экрана выбора выходных данных текста сводки и изображения графика.

  7. Выберите Сохранить черновик.

  8. На вкладке Обзор в разделе Сведения присвойте имя потоку.

Публикация и использование агента

  1. Сохраните и опубликуйте агента.

    Теперь агент может обрабатывать записи Dataverse и создавать сводку и диаграмму.

  2. Перейдите на страницу Инструменты агента и выберите конкретный поток агента, который использует запрос.

  3. В разделе Завершение задайте для действия После запуска значение Отправить адаптивную карточку (укажите ниже).

  4. В разделе Адаптивная карточка для отображения с использованием формулы Power Fx выберите Формула, чтобы определить карточку с помощью формулы.

    Откроется редактор формул адаптивной карточки.

  5. Определите содержимое и источник для адаптивной карточки, используя следующую формулу:

    {
      "$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
      "type": "AdaptiveCard",
      "version": "1.0",
      "body": [
        {
          "type": "Image",
          "url": "data:image/png;base64," & Topic.Output.GraphBase64,
          "altText": "Ticket analysis generated graph"
        },
        {
          "type": "TextBlock",
          "text": Topic.Output.Summary,
          "wrap": true
        }
      ]
    }
    

    Здесь Topic.Output.GraphBase64 и Topic.Output.Summary — это выходные переменные, определенные ранее для потока агента.

  6. Сохраните агент и протестируйте его.

  7. Опубликуйте агент, чтобы другие пользователи могли генерировать динамическое содержимое на основе таблиц Dataverse.

Пример сценария 3: запрос интерпретатора кода для создания диаграммы из предоставленного пользователем файла Excel

В этом примере показано, как создать запрос с включенным интерпретатором кода для чтения отправленного файла Excel, преобразования данных в изображение диаграммы и возврата изображения пользователю. Запрос активируется из темы, когда пользователь отправляет файл Excel и запрашивает диаграмму.

Создание и настройка запроса на создание диаграммы

Откройте редактор запросов и включите интерпретатор кода, затем выполните следующие действия, чтобы создать запрос:

  1. Присвойте запросу понятное имя (например, Запрос на создание изображения) и введите для него следующие инструкции:

    Read the attached Excel (.xlsx) and convert it into a chart named mychart.png. 
    
  2. Используйте / для открытия меню входных данных и базы знаний и выберите Изображение или документ в разделе Входные данные.

  3. Выберите файл Excel с демонстрационными данными, чтобы загрузить его в качестве входного документа для тестирования.

  4. Нажмите Сохранить.

  5. Выберите Добавить в агент, чтобы добавить запрос как инструмент.

Создание темы, которая вызывает запрос на создание диаграммы

  1. Перейдите на вкладку Темы в Copilot Studio и создайте новую тему, выбрав Добавить тему>С нуля.

  2. В примечании Триггер установите для параметра Опишите назначение темы значение «Когда файл загружен и пользователь говорит: "создай мою диаграмму"».

  3. Выберите Добавить узел, затем выберите Управление переменными>Управление списками>Перебор списка, чтобы добавить узел цикла.

  4. Выберите узел Перебор списка, чтобы открыть редактор узла. В разделе Элементы для перебора в цикле выберите Выбрать переменную>Система>Activity.Attachments.

    Снимок экрана примера темы для запуска запроса.

  5. Внутри цикла выберите Добавить узел, затем выберите Добавить инструмент и выберите созданный ранее запрос, чтобы добавить инструмент запроса в тему.

  6. Настройте входные и выходные переменные соответствующим образом. Для входных данных задайте значение с помощью формулы Topic.LoopValue1.Value, затем выберите Вставить. Для выходных данных инициализируйте переменную с именем Output, чтобы захватить выходные данные запроса.

    Снимок экрана примера инструмента запроса.

  7. Внутри цикла выберите Добавить узел>Создать сообщение, чтобы добавить узел сообщения. Узел сообщения используется для передачи выходных данных запроса обратно пользователю. В этом примере запрос инициализирует переменную Output с ответом. Текст хранится в Output.text.

  8. В текстовой части сообщения выберите Вставить переменную и выберите Output.text.

  9. Выберите Добавить>Изображение, чтобы добавить изображение в сообщение.

    Снимок экрана примера инструмента сообщения.

  10. Затем настройте форматирование, чтобы изображение отображалось правильно. Выберите Мультимедиа и в разделе URL-адрес изображения выберите Выбрать переменную>Формула, затем введите следующую формулу: "data:" & Topic.Output.artifacts.mychart.mimeType & ";base64," & Topic.Output.artifacts.mychart.base64Content

    Note

    Данный формат требуется для корректного отображения изображения в чате. В этом примере mychart представляет имя, которое мы выбрали для выходных данных файла в нашем запросе, а Output — это имя переменной. В других примерах эти значения могут отличаться в зависимости от того, как названы выходные данные запроса и переменные темы.

    Снимок экрана формулы отрисовки изображения.

  11. Выберите Сохранить, чтобы сохранить тему.

  12. Выберите Тест. При срабатывании запроса вы должны увидеть изображение.

    Снимок экрана ответа в чате с изображением.

Дополнительные примеры запросов с использованием интерпретатора кода

В следующей таблице приведены дополнительные примеры запросов, которые можно использовать при включенном интерпретаторе кода. Эти примеры показывают, как с помощью запросов поручать интерпретатору кода выполнение сложных задач.

Prompt Ожидаемый результат
Создание PDF-файла для захвата сведений о заказе Генерирование формы захвата заказа в форме PDF
Создание копии <параметра A> PDF-файла Создайте копию предоставленных входных данных PDF-файла.
Создание файла Excel с синтетическим набором данных транзакций продаж Создайте файл Excel с примером транзакции продажи. Для повышения качества результатов можно добавить в запрос дополнительные инструкции, чтобы генерировать более сложные синтетические данные. В следующем примере показан более сложный запрос.
Создайте файл Excel с реалистичным синтетическим набором данных, моделирующим еженедельные транзакции по продажам в четырех регионах ("Север", "Юг", "Восток", "Запад") за полный календарный год. Каждая запись должна включать:
- Дата транзакции (еженедельно)
- Регион
- Имя продавца (по крайней мере три уникальных имени в каждом регионе)
- Категория продукта (например, "Электроника", "Мебель", "Бытовая техника", "Одежда")
- Название продукта (реалистичные, соответствующие категории названия)
- Количество проданных единиц
- Цена за единицу (варьируется в зависимости от категории)
- Общая сумма продаж (рассчитанная)
- Достигнутая цель ("Да/нет", на основе регионального порога)
- Квартал
- Канал (онлайн, розница, дистрибьютор)
- Сегмент клиента (например, "Предприятие", "SMB", "Потребитель")

Добавьте случайные вариации и сезонность:
- Увеличение продаж в категории "Электроника" в четвертом квартале
- Снижение продаж в регионе "Север" в январе–феврале (симуляция зимнего спада)
- Увеличение продаж одежды во втором квартале (весна)

Итоговый набор данных должен быть не менее 2000 строк. Добавьте небольшую случайность для реализма.
Этот запрос генерирует файл Excel с более богатыми синтетическими данными, чем раньше. Этот запрос иллюстрирует эффективность интерпретатора кода и то, насколько важно давать четкие и подробные инструкции в запросе.
Автоматическое создание листа "Сводка" — с помощью <параметра A> создайте:

- Ежемесячные сводные данные
- Лучшие регионы
- Условное форматирование для регионов с низкими показателями
Проанализируйте файл Excel, передав его в качестве входных данных в этот запрос. Этот запрос создает сводку в Excel, но при необходимости ее можно сохранить в PDF-файл.
Выдели ячейки зеленым цветом, если продажи > 1000; в противном случае выдели красным цветом Попросите интерпретатор кода выполнить форматирование Excel на основе условий и формул. Форматирование описывается в запросе, как показано ниже.

Этот же подход можно применять и в других сценариях форматирования и оформления в Excel.