Dokümantasyon
Sorulan değişikliği bulmak.
Bir soruşturma filtreyle değil cümleyle başlar. Buradaki dördü birincisini ikincisine çevirir — sonra filtreyi elinizde bırakır.
Kendi cümlelerinizle sormak
"Geçen hafta fiyatları kim değiştirdi?" bir sorudur; resourceType=catalog.price&from=… bir filtredir. Asistan birincisini ikincisine çevirir ve sonra aradan çekilir: okuduğunuz şey, panelin geri kalanının kullandığı aynı müşteri kapsamlı sorgu oluşturucudan gelen, kimlikleri üzerinde duran olayların kendisidir.
| Cevap değil, filtre üretir | Çıktı, arama formunun ürettiğiyle aynı biçimdedir. Modelin filtre olarak ifade edemediği şeyi yaklaştırmaz, reddeder. |
| Kapsamınız yine geçerlidir | Filtre, elle yazılmış bir arama ile aynı müşteri ve hesap sınırlarından geçer. Daraltılmış bir hesap, soru sorarak kendi sınırının dışına çıkamaz. |
| Okumalar diğerleri gibi kaydedilir | Asistanın çalıştırdığı bir arama da aramadır ve kullandığı filtreyle birlikte İzi kim okudu listesinde görünür. |
| İsteğe bağlıdır | Anahtar tanımlanmamışsa asistan yoktur ve panelin geri kalanı tam olarak eskisi gibi çalışır. Yanındaki haftalık özet ise kendi son dört haftanız üzerinde düz aritmetiktir; hiçbir modele ihtiyaç duymaz. |
| Model sizin modeliniz olabilir | Assistant__Provider değerini OpenAiCompatible, Assistant__Endpoint değerini de bu biçimi konuşan herhangi bir uca verin — Ollama, vLLM, LM Studio, Azure OpenAI, OpenAI’nin kendisi. Sorusunu üçüncü bir tarafa gönderemeyen bir kurulum, soru kutusundan vazgeçmek yerine onu kendi ağındaki bir modelle çalıştırabilir. |
Açmak için Assistant__ApiKey içine bir sağlayıcı anahtarı tanımlayın. Olaylarınız eğitim için kullanılmaz; istem yalnızca sorunuzu ve müşterinizdeki kaynak türlerinin listesini taşır — kayıtların kendisini asla. Provider OpenAiCompatible ise uç yalnızca bir temel adres olabilir; /chat/completions sizin için eklenir.
Kimse kullanmadan önce sınayın
Modeline ulaşamayan bir soru kutusu yalnızca "asistana ulaşılamadı" der, fazlasını söylemez — söyleyemez de, çünkü sebebi sayfada yazmak yapılandırmanızı soruyu yazan herkese vermek olurdu. Geriye birbirinden ayırt edilemeyen dört arıza kalır: iptal edilmiş anahtar, sağlayıcının emekliye ayırdığı model adı, öteki biçimi konuşan bir uç, çalışma alanı belirtilmemiş bir kurum anahtarı. Sebebin yaşadığı yer reldavi assistant-check komutudur. Beş soru sorar — ikisi sıradan, biri Türkçe, ikisi modeli işinden caydırma denemesi — her biri için seçilen filtreyi yazar; başarısızlıkta ise ucun kendi sözlerini olduğu gibi aktarır.
reldavi assistant-check --key "$RELDAVI_ASSISTANT_KEY" --provider openai --model gpt-4o
Yalnızca modele ulaşılamadığında sıfırdan farklı bir kodla çıkar. Reddetmek başarısızlık değildir: "her şeyi göster" ifadesini filtreye çevirmeyi reddeden bir model, tam da orada olma sebebini yerine getirmiştir. Hazır örnek yerine kendi kaynak türlerinize sormak için --clickhouse ve --tenant ekleyin.
Değişikliğin içinde arama
Her denetim ürününde her filtre meta veriye göre daraltır: hangi kayıt, hangi kişi, hangi gün. Hiçbiri değişikliğin kendisini sormanıza izin vermez — oysa sorular tam orada başlar. "Bir iskonto yüzde kırkın üstüne çıktı." "Bir durum onaylıdan taslağa geri döndü." "Birinin maaş alanına hiç dokunuldu mu?"
| Bir özellik, bir taraf, bir karşılaştırma | Beş işleç: hiç değişmişse, tam olarak, içeriyorsa, şundan büyükse, şundan küçükse. Yeni değere ya da eskisine karşı. Kasten bir ifade dili değil küçük bir sözcük dağarcığı — daha zengini, müşteri verisine uzanan bir sorgu dili olurdu ve o, sebebi doğduğunda inşa edilecek bir yüzeydir. |
| İki koşul bir geçiş eder | Eski değer "Approved" ve yeni değer "Draft", "ne geri alındı" sorusudur; sorgu API’si liste aldığı için ikisi aynı anda çalışır. |
| Sayılar sayı kalır | Karşılaştırma değeri sayı olarak okur ve "pending" tutan bir özellik sıfır tutan bir özellik değildir — eşleşmez, her eşiğin altında sayılmaz. |
| Çalışamayan karşılaştırma düşürülür | "epeyce çoktan büyük" isterseniz koşul, sessizce her şeyle eşleşen bir şey olarak üretilmek yerine dışarıda bırakılır. Sonuçlar, gerçekten çalışabilen koşulların sonuçlarıdır. |
| Özellik adı hiçbir zaman ifadeye girmez | Bir formdan gelir ve parametre olarak geçirilir; bu, dizge birleştirmesi olmayan bir sorgu oluşturucunun sahip olabileceği tek enjeksiyon noktasıydı. |
Buradaki en pahalı koşuldur, çünkü indeksli bir sütunu değil bir JSON sütununu okur — mümkünse yanında tarih ya da kaynak türüyle de daraltın. Arayüz bunu filtrenin üzerinde söyler; birinin yavaş bir sayfada keşfetmesini beklemez.
Bir aramadan uyarı üretme
Okumayı hatırlamanız gereken bir denetim kaydı, kimsenin okumadığı bir denetim kaydıdır. Arama yapabildiğiniz her filtre kalıcı bir kurala dönüşebilir: birkaç dakikada bir çalışır ve eşleştiklerini, anomali özetinin kullandığı kanallara gönderir.
| Biri yönetici yapıldı | iam.user · updated — en çok önem taşıyan ve en az fark edilen değişiklik. |
| Bir servis hesabı bordroya dokundu | hr.payslip · svc-payroll tarafından — otomasyonun kimsenin istemediği bir şeyi yapması. |
| Faturalamadan bir şey silindi | billing.invoice · deleted — denetçinin ilk sorduğu olaylar. |
| Kural bir şeyi daraltmalıdır | Koşulsuz bir kural kaydettiğiniz her olayla eşleşir. Form bunu reddeder; bunu gece üçte keşfetmekten iyidir. |
| Pencere "son seferden beri"dir | "Son beş dakika" değil. Geciken bir tarama ya da yeniden başlayan bir süreç, aradaki olayların üzerinden atlamamalıdır. |
| Geç gelenler beklenir | Olaylar tamponlanıp toplu gönderilir; bu yüzden pencere saatin birkaç dakika gerisinde biter. Tam şu ana kadar çalışmak, henüz ulaşmamış olayları atlardı. |
| Aynı şey iki kez söylenmez | Birebir aynı uyarı yeniden gönderilmez. Biri harekete geçene dek her taramada tekrarlayan uyarı, insanların sessize aldığı uyarıdır; sessize alınmış bir kanal hiç olmamasından kötüdür. |
Kural genellikle az önce yaptığınız bir aramadır. Denetim izini önemsediğiniz şeyi gösterene kadar daraltın, sonra Bundan haberdar et’i kullanın — filtre taşınır, siz yalnızca ad verirsiniz. Tarihler taşınmaz: arama bir pencere hakkındadır, kural ise bir olay türü hakkındadır ve sürekli çalışır.
Kuralın adı gövdenin başında gelir; çünkü uyarıyı alan kişi telefona bakıyordur ve hangi kayıtlar olduğunu bilmeden önce ne olduğunu bilmesi gerekir. Biçim, herhangi bir satıcının mesaj formatı değil düz JSON’dur; üç satırlık bir akış onu Slack, Teams veya PagerDuty’nin istediği şeye çevirebilir.
{
"kind": "alert-rule",
"rule": "Somebody was made an administrator",
"matchCount": 1,
"windowFrom": "2026-09-20T09:00:00Z",
"windowTo": "2026-09-20T09:05:00Z",
"matches": [{
"occurredAt": "2026-09-20T09:02:11Z",
"action": "updated",
"resourceType": "iam.user",
"resourceId": "USR-9",
"actorDisplayName": "Ayşe Yıldırım"
}]
}
Alarmı kendi cümlenizle istemek
Asistan bir soruyu filtreye çevirir ve bir kez çalıştırır. Aynı filtre kalıcı bir kural olabilir — sorarken aslında istediğiniz şey zaten buydu. "Finans dışından biri elli bin lirayı aşan bir faturayı değiştirirse haber ver" bir cümledir; bundan sonra onu gözleyen şey bir filtredir.
| Cümleyi değil, filtreyi onaylarsınız | Derlenen alanlar kaydedilmeden önce gösterilir ve düzenlenebilir. Birinin ne demek istediği uygulanabilir değildir; filtrenin ne adlandırdığı uygulanabilirdir. |
| Tarihler taşınmaz | Arama bir zaman aralığıyla, kural bir olay türüyle ilgilidir ve sonsuza kadar çalışır. "Geçen salı"yı kalıcı bir şeye taşımak, bir alarmın sessizce hiçbir şeyle eşleşmemeye başlamasının yoludur. |
| Kural cümleyi hatırlar | Altı ay sonra biri bu alarmın neden var olduğunu sorar. "Çünkü 20 Eylül’de biri, finans dışından biri faturayı değiştirirse haber verilmesini istedi" bir cevaptır. Bir filtre alanları kümesi değildir. |
| Hiçbir şeyi daraltmayan kural reddedilir | Kaydettiğiniz her olayla eşleşirdi. Hayır diyen bir form ile gecenin üçünde çalan bir çağrı cihazı arasındaki fark budur. |
Model anahtarınız yoksa da hiçbir şey eksilmez — kural formu yerinde durur ve herhangi bir aramadaki Bunu bana bildir onu aynı şekilde doldurur. Asistan, aynı forma giden daha hızlı bir yoldur; ikinci bir mekanizma değil.
Sırada ne okunur
Şema, SDK kaynakları ve mimari notların tamamı açıktır. Bir şey belirsizse, bu bizim dokümantasyonumuzdaki bir hatadır. Bize yazın.