ARTKIT ist ein von BCG
ARTKIT ist ein Python-Framework zur Entwicklung automatisierter End-to-End-Test- und Evaluierungspipelines für Gen-AI-Anwendungen. Durch die Nutzung flexibler Gen-KI-Modelle zur Automatisierung wichtiger Schritte im Test- und Evaluierungsprozess können ARTKIT-Pipelines problemlos an die Test- und Evaluierungsanforderungen einer Vielzahl von Gen-KI-Systemen angepasst werden.
ARTKIT unterstützt auch automatisierte Multi-Turn-Konversationen zwischen einem Challenger-Bot und einem Zielsystem. Probleme und Schwachstellen treten eher nach längeren Interaktionen mit Gen-KI-Systemen auf, daher sind Multi-Turn-Tests für interaktive Anwendungen von entscheidender Bedeutung.
Wir empfehlen, mit unserem Benutzerhandbuch zu beginnen, um die Kernkonzepte und Funktionen von ARTKIT kennenzulernen. Besuchen Sie unsere Beispiele, um zu sehen, wie ARTKIT zum Testen und Bewerten von Gen-KI-Systemen für Folgendes verwendet werden kann:
Dies sind nur einige Beispiele für die vielen Möglichkeiten, mit denen ARTKIT zum Testen und Bewerten von KI-Systemen der Generation auf Leistungsfähigkeit, Gleichberechtigung und Sicherheit eingesetzt werden kann.
Das Schöne an ARTKIT ist, dass Sie mit wenig viel erreichen können: Ein paar einfache Funktionen und Klassen unterstützen die Entwicklung schneller, flexibler und zweckmäßiger Pipelines zum Testen und Bewerten Ihres Gen-KI-Systems. Zu den Hauptmerkmalen gehören:
Notiz
ARTKIT ist so konzipiert, dass es von Datenwissenschaftlern und Ingenieuren individuell angepasst werden kann, um das Testen und Auswerten von Human-in-the-Loop zu verbessern. Wir bieten bewusst keine Lösung auf Knopfdruck an, denn die Erfahrung hat uns gelehrt, dass effektive Tests und Auswertungen auf jeden Anwendungsfall der Gen-KI zugeschnitten sein müssen. Automatisierung ist eine Strategie zur Skalierung und Beschleunigung von Tests und Auswertungen und kein Ersatz für fallspezifische Risikolandschaftskartierung, Fachwissen und kritisches Denken.
ARTKIT bietet sofort einsatzbereiten Support für die folgenden Modellanbieter:
Um eine Verbindung zu anderen Diensten herzustellen, können Benutzer neue Modellklassen entwickeln.
ARTKIT unterstützt sowohl PyPI- als auch Conda-Installationen. Wir empfehlen die Installation von ARTKIT in einer dedizierten virtuellen Umgebung.
MacOS und Linux:
python -m venv artkit Quelle artkit/bin/activate pip artkit installieren
Windows:
python -m venv artkit artkitScriptsactivate.bat pip artkit installieren
conda install -c conda-forge artkit
Um Visualisierungen von Pipeline-Flussdiagrammen zu ermöglichen, installieren Sie GraphViz und stellen Sie sicher, dass es sich in der PATH-Variablen Ihres Systems befindet:
dot -V
im Terminal oder in der Eingabeaufforderung aus, um die Installation zu überprüfen. Die meisten ARTKIT-Benutzer müssen auf Dienste externer Modellanbieter wie OpenAI oder Hugging Face zugreifen.
Unser empfohlener Ansatz ist:
python-dotenv
mit pip
:pip install python-dotenv
oder conda
:
conda install -c conda-forge python-dotenv
.env
in Ihrem Projektstammverzeichnis..env
zu Ihrem .gitignore
hinzu, um sicherzustellen, dass es nicht in Ihr Git-Repository übernommen wird..env
, zum Beispiel 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' )
Das ARTKIT-Repository enthält eine Beispieldatei namens .env_example
im Projektstamm, die eine Vorlage zum Definieren von Umgebungsvariablen bereitstellt, einschließlich Platzhalteranmeldeinformationen für unterstützte APIs.
Um die sichere Speicherung von Anmeldeinformationen zu fördern, akzeptieren ARTKIT-Modellklassen API-Anmeldeinformationen nicht direkt, sondern erfordern stattdessen die Definition von Umgebungsvariablen. Wenn Ihr OpenAI-API-Schlüssel beispielsweise in einer Umgebungsvariablen namens OPENAI_API_KEY
gespeichert ist, können Sie eine OpenAI-Modellklasse wie folgt initialisieren:
import artkit . api as ak
ak . OpenAIChat (
model_id = "gpt-4o" ,
api_key_env = "OPENAI_API_KEY"
)
Die Variable api_key_env
akzeptiert den Namen der Umgebungsvariablen als Zeichenfolge, anstatt direkt einen API-Schlüssel als Parameter zu akzeptieren, wodurch das Risiko einer versehentlichen Offenlegung von API-Schlüsseln in Code-Repositorys verringert wird, da der Schlüssel nicht als ausdruckbares Python-Objekt gespeichert wird .
Die Kernfunktionen von ARTKIT sind:
run
: Einen oder mehrere Pipeline-Schritte ausführenstep
: Ein einzelner Pipelineschritt, der ein Wörterbuch oder eine Iteration von Wörterbüchern erstelltchain
: Eine Reihe von Schritten, die nacheinander ausgeführt werdenparallel
: Eine Reihe von Schritten, die parallel ausgeführt werdenIm Folgenden entwickeln wir eine einfache Beispielpipeline mit den folgenden Schritten:
Importieren Sie zunächst artkit.api
und richten Sie eine Sitzung mit dem OpenAI GPT-4o-Modell ein. Der folgende Code geht davon aus, dass Sie einen OpenAI-API-Schlüssel in einer Umgebungsvariablen namens OPENAI_API_KEY
gespeichert haben und dass Sie die Antworten in einer Datenbank namens cache/chat_llm.db
zwischenspeichern möchten.
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"
)
Definieren Sie als Nächstes einige Funktionen, die als Pipeline-Schritte verwendet werden. ARTKIT ist für die Zusammenarbeit mit asynchronen Generatoren konzipiert, um eine asynchrone Verarbeitung zu ermöglichen. Daher werden die folgenden Funktionen mit den Schlüsselwörtern async
, await
und yield
definiert.
# 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 ])}
Definieren Sie als Nächstes eine Pipeline, die eine Eingabeaufforderung entsprechend zweier unterschiedlicher Töne (höflich und sarkastisch) umformuliert, die umformulierten Aufforderungen an AskChad sendet und schließlich die Antworten auf Sarkasmus auswertet.
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 ()
Führen Sie abschließend die Pipeline mit einer Eingabeaufforderung aus und zeigen Sie die Ergebnisse in einer Tabelle an.
# 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 ()
Von links nach rechts zeigt die Ergebnistabelle:
input
: Die ursprüngliche Eingabeaufforderungtone_rephraser
: Die umformulierten Ansagen, die die ursprüngliche Ansage umformulieren, um den angegebenen Ton zu erhaltenask_chad
: Die Antwort von AskChad, die den Ton des Benutzers widerspiegeltevaluation
: Die Bewertungspunktzahl für die SARCASTIC-Metrik, die die sarkastische Antwort mit einer 1 kennzeichnetEine vollständige Einführung in ARTKIT finden Sie in unserem Benutzerhandbuch und Beispielen.
Beiträge zu ARTKIT sind willkommen und geschätzt! Weitere Informationen finden Sie im Abschnitt „Leitfaden für Mitwirkende“.
Dieses Projekt ist unter Apache 2.0 lizenziert und ermöglicht die kostenlose Nutzung, Änderung und Verbreitung mit zusätzlichem Schutz vor Patentstreitigkeiten. Weitere Informationen finden Sie in der LICENSE-Datei oder unter Apache 2.0.
BCG X ist die technische Konstruktions- und Designeinheit der Boston Consulting Group.
Wir sind immer auf der Suche nach talentierten Datenwissenschaftlern und Softwareentwicklern zur Verstärkung unseres Teams! Besuchen Sie BCG X Careers, um mehr zu erfahren.