🐢 LLM एजेंटों के लिए ओपन-सोर्स मूल्यांकन एवं परीक्षण लाइब्रेरी
[!IMPORTANT] Giskard v3 AI एजेंटों के डायनामिक, मल्टी-टर्न परीक्षण के लिए डिज़ाइन किया गया एक नया रीराइट है। यह रिलीज़ बेहतर दक्षता के लिए भारी निर्भरताओं को हटाती है, साथ ही एक अधिक शक्तिशाली AI भेद्यता स्कैनर और उन्नत RAG मूल्यांकन पेश करती है — दोनों अब
giskard-scanमें मूल रूप से शामिल हैं, जिनकी v2 पर कोई निर्भरता नहीं है। केवल tabular/ML मॉडल के लिए लीगेसी स्कैन v2-केवल बना हुआ है। Giskard v2 उपलब्ध है लेकिन अब सक्रिय रूप से अनुरक्षित नहीं है। प्रगति का अनुसरण करें → v3 घोषणा पढ़ें · रोडमैप
pip install giskard # checks (+ agents, llm, core)
pip install "giskard[scan]" # + vulnerability / quality scan
pip install "giskard[openai]" # provider SDK for LLM judges / generators
Python 3.12+ की आवश्यकता है।
| Extra | जोड़ता है |
|---|---|
| (कोई नहीं) | giskard-checks और निर्भरताएँ |
scan | giskard-scan |
openai / anthropic / … | provider SDKs (देखें pyproject.toml वैकल्पिक निर्भरताएँ) |
टेलीमेट्री: giskard-core के माध्यम से वैकल्पिक समग्र विश्लेषण। कोई प्रॉम्प्ट या आउटपुट नहीं भेजे जाते।
Giskard आयात करने से पहले ऑप्ट-आउट करें: export DO_NOT_TRACK=1 या export GISKARD_TELEMETRY_DISABLED=1।
विवरण: giskard-core README।
Giskard एक ओपन-सोर्स Python लाइब्रेरी है जो एजेंटिक सिस्टम के परीक्षण और मूल्यांकन के लिए है। v3 आर्किटेक्चर केंद्रित पैकेजों का एक मॉड्यूलर सेट है — प्रत्येक केवल उन निर्भरताओं को ले जाता है जिनकी उसे आवश्यकता होती है — जो किसी भी चीज़ को लपेटने के लिए शुरू से बनाया गया है: एक LLM, एक ब्लैक-बॉक्स एजेंट, या एक मल्टी-स्टेप पाइपलाइन।
| स्थिति | पैकेज | विवरण |
|---|---|---|
| ✅ स्थिर | giskard-checks | परीक्षण और मूल्यांकन — परिदृश्य API, अंतर्निहित जाँचें, LLM-as-judge |
| ✅ स्थिर | giskard-scan | एजेंट भेद्यता स्कैनर + RAG/गुणवत्ता मूल्यांकन — red teaming, प्रॉम्प्ट इंजेक्शन, jailbreaks और हानिकारक सामग्री (vulnerability_scan, v2 Scan का उत्तराधिकारी), साथ ही ज्ञान-आधार गुणवत्ता मूल्यांकन (quality_scan, v2 RAGET का उत्तराधिकारी) |
ये तीन मूलभूत लाइब्रेरियों पर निर्मित हैं — giskard-core (साझा उपयोगिताएँ और टेलीमेट्री), giskard-llm (provider-agnostic LLM रूटिंग), और giskard-agents (एजेंट और वर्कफ़्लो ऑर्केस्ट्रेशन) — जो स्वचालित रूप से खींची जाती हैं और शायद ही कभी सीधे उपयोग की जाती हैं।
pip install giskard-checks
Giskard Checks एक हल्की लाइब्रेरी है जो LLM-आधारित सिस्टम का परीक्षण करने वाले मूल्यांकन (evals) बनाने के लिए है — सरल assertions से लेकर LLM-as-judge आकलन तक। पारंपरिक यूनिट टेस्ट के विपरीत, evals गैर-नियतात्मक आउटपुट के लिए डिज़ाइन किए गए हैं जहाँ समान इनपुट अलग-अलग मान्य प्रतिक्रियाएँ उत्पन्न कर सकता है।
Giskard Checks का उपयोग करें:
अंतर्निहित evals में स्ट्रिंग मिलान, तुलना, regex, शब्दार्थ समानता, और LLM-as-judge जाँचें (Groundedness, Conformity, LLMJudge) शामिल हैं।
(inputs) -> outputs (वैकल्पिक रूप से trace के साथ)giskard.agents.Generator वर्कफ़्लो/जजों के लिए एक LLM क्लाइंट है — यह giskard.checks इनपुट जनरेटर (LLMGenerator) के समान नहीं है जो उपयोगकर्ता संदेशों को संश्लेषित करते हैं।
import asyncio
from giskard.checks import Scenario, Groundedness
def get_answer(inputs: str) -> str:
return "Paris" # replace with your model / agent
async def main() -> None:
scenario = (
Scenario("test_france_capital")
.interact(inputs="What is the capital of France?", outputs=get_answer)
.check(
Groundedness(
name="answer is grounded",
context="France is in Western Europe. Its capital is Paris.",
)
)
)
result = await scenario.run()
result.print_report()
asyncio.run(main())
Groundedness एक LLM जज है — एक provider extra इंस्टॉल करें (जैसे pip install "giskard[openai]") और संबंधित API कुंजी सेट करें। डिफ़ॉल्ट मॉडल: openai/gpt-4o-mini।
Suites, LLMJudge, मल्टी-टर्न परिदृश्यों और अधिक के लिए पूर्ण दस्तावेज़ देखें।
pip install "giskard[scan]" # या: pip install giskard-scan
Giskard Scan एजेंटिक सिस्टम के लिए red-teaming और भेद्यता स्कैनिंग परत है। यह आपके एजेंट के सादे-भाषा विवरण से स्वचालित रूप से प्रतिकूल परीक्षण सुइट उत्पन्न करता है, जिसमें प्रॉम्प्ट इंजेक्शन, हानिकारक सामग्री, रूढ़ियाँ, गलत सूचना और बहुत कुछ शामिल है।
Giskard Scan का उपयोग करें:
generate_suite में अपने स्वयं के ScenarioGenerator इंस्टेंस पास करें, या उन्हें vulnerability_suite_generator_registry पर पंजीकृत करेंimport asyncio
from giskard.scan import vulnerability_scan
async def my_agent(inputs: str) -> str:
# Replace with your agent / model call
return f"Echo: {inputs}"
async def main() -> None:
await vulnerability_scan(
target=my_agent,
description="A customer support chatbot for an e-commerce platform.",
languages=["en"],
)
asyncio.run(main())
स्कैन जनरेटर को भी एक LLM provider extra और API कुंजी की आवश्यकता होती है (ऊपर Checks जजों के समान)।
Giskard v2 में Scan (स्वचालित भेद्यता पहचान) और RAGET (RAG मूल्यांकन परीक्षण सेट जनरेशन) शामिल थे।
LLM एजेंटों के लिए, दोनों v3 में giskard-scan द्वारा प्रतिस्थापित हैं: v2 LLM स्कैन के स्थान पर vulnerability_scan का उपयोग करें, और RAGET के स्थान पर quality_scan (साथ में KnowledgeBase) का उपयोग करें।
v3 ML मॉडल के साथ भी काम करता है — एक को target के रूप में लपेटें और giskard-checks या giskard-scan के साथ इसका मूल्यांकन करें। नीचे के उदाहरण जो कवर करते हैं वह v2-केवल स्वचालित tabular स्कैन है — डिटेक्टर सुइट जो प्रदर्शन, पूर्वाग्रह और मजबूती के मुद्दों का स्वतः पता लगाने के लिए giskard.Model + giskard.Dataset का निरीक्षण करता है — साथ ही giskard.testing ML परीक्षण सुइट और Giskard Hub। इनकी v3 के लिए योजना नहीं है।
pip install "giskard[llm]>2,<3"
अपने मॉडल को लपेटें और स्कैन चलाएँ:
import giskard
import pandas as pd
# Replace my_llm_chain with your actual LLM chain or model inference logic
def model_predict(df: pd.DataFrame):
"""The function takes a DataFrame and must return a list of outputs (one per row)."""
return [my_llm_chain.run({"query": question}) for question in df["question"]]
giskard_model = giskard.Model(
model=model_predict,
model_type="text_generation",
name="My LLM Application",
description="A question answering assistant",
feature_names=["question"],
)
scan_results = giskard.scan(giskard_model)
display(scan_results)
अपने ज्ञान आधार से स्वचालित रूप से प्रश्न, संदर्भ उत्तर और संदर्भ उत्पन्न करें:
import pandas as pd
from giskard.rag import generate_testset, KnowledgeBase
# Load your knowledge base documents
df = pd.read_csv("path/to/your/knowledge_base.csv")
knowledge_base = KnowledgeBase.from_pandas(df, columns=["column_1", "column_2"])
testset = generate_testset(
knowledge_base,
num_questions=60,
language="en",
agent_description="A customer support chatbot for company X",
)
हम AI समुदाय से योगदान का स्वागत करते हैं! आरंभ करने के लिए यह मार्गदर्शिका पढ़ें, और Discord पर हमारे संपन्न समुदाय से जुड़ें।
🌟 हमें एक स्टार दें, यह परियोजना को दूसरों द्वारा खोजे जाने में मदद करता है और हमें शानदार ओपन-सोर्स टूल बनाने के लिए प्रेरित रखता है! 🌟
❤️ यदि आपको हमारा काम उपयोगी लगता है, तो कृपया GitHub पर हमें प्रायोजित करने पर विचार करें। मासिक प्रायोजन के साथ, आप एक प्रायोजक बैज प्राप्त कर सकते हैं, इस readme में अपनी कंपनी प्रदर्शित कर सकते हैं, और अपनी बग रिपोर्ट को प्राथमिकता दिला सकते हैं। यदि आप चाहते हैं कि हम किसी परामर्श परियोजना में शामिल हों, एक कार्यशाला चलाएँ, या आपकी कंपनी में एक व्याख्यान दें, तो हम एकमुश्त प्रायोजन भी प्रदान करते हैं।