প্রকল্প সম্পর্কে
garak (Generative AI Red-teaming & Assessment Kit) হলো একটি কমান্ড-লাইন টুল, যা বড় ভাষা মডেল এবং ডায়ালগ সিস্টেমে ব্যর্থতার ধরন খুঁজে বের করার জন্য ব্যবহৃত হয়। এটি NVIDIA দ্বারা তৈরি এবং Apache 2.0 লাইসেন্সের অধীনে প্রকাশিত।
এটি কী করে
- একটি LLM-কে অনাকাঙ্ক্ষিত উপায়ে ব্যর্থ করা যায় কিনা তা পরীক্ষা করে, যার মধ্যে রয়েছে হ্যালুসিনেশন, ডেটা লিকেজ, প্রম্পট ইনজেকশন, ভুল তথ্য, টক্সিসিটি তৈরি, জেলব্রেক এবং অন্যান্য দুর্বলতা।
- এই ব্যর্থতার ধরনগুলো অনুসন্ধান করতে স্ট্যাটিক, ডায়নামিক এবং অ্যাডাপটিভ প্রোব একত্রিত করে।
- README-তে এর ভূমিকা nmap বা Metasploit Framework-এর সাথে তুলনা করা হয়েছে, তবে এটি LLM-এর উপর প্রয়োগ করা হয়।
সমর্থিত টার্গেট
- Hugging Face Hub জেনারেটিভ মডেল, যার মধ্যে রয়েছে লোকাল transformers পাইপলাইন, Inference API এবং প্রাইভেট Inference Endpoints।
- OpenAI চ্যাট এবং কমপ্লিশন মডেল।
- Replicate টেক্সট মডেল এবং প্রাইভেট Replicate এন্ডপয়েন্ট।
- Converse API-এর মাধ্যমে AWS Bedrock ফাউন্ডেশন মডেল, যার মধ্যে Anthropic Claude, Meta Llama, Amazon Titan, AI21 Labs, Cohere এবং Mistral AI-এর মতো পরিবারগুলো রয়েছে।
- Cohere, Groq, litellm, NVIDIA NIM এন্ডপয়েন্ট, ggml/llama.cpp মডেল, এবং মূলত REST এন্ডপয়েন্টের মাধ্যমে পৌঁছানো যায় এমন যেকোনো কিছু।
- প্লাগইন ডেভেলপমেন্টের জন্য বিল্ট-ইন টেস্ট জেনারেটর (test.Blank, test.Repeat)।
ইনস্টলেশন এবং ব্যবহার
- PyPI থেকে pip দিয়ে, GitHub main ব্রাঞ্চ থেকে, অথবা সোর্স থেকে ক্লোন করে একটি Conda এনভায়রনমেন্টে (Python 3.11 থেকে 3.13) ইনস্টল করা যায়।
- সাধারণ সিনট্যাক্স হলো `garak <options>`; টুলটির একটি টার্গেট মডেল প্রয়োজন এবং ডিফল্টভাবে প্রতিটি প্রোবের প্রস্তাবিত ডিটেক্টরসহ সমস্ত পরিচিত প্রোব চালায়।
- `--list_probes` উপলব্ধ প্রোব তালিকাভুক্ত করে; `--target_type` এবং `--target_name` মডেল নির্বাচন করে; `--spec` একটি রানকে একটি প্রোব পরিবার বা একটি একক প্লাগইনে সীমাবদ্ধ করে।
- হোস্টেড প্রোভাইডারদের জন্য API কী পরিবেশ ভেরিয়েবলের মাধ্যমে সরবরাহ করা হয়, যেমন OPENAI_API_KEY, HF_INFERENCE_TOKEN, REPLICATE_API_TOKEN, COHERE_API_KEY, GROQ_API_KEY, NIM_API_KEY এবং BEDROCK_API_KEY।
README-তে বর্ণিত প্রোবের উদাহরণ
- blank, atkgen (স্বয়ংক্রিয় আক্রমণ তৈরি), badchars (অনুভব করা যায় না এমন Unicode পরিবর্তন), av_spam_scanning, continuation, dan (DAN এবং DAN-সদৃশ আক্রমণ), donotanswer, encoding (টেক্সট এনকোডিংয়ের মাধ্যমে প্রম্পট ইনজেকশন), gcg (অ্যাডভার্সারিয়াল সাফিক্স), glitch (গ্লিচ টোকেন), grandma, goodside, leakreplay (ট্রেনিং ডেটা রিপ্লে), lmrc (Language Model Risk Cards), malwaregen, misleading, packagehallucination, promptinject, realtoxicityprompts, snowball (স্নোবলড হ্যালুসিনেশন), এবং xss।
ফলাফল এবং লগিং
- প্রতিটি প্রোবের জন্য, garak একটি প্রগ্রেস বার এবং তারপর প্রতিটি ডিটেক্টরের ফলাফল মূল্যায়নকারী একটি সারি প্রিন্ট করে, অনাকাঙ্ক্ষিত আচরণ ঘটলে প্রতিক্রিয়াগুলোকে একটি ব্যর্থতার হারসহ FAIL হিসেবে চিহ্নিত করে।
- লগের মধ্যে রয়েছে ডিবাগিংয়ের জন্য garak.log, প্রতি রানের একটি JSONL রিপোর্ট যেখানে প্রতিটি প্রোবিং প্রচেষ্টার একটি এন্ট্রি থাকে, এবং একটি হিট লগ যা দুর্বলতা তৈরি করা প্রচেষ্টাগুলোর বিস্তারিত দেয়।
- analyse/analyse_log.py-তে একটি মৌলিক বিশ্লেষণ স্ক্রিপ্ট রয়েছে যা সবচেয়ে বেশি হিট তৈরি করা প্রোব এবং প্রম্পট আউটপুট দেয়।
আর্কিটেকচার এবং এক্সটেনসিবিলিটি
- কোডটি probes, detectors, evaluators, generators এবং harnesses-এ সংগঠিত, যার প্রতিটিতে একটি base.py রয়েছে যা প্লাগইন বেস ক্লাস সংজ্ঞায়িত করে।
- ডিফল্ট অপারেটিং মোড probewise harness ব্যবহার করে, যা প্রতিটি প্রোব ইনস্ট্যান্টিয়েট করে এবং কোন ডিটেক্টর চালাবে তা নির্ধারণ করতে তার primary_detector এবং extended_detectors অ্যাট্রিবিউট পড়ে।
- ডেভেলপাররা garak.probes.base.TextProbe-এর মতো বেস ক্লাস থেকে উত্তরাধিকার সূত্রে নতুন প্লাগইন লিখতে পারেন, ইন্টারঅ্যাকটিভভাবে বা টেস্ট জেনারেটর এবং ডিটেক্টর দিয়ে পরীক্ষা করতে পারেন, এবং --list_probes, --list_detectors বা --list_generators-এর মাধ্যমে সেগুলো তালিকাভুক্ত করতে পারেন।
প্রকল্পের সম্পদ
- docs.garak.ai এবং reference.garak.io/readthedocs-এ ডকুমেন্টেশন, একটি Discord কমিউনিটি, garak.ai প্রকল্পের হোম, একটি arXiv প্রিপ্রিন্ট (2406.11036) এবং একাডেমিক ব্যবহারের জন্য একটি সাইটেশন এন্ট্রি।
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.