Otomatik bir red-teaming düzeneği (harness) kurduysanız hata modunu zaten biliyorsunuz: saldırgan modeliniz saldırıyı üretmeyi reddeder, hakem modeliniz puanlaması gereken çıktıyı okumayı reddeder ve saldırı başarı oranınız sessizce düşer. Hiçbir şey hata vermemiştir. Hedefinizin daha güvenli hale gelişini ölçmediniz — araçlarınızın daha ihtiyatlı hale gelişini ölçtünüz. Sansürsüz bir LLM API'si, o değişkeni ölçümden çıkarmak için vardır.
Bu, koruma bariyerlerinin (guardrail) kötü olduğu yönünde bir argüman değil. Nereye ait oldukları hakkında bir argüman. Tüketiciye yönelik bir sohbet ürünündeki koruma bariyeri işini yapıyordur. Aynı bariyer bir değerlendirme döngüsünün içinde, sizinle hesaplamaya çalıştığınız sayı arasına oturmuş kontrolsüz bir karıştırıcı değişkendir.
Reddetme bir yanlış negatiftir ve başarı gibi görünür
Bunun bu kadar can yakmasının nedeni, reddetmelerin hata olmamasıdır. HTTP 200 alırsınız. finish_reason: "stop" alırsınız. Sorunsuz ayrıştırılan, düzgün biçimlendirilmiş JSON alırsınız. İçindeki dize "Bu konuda yardımcı olamam"dır ve hattınız onu bir veri kümesi sütununa, bir etiket alanına ya da bir rapor bölümüne yazıp yoluna devam eder.
Somut olarak, en çok acıttığı üç yerde:
Saldırgan modeller. Yinelemeli bir jailbreak aramasında — PAIR, TAP, GCG tarzı iyileştirme, döngüde bir saldırgan bulunan her şey — bir reddetme, aramanın o dalını sonlandırır. Raporladığınız saldırı başarı oranı, hedefinizin dayanıklılığının değil saldırganınızın istekliliğinin bir fonksiyonu haline gelir. Saldırganı daha az ihtiyatlı biriyle değiştirin; hedef modelinize gönderdiğiniz "iyileştirme" buharlaşır.
Hakem ve puanlayıcı modeller. Zararlı çıktılar üzerinde LLM-as-judge puanlaması, hakemin zararlı çıktıyı gerçekten okumasını gerektirir. Reddettiğinde ayrıştırılamayan bir puan alırsınız. Çoğu düzenek o satırı atar. Atılan satırlar rastgele eksik değildir — tam da puanlanmasına en çok ihtiyaç duyduğunuz ağır çıktılarda kümelenirler; böylece toplamınız güvenli tarafa kayar.
Analiz işleri. Ana akım bir modele, kaynak koduna geri çevrilmiş (decompiled) bir rutinin ne yaptığını sorun; çoğu zaman gerçek isteğinize göre değil, kötü amaçlı yazılımı andıran token'ların varlığına göre reddedecektir. Görev savunma amaçlıydı; sınıflandırıcı kelime dağarcığına tepki verdi. Günlüklerdeki (log) istismar trafiğini triyajlamak, bir dedektör eğitmek için bir oltalama (phishing) derlemini etiketlemek ya da bir CTF bulgusunu yazıya dökmek için de aynı hikâye geçerli.
Reddetmeler sessiz olduğu için ekipler sonunda reddetme dedektörleri yazmaya başlar — ki bu da başlı başına çözülmemiş bir problemdir:
REFUSAL_MARKERS = ("i can't", "i cannot", "i'm unable", "i won't", "as an ai")
def looks_like_refusal(text: str) -> bool:
"""Substring heuristic. Good enough to alarm on, not good enough to trust:
it misses polite deflections that never use the phrase, and it fires on any
completion that quotes a refusal. Both error directions corrupt a dataset."""
return any(m in text[:200].lower() for m in REFUSAL_MARKERS)Kaynağında silebileceğiniz bir problem için güvenilmez bir dedektör inşa etmek yanlış bir takastır.
API'yi çağırmak
unbleep, OpenAI Chat Completions şemasını konuşur; dolayısıyla elinizdeki her istemci çalışır. Base URL'i değiştirin, anahtarı değiştirin, SDK'yı koruyun.
import json
import os
from openai import OpenAI
client = OpenAI(
base_url="https://unbleep.ai/v1",
api_key=os.environ["UNBLEEP_API_KEY"],
)
TRIAGE = """You are a malware analyst writing notes for a detection engineer.
Given a decompiled routine, describe what it does, the observable artefacts it
would leave on a host, and where a defender could detect it. Reply as JSON with
keys: behaviour, artefacts, detection_surface, confidence."""
def triage(decompiled: str) -> dict:
"""One sample in, one structured verdict out — no refusal branch to handle."""
resp = client.chat.completions.create(
model="unbleep",
messages=[
{"role": "system", "content": TRIAGE},
{"role": "user", "content": decompiled},
],
response_format={"type": "json_object"},
temperature=0.2,
)
return json.loads(resp.choices[0].message.content)curl üzerinden eşdeğeri; burada bir dedektöre eğitim verisi oluşturmak için bir oltalama derlemi etiketleniyor:
curl https://unbleep.ai/v1/chat/completions \
-H "Authorization: Bearer $UNBLEEP_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "unbleep",
"messages": [
{"role": "system", "content": "Label each email for a phishing detector. Answer with one word: phishing or benign."},
{"role": "user", "content": "Subject: Payroll update required\n\nYour direct deposit is on hold. Confirm at hxxp://payroll-verify.example.com"}
],
"temperature": 0,
"max_tokens": 4
}'Bir etiketleme döngüsünde temperature: 0 ve sıkı bir max_tokens her zamankinden daha önemlidir — etiketi açıklayan bir paragraf değil, etiketin kendisini istersiniz.
Katman seçimi
Üç model, hepsi sansürsüz, bağlam ve fiyat açısından farklı:
unbleep— 256K bağlam, 1M giriş/çıkış başına $3.00 / $3.00. Varsayılan: saldırgan ve hakem rolleri, örnek analizi.unbleep-high— 1M bağlam, $5.00 / $5.00. Uzun dökümler ve çoklu belge korelasyonu. Tek bir istek gövdesi 2.000.000 bayt (~500K token) ile sınırlıdır; dolayısıyla pencere tek bir çağrıda değil, bir sohbet boyunca dolar.unbleep-mini— 32K bağlam, $1.00 / $1.00. Satır başına ödeme yaptığınız yüksek hacimli sınıflandırma.
unbleep ve unbleep-high akıl yürütme katmanlarıdır: yanıt vermeden önce düşünür ve izi content'in yanında bir reasoning_content alanında döndürürler. Bir hakem model için o iz gerçekten faydalıdır — bir satırın aldığı puanı neden aldığını söyler; bir anlaşmazlığı denetlerken ihtiyacınız olan da budur. Ayrıca çıktı olarak faturalandırılır; bu yüzden ihtiyaç duymayan işlerde "thinking": false gönderin. unbleep-mini doğrudan yanıtlar ve iz döndürmez.
Kontrolü sizde olan yönetişim
Reddetmeleri modelden kaldırmak, gözetimi hattınızdan kaldırmak anlamına gelmez. İsteğe bağlı policy parametresi, yönetişimi bizim tarafımızda, istek başına çalıştırır:
resp = client.chat.completions.create(
model="unbleep",
messages=[...],
extra_body={"policy": "research"}, # recorded on the usage row; answers exactly like off
)off varsayılan filtresiz taban çizgisidir. research tam olarak off gibi yanıtlar — seviye kullanım kaydına yazılır, böylece kendi raporlamanızda değerlendirme trafiğini taban çizgisi trafiğinden ayırabilirsiniz. Ek bir tarama uygulamaz. strict, mesaj metnini operatör tarafından yönetilen servis engelleme listemize karşı tarar ve eşleşme olursa 422 döndürür. Bu liste, katılan herkes için aynıdır — yapılandırılacak hesap başına bir engelleme listesi yoktur — bu yüzden onu üretim içerik politikanız olarak değil, bir yedek önlem olarak görün.
Bir hattı buraya yönlendirmeden önce netleştirmeniz gereken bir şey var: gönderdiğinizi de geri geleni de saklıyoruz. Kabul edip bir modele ilettiğimiz her çağrının istek gövdesi, yanıt içeriği ve kaynak IP'si veritabanımıza yazılır ve kötüye kullanım soruşturması, destek ve fatura itirazları için 30 gün tutulur. Gövdeler 64 KB'de kesilir. Kaynak IP 30 günden daha uzun yaşar — çağrıyı faturalandıran kullanım kaydına da yazılır ve o kayıt, daha uzun süre sakladığımız bir finansal kayıttır. Saklanmayan tek şey, strict'in bir modele ulaşmadan önce reddettiği bir istektir: o, kullanım geçmişinizde içeriği olmadan görünür. Başka hiçbir şey muaf değildir ve bunu kapatacak bir ayar yoktur. Derleminiz, çevrenizin dışında 30 günlük bir kopyanın sorun olacağı kadar hassassa — canlı kötü amaçlı yazılım, müşteri verisi, NDA kapsamındaki bir çalışma — bu gerçek bir kısıttır ve gizlilik politikası başlamadan önce okunacak sayfadır, sonra değil.
Hatalar OpenAI zarfını izler, dolayısıyla mevcut işleyiciler çalışır: 401 geçersiz anahtar, 402 kredi bitti, 422 politika tarafından engellendi, 429 hız sınırı aşıldı, 5xx yeniden denenebilir. Her yanıt x-ratelimit-* başlıklarını taşır; böylece bir toplu iş tahmin yürütmeden kendi hızını ayarlayabilir.
Sansürsüz bir LLM API'sinin size vermediği şey
Sansürsüz bir model daha keskin bir araçtır, her şeye izin veren bir araç değil. Temel modelin reddetmek üzere ayarlandığı soruları — sormamanız gerekenler dahil — yanıtlayacak ve bunu her şeye uyguladığı aynı özgüvenle yapacaktır; bu da korumalı bir modelin cehaletten reddedeceği yerde bu modelin düpedüz uydurabileceği anlamına gelir. Çıkan şeyden sorumlu bir insan bulundurun. Kabul edilebilir kullanım politikası, API'nin ne için olduğunu ve asla ne için olmadığı dar kümeyi açıkça belirtir; ölçüt kelime dağarcığı değil, yetki ve niyettir. Yasalara uygun kullanım sizin sorumluluğunuzdadır.
Bir API anahtarı alın ve araçlarınızın ihtiyatını ölçmeyi bırakın.