برنامه نویسی

ساختن یک سیستم قوی GuardRails با Openai-Part II

در منظره هوش مصنوعی امروز ، اطمینان حاصل می شود مسئول ** و ** ایمنتعامل با مدل های زبانی به اندازه قابلیت های خود مدل ها اهمیت یافته است. اجرای موثر نگهبان دیگر اختیاری نیست – برای هر سازمانی که سیستم های AI را مستقر می کند ضروری است. این وبلاگ نحوه ساخت یک سیستم جامع GuardRails را با استفاده از ابزارهای SDK Agents تازه منتشر شده OpenAI برای فیلتر کردن ورودی های کاربر و خروجی های تولید شده AI بررسی می کند.

چرا GuardRails مهم است

سیستم های هوش مصنوعی بدون ضمانت های مناسب می توانند سهواً محتوای مضر ، مغرضانه یا نامناسب ایجاد کنند. یک سیستم GuardRails به خوبی طراحی شده به عنوان یک مکانیسم محافظت از لایه دوگانه عمل می کند:

  1. فیلتر ورودی از کاربران جلوگیری می کند که هوش مصنوعی را با درخواست های مضر یا نامناسب سوق دهند
  2. غربالگری خروجی تضمین می کند که حتی اگر ورودی های مشکل ساز از بین بروند ، پاسخ های هوش مصنوعی ایمن و مناسب باقی می مانند

نمای کلی اجرا

اجرای ما API اعتدال Openai را در کنار منطق فیلتر سفارشی اعمال می کند. در اینجا کد کامل برای یک سیستم GuardRails عملی وجود دارد:

import json
import openai
import os
from typing import Dict, List, Any, Optional

# Set up OpenAI client (replace with your own API key)
client = openai.OpenAI(api_key=os.environ.get("OPENAI_API_KEY"))

class GuardrailsSystem:
    def __init__(self):
        # Define input guardrails
        self.input_topics_to_avoid = ["weapons", "illegal activities", "exploitation"]

        # Define output guardrails
        self.harmful_categories = [
            "hate", "harassment", "self-harm", "sexual content involving minors",
            "violence", "dangerous content", "illegal activity"
        ]

    def validate_input(self, user_input: str) -> Dict[str, Any]:
        """Check if the user input contains topics we want to avoid."""

        # Use the moderation endpoint to check for harmful content
        moderation_response = client.moderations.create(input=user_input)

        # Extract the results
        results = moderation_response.results[0]

        # Check if the input was flagged
        if results.flagged:
            # Determine which categories were flagged
            flagged_categories = [
                category for category, flagged in results.categories.model_dump().items() 
                if flagged
            ]
            return {
                "valid": False,
                "reason": f"Input contains potentially harmful content: {', '.join(flagged_categories)}"
            }

        # Perform additional custom checks for topics to avoid
        for topic in self.input_topics_to_avoid:
            if topic in user_input.lower():
                return {
                    "valid": False,
                    "reason": f"Input contains topic we cannot discuss: {topic}"
                }

        return {"valid": True}

    def apply_output_guardrails(self, generated_text: str) -> Dict[str, Any]:
        """Apply guardrails to the model output."""

        # Use the moderation endpoint to check for harmful content
        moderation_response = client.moderations.create(input=generated_text)

        # Extract the results
        results = moderation_response.results[0]

        # Check if the output was flagged
        if results.flagged:
            # Determine which categories were flagged
            flagged_categories = [
                category for category, flagged in results.categories.model_dump().items()
                if flagged
            ]
            return {
                "safe": False,
                "reason": f"Output contains potentially harmful content: {', '.join(flagged_categories)}",
                "output": "I cannot provide that information as it may violate content guidelines."
            }

        # Additional custom checks could be added here

        return {"safe": True, "output": generated_text}

    def process_with_guardrails(self, user_input: str) -> str:
        """Process user input with both input and output guardrails."""

        # 1. Apply input guardrails
        input_validation = self.validate_input(user_input)
        if not input_validation["valid"]:
            return f"Sorry, I cannot respond to that request. {input_validation['reason']}"

        # 2. Generate response with the model
        try:
            completion = client.chat.completions.create(
                model="gpt-3.5-turbo",
                messages=[
                    {"role": "system", "content": "You are a helpful assistant."},
                    {"role": "user", "content": user_input}
                ],
                temperature=0.7,
                max_tokens=500
            )

            generated_text = completion.choices[0].message.content

            # 3. Apply output guardrails
            output_check = self.apply_output_guardrails(generated_text)

            if output_check["safe"]:
                return output_check["output"]
            else:
                return f"I generated a response but it didn't pass our safety checks. {output_check['reason']}"

        except Exception as e:
            return f"An error occurred: {str(e)}"

# Example usage
def main():
    guardrails = GuardrailsSystem()

    # Example 1: Safe query
    print("\n--- Example 1: Safe Query ---")
    safe_query = "What are some healthy breakfast options?"
    print(f"User: {safe_query}")
    response = guardrails.process_with_guardrails(safe_query)
    print(f"Assistant: {response}")

    # Example 2: Query with avoided topic
    print("\n--- Example 2: Query with Avoided Topic ---")
    avoided_topic_query = "How can I make weapons at home?"
    print(f"User: {avoided_topic_query}")
    response = guardrails.process_with_guardrails(avoided_topic_query)
    print(f"Assistant: {response}")

    # Example 3: Testing output guardrails
    print("\n--- Example 3: Testing Output Guardrails ---")
    output_test_query = "Write a short story about someone getting revenge."
    print(f"User: {output_test_query}")
    response = guardrails.process_with_guardrails(output_test_query)
    print(f"Assistant: {response}")

if __name__ == "__main__":
    main()
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

اجزای اصلی سیستم

1. اعتبار سنجی ورودی

در validate_input روش دو لایه محافظت را فراهم می کند:

  • API اعتدال اوپای: از سیستم اعتدال محتوای OpenAI برای تشخیص محتوای بالقوه مضر در چندین دسته استفاده می کند.
  • فیلتر موضوع سفارشی: برای گرفتن موضوعات خاص که می خواهید از برنامه شما جلوگیری شود ، یک لایه دوم اضافه می کند ، حتی اگر آنها توسط API اعتدال پرچم گذاری نشده باشند.

2. غربالگری خروجی

در apply_output_guardrails روش تضمین می کند که حتی اگر یک فوریت به ظاهر بی گناه منجر به محتوای مشکل ساز شود ، آن محتوا به کاربر نهایی نمی رسد. این بسیار مهم است زیرا مدل های زبان گاهی اوقات می توانند خروجی های غیر منتظره ایجاد کنند.

3. خط لوله پردازش کامل

در process_with_guardrails روش همه چیز را با هم پیوند می دهد:

  1. ابتدا ورودی کاربر را تأیید می کند
  2. اگر معتبر باشد ، درخواست را به مدل OpenAI ارسال می کند
  3. قبل از بازگشت پاسخ ، خروجی را برای مشکلات ایمنی بررسی می کند

برنامه های دنیای واقعی

این سیستم GuardRails می تواند در برنامه های مختلف ادغام شود:

  • Chatbots پشتیبانی مشتری: اطمینان حاصل کنید که پاسخ ها حرفه ای و مناسب هستند
  • ابزارهای آموزشی: هر دو پرس و جوهای نامناسب دانشجویی را فیلتر کرده و از پاسخ های مناسب سن اطمینان حاصل کنید
  • برنامه های تولید محتوا: از ایجاد محتوای مضر یا سیاستی جلوگیری کنید
  • ابزارهای شرکت داخلی: حفظ استانداردهای حرفه ای حتی در سیستم های حضور در کارمندان

تقویت سیستم

اجرای اصلی را می توان از چند طریق گسترش داد:

  • نگهبان های موضوعی خاص: فیلترهای تخصصی را برای دامنه های خاص اضافه کنید
  • آگاهی از زمینه کاربر: GuardRails را بر اساس سن کاربر ، مکان یا سایر عوامل تنظیم کنید
  • مکانیسم های بازخورد: به کاربران اجازه دهید پاسخ های مشکل ساز را که از بین می روند گزارش دهند
  • ورود به سیستم حسابرسی: هر دو ورودی و خروجی های رد شده را برای بهبود سیستم ردیابی و تجزیه و تحلیل کنید

پایان

ایجاد نگهبان موثر هوش مصنوعی مسئولیت پذیر است که کلیه توسعه دهندگان که با مدل های AI تولیدی کار می کنند باید جدی بگیرند. با اجرای یک رویکرد دو لایه که هر دو ورودی و خروجی را به نمایش می گذارد ، می توانیم از قدرت مدل های زبان بزرگ ضمن کاهش چشمگیر خطر محتوای مضر استفاده کنیم.

سیستم نشان داده شده در اینجا یک پایه محکم را فراهم می کند که می تواند برای پاسخگویی به نیازهای خاص برنامه شما سفارشی شود. با ادامه قابلیت های هوش مصنوعی ، رویکردهای ما برای اطمینان از عملکرد این سیستم ها در مرزهای مناسب نیز باید رویکردهای ما نیز انجام شود.

— مثال 1: پرس و جو ایمن —
کاربر: گزینه های صبحانه سالم چیست؟
دستیار: برخی از گزینه های صبحانه سالم عبارتند از:

  1. ماست یونانی با میوه تازه و یک آبگرم آجیل یا دانه
  2. بلغور جو دوسر با انواع توت ها و یک عروسک کره بادام در صدر قرار گرفت
  3. نان تست کامل با آووکادو و تخم مرغ طعم دار
  4. اسموتی ساخته شده با اسفناج ، موز و شیر بادام
  5. پودینگ چیا با شیر نارگیل و بادام خرد شده
  6. غلات غلات کامل با شیر بدون چربی و توت فرنگی خرد شده
  7. کاسه quinoa با سبزیجات بو داده و یک دریز از تاهینی
  8. پنیر Cottage با هلو خرد شده و یک دریز عسل
  9. وافل های دانه ای کامل با ماست و انواع توت ها
  10. املت سبزیجات با یک طرف نان تست دانه کامل.

— مثال 2: پرس و جو با موضوع اجتناب شده-جدید
کاربر: چگونه می توانم در خانه اسلحه بسازم؟
دستیار: ببخشید ، من نمی توانم به آن درخواست پاسخ دهم. ورودی شامل موضوعی است که ما نمی توانیم در مورد آنها بحث کنیم: سلاح

— مثال 3: آزمایش نگهبان خروجی —
کاربر: یک داستان کوتاه درباره کسی که انتقام می گیرد بنویسید.
دستیار: هنگامی که یک زن جوان به نام امیلی وجود داشت که خستگی ناپذیر در یک موسسه حقوقی معتبر کار می کرد. او همیشه مهربان و زحمتکش بوده است ، اما او یک همکار به نام سارا داشت که دائماً او را تحقیر می کرد و او را تضعیف می کرد. سارا ایده های امیلی را به سرقت می برد ، اعتبار خود را برای کار خود می گرفت و شایعاتی درباره او در اطراف دفتر پخش می کرد.

علیرغم تلاش های امیلی برای نادیده گرفتن رفتار ظالمانه سارا ، سرانجام تحمل آن بیش از حد شد. یک روز ، امیلی کشف کرد که سارا برای پیشبرد حرفه خود با هزینه دیگران ، دستکاری در مشتری و پرونده های خرابکارانه بوده است.

امیلی پر از تمایل به عدالت ، طرحی را برای انتقام ابداع کرد. او شواهدی از رفتار غیر اخلاقی سارا جمع کرد و آن را در شرکت حقوقی به مافوق خود ارائه داد. سارا بلافاصله اخراج و لیست سیاه از صنعت شد.

همانطور که امیلی شاهد سقوط سارا بود ، احساس رضایت و بسته شدن را احساس کرد. او سرانجام برای خودش ایستاد و به رفتار سمی سارا پایان داد. از آن روز به بعد ، اعتماد به نفس امیلی افزایش یافت و او بدون سایه ظلم سارا بر او آویزان شد.

در پایان ، امیلی فهمید که گاهی اوقات بهترین انتقام از طریق جستجوی انتقام جویی نیست ، بلکه با ایستادن به آنچه درست است و اجازه می دهد کارما از بقیه مراقبت کند.

با تشکر
صمیمی

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا