Поделиться через


Начало работы с оценкой ответов в приложении чата в JavaScript

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

Следуя инструкциям в этой статье, вы:

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

Примечание.

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

Обзор архитектуры

Ключевые компоненты архитектуры:

  • Размещенное в Azure приложение чата: приложение чата выполняется в службе приложение Azure.
  • Протокол чата Microsoft AI: протокол предоставляет стандартные контракты API для решений и языков ИИ. Приложение чата соответствует протоколу Microsoft AI Chat, что позволяет приложению оценки выполняться с любым приложением чата, соответствующим протоколу.
  • Поиск в Azure AI. Приложение чата использует поиск ИИ Azure для хранения данных из собственных документов.
  • Генератор образцов вопросов: Этот инструмент может генерировать множество вопросов для каждого документа вместе с эталонным ответом. Чем больше вопросов есть, тем дольше оценка.
  • оценщик: средство запускает примеры вопросов и побуждает приложение чата отреагировать, а затем возвращает результаты.
  • средство проверки: средство проверяет результаты оценки.
  • инструмент Diff: средство сравнивает ответы между оценками.

При развертывании этой оценки в Azure для модели GPT-4 создается конечная точка службы Azure OpenAI с собственной емкостью . При оценке приложений чата важно, чтобы оценщик имел собственный ресурс Azure OpenAI, используя GPT-4 с собственной емкостью.

Необходимые компоненты

  • Подписка Azure. Создать бесплатно

  • Развертывание приложения чата.

  • Эти приложения чата загружают данные в ресурс поиска ИИ Azure. Этот ресурс необходим для работы приложения оценки. Не выполните раздел "Очистка ресурсов " предыдущей процедуры.

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

    • URI API чата: конечная точка серверной части службы, показанная в конце azd up процесса.
    • Поиск по искусственному интеллекту Azure. Требуются следующие значения:
      • Имя ресурса: имя ресурса поиска ИИ Azure, сообщаемое во Search service время azd up процесса.
      • Имя индекса: имя индекса поиска ИИ Azure, в котором хранятся документы. Это можно найти в портал Azure для служба .

    URL-адрес API чата позволяет оценивать запросы через серверное приложение. Сведения о поиске ИИ Azure позволяют скриптам оценки использовать то же развертывание, что и серверная часть, загруженная документами.

    После сбора этих сведений вам не нужно снова использовать среду разработки приложений чата. Он ссылается на более поздние версии этой статьи несколько раз, чтобы указать, как приложение чата используется приложением оценки. Не удаляйте ресурсы приложения чата, пока не завершите всю процедуру в этой статье.

  • Среда контейнера разработки доступна со всеми зависимостями, необходимыми для выполнения этой статьи. Контейнер разработки можно запустить в GitHub Codespaces (в браузере) или локально с помощью Visual Studio Code.

Открытие среды разработки

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

Эта статья была протестирована в регионе switzerlandnorth для развертывания оценки.

GitHub Codespaces запускает контейнер разработки, управляемый GitHub, с Помощью Visual Studio Code для Интернета в качестве пользовательского интерфейса. Для наиболее простой среды разработки используйте GitHub Codespaces, чтобы у вас были правильные средства разработчика и зависимости, предварительно установленные для выполнения этой статьи.

Внимание

Все учетные записи GitHub могут использовать GitHub Codespaces бесплатно до 60 часов в месяц, используя два экземпляра с двумя процессорными ядрами. Дополнительные сведения см. в GitHub Codespaces ежемесячно включаемых в хранилище и основные часы.

  1. Запустите процесс создания нового GitHub Codespace на ветви main в репозитории GitHub Azure-Samples/ai-rag-chat-evaluator.

  2. Чтобы отобразить среду разработки и документацию, доступные одновременно, щелкните правой кнопкой мыши следующую кнопку и выберите Открыть ссылку в новом окне.

    Открыть в GitHub Codespaces.

  3. На странице Создание пространства кода просмотрите параметры конфигурации пространства кода, а затем выберите Создать новое пространство кода.

    снимок экрана, на котором показан экран подтверждения перед созданием нового пространства кода.

  4. Дождитесь запуска пространства кода. Этот процесс запуска может занять несколько минут.

  5. В терминале в нижней части экрана войдите в Azure с помощью Интерфейса командной строки разработчика Azure:

    azd auth login --use-device-code
    
  6. Скопируйте код из терминала и вставьте его в браузер. Следуйте инструкциям по проверке подлинности с помощью учетной записи Azure.

  7. Подготовьте необходимый ресурс Azure, Службу Azure OpenAI для приложения для оценки:

    azd up
    

    Эта команда AZD не развертывает приложение для оценки, но создает ресурс Azure OpenAI с обязательным развертыванием GPT-4 для выполнения вычислений в локальной среде разработки.

Остальные задачи в этой статье выполняются в контексте этого контейнера разработки.

Имя репозитория GitHub отображается в строке поиска. Этот визуальный индикатор помогает различать приложение оценки от приложения чата. В этой статье репозиторий ai-rag-chat-evaluator называется приложением для оценки .

Подготовка значений среды и сведений о конфигурации

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

  1. Создайте файл .env на основе .env.sample.

    cp .env.sample .env
    
  2. Выполните эту команду, чтобы получить необходимые значения для AZURE_OPENAI_EVAL_DEPLOYMENT и AZURE_OPENAI_SERVICE из развернутой группы ресурсов. Вставьте эти значения в файл .env.

    azd env get-value AZURE_OPENAI_EVAL_DEPLOYMENT
    azd env get-value AZURE_OPENAI_SERVICE
    
  3. Добавьте следующие значения из приложения чата для своего экземпляра службы поиска ИИ Azure в файл .env, который вы собрали в разделе Предварительные требования.

    AZURE_SEARCH_SERVICE="<service-name>"
    AZURE_SEARCH_INDEX="<index-name>"
    

Использование протокола чата Microsoft AI для сведений о конфигурации

Приложение чата и приложение оценки реализуют спецификацию протокола Microsoft AI Chat, открытый исходный код, облачный и не зависящий от языка конечный API ИИ, используемый для обработки и оценки. Если клиентские и средние конечные точки соответствуют данной спецификации API, вы можете последовательно работать с и проводить оценки на серверных системах ИИ.

  1. Создайте файл с именем my_config.json и скопируйте в него следующее содержимое:

    {
        "testdata_path": "my_input/qa.jsonl",
        "results_dir": "my_results/experiment<TIMESTAMP>",
        "target_url": "http://localhost:50505/chat",
        "target_parameters": {
            "overrides": {
                "top": 3,
                "temperature": 0.3,
                "retrieval_mode": "hybrid",
                "semantic_ranker": false,
                "prompt_template": "<READFILE>my_input/prompt_refined.txt",
                "seed": 1
            }
        }
    }
    

    Скрипт оценки создает папку my_results .

    Объект overrides содержит все параметры конфигурации, необходимые для приложения. Каждое приложение определяет собственный набор свойств параметров.

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

    Свойство настройки Description
    semantic_ranker Следует ли использовать семантический рангировщик, модель, которая повторно выполняет результаты поиска на основе семантического сходства с запросом пользователя. Мы отключаем его для этого руководства, чтобы сократить затраты.
    retrieval_mode Режим извлечения для использования. Значение по умолчанию — hybrid.
    temperature Параметр температуры для модели. Значение по умолчанию — 0.3.
    top Количество возвращаемых результатов поиска. Значение по умолчанию — 3.
    prompt_template Переопределение запроса, используемого для создания ответа на основе результатов вопроса и поиска.
    seed Начальное значение для любых вызовов моделей GPT. Задание начального значения приводит к более согласованным результатам в оценках.
  3. Измените значение target_url на значение URI приложения чата, которое вы собрали в разделе Предварительные требования. Приложение чата должно соответствовать протоколу чата. Универсальный код ресурса (URI) имеет следующий формат: https://CHAT-APP-URL/chat. Убедитесь, что протокол и chat маршрут являются частью URI.

Создание примера данных

Чтобы оценить новые ответы, их необходимо сравнить с эталонным ответом, который является идеальным для конкретного вопроса. Создайте вопросы и ответы из документов, хранящихся в службе "Поиск ИИ Azure" для приложения чата.

  1. Скопируйте папку example_input в новую папку с именем my_input.

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

    python -m evaltools generate --output=my_input/qa.jsonl --persource=2 --numquestions=14
    

Пары вопросов и ответов создаются и хранятся в my_input/qa.jsonlформате JSONL) в качестве входных данных для вычислителя, используемого на следующем шаге. Для оценки производительности вы создадите больше пар вопросов и ответов. Для этого набора данных генерируется более 200 элементов.

Примечание.

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

Запустите первую оценку с уточненным запросом

  1. Измените свойства файла конфигурации my_config.json.

    Свойство Новое значение
    results_dir my_results/experiment_refined
    prompt_template <READFILE>my_input/prompt_refined.txt

    Уточненный запрос относится к предметному домену.

    If there isn't enough information below, say you don't know. Do not generate answers that don't use the sources below. If asking a clarifying question to the user would help, ask the question.
    
    Use clear and concise language and write in a confident yet friendly tone. In your answers, ensure the employee understands how your response connects to the information in the sources and include all citations necessary to help the employee validate the answer provided.
    
    For tabular information, return it as an html table. Do not return markdown format. If the question is not in English, answer in the language used in the question.
    
    Each source has a name followed by a colon and the actual information. Always include the source name for each fact you use in the response. Use square brackets to reference the source, e.g. [info1.txt]. Don't combine sources, list each source separately, e.g. [info1.txt][info2.pdf].
    
  2. В терминале выполните следующую команду, чтобы выполнить оценку:

    python -m evaltools evaluate --config=my_config.json --numquestions=14
    

    Этот скрипт создал новую папку эксперимента с my_results/ помощью оценки. Папка содержит результаты оценки.

    Имя файла Description
    config.json Копия файла конфигурации, используемого для оценки.
    evaluate_parameters.json Параметры, используемые для оценки. Аналогично config.json, но включает другие метаданные, такие как метка времени.
    eval_results.jsonl Каждый вопрос и ответ, а также метрики GPT для каждой пары вопросов и ответов.
    summary.json Общие результаты, такие как средние метрики GPT.

Запустите вторую оценку с слабым подсказкой

  1. Измените свойства файла конфигурации my_config.json.

    Свойство Новое значение
    results_dir my_results/experiment_weak
    prompt_template <READFILE>my_input/prompt_weak.txt

    Этот слабый запрос не имеет контекста в предметной области.

    You are a helpful assistant.
    
  2. В терминале выполните следующую команду, чтобы выполнить оценку:

    python -m evaltools evaluate --config=my_config.json --numquestions=14
    

Запустите третье испытание с определенной температурой

Используйте запрос, позволяющий получить больше творчества.

  1. Измените свойства файла конфигурации my_config.json.

    Существующий Свойство Новое значение
    Существующий results_dir my_results/experiment_ignoresources_temp09
    Существующий prompt_template <READFILE>my_input/prompt_ignoresources.txt
    Новый temperature 0.9

    Значение по умолчанию temperature — 0.7. Чем выше температура, тем более творческие ответы.

    Запрос ignore является коротким.

    Your job is to answer questions to the best of your ability. You will be given sources but you should IGNORE them. Be creative!
    
  2. Объект конфигурации должен выглядеть, как в следующем примере, за исключением того, что вы заменили results_dir на ваш путь.

    {
        "testdata_path": "my_input/qa.jsonl",
        "results_dir": "my_results/prompt_ignoresources_temp09",
        "target_url": "https://YOUR-CHAT-APP/chat",
        "target_parameters": {
            "overrides": {
                "temperature": 0.9,
                "semantic_ranker": false,
                "prompt_template": "<READFILE>my_input/prompt_ignoresources.txt"
            }
        }
    }
    
  3. В терминале выполните следующую команду, чтобы выполнить оценку:

    python -m evaltools evaluate --config=my_config.json --numquestions=14
    

Проверить результаты оценки

Вы выполнили три оценки на основе различных запросов и параметров приложения. Результаты хранятся в папке my_results . Проверьте, как результаты отличаются в зависимости от параметров.

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

    python -m evaltools summary my_results
    
  2. Результаты выглядят примерно так:

    снимок экрана, на котором показан инструмент проверки оценки, показывающий три оценки.

    Каждое значение возвращается в виде числа и процента.

  3. Используйте следующую таблицу, чтобы понять смысл значений.

    значение Description
    Заземленность Проверяет, насколько хорошо ответы модели основаны на фактических, проверяемых данных. Ответ считается обоснованным, если это фактически точно и отражает реальность.
    С сортировкой по релевантности Измеряет, насколько точно ответы модели соответствуют контексту или запросу. Соответствующий ответ напрямую обращается к запросу или инструкции пользователя.
    Согласованность Проверяет, насколько логически согласованы ответы модели. Последовательный ответ поддерживает логический поток и не противоречит самому себе.
    Источник Указывает, был ли ответ возвращен в формате, запрошенном в запросе.
    Length Измеряет длину ответа.
  4. Результаты должны указывать на то, что все три оценки имеют высокую релевантность, в то время как experiment_ignoresources_temp09 имеет самую низкую релевантность.

  5. Выберите папку, чтобы просмотреть конфигурацию для оценки.

  6. Введите CTRL + C, чтобы выйти из приложения и вернуться в терминал.

Сравнение ответов

Сравните возвращаемые ответы из оценки.

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

    python -m evaltools diff my_results/experiment_refined my_results/experiment_ignoresources_temp09
    
  2. Проверка результатов. Результаты могут отличаться.

    снимок экрана, показывающий сравнение ответов на оценку между оценками.

  3. Введите CTRL + C, чтобы выйти из приложения и вернуться в терминал.

Рекомендации по дальнейшей оценке

  • Измените запросы, my_input чтобы настроить ответы, такие как предметная область, длина и другие факторы.
  • Измените my_config.json файл, чтобы изменить такие параметры, как temperature, и semantic_ranker повторно запустить эксперименты.
  • Сравните различные ответы, чтобы понять, как запрос и вопрос влияют на качество ответа.
  • Создайте отдельный набор вопросов и правильных ответов для каждого документа в индексе поиска Azure AI. Затем повторно запустите оценки, чтобы узнать, как отличаются ответы.
  • Измените запросы, чтобы указать более короткие или более длинные ответы, добавив требование в конец запроса. Примером является Please answer in about 3 sentences.

Очистка ресурсов и зависимостей

В следующих шагах описан процесс очистки используемых ресурсов.

Очистка ресурсов Azure

Ресурсы Azure, созданные в этой статье, выставляются в подписку Azure. Если вы не ожидаете, что эти ресурсы потребуются в будущем, удалите их, чтобы избежать дополнительных расходов.

Чтобы удалить ресурсы Azure и удалить исходный код, выполните следующую команду Azure Developer CLI:

azd down --purge

Очистка GitHub Codespaces и Visual Studio Code

Удаление среды GitHub Codespaces гарантирует, что вы можете максимально увеличить объем бесплатных прав на базовые часы, которые вы получаете для вашей учетной записи.

Внимание

Дополнительные сведения о правах учетной записи GitHub см . в GitHub Codespaces ежемесячно включено в хранилище и основные часы.

  1. Войдите на панель мониторингаGitHub Codespaces.

  2. Найдите ваши запущенные Codespaces, полученные из репозитория Azure-Samples/ai-rag-chat-evaluator на GitHub.

    снимок экрана, на котором показаны все выполняемые пространства кода, включая их состояние и шаблоны.

  3. Откройте контекстное меню для пространства кода, а затем выберите Удалить.

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

Вернитесь в статью о приложении чата, чтобы очистить эти ресурсы.