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


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

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

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

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

Примечание.

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

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

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

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

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

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

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

  • Службе Azure OpenAI предоставлен доступ в требуемой подписке Azure

    В настоящее время доступ к этой службе предоставляется только приложением. Вы можете подать заявку на доступ к Azure OpenAI, выполнив форму по адресу https://aka.ms/oai/access.

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

  • Эти приложения чата загружают данные в ресурс поиска ИИ 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 могут использовать пространства Кода до 60 часов бесплатно каждый месяц с 2 основными экземплярами. Дополнительные сведения см. в GitHub Codespaces ежемесячно включаемых в хранилище и основные часы.

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

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

    Открытие в GitHub Codespaces

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

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

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

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

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

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

    azd up
    

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

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

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

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

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

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

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

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

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

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

Приложение чата и приложение для оценки реализуют Microsoft AI Chat Protocol specificationконтракт 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. Используйте следующую таблицу, чтобы понять смысл свойств параметров, которые отправляются в приложение чата:

    Свойство Settings Description
    semantic_ranker Следует ли использовать семантический рангировщик, модель, которая повторно выполняет результаты поиска на основе семантического сходства с запросом пользователя. Мы отключаем его для этого руководства, чтобы сократить затраты.
    retrieval_mode Режим извлечения для использования. Значение по умолчанию — hybrid.
    Температура Параметр температуры для модели. Значение по умолчанию — 0.3.
    популярное Количество возвращаемых результатов поиска. Значение по умолчанию — 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 в качестве входных данных для вычислителя, используемого на следующем шаге. Для рабочей оценки для этого набора данных будет создано больше пар QA, более 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 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 для каждой пары QA.
    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
    Новый Температура 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. Используйте следующую таблицу, чтобы понять смысл значений.

    значение Описание
    Заземленность Это относится к тому, насколько хорошо ответы модели основаны на фактических, проверяемых данных. Ответ считается обоснованным, если это фактически точно и отражает реальность.
    С сортировкой по релевантности Это определяет, насколько точно ответы модели соответствуют контексту или запросу. Соответствующий ответ напрямую обращается к запросу или инструкции пользователя.
    Согласованность Это означает, насколько логически согласованы ответы модели. Последовательный ответ поддерживает логический поток и не противоречит самому себе.
    Источник Это указывает, был ли ответ возвращен в формате, запрошенном в запросе.
    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. Затем повторно запустите оценки, чтобы узнать, как отличаются ответы.
  • Измените запросы, чтобы указать более короткие или более длинные ответы, добавив требование в конец запроса. Например, Please answer in about 3 sentences..

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

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

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

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

azd down --purge

Очистка GitHub Codespaces

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

Внимание

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

  1. Войдите на панель мониторинга GitHub Codespaces (https://github.com/codespaces).

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

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

  3. Откройте контекстное меню для пространства кода и нажмите кнопку "Удалить".

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

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

Следующие шаги