Mimari
CID222'nin oluştuğu bileşenler, bir isteğin bunların içinden geçtiği yol ve her birinin neye karar vermeye yetkili olduğu.
- Sürüm: 0.4
- Rol: admin_user, normal_user, viewer
CID222, uygulamalarınız ile model sağlayıcıları arasında durur. Sağlayıcı kimlik bilgisini o tutar, her iki yöndeki trafiği inceler ve kararı kayda geçirir — çağıran uygulamadan, temel URL'yi değiştirmenin ötesinde bir değişiklik istemeden.
Sorun
Bir model sağlayıcısı, bir uygulamanın kendisine gönderdiği her şeyi görür. Bir prompt ağdan çıktıktan sonra geri çağırma, redaksiyon veya denetim izi yoktur: o prompt'taki müşteri kaydı, özel anahtar ya da iç mimari artık başkasının günlüklerindedir. Sağlayıcıyı tamamen engellemek işi durdurur; tamamen serbest bırakmak yönetişimi durdurur. Bir şeyin trafiği okuması, karar vermesi ve kayıt bırakması gerekir — hem de istek yolunda ve kimsenin etrafından dolaşmayacağı bir hızda.
CID222 bunu nasıl yapar
Bileşenler
- API ağ geçidi. 3000 portunda,
0.0.0.0adresine bağlı, küresel yol ön eki olmayan hizmet. Uç noktalar kendi temel yollarını bildirir; bu yüzden/chat/completionsve/modelskökte dururken tespit uç noktası/api/v1/guardrails/detectadresindedir. Çağıranın kimliğini doğrular, kiracıyı çözümler ve aşağıdaki her şeyi düzenler. - Tespit hattı. Aynı normalleştirilmiş metin üzerinde paralel çalışan beş tespit motoru, bir doğrulama katmanı ve çıktılarını tek bir eyleme dönüştüren bir karar verici.
- Sağlayıcı bağlayıcıları. Model üreticisi başına bir bağlayıcı; böylece aynı istek OpenAI'ye de Anthropic'e de değişmeden ulaşır. Kimlik bilgileri çağrı anında kiracı bazında çözümlenir.
- Oturum yöneticisi. Konuşma bağlamı ve token muhasebesi, PostgreSQL'de JSONB olarak tutulur.
- Denetim izi. Her tespit, her eylem ve her yönetimsel değişiklik veritabanına düşer ve yönetim API'si ile kontrol panelinden sorgulanabilir.
Tespit hizmetleri
Tespit, ağ geçidinin dışında çalışır: her model kendi konteynerindedir ve HTTP üzerinden çağrılır; böylece bir tespit motorunu diğerlerini rahatsız etmeden başlatabilir, durdurabilir, yeniden başlatabilir ve tanılayabilirsiniz.
| Hizmet | Çalıştırdığı | Port |
|---|---|---|
ml-detector | KKV için ONNX NER, çok dilli DistilBERT, 21 yerel varlık etiketi | 8001 |
hap-guard-v2 | ONNX mDeBERTa toksisite, 13 etiket, 8 dil | 8004 |
attack-guard | ONNX mDeBERTa jailbreak ve enjeksiyon ile deterministik libinjection SQLi ve XSS taraması | 8003 |
language-detector | Tespit motorlarından önce dil belirleme | 8008 |
hallucination-guard | LettuceDetect, RAG bağlamı olan yanıtlarda arka plan denetimi | 8022 |
ocr-service, document-parser, redactor | Görüntü ve belgelerden metin çıkarma, redakte edilmiş kopya üretme | 8009, 8012, 8013 |
İstek akışı
Bir sohbet isteği şu aşamalardan geçer:
- Kimlik doğrulama. Bir JWT veya bir ağ geçidi API anahtarı kiracıyı belirler. Rol her istekte veritabanından yeniden okunur; bu yüzden bir yetki düşürmesinden önce üretilmiş bir token eski rolü korumaz.
- Normalleştirme. Kaçınma çözücüleri önce çalışır — ROT13, base64, leetspeak, Unicode homoglifleri, büyük/küçük harf — böylece bir tespit motoru gizlenmiş metni değil çözülmüş metni görür.
- Paralel tespit. KKV, toksisite, jailbreak ve enjeksiyon ile kod güvenliği aynı anda, normalleştirilmiş metin üzerinde çalışır.
- Doğrulama ve karar. Sağlama toplamı ve bağlam kuralları her tespiti doğrular veya zayıflatır; karar verici bunları tek bir eyleme katlar. En güçlü eylem kazanır: reject, mask'ı; mask, flag'i yener.
- Sağlayıcı çağrısı. Hayatta kalan metin — maskeleme uygulandıysa maskelenmiş hâliyle — kiracının kendi kimlik bilgisiyle sağlayıcıya gider.
- Yanıt filtreleme. Yanıt, herhangi bir bölümü istemciye ulaşmadan önce gerçek zamanlı olarak KKV ve toksisite açısından taranır.
- Kayıt. Tespitler, token kullanımı ve maliyet oturuma yazılır.
Note
Girdi hattı yaklaşık 150 ms ekleyecek biçimde tasarlanmıştır. Gerçekte ne eklediği metin uzunluğuna, dile ve bir filtre yapılandırmasının kaç tespit motorunu etkinleştirdiğine bağlıdır — bkz. performans ve doğruluk.
İstemcinin gördüğü
Sohbet yüzeyi her zaman text/event-stream'dir; akışsız bir mod yoktur. Akış, sağlayıcının değil
CID222'nin kendi sözleşmesidir. CID222 sağlayıcının token parçalarını tüketir, yanıtın
tamamını biriktirir, üzerinde çıktı filtrelemesi çalıştırır ve sonucu tek bir içerik olayı
olarak yayınlar. Bir istemci; isteğe bağlı denetim olaylarını, ardından model üretirken bir
duraklamayı, ardından tek bir büyük içerik olayını, ardından [DONE] görür.
Depolama ve önbellek
PostgreSQL; kiracıları, kimlik bilgilerini, filtre kurallarını, oturumları, tespitleri ve denetim izini tutar. Oturum bağlamı ve token kullanımı, oturum satırındaki JSONB sütunlarıdır. Redis; kuyrukları, dağıtık kilitleri ve kayan pencereli hız sınırlayıcıyı destekler.
Arka plan işleri
Kuyruklar, istek yolunda beklememesi gereken işleri taşır: asenkron belge redaksiyonu, SIEM ve webhook dışa aktarımı, depo izleme, yanıt riski incelemesi ve LLM inceleme hattı. İnceleme hattı mesaj başına bir iş değildir — yinelenen jailbreak ve enjeksiyon tespitleri kullanıcı başına bir kayan pencereyi doldurur ve pencerenin aşılması, yerel risk analisti hizmetinde tek bir inceleme açar.
Dağıtım
CID222, sizin denetiminizdeki altyapıya kurulur. Bir Docker Compose yığını olarak ve her modeli imajın içinde taşıyan bir cihaz imajı (OVA ve ISO) olarak gelir; böylece hiç dış bağlantı olmadan kurulabilir. Barındırılan bir denetim düzlemi yoktur: hava boşluklu bir cihaz, lisans doğrulaması dahil tam işlevseldir.
/assets/screenshots/architecture-request-flow@0.4.pngSınırlar ve bilinen boşluklar
- Ters vekil sunucu, ileri vekil sunucu değildir. CID222'yi uygulamanızın önüne koymak, o uygulamanın ne gönderdiğini yönetir. Doğrudan bir sağlayıcının web sitesine giden bir tarayıcıyı yakalamaz. Bunun için oturumu kendi CA'sıyla çözen satır içi vekil veya uç nokta dağıtımı gerekir.
- Neredeyse hiçbir şeyin hız sınırı yoktur. Kayan pencereli sınırlayıcı; oturum açmayı, parola
sıfırlamayı, yardım asistanını, uzantı kanıtlamasını ve depo webhook'unu korur.
/chat/completions,/api/v1/guardrails/detect,/sessions/*,/image-analysis/*,/document-analysis/*ve/modelsiçin hiçbir sınır yoktur. Kiracı kotası uygulanmış bir denetim değildir; bunu yük dengeleyicide planlayın. - Akış artımlı değildir. Çıktı filtrelemesi yanıtın tamamı üzerinde çalıştığı için istemci tüm üretimi bekler ve sonra hepsini birden alır. Token token görüntüleme bekleyen bir arayüz önce donmuş görünür, sonra sıçrar. Bu, yanıtı kullanıcı okumadan önce filtrelemenin bedelidir.
- Parçalı ve sürdürülebilir yüklemeler incelenmez, reddedilir. Hiçbir yol bir gövdeyi istekler arasında tamponlamaz; bu yüzden parçalanmış bir yükleme yeniden birleştirilip taranamaz. Tüm yollar, incelenmemiş baytları geçirmek yerine varsayılan olarak bunları reddeder.
- Bilinmeyen istek alanları sessizce düşürülür. İstek doğrulaması, uç noktanın bildirmediği her alanı reddetmek yerine çıkarır; bu yüzden yanlış yazılmış bir alan, niyetinizi göz ardı etmiş başarılı bir istek üretir.
- Hata zarfı tek biçimli değildir. Yapılandırılmış hatalar
{statusCode, code, message}taşır, ancak düz çerçeve istisnalarıcodealanı olmadan{statusCode, message, error}döner.codealanının her zaman bulunduğunu varsayan bir istemci yazmayın. - Saklama süresi bir ürün varsayılanı değil, yapılandırmadır. Temiz trafiğin ne kadar tutulacağı dağıtım başına çalışma zamanında ayarlanır. Redakte edilmiş ve engellenmiş olaylar, politika kanıtı olarak her hâlükârda saklanır.
İlgili sayfalar
- Çoklu kiracılık — tek bir dağıtımın birden çok kiracıya nasıl hizmet ettiği.
- İçerik güvenliği hattı — 3. aşamanın içinde ne çalışır.
- Sohbet API'si — akış sözleşmesinin tamamı.
Son güncelleme