Prompt Engineering

استفاده از ابزارهای عاملی: ساخت گردش‌های کاری چندمرحله‌ای هوش مصنوعی با APIهای خارجی و RAG

هوش مصنوعی فراتر از رابط‌های چت ایستا پیش رفته است. امروز، مرز توسعه LLM در گردش‌های کاری عاملی نهفته است. برخلاف پرامپت‌دهی سنتی که مدل مستقیماً پاسخ می‌دهد، سیستم‌های عاملی با استفاده از ابزارهای خارجی استدلال، برنامه‌ریزی و اقدام می‌کنند. این تغییر پارادایم به هوش مصنوعی اجازه می‌دهد تا با پایگاه‌های داده تعامل کند، REST APIها را فراخوانی نماید و وظایف پیچیده استدلال چندمرحله‌ای را انجام دهد که فراتر از تولید متن ساده است.

تکامل از چت‌بات‌ها به عامل‌ها

در یک تنظیمات استاندارد چت‌بات، LLM تنها منبع حقیقت است. اگر نیاز به بررسی قیمت فعلی سهام اپل داشته باشید، مدل توهم می‌زند یا اطلاعات قدیمی ارائه می‌دهد. در یک گردش کاری عاملی، مدل به عنوان مغزی عمل می‌کند که اندام‌ها—یعنی ابزارها—را کنترل می‌کند. این مدل نیاز به داده‌های خارجی را تشخیص می‌دهد، ابزار مناسب (مثلاً یک API مالی) را انتخاب می‌کند، فراخوانی را اجرا می‌کند، نتیجه را تفسیر کرده و پاسخ نهایی را سنتز می‌کند.

این معماری بر سه جزء اصلی تکیه دارد:

  • برنامه‌ریزی: تجزیه درخواست‌های پیچیده کاربر به مراحل قابل مدیریت.
  • استفاده از ابزار: تعاریف رابط (اسکیما) که به مدل امکان فراخوانی توابع را می‌دهد.
  • حلقه‌های بازخورد: استفاده از خروجی یک ابزار برای اطلاع‌رسانی به مرحله بعدی در زنجیره.

یکپارچه‌سازی RAG برای استدلال مستند

استفاده از ابزار زمانی قدرتمندتر می‌شود که با تولید تقویت‌شده با بازیابی (RAG) ترکیب شود. در حالی که RAG سنتی متن ایستا را از یک پایگاه داده برداری بازیابی می‌کند، RAG عاملی می‌تواند نقاط داده خاصی را بازیابی کرده و سپس از آن‌ها برای پرس‌وجو در APIهای پویا استفاده کند. برای مثال، یک عامل پشتیبانی ممکن است تاریخچه تیکت‌های مشتری را بازیابی کند (RAG) و سپس از یک ابزار به‌روزرسانی تیکت برای تغییر وضعیت بر اساس زمینه بازیابی‌شده استفاده نماید.

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

پیاده‌سازی تعاریف ابزار در کد

در زیر یک مثال عملی با استفاده از پایتون و یک چارچوب عاملی مفهومی آورده شده است. ما یک اسکیما ابزار تعریف می‌کنیم که LLM می‌تواند برای دریافت داده‌های آب‌وهوا از آن استفاده کند، که نشان می‌دهد چگونه اسکیماهای JSON قابلیت‌های فراخوانی تابع مدل را هدایت می‌کنند.


def get_weather(location: str, unit: str = "fahrenheit") -> dict:
    """
    Fetch current weather for a given location.
    
    Args:
        location (str): The city and state, e.g., 'San Francisco, CA'
        unit (str): The temperature unit, either 'fahrenheit' or 'celsius'
    
    Returns:
        dict: A dictionary containing temperature and conditions
    """
    # Simulated API call
    return {
        "location": location,
        "temperature": 72,
        "unit": unit,
        "description": "Sunny"
    }

# Define the tool structure for the LLM
tool_definition = {
    "name": "get_weather",
    "description": "Get the current weather in a location",
    "parameters": {
        "type": "object",
        "properties": {
            "location": {
                "type": "string",
                "description": "The city and state, e.g. San Francisco, CA"
            },
            "unit": {
                "type": "string",
                "enum": ["celsius", "fahrenheit"],
                "description": "The temperature unit"
            }
        },
        "required": ["location"]
    }
}

مدیریت زنجیره‌های چندمرحله‌ای

قدرت واقعی گردش‌های کاری عاملی در زنجیره‌های چندمرحله‌ای نمایان می‌شود. یک عامل دستیار سفر را در نظر بگیرید. کاربر می‌پرسد: «برای من یک پرواز به لندن رزرو کن و وضعیت آب‌وهوای محلی را خلاصه کن.» عامل باید ابتدا یک API رزرو پرواز را فراخوانی کند، سپس جزئیات تأییدیه را تجزیه نماید و در نهایت یک API آب‌وهوا را برای لندن فراخوانی کند. سپس آن‌ها هر دو خروجی را در یک پاسخ منسجم سنتز می‌کند.

برای دستیابی به این هدف، توسعه‌دهندگان باید حلقه‌هایی را در منطق عامل خود پیاده‌سازی کنند. عامل برای توکن‌های «فکر» (thought) بررسی می‌کند، ابزارها را اجرا می‌کند، توکن‌های «مشاهده» (observation) را دریافت می‌کند و تا زمانی که پاسخ نهایی آماده باشد تکرار می‌کند. این فرآیند تکراری حل مسئله انسانی را تقلید می‌کند و نرخ توهم را با مستندسازی هر ادعا در داده‌های خارجی تأییدشده به شدت کاهش می‌دهد.

نتیجه‌گیری

ساخت برنامه‌های عاملی نیازمند تغییر نگرش از طراحی متمرکز بر پرامپت به طراحی متمرکز بر سیستم است. با ترکیب RAG برای زمینه تاریخی، APIهای خارجی برای داده‌های بلادرنگ و اسکیماهای استفاده از ابزار مستحکم، توسعه‌دهندگان می‌توانند دستیاران هوش مصنوعی ایجاد کنند که نه تنها گفتگو محور، بلکه واقعاً مولد باشند. با بالغ شدن اکوسیستم، چارچوب‌های استاندارد بیشتری ظهور خواهند کرد که این گردش‌های کاری پیچیده را در دسترس طیف وسیع‌تری از مهندسان قرار می‌دهد.

Share: