Üretim sektörü, genellikle sağlam, güvenilir ancak yaşlanmış altyapıların zengin bir tarihine sahiptir. SCADA gibi protokoller ve özel veritabanları üzerinde çalışan bu köklü sistemler, onlarca yıllık operasyonel bilgileri barındırır. Ancak, bu verilerin modern Yapay Zeka (YZ) uygulamaları için açığa çıkarılması tarihsel olarak devasa bir zorluk olmuştur. İşte Büyük Dil Modelleri (LLM'ler). Doğru bir şekilde entegre edildiğinde, bu modeller evrensel bir çevirmen gibi davranarak, arkaik veri yığınları ile modern doğal dil arayüzleri arasındaki boşluğu doldurur.
Bu kılavuz, köklü üretim iş akışlarının üzerine inşa edilmeyi amaçlayan geliştiriciler için teknik bir yol haritası sunar. Teorinin ötesine geçerek pratik uygulamaya, veri çıkarımı, bağlam yönetimi ve güvenli entegrasyon konularına odaklanacağız.
Aşama 1: Veri Boşluğunu Kapatmak
İlk engel, erişilebilirliktir. Köklü sistemler nadiren RESTful API'ler sunar. Bunun yerine, eski şema tasarımları üzerine SQL sorguları, doğrudan veritabanı bağlantıları (ODBC/JDBC) veya dosya sunucularında saklanan yapılandırılmamış metin günlüklerine dayanırlar.
LLM'yi entegre etmek için önce yapılandırılmış bir veri katmanı oluşturmanız gerekir. Yaygın bir desen, Python kullanarak köklü veritabanını sorgulamak ve sonuçları LLM bağlam pencereleri için optimize edilmiş JSON formatına dönüştürmektir. Bu "Veri ETL" katmanı, YZ'nin ham veritabanı yapısını ortaya çıkarmadan temiz ve ilgili bilgileri almasını sağlar.
İşte makine durum verilerini çıkarmaya yönelik kavramsal bir örnek:
import pyodbc
import json
def fetch_machine_status(machine_id, connection_string):
conn = pyodbc.connect(connection_string)
cursor = conn.cursor()
# Belirli şema kısıtlamaları olan bir köklü tabloyu sorgulama
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()
# LLM tüketimi için satırları JSON nesnesine dönüştürme
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)
Aşama 2: Bağlam Mühendisliği ve RAG
Ham sorgu sonuçlarını doğrudan bir LLM istemine enjekte etmek, token sınırları ve gürültü nedeniyle nadiren etkilidir. Endüstri standardı çözüm, Geri Çağrılı Üretim (RAG)'dir. Bu mimaride, LLM, tarihsel verileri, teknik kılavuzları ve çıkarılan makine günlüklerini içeren bir vektör veritabanını sorgulayan bir akıl yürütme motoru olarak hareket eder.
Üretim için bağlam kritiktir. 20 yıllık bir makinedeki bir hata kodu, standart aramalarla indekslenmemiş bir PDF kılavuzunda belirlenmiş özel bir çalışma yöntemi içerebilir. Uygulamanız, bu yapılandırılmamış belgeleri içermeli, parçalara ayırmalı ve Pinecone veya ChromaDB gibi bir vektör deposunda saklamalıdır.
Aşama 3: Çıkarım Boru Hattını Oluşturma
Verileriniz erişilebilir ve indekslendiğinde, uygulama mantığını oluşturabilirsiniz. Kullanıcı, geri çağırma sistemi ve LLM arasındaki akışı yönetmek için LangChain veya LlamaIndex gibi bir orkestrasyon çerçevesine ihtiyacınız olacaktır.
Aşağıdaki snippet, özellikle bir üretim bakım asistanı için tasarlanmış, bir sorgu geri çağırma işlemini üretilmiş bir yanıtla nasıl zincirleyeceğinizi göstermektedir:
from langchain.chains import LLMChain
from langchain.prompts import PromptTemplate
from langchain.llms import AzureOpenAI
# Üretim bağlamlarına özgü bir istem tanımlayın
manufacturing_prompt = PromptTemplate(
input_variables=["error_data", "machine_logs"],
template="""
Sen bir uzman bakım asistanısın.
Aşağıdaki hata günlükleri ve makine verilerine dayanarak,
operatör için adım adım bir sorun giderme kılavuzu sağla.
Hata Verisi: {error_data}
Makine Günlükleri: {machine_logs}
Çıktıyı sadece numaralı bir listedeki adımlar olarak ver.
"""
)
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
Aşama 4: Güvenlik ve Dağıtım Konuları
Üretim ortamında YZ'yi dağıtmak, güvenlik protokollerine sıkı bir şekilde uyulmasını gerektirir. Köklü sistemler genellikle hava boşluklu (air-gapped) olabilir; LLM entegrasyonunuz bu sınıra saygı duymalıdır. Llama 3 veya Mistral gibi açık kaynaklı modelleri kullanarak LLM'yi veya gömme modelini güvenli bir konteyner içinde yerel olarak dağıtmayı düşünün.
Ayrıca, insanın döngüde olması (human-in-the-loop) doğrulaması esastır. Fiziksel makineler için YZ önerileri, operatör onayı olmadan asla otomatik olarak yürütülmemelidir. Arayüzünüz, YZ'nin otonom bir kontrolcü değil, bir asistan olduğunu açıkça belirtmeli ve uyumluluk için oluşturulan tüm önerilerin denetim günlüğünü tutmalıdır.
Sonuç
LLM'leri köklü üretim iş akışlarıyla entegre etmek sadece teknik bir yükseltme değil; operasyonel süreklilik için stratejik bir zorunluluktur. Veri köprülerini dikkatlice inşa ederek, RAG mimarilerinden yararlanarak ve sıkı güvenlik standartlarını koruyarak, geliştiriciler onlarca yıllık endüstriyel verideki gizli değeri açığa çıkarabilir. Sonuç, YZ'nin geçmişin zekası ile geleceğin inovasyonu arasında bir köprü olarak hareket ettiği daha akıllı ve daha duyarlı bir fabrika zeminidir.