AI

ساخت برنامه‌های LLM سفارشی برای تولیدات قدیمی

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

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

فاز ۱: پل زدن به شکاف داده

اولین مانع، دسترسی‌پذیری است. سیستم‌های قدیمی به ندرت APIهای RESTful را ارائه می‌دهند. در عوض، آن‌ها به کوئری‌های SQL علیه طراحی‌های طرح‌واره قدیمی، اتصالات مستقیم پایگاه داده (ODBC/JDBC) یا لاگ‌های متنی ساختاریافته‌ای که روی سرورهای فایل ذخیره شده‌اند، متکی هستند.

برای یکپارچه‌سازی یک LLM، ابتدا باید یک لایه داده ساختاریافته ایجاد کنید. یک الگوی رایج شامل استفاده از پایتون برای کوئری گرفتن از پایگاه داده قدیمی و تبدیل نتایج به فرمت JSON بهینه شده برای پنجره‌های زمینه LLM است. این لایه "ETL داده" تضمین می‌کند که هوش مصنوعی اطلاعات تمیز و مرتبط را دریافت می‌کند بدون اینکه ساختار خام پایگاه داده را افشا کند.

در اینجا یک مثال مفهومی از استخراج داده‌های وضعیت ماشین آورده شده است:

import pyodbc
import json

def fetch_machine_status(machine_id, connection_string):
    conn = pyodbc.connect(connection_string)
    cursor = conn.cursor()
    
    # کوئری گرفتن از یک جدول قدیمی با محدودیت‌های طرح‌واره خاص
    query = """
    SELECT machine_name, error_code, timestamp, operator_id 
    FROM ProductionLogs 
    WHERE machine_id = ? AND error_date >= ?
    ORDER BY timestamp DESC
    """
    
    cursor.execute(query, (machine_id, "2023-01-01"))
    rows = cursor.fetchall()
    
    # تبدیل ردیف‌ها به یک شیء JSON برای ورودی LLM
    data = []
    for row in rows:
        data.append({
            "machine": row.MACHINE_NAME,
            "error": row.ERROR_CODE,
            "time": row.TIMESTAMP,
            "operator": row.OPERATOR_ID
        })
        
    conn.close()
    return json.dumps(data)

فاز ۲: مهندسی زمینه و RAG

تزریق مستقیم نتایج کوئری خام به یک پرامپت LLM به دلیل محدودیت‌های توکن و نویز، به ندرت مؤثر است. راه حل استاندارد صنعت، تولید تقویت شده با بازیابی (RAG) است. در این معماری، LLM به عنوان یک موتور استدلال عمل می‌کند که یک پایگاه داده برداری حاوی داده‌های تاریخی، کتب فنی و لاگ‌های استخراج شده ماشین را کوئری می‌گیرد.

برای تولید، زمینه حیاتی است. یک کد خطا روی یک ماشین ۲۰ ساله ممکن است راه‌حل خاصی داشته باشد که در یک راهنمای PDF مستند شده است اما توسط جستجوی استاندارد ایندکس نشده است. برنامه شما باید این اسناد ساختاریافته را جذب کند، آن‌ها را به قطعات تقسیم کرده و در یک فروشگاه برداری مانند Pinecone یا ChromaDB ذخیره کند.

فاز ۳: ساخت خط لوله استنتاج

پس از اینکه داده‌های شما در دسترس و ایندکس شدند، می‌توانید منطق برنامه را بسازید. شما به یک چارچوب هماهنگ‌سازی مانند LangChain یا LlamaIndex برای مدیریت جریان بین کاربر، سیستم بازیابی و LLM نیاز خواهید داشت.

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

from langchain.chains import LLMChain
from langchain.prompts import PromptTemplate
from langchain.llms import AzureOpenAI

# تعریف یک پرامپت خاص برای زمینه‌های تولید
manufacturing_prompt = PromptTemplate(
    input_variables=["error_data", "machine_logs"],
    template="""
    شما یک دستیار نگهداری متخصص هستید. 
    بر اساس لاگ‌های خطا و داده‌های ماشین زیر، 
    یک راهنمای عیب‌یابی گام به گام برای اپراتور ارائه دهید.
    
    داده‌های خطا: {error_data}
    لاگ‌های ماشین: {machine_logs}
    
    فقط مراحل را در یک لیست شماره‌دار خروجی دهید.
    """
)

def generate_troubleshooting(error_json, log_context):
    llm = AzureOpenAI(temperature=0, model_name="gpt-35-turbo")
    
    chain = LLMChain(
        llm=llm,
        prompt=manufacturing_prompt,
        verbose=True
    )
    
    response = chain.run(
        error_data=error_json,
        machine_logs=log_context
    )
    return response

فاز ۴: ملاحظات امنیتی و استقرار

استقرار هوش مصنوعی در یک محیط تولیدی نیازمند رعایت دقیق پروتکل‌های امنیتی است. سیستم‌های قدیمی اغلب ایزوله (air-gapped) هستند؛ یکپارچه‌سازی LLM شما باید این مرز را محترم بشمارد. در نظر بگیرید که LLM یا یک مدل تعبیه‌کننده را روی محل (on-premise) با استفاده از مدل‌های متن‌باز مانند Llama 3 یا Mistral از طریق یک کانتینر امن استقرار دهید.

علاوه بر این، اعتبارسنجی انسان در حلقه (human-in-the-loop) ضروری است. پیشنهادات هوش مصنوعی برای ماشین‌آلات فیزیکی نباید هرگز بدون تأیید اپراتور به طور خودکار اجرا شوند. رابط شما باید به وضوح بیان کند که هوش مصنوعی یک دستیار است، نه یک کنترل‌کننده خودمختار، و یک لاگ حسابرسی از تمام توصیه‌های تولید شده را برای انطباق حفظ کند.

نتیجه‌گیری

یکپارچه‌سازی LLMها با گردش‌های کاری تولید قدیمی، نه تنها یک ارتقاء فنی، بلکه یک ضرورت استراتژیک برای تداوم عملیاتی است. با ساختن پل‌های داده با دقت، بهره‌گیری از معماری‌های RAG و حفظ استانداردهای امنیتی سخت‌گیرانه، توسعه‌دهندگان می‌توانند ارزش پنهان در دهه‌ها داده‌های صنعتی را آزاد کنند. نتیجه، یک کارخانه هوشمندتر و واکنش‌گراتر است که در آن هوش مصنوعی به عنوان پل بین نبوغ گذشته و نوآوری آینده عمل می‌کند.

Share: