ARTKIT — это платформа Python, разработанная BCG X для автоматизации оперативного тестирования и оценки приложений Gen AI.
ARTKIT — это платформа Python для разработки автоматизированных комплексных конвейеров тестирования и оценки для приложений Gen AI. Используя гибкие модели Gen AI для автоматизации ключевых этапов процесса тестирования и оценки, конвейеры ARTKIT легко адаптируются для удовлетворения потребностей в тестировании и оценке широкого спектра систем Gen AI.
ARTKIT также поддерживает автоматизированные многоходовые диалоги между ботом-претендентом и целевой системой. Проблемы и уязвимости чаще возникают после расширенного взаимодействия с системами Gen AI, поэтому многоэтапное тестирование имеет решающее значение для интерактивных приложений.
Мы рекомендуем начать с нашего Руководства пользователя, чтобы изучить основные концепции и функциональные возможности ARTKIT. Посетите наши примеры, чтобы узнать, как ARTKIT можно использовать для тестирования и оценки систем искусственного интеллекта поколения для:
Это всего лишь несколько примеров из множества способов использования ARTKIT для тестирования и оценки систем искусственного интеллекта поколения на предмет компетентности, справедливости и безопасности.
Прелесть ARTKIT в том, что он позволяет вам делать многое с небольшими затратами: несколько простых функций и классов поддерживают разработку быстрых, гибких и соответствующих целям конвейеров для тестирования и оценки вашей системы Gen AI. Ключевые особенности включают в себя:
Примечание
ARTKIT предназначен для настройки специалистами по данным и инженерами для улучшения тестирования и оценки с участием человека. Мы намеренно не предоставляем решение «нажатием кнопки», поскольку опыт научил нас, что эффективное тестирование и оценка должны быть адаптированы к каждому варианту использования ИИ поколения. Автоматизация — это стратегия масштабирования и ускорения тестирования и оценки, а не замена картированию ландшафта рисков для конкретного случая, экспертизе предметной области и критическом мышлению.
ARTKIT обеспечивает готовую поддержку следующих поставщиков моделей:
Для подключения к другим сервисам пользователи могут разрабатывать новые классы моделей.
ARTKIT поддерживает установки как PyPI, так и Conda. Мы рекомендуем устанавливать ARTKIT в выделенной виртуальной среде.
MacOS и Linux:
python -m венв арткит исходный арткит/bin/активировать pip установить арткит
Окна:
python -m венв арткит artkitScriptsactivate.bat pip установить арткит
conda install -c conda-forge арткит
Чтобы включить визуализацию блок-схем конвейера, установите GraphViz и убедитесь, что он присутствует в переменной PATH вашей системы:
dot -V
в терминале или командной строке, чтобы проверить установку. Большинству пользователей ARTKIT потребуется доступ к сервисам внешних поставщиков моделей, таких как OpenAI или Hugging Face.
Наш рекомендуемый подход:
python-dotenv
с помощью pip
:pip установить python-dotenv
или conda
:
установка conda -c conda-forge python-dotenv
.env
в корне вашего проекта..env
в свой .gitignore
, чтобы убедиться, что он не привязан к вашему репозиторию Git..env
, например API_KEY=your_api_key
from dotenv import load_dotenv
load_dotenv ()
# Verify that the environment variable is loaded
import os
os . getenv ( 'YOUR_API_KEY' )
Репозиторий ARTKIT включает в себя файл примера с именем .env_example
в корне проекта, который предоставляет шаблон для определения переменных среды, включая учетные данные-заполнители для поддерживаемых API.
Чтобы обеспечить безопасное хранение учетных данных, классы модели ARTKIT не принимают учетные данные API напрямую, а вместо этого требуют определения переменных среды. Например, если ваш ключ API OpenAI хранится в переменной среды с именем OPENAI_API_KEY
, вы можете инициализировать класс модели OpenAI следующим образом:
import artkit . api as ak
ak . OpenAIChat (
model_id = "gpt-4o" ,
api_key_env = "OPENAI_API_KEY"
)
Переменная api_key_env
принимает имя переменной среды в виде строки вместо прямого принятия ключа API в качестве параметра, что снижает риск случайного раскрытия ключей API в репозиториях кода, поскольку ключ не хранится как объект Python, который можно распечатать. .
Основные функции ARTKIT:
run
: выполнить один или несколько шагов конвейера.step
: один шаг конвейера, который создает словарь или итерацию словарей.chain
: набор шагов, которые выполняются последовательно.parallel
: набор шагов, которые выполняются параллельно.Ниже мы разрабатываем простой пример конвейера со следующими шагами:
Для начала импортируйте artkit.api
и настройте сеанс с моделью OpenAI GPT-4o. В приведенном ниже коде предполагается, что у вас есть ключ API OpenAI, хранящийся в переменной среды с именем OPENAI_API_KEY
, и вы хотите кэшировать ответы в базе данных с именем cache/chat_llm.db
.
import artkit . api as ak
# Set up a chat system with the OpenAI GPT-4o model
chat_llm = ak . CachedChatModel (
model = ak . OpenAIChat ( model_id = "gpt-4o" ),
database = "cache/chat_llm.db"
)
Затем определите несколько функций, которые будут использоваться в качестве шагов конвейера. ARTKIT предназначен для работы с асинхронными генераторами, обеспечивающими асинхронную обработку, поэтому приведенные ниже функции определяются с помощью ключевых слов async
, await
и yield
.
# A function that rephrases input prompts to have a specified tone
async def rephrase_tone ( prompt : str , tone : str , llm : ak . ChatModel ):
response = await llm . get_response (
message = (
f"Your job is to rephrase in input question to have a { tone } tone. n "
f"This is the question you must rephrase: n { prompt } "
)
)
yield { "prompt" : response [ 0 ], "tone" : tone }
# A function that behaves as a chatbot named AskChad who mirrors the user's tone
async def ask_chad ( prompt : str , llm : ak . ChatModel ):
response = await llm . get_response (
message = (
"You are AskChad, a chatbot that mirrors the user's tone. "
"For example, if the user is rude, you are rude. "
"Your responses contain no more than 10 words. n "
f"Respond to this user input: n { prompt } "
)
)
yield { "response" : response [ 0 ]}
# A function that evaluates responses according to a specified metric
async def evaluate_metric ( response : str , metric : str , llm : ak . ChatModel ):
score = await llm . get_response (
message = (
f"Your job is to evaluate prompts according to whether they are { metric } . "
f"If the input prompt is { metric } , return 1, otherwise return 0. n "
f"Please evaluate the following prompt: n { response } "
)
)
yield { "evaluation_metric" : metric , "score" : int ( score [ 0 ])}
Затем определите конвейер, который перефразирует вводимые запросы в соответствии с двумя разными тонами (вежливым и саркастическим), отправляет перефразированные запросы в AskChad и, наконец, оценивает ответы на предмет сарказма.
pipeline = (
ak . chain (
ak . parallel (
ak . step ( "tone_rephraser" , rephrase_tone , tone = "POLITE" , llm = chat_llm ),
ak . step ( "tone_rephraser" , rephrase_tone , tone = "SARCASTIC" , llm = chat_llm ),
),
ak . step ( "ask_chad" , ask_chad , llm = chat_llm ),
ak . step ( "evaluation" , evaluate_metric , metric = "SARCASTIC" , llm = chat_llm )
)
)
pipeline . draw ()
Наконец, запустите конвейер с приглашением ввода и отобразите результаты в таблице.
# Input to run through the pipeline
prompt = { "prompt" : "What is a fun activity to do in Boston?" }
# Run pipeline
result = ak . run ( steps = pipeline , input = prompt )
# Convert results dictionary into a multi-column dataframe
result . to_frame ()
В таблице результатов слева направо показано:
input
: Исходное приглашение для ввода.tone_rephraser
: перефразированные приглашения, которые перефразируют исходное приглашение, чтобы иметь указанный тон.ask_chad
: ответ от AskChad, который отражает тон пользователя.evaluation
: Оценка метрики SARCASTIC, которая помечает саркастический ответ 1.Для полного ознакомления с ARTKIT посетите наше Руководство пользователя и примеры.
Вклад в ARTKIT приветствуется и ценится! Дополнительную информацию см. в разделе «Руководство для участников».
Этот проект распространяется под лицензией Apache 2.0, что позволяет бесплатно использовать, модифицировать и распространять его с дополнительной защитой от патентных споров. Дополнительную информацию см. в файле ЛИЦЕНЗИИ или посетите Apache 2.0.
BCG X — это технологическое подразделение Boston Consulting Group, занимающееся разработкой и проектированием.
Мы всегда ищем талантливых специалистов по обработке данных и инженеров-программистов, которые присоединятся к нашей команде! Посетите BCG X Careers, чтобы узнать больше.