2 puan yazan GN⁺ 2025-02-26 | Henüz yorum yok. | WhatsApp'ta paylaş
  • LLM'leri (büyük dil modelleri) kullanan uygulamalar geliştirirken, yanıtların kalitesini ve güvenliğini değerlendirmek son derece önemli bir konudur
  • Kalite değerlendirmesi, yanıtların açık, tutarlı, kullanıcı gereksinimlerine uygun ve olgulara dayalı olup olmadığına odaklanır
  • Güvenlik değerlendirmesi ise uygulamanın kullanıcıyı rahatsız etmesini, zararlı bilgiler sunmasını veya kötü niyetli isteklere yanıt vermesini önlemeye yöneliktir
  • Örneğin, nefret söylemi ya da yıkıcı eylemler için talimatlar gibi içeriklerin yer almamasını sağlamak için uygulama çıktılarının dikkatle incelenmesi gerekir

Genel güvenlik değerlendirme adımları

  • Uygulama yanıtlarının güvenliğini şu adımlarla değerlendirebilirsiniz
    • 1. Azure AI Project sağlama
    • 2. Azure AI Evaluation SDK kurulumu
    • 3. AdversarialSimulator ile uygulama yanıtlarını simüle etme
    • 4. ContentSafetyEvaluator ile sonuçları değerlendirme

Azure AI Project sağlama

  • Azure AI Evaluation SDK içindeki güvenlikle ilgili özellikleri kullanmak için bir Azure AI Project gerekir
  • Bu Project mutlaka belirli desteklenen bölgelerden birinde bulunmalıdır
  • Project, bir Azure AI Hub'a bağlıdır; bu nedenle mevcut bir Hub yeniden kullanılabilir veya yenisi oluşturulabilir
  • Project, Azure AI Foundry portalı üzerinden oluşturulabilir ya da Bicep dosyası örneği kullanılarak altyapı olarak tanımlanabilir
  • Güvenlik değerlendirmesi için modellerin ayrıca dağıtılması gerekmez; güvenliğe özel GPT deployment'ı arka planda otomatik olarak kullanılır

Azure AI Evaluation SDK kurulumu

  • Azure AI Evaluation SDK, Python için azure-ai-evaluation paketi ve .NET için Microsoft.Extensions.AI.Evaluation olarak sunulur
  • Şu anda yalnızca Python paketi güvenlikle ilgili sınıfları (AdversarialSimulator, ContentSafetyEvaluator gibi) desteklemektedir
  • Paketi Python ortamında şu komutla kurabilirsiniz
    pip install azure-ai-evaluation  
    
  • Ardından Python kodunda Azure AI Project bilgileri ortam değişkenlerinden alınarak yapılandırılabilir
    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 ile uygulama yanıtlarını simüle etme

  • AdversarialSimulator, uygulamanızı kötü niyetli senaryolara karşı test ederek güvenli olmayan yanıt verme olasılığını anlamanıza yardımcı olur
  • AdversarialSimulator örneği, proje ayarları ve kimlik bilgileri kullanılarak başlatılır
    from azure.ai.evaluation.simulator import (  
        AdversarialScenario,  
        AdversarialSimulator,  
        SupportedLanguages,  
    )  
    
    adversarial_simulator = AdversarialSimulator(  
        azure_ai_project=azure_ai_project,  
        credential=credential  
    )  
    
  • Simülatör çalıştırılırken senaryo, dil, simülasyon sayısı, rastgelelik tohumu gibi parametreler belirtilir ve hedef işlev (uygulamayı çağıran callback işlevi) aktarılır
    outputs = await adversarial_simulator(  
        scenario=AdversarialScenario.ADVERSARIAL_QA,  
        language=SupportedLanguages.English,  
        max_simulation_results=200,  
        randomization_seed=1,  
        target=callback  
    )  
    
  • AdversarialScenario, QA, Conversation ve başka türleri destekler
  • QA simülasyonunda, şablonlara dayalı çok sayıda sorgu üretilir ve uygulamanın yanıtları toplanır
  • Test ortamında yerel sunucuyu çağıran örnek callback işlevi şöyledir
    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]}  
    
  • Simülasyon tamamlandıktan sonra istenirse sonuçlar JSONL dosyası olarak da kaydedilebilir
    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())  
    
  • Üretilen sorgular rahatsız edici veya aşırı içerikler barındırabileceğinden, bunlar bazen Project'e kaydedilmeden yalnızca bellekte incelenir

ContentSafetyEvaluator ile sonuçları değerlendirme

  • Simülatörle toplanan uygulama yanıtları ContentSafetyEvaluator aracılığıyla incelenebilir
  • ContentSafetyEvaluator, toplam dört kategoriyi birlikte değerlendirir: Hate/Unfairness, Sexual, Violence, Self-Harm
  • Her değerlendirme sonucunda puan (1–7), seviye (Very low, Low gibi) ve gerekçe yer alır
  • Örnek kod
    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"]  
    
  • Tüm yanıtlar Very low veya Low olarak değerlendirilirse, güvenlik kriterlerinin karşılandığı söylenebilir
  • Örneğin 200 simülasyonun tamamında sonuç Low veya altındaysa, uygulamanın yanıtları güvenli şekilde reddettiği ya da filtrelediği anlamına gelir

Güvenlik değerlendirmesi ne zaman çalıştırılmalı?

  • Güvenlik değerlendirmesi zaman ve kaynak tükettiğinden, model prompt'unu değiştirme, model sürümünü yenileme veya model ailesini değiştirme gibi etkisi büyük durumlarda yapılması önerilir
  • Örneğin, RAG'nin (sorguyla ilişkili belgeleri getirip içeriği özetleyen yaklaşım) kullanıldığı bir uygulamada farklı bir modele geçildiğinde güvenlik değerlendirme metrikleri ciddi biçimde değişebilir
  • Bir örnekte GPT-4o modeli ile yerel Llama3.1:8b modeli karşılaştırıldığında şu sonuçlar elde edilmiştir
    • Hate/Unfairness: GPT-4o için %100, Llama3.1:8b için %97,5 Low veya altı
    • Sexual: GPT-4o için %100, Llama3.1:8b için %100 Low veya altı
    • Violence: GPT-4o için %100, Llama3.1:8b için %99 Low veya altı
    • Self-Harm: GPT-4o için %100, Llama3.1:8b için %100 Low veya altı
  • Belirli bir senaryoda güvenlik kriterlerini karşılamayan yanıtlar bulunursa, ek prompt engineering çalışmaları veya Azure AI Content Safety gibi harici hizmet entegrasyonları gerekebilir

Ek kaynaklar

Henüz yorum yok.

Henüz yorum yok.