ARTKIT هو إطار عمل Python تم تطويره بواسطة BCG X لأتمتة الاختبار والتقييم الفوري لتطبيقات Gen AI.
ARTKIT هو إطار عمل Python لتطوير خطوط الاختبار والتقييم الآلية الشاملة لتطبيقات Gen AI. من خلال الاستفادة من نماذج Gen AI المرنة لأتمتة الخطوات الرئيسية في عملية الاختبار والتقييم، يتم تكييف خطوط أنابيب ARTKIT بسهولة لتلبية احتياجات الاختبار والتقييم لمجموعة واسعة من أنظمة Gen AI.
يدعم ARTKIT أيضًا المحادثات الآلية متعددة الأدوار بين روبوت منافس ونظام مستهدف. من المرجح أن تنشأ المشكلات ونقاط الضعف بعد التفاعلات الممتدة مع أنظمة Gen AI، لذا يعد الاختبار متعدد المنعطفات أمرًا بالغ الأهمية للتطبيقات التفاعلية.
نوصي بالبدء بدليل المستخدم الخاص بنا للتعرف على المفاهيم والوظائف الأساسية لـ ARTKIT. قم بزيارة الأمثلة الخاصة بنا لمعرفة كيف يمكن استخدام ARTKIT لاختبار وتقييم أنظمة Gen AI من أجل:
هذه مجرد أمثلة قليلة على الطرق العديدة التي يمكن من خلالها استخدام ARTKIT لاختبار وتقييم أنظمة الذكاء الاصطناعي من حيث الكفاءة والإنصاف والسلامة والأمان.
يكمن جمال ARTKIT في أنه يتيح لك القيام بالكثير بالقليل: تدعم بعض الوظائف والفئات البسيطة تطوير خطوط أنابيب سريعة ومرنة ومناسبة للغرض لاختبار وتقييم نظام Gen AI الخاص بك. تشمل الميزات الرئيسية ما يلي:
ملحوظة
تم تصميم ARTKIT ليتم تخصيصه من قبل علماء البيانات والمهندسين لتعزيز الاختبار والتقييم البشري داخل الحلقة. نحن لا نقدم حلاً "زر ضغط" عمدًا لأن التجربة علمتنا أن الاختبار والتقييم الفعالين يجب أن يكونا مصممين خصيصًا لكل حالة استخدام لجيل الذكاء الاصطناعي. تُعد الأتمتة بمثابة استراتيجية لتوسيع نطاق الاختبار والتقييم وتسريعه، وليست بديلاً عن رسم خرائط المخاطر الخاصة بحالة معينة، والخبرة في المجال، والتفكير النقدي.
يوفر ARTKIT دعمًا جاهزًا لموفري النماذج التاليين:
للاتصال بخدمات أخرى، يمكن للمستخدمين تطوير فئات نموذجية جديدة.
يدعم ARTKIT عمليات تثبيت PyPI وConda. نوصي بتثبيت ARTKIT في بيئة افتراضية مخصصة.
ماك ولينكس:
بايثون -m venv artkit مصدر artkit/bin/activate نقطة تثبيت Artkit
ويندوز:
بايثون -m venv artkit artkitScriptsactivate.bat نقطة تثبيت Artkit
conda install -c conda-forge artkit
لتمكين تصورات مخططات تدفق خطوط الأنابيب، قم بتثبيت GraphViz وتأكد من وجوده في متغير PATH الخاص بنظامك:
dot -V
في Terminal أو موجه الأوامر للتحقق من التثبيت. سيحتاج معظم مستخدمي ARTKIT إلى الوصول إلى الخدمات من موفري النماذج الخارجيين مثل OpenAI أو Hugging Face.
نهجنا الموصى به هو:
python-dotenv
باستخدام pip
:نقطة تثبيت بيثون-dotenv
أو conda
:
conda install -c conda-forge python-dotenv
.env
في جذر المشروع الخاص بك..env
إلى .gitignore
الخاص بك للتأكد من أنه غير ملتزم بـ Git repo الخاص بك..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
في جذر المشروع والذي يوفر قالبًا لتعريف متغيرات البيئة، بما في ذلك بيانات اعتماد العنصر النائب لواجهات برمجة التطبيقات المدعومة.
لتشجيع التخزين الآمن لبيانات الاعتماد، لا تقبل فئات نموذج ARTKIT بيانات اعتماد API مباشرة، ولكنها تتطلب بدلاً من ذلك تحديد المتغيرات البيئية. على سبيل المثال، إذا تم تخزين مفتاح OpenAI API الخاص بك في متغير بيئة يسمى 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. يفترض الكود أدناه أن لديك مفتاح OpenAI API مخزنًا في متغير بيئة يسمى 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 هي وحدة البناء والتصميم التكنولوجي التابعة لمجموعة بوسطن الاستشارية.
نحن نبحث دائمًا عن علماء البيانات ومهندسي البرمجيات الموهوبين للانضمام إلى فريقنا! قم بزيارة وظائف BCG X لمعرفة المزيد.