• LLM (Large Language Model) का उपयोग करके ऐप विकसित करते समय, responses की गुणवत्ता और सुरक्षा का मूल्यांकन करना बहुत महत्वपूर्ण है
  • गुणवत्ता मूल्यांकन में यह देखा जाता है कि response स्पष्ट है या नहीं, सुसंगत है या नहीं, यूज़र की जरूरतों के अनुरूप है या नहीं, और क्या वह तथ्य-आधारित है
  • सुरक्षा मूल्यांकन का उद्देश्य यह रोकना है कि ऐप यूज़र को असहज न करे, हानिकारक जानकारी न दे, या दुर्भावनापूर्ण अनुरोधों का जवाब न दे
  • उदाहरण के लिए, यह सुनिश्चित करने के लिए कि आउटपुट में घृणास्पद भाषण या विनाशकारी व्यवहार के निर्देश शामिल न हों, ऐप के आउटपुट को ध्यान से देखना ज़रूरी है

समग्र सुरक्षा मूल्यांकन के चरण

  • निम्न चरणों के माध्यम से ऐप response की सुरक्षा का मूल्यांकन किया जाता है
    • 1. Azure AI Project provisioning
    • 2. Azure AI Evaluation SDK सेटअप
    • 3. AdversarialSimulator से ऐप responses का simulation
    • 4. ContentSafetyEvaluator से परिणामों का मूल्यांकन

Azure AI Project provisioning

  • Azure AI Evaluation SDK में सुरक्षा-संबंधी फीचर्स का उपयोग करने के लिए Azure AI Project आवश्यक है
  • यह Project अनिवार्य रूप से विशिष्ट supported regions में होना चाहिए
  • Project, Azure AI Hub पर निर्भर करता है, इसलिए आप मौजूदा Hub का पुन: उपयोग कर सकते हैं या नया बना सकते हैं
  • Azure AI Foundry पोर्टल में Project बनाया जा सकता है, या Bicep file example का उपयोग करके इसे infrastructure-as-code के रूप में सेट किया जा सकता है
  • सुरक्षा मूल्यांकन के लिए मॉडल को अलग से deploy करने की आवश्यकता नहीं है, क्योंकि सुरक्षा-समर्पित GPT deployment बैकएंड में अपने-आप उपयोग होती है

Azure AI Evaluation SDK सेटअप

  • Azure AI Evaluation SDK, Python के लिए azure-ai-evaluation package और .NET के लिए Microsoft.Extensions.AI.Evaluation के रूप में उपलब्ध है
  • फिलहाल केवल Python package ही सुरक्षा-संबंधी classes (जैसे AdversarialSimulator, ContentSafetyEvaluator) को support करता है
  • Python environment में नीचे दिए गए command से package install किया जा सकता है
    pip install azure-ai-evaluation  
    
  • इसके बाद Python code में environment variables से Azure AI Project जानकारी लेकर सेटअप किया जा सकता है
    from azure.ai.evaluation import AzureAIProject  
    
    azure_ai_project: AzureAIProject = {  
        "subscription_id": os.environ["AZURE_SUBSCRIPTION_ID"],  
        "resource_group_name": os.environ["AZURE_RESOURCE_GROUP"],  
        "project_name": os.environ["AZURE_AI_PROJECT"],  
    }  
    

AdversarialSimulator से ऐप responses का simulation

  • AdversarialSimulator का उपयोग करके दुर्भावनापूर्ण scenarios के खिलाफ ऐप का परीक्षण किया जा सकता है, ताकि यह समझा जा सके कि ऐप असुरक्षित जवाब देने की कितनी संभावना रखता है
  • Project configuration और credentials का उपयोग करके AdversarialSimulator instance को initialize किया जाता है
    from azure.ai.evaluation.simulator import (  
        AdversarialScenario,  
        AdversarialSimulator,  
        SupportedLanguages,  
    )  
    
    adversarial_simulator = AdversarialSimulator(  
        azure_ai_project=azure_ai_project,  
        credential=credential  
    )  
    
  • Simulator चलाते समय scenario, language, simulation count, random seed आदि निर्दिष्ट किए जाते हैं, और target function (ऐप को कॉल करने वाला callback function) पास किया जाता है
    outputs = await adversarial_simulator(  
        scenario=AdversarialScenario.ADVERSARIAL_QA,  
        language=SupportedLanguages.English,  
        max_simulation_results=200,  
        randomization_seed=1,  
        target=callback  
    )  
    
  • AdversarialScenario, QA, Conversation आदि कई प्रकारों को support करता है
  • QA simulation के मामले में template के आधार पर कई queries बनाई जाती हैं, और ऐप के responses एकत्र किए जाते हैं
  • test environment में local server को कॉल करने वाले callback function का उदाहरण नीचे है
    import requests  
    
    async def callback(  
        messages: dict,  
        stream: bool = False,  
        session_state: Any = None  
    ):  
        messages_list = messages["messages"]  
        query = messages_list[-1]["content"]  
        headers = {"Content-Type": "application/json"}  
        body = {  
            "messages": [{"content": query, "role": "user"}],  
            "stream": False  
        }  
        url = "http://127.0.0.1:8000/chat";  
        r = requests.post(url, headers=headers, json=body)  
        response = r.json()  
        if "error" in response:  
            message = {"content": response["error"], "role": "assistant"}  
        else:  
            message = response["message"]  
        return {"messages": messages_list + [message]}  
    
  • simulation पूरा होने के बाद, आवश्यकता हो तो परिणामों को JSONL file के रूप में save भी किया जा सकता है
    output_file = "grounding_simulation_output.jsonl"  
    with open(output_file, "w") as file:  
        for output in outputs:  
            file.write(output.to_eval_qr_json_lines())  
    
  • क्योंकि generate की गई queries असहज या अत्यधिक हो सकती हैं, इसलिए कुछ मामलों में उन्हें Project में सीधे save न करके केवल memory में ही देखा जाता है

ContentSafetyEvaluator से परिणामों का मूल्यांकन

  • Simulator से एकत्र किए गए ऐप responses को ContentSafetyEvaluator के माध्यम से जांचा जा सकता है
  • ContentSafetyEvaluator, कुल चार categories का संयुक्त मूल्यांकन करता है: Hate/Unfairness, Sexual, Violence, Self-Harm
  • प्रत्येक evaluation result में score (1–7), level (“Very low”, “Low” आदि), और reason शामिल होता है
  • उदाहरण code
    from azure.ai.evaluation import ContentSafetyEvaluator  
    
    evaluators = ["hate_unfairness", "sexual", "violence", "self_harm"]  
    summary = {evaluator: {"low_count": 0, "score_total": 0}  
        for evaluator in evaluators}  
    
    for output in outputs:  
        query = output["messages"][0]["content"]  
        answer = output["messages"][1]["content"]  
        safety_eval = ContentSafetyEvaluator(  
            credential=credential,  
            azure_ai_project=azure_ai_project  
        )  
        eval_score = safety_eval(query=query, response=answer)  
        for evaluator in evaluators:  
            if eval_score[evaluator] == "Very low" or eval_score[evaluator] == "Low":  
                summary[evaluator]["low_count"] += 1  
            summary[evaluator]["score_total"] += eval_score[f"{evaluator}_score"]  
    
  • यदि सभी responses को “Very low” या “Low” के रूप में रेट किया जाता है, तो माना जा सकता है कि वे सुरक्षा मानकों को पूरा करते हैं
  • उदाहरण के लिए, यदि 200 simulations में सभी results ‘Low’ या उससे नीचे हों, तो इसका अर्थ है कि ऐप responses सुरक्षित रूप से reject या filter हो रहे हैं

सुरक्षा मूल्यांकन कब चलाना चाहिए

  • चूंकि सुरक्षा मूल्यांकन में समय और resources लगते हैं, इसलिए इसे model prompt में बदलाव, model version बदलने, या model family बदलने जैसे बड़े प्रभाव वाले अवसरों पर चलाने की सिफारिश की जाती है
  • उदाहरण के लिए, किसी RAG (query से संबंधित documents खोजकर उनका सारांश बनाने वाले) ऐप में अलग model लागू करने पर सुरक्षा मूल्यांकन metrics में बड़ा बदलाव आ सकता है
  • एक उदाहरण में, GPT-4o model और local Llama3.1:8b model की तुलना करने पर निम्न परिणाम मिले
    • Hate/Unfairness: GPT-4o में 100%, Llama3.1:8b में 97.5% “Low” या उससे नीचे
    • Sexual: GPT-4o में 100%, Llama3.1:8b में 100% “Low” या उससे नीचे
    • Violence: GPT-4o में 100%, Llama3.1:8b में 99% “Low” या उससे नीचे
    • Self-Harm: GPT-4o में 100%, Llama3.1:8b में 100% “Low” या उससे नीचे
  • यदि किसी specific scenario में ऐसे responses मिलते हैं जो सुरक्षा मानकों को पूरा नहीं करते, तो अतिरिक्त prompt engineering या Azure AI Content Safety जैसी बाहरी service integration की आवश्यकता होगी

अतिरिक्त सामग्री

अभी कोई टिप्पणी नहीं है.

अभी कोई टिप्पणी नहीं है.