ARTKIT เป็นเฟรมเวิร์ก Python ที่พัฒนาโดย BCG X สำหรับการทดสอบและประเมินผลแอปพลิเคชัน Gen AI แบบทันทีโดยอัตโนมัติ
ARTKIT เป็นเฟรมเวิร์ก Python สำหรับการพัฒนาไปป์ไลน์การทดสอบและประเมินผลแบบ end-to-end แบบอัตโนมัติสำหรับแอปพลิเคชัน Gen AI ด้วยการใช้ประโยชน์จากโมเดล Gen AI ที่ยืดหยุ่นเพื่อทำให้ขั้นตอนสำคัญในกระบวนการทดสอบและประเมินผลเป็นไปโดยอัตโนมัติ ไปป์ไลน์ ARTKIT จึงได้รับการปรับให้พร้อมเพื่อตอบสนองความต้องการในการทดสอบและประเมินผลของระบบ Gen AI ที่หลากหลาย
ARTKIT ยังรองรับการสนทนาหลายรอบอัตโนมัติระหว่างบอทผู้ท้าชิงและระบบเป้าหมาย ปัญหาและช่องโหว่มีแนวโน้มที่จะเกิดขึ้นมากขึ้นหลังจากการโต้ตอบกับระบบ Gen AI เป็นเวลานาน ดังนั้นการทดสอบแบบหลายรอบจึงมีความสำคัญสำหรับแอปพลิเคชันเชิงโต้ตอบ
เราขอแนะนำให้เริ่มต้นด้วยคู่มือผู้ใช้ของเราเพื่อเรียนรู้แนวคิดหลักและฟังก์ชันการทำงานของ ARTKIT เยี่ยมชมตัวอย่างของเราเพื่อดูว่า ARTKIT สามารถใช้ทดสอบและประเมินระบบ Gen AI สำหรับ: ได้อย่างไร
นี่เป็นเพียงตัวอย่างเล็กๆ น้อยๆ ของหลายวิธีที่ ARTKIT สามารถใช้ทดสอบและประเมินระบบ Gen AI ในด้านความเชี่ยวชาญ ความเท่าเทียม ความปลอดภัย และการรักษาความปลอดภัย
ข้อดีของ ARTKIT คือช่วยให้คุณทำสิ่งต่างๆ ได้มากมายโดยใช้เพียงเล็กน้อย: ฟังก์ชันและคลาสง่ายๆ ไม่กี่รายการสนับสนุนการพัฒนาไปป์ไลน์ที่รวดเร็ว ยืดหยุ่น และเหมาะสมกับวัตถุประสงค์สำหรับการทดสอบและประเมินระบบ Gen AI ของคุณ คุณสมบัติที่สำคัญ ได้แก่ :
บันทึก
ARTKIT ได้รับการออกแบบมาให้ปรับแต่งโดยนักวิทยาศาสตร์ข้อมูลและวิศวกร เพื่อปรับปรุงการทดสอบและการประเมินผลโดยมนุษย์ในวง เราตั้งใจไม่ให้โซลูชันแบบ "ปุ่มกด" เนื่องจากประสบการณ์ได้สอนเราว่าการทดสอบและการประเมินผลที่มีประสิทธิภาพจะต้องได้รับการปรับแต่งให้เหมาะกับกรณีการใช้งาน Gen AI แต่ละกรณี ระบบอัตโนมัติเป็นกลยุทธ์ในการปรับขนาดและเร่งการทดสอบและประเมินผล ไม่ใช่สิ่งทดแทนการทำแผนที่ภูมิทัศน์ความเสี่ยงเฉพาะกรณี ความเชี่ยวชาญเฉพาะด้าน และการคิดเชิงวิพากษ์
ARTKIT ให้การสนับสนุนนอกกรอบสำหรับผู้ให้บริการรุ่นต่อไปนี้:
หากต้องการเชื่อมต่อกับบริการอื่น ๆ ผู้ใช้สามารถพัฒนาคลาสโมเดลใหม่ได้
ARTKIT รองรับทั้งการติดตั้ง PyPI และ Conda เราขอแนะนำให้ติดตั้ง ARTKIT ในสภาพแวดล้อมเสมือนโดยเฉพาะ
MacOS และลินุกซ์:
หลาม -m venv artkit แหล่งที่มา artkit/bin/activate pip ติดตั้ง artkit
หน้าต่าง:
หลาม -m venv artkit artkitScriptsactivate.bat pip ติดตั้ง artkit
conda ติดตั้ง -c conda-forge artkit
หากต้องการเปิดใช้งานการแสดงภาพไดอะแกรมการไหลของไปป์ไลน์ ให้ติดตั้ง GraphViz และตรวจสอบให้แน่ใจว่าอยู่ในตัวแปร PATH ของระบบของคุณ:
dot -V
ใน Terminal หรือ Command Prompt เพื่อตรวจสอบการติดตั้ง ผู้ใช้ ARTKIT ส่วนใหญ่จะต้องเข้าถึงบริการจากผู้ให้บริการโมเดลภายนอก เช่น OpenAI หรือ Hugging Face
แนวทางที่เราแนะนำคือ:
python-dotenv
โดยใช้ pip
:pip ติดตั้ง python-dotenv
หรือ conda
:
conda ติดตั้ง -c conda-forge python-dotenv.conda
.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 โดยตรง แต่กำหนดให้ต้องกำหนดตัวแปรสภาพแวดล้อมแทน ตัวอย่างเช่น หากคีย์ 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 ซึ่งอนุญาตให้ใช้งาน ดัดแปลง และจัดจำหน่ายได้ฟรี พร้อมเพิ่มความคุ้มครองจากการดำเนินคดีด้านสิทธิบัตร ดูไฟล์ LICENSE สำหรับรายละเอียดเพิ่มเติมหรือไปที่ Apache 2.0
BCG X เป็นหน่วยสร้างและออกแบบเทคโนโลยีของ Boston Consulting Group
เรามองหานักวิทยาศาสตร์ข้อมูลและวิศวกรซอฟต์แวร์ที่มีความสามารถมาร่วมทีมกับเราอยู่เสมอ! เยี่ยมชม BCG X Careers เพื่อเรียนรู้เพิ่มเติม