Начало работы с оценкой ответов в приложении чата в 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 для служба .
- Имя ресурса: имя ресурса поиска ИИ Azure, сообщаемое во
URL-адрес API чата позволяет оценивать запросы через серверное приложение. Сведения о поиске ИИ Azure позволяют скриптам оценки использовать то же развертывание, что и серверная часть, загруженная документами.
После сбора этих сведений вам не нужно снова использовать среду разработки приложений чата. Он ссылается на более поздние версии этой статьи несколько раз, чтобы указать, как приложение чата используется приложением оценки. Не удаляйте ресурсы приложения чата, пока не завершите всю процедуру в этой статье.
- URI API чата: конечная точка серверной части службы, показанная в конце
Среда контейнера разработки доступна со всеми зависимостями, необходимыми для выполнения этой статьи. Контейнер разработки можно запустить в GitHub Codespaces (в браузере) или локально с помощью Visual Studio Code.
- учетная запись GitHub;
Открытие среды разработки
Начните с среды разработки, которая содержит все зависимости, установленные для выполнения этой статьи. Вы должны упорядочить рабочую область мониторинга, чтобы одновременно просматривать эту документацию и среду разработки.
Эта статья была протестирована в регионе switzerlandnorth
для развертывания оценки.
GitHub Codespaces запускает контейнер разработки, управляемый GitHub, с Помощью Visual Studio Code для Интернета в качестве пользовательского интерфейса. Для наиболее простой среды разработки используйте GitHub Codespaces, чтобы у вас были правильные средства разработчика и зависимости, предварительно установленные для выполнения этой статьи.
Внимание
Все учетные записи GitHub могут использовать пространства Кода до 60 часов бесплатно каждый месяц с 2 основными экземплярами. Дополнительные сведения см. в GitHub Codespaces ежемесячно включаемых в хранилище и основные часы.
Запустите процесс создания нового пространства кода GitHub в
main
ветвиAzure-Samples/ai-rag-chat-evaluator
репозитория GitHub.Чтобы отобразить среду разработки и документацию, доступную в то же время, щелкните правой кнопкой мыши следующую кнопку и нажмите кнопку "Открыть ссылку" в новом окне.
На странице "Создание пространства кода" просмотрите параметры конфигурации пространства кода и выберите "Создать новое пространство кода"
Дождитесь запуска пространства кода. Этот процесс запуска может занять несколько минут.
В терминале в нижней части экрана войдите в Azure с помощью Интерфейса командной строки разработчика Azure.
azd auth login --use-device-code
Скопируйте код из терминала и вставьте его в браузер. Следуйте инструкциям по проверке подлинности с помощью учетной записи Azure.
Подготовьте необходимый ресурс Azure, Azure OpenAI для приложения для оценки.
azd up
Это
AZD command
не развертывает приложение для оценки, но создает ресурс Azure OpenAI с обязательнымGPT-4
развертыванием для выполнения вычислений в локальной среде разработки.Остальные задачи в этой статье выполняются в контексте этого контейнера разработки.
Имя репозитория GitHub отображается в строке поиска. Этот визуальный индикатор помогает различать приложение оценки от приложения чата. Этот
ai-rag-chat-evaluator
репозиторий называется приложением оценки в этой статье.
Подготовка значений среды и сведений о конфигурации
Обновите значения среды и сведения о конфигурации, используя сведения, собранные во время предварительных требований для приложения оценки.
.env
Создание файла на.env.sample
основе:cp .env.sample .env
Выполните эти команды, чтобы получить необходимые значения для
AZURE_OPENAI_EVAL_DEPLOYMENT
развернутой.env
группы ресурсов иAZURE_OPENAI_SERVICE
вставить эти значения в файл:azd env get-value AZURE_OPENAI_EVAL_DEPLOYMENT azd env get-value AZURE_OPENAI_SERVICE
Добавьте следующие значения из приложения чата для своего экземпляра
.env
службы поиска ИИ Azure, в который вы собрались в разделе предварительных требований:AZURE_SEARCH_SERVICE="<service-name>" AZURE_SEARCH_INDEX="<index-name>"
Использование протокола чата Microsoft AI для сведений о конфигурации
Приложение чата и приложение для оценки реализуют Microsoft AI Chat Protocol specification
контракт API с открытым исходным кодом, облаком и языком, не зависящим от языка ИИ, используемый для потребления и оценки. Когда конечные точки клиента и среднего уровня соответствуют этой спецификации API, вы можете последовательно использовать и запускать оценки на серверных серверах ИИ.
Создайте файл с именем
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
содержит все параметры конфигурации, необходимые для приложения. Каждое приложение определяет собственный набор свойств параметров.Используйте следующую таблицу, чтобы понять смысл свойств параметров, которые отправляются в приложение чата:
Свойство Settings Description semantic_ranker Следует ли использовать семантический рангировщик, модель, которая повторно выполняет результаты поиска на основе семантического сходства с запросом пользователя. Мы отключаем его для этого руководства, чтобы сократить затраты. retrieval_mode Режим извлечения для использования. Значение по умолчанию — hybrid
.Температура Параметр температуры для модели. Значение по умолчанию — 0.3
.популярное Количество возвращаемых результатов поиска. Значение по умолчанию — 3
.prompt_template Переопределение запроса, используемого для создания ответа на основе результатов вопроса и поиска. seed Начальное значение для любых вызовов моделей GPT. Задание начального значения приводит к более согласованным результатам в оценках. Измените
target_url
значение URI приложения чата, которое вы собрали в разделе предварительных требований. Приложение чата должно соответствовать протоколу чата. Универсальный код ресурса (URI) имеет следующий форматhttps://CHAT-APP-URL/chat
. Убедитесь, что протокол иchat
маршрут являются частью URI.
Создание примера данных
Чтобы оценить новые ответы, они должны быть сравниваются с "земной правдой", который является идеальным ответом для конкретного вопроса. Создайте вопросы и ответы из документов, хранящихся в службе "Поиск ИИ Azure" для приложения чата.
Скопируйте папку
example_input
в новую папку с именемmy_input
.В терминале выполните следующую команду, чтобы создать примеры данных:
python -m evaltools generate --output=my_input/qa.jsonl --persource=2 --numquestions=14
Пары вопросов и ответов создаются и хранятся my_input/qa.jsonl
в формате JSONL в качестве входных данных для вычислителя, используемого на следующем шаге. Для рабочей оценки для этого набора данных будет создано больше пар QA, более 200.
Примечание.
Небольшое количество вопросов и ответов на источник предназначено для быстрого выполнения этой процедуры. Она не должна быть рабочей оценкой, которая должна иметь больше вопросов и ответов на источник.
Выполнение первой оценки с помощью уточненного запроса
Измените свойства файла конфигурации
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].
В терминале выполните следующую команду, чтобы выполнить оценку:
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.
Запуск второй оценки с слабым запросом
Измените свойства файла конфигурации
my_config.json
:Свойство Новое значение results_dir my_results/experiment_weak
prompt_template <READFILE>my_input/prompt_weak.txt
Этот слабый запрос не имеет контекста для домена субъекта:
You are a helpful assistant.
В терминале выполните следующую команду, чтобы выполнить оценку:
python -m evaltools evaluate --config=my_config.json --numquestions=14
Выполнение третьей оценки с определенной температурой
Используйте запрос, позволяющий получить больше творчества.
Измените свойства файла конфигурации
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!
Объект конфигурации должен выглядеть следующим образом, кроме замены
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" } } }
В терминале выполните следующую команду, чтобы выполнить оценку:
python -m evaltools evaluate --config=my_config.json --numquestions=14
Проверить результаты оценки
Вы выполнили три оценки на основе различных запросов и параметров приложения. Результаты хранятся в папке my_results
. Проверьте, как результаты отличаются в зависимости от параметров.
Используйте средство проверки, чтобы просмотреть результаты оценки:
python -m evaltools summary my_results
Результаты выглядят примерно так:
Каждое значение возвращается в виде числа и процента.
Используйте следующую таблицу, чтобы понять смысл значений.
значение Описание Заземленность Это относится к тому, насколько хорошо ответы модели основаны на фактических, проверяемых данных. Ответ считается обоснованным, если это фактически точно и отражает реальность. С сортировкой по релевантности Это определяет, насколько точно ответы модели соответствуют контексту или запросу. Соответствующий ответ напрямую обращается к запросу или инструкции пользователя. Согласованность Это означает, насколько логически согласованы ответы модели. Последовательный ответ поддерживает логический поток и не противоречит самому себе. Источник Это указывает, был ли ответ возвращен в формате, запрошенном в запросе. Length Это измеряет длину ответа. Результаты должны указывать на то, что все три оценки имеют высокую релевантность, в то время как
experiment_ignoresources_temp09
она имеет самую низкую релевантность.Выберите папку, чтобы просмотреть конфигурацию для оценки.
Введите ctrl + C выход из приложения и вернитесь в терминал.
Сравнение ответов
Сравните возвращаемые ответы из оценки.
Выберите две оценки для сравнения, а затем используйте один и тот же инструмент проверки для сравнения ответов:
python -m evaltools diff my_results/experiment_refined my_results/experiment_ignoresources_temp09
Проверка результатов. Результаты могут отличаться.
Введите 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 ежемесячно включено в хранилище и основные часы.
Войдите на панель мониторинга GitHub Codespaces (https://github.com/codespaces).
Найдите текущие запущенные пространства Codespaces, полученные из
Azure-Samples/ai-rag-chat-evaluator
репозитория GitHub.Откройте контекстное меню для пространства кода и нажмите кнопку "Удалить".
Вернитесь в статью о приложении чата, чтобы очистить эти ресурсы.
Следующие шаги
- Репозиторий оценки
- Репозиторий приложения корпоративного чата GitHub
- Создание приложения чата с помощью архитектуры решения Azure OpenAI
- Управление доступом в приложениях Generative AI с помощью службы "Поиск ИИ Azure"
- Создание готового решения OpenAI enterprise с помощью Azure Управление API
- Перебор векторного поиска с гибридными возможностями извлечения и ранжирования