Bu sayfadaki her şey bugün üretim uç noktasında çalışır. Anahtarlar erişimle birlikte verilir. Sonda anlatılan sürümlü sunucu ve üst bilgiyle kimlik doğrulama bir sonraki değişikliktir; yayınlandıktan sonra mevcut sözleşme çalışmaya devam eder.
Kurum anahtarınız hesabı tanımlar; planı, sınırları ve yüklediğiniz özel politikaları taşır. Anahtarı istek gövdesinde gönderin. Sunucu tarafında tutun: tarayıcıda veya mobil uygulama dosyasında duran anahtar, yayımlanmış anahtardır.
Her ortam için bir anahtar kullanın. Anahtar yenileme hemen geçerli olur; bu nedenle hazırlık ve üretim ortamlarını ayrı ayrı yenileyin.
curl -X POST https://verbapulse.com/analyze \
-H "Content-Type: application/json" \
-d '{
"text": "As agreed, we will match any competitor price for the next three years.",
"org_api_key": "<your key>",
"platform": "support-agent"
}'
| Alan | Tür | Notlar |
|---|---|---|
text | string | Zorunlu. Kontrol edilecek taslak, en fazla 50,000 karakter. |
org_api_key | string | Zorunlu. Kurum anahtarınız. |
platform | string | Kendi raporlamanız için serbest etiket, örneğin support-agent. |
user_id | string | Kullanıcı başına raporlama ve kontrol istiyorsanız kullanıcı veya ajan kimliğiniz. |
department | string | Olayı departman düzeyindeki raporlamada gruplar. |
recipients | string[] | Taslak giden bir mesajsa alıcı adresleri. Gizlilik sözleşmesi kontrollerini etkinleştirir. |
context | string | email varsayılan değerdir. Bir kişinin asistana yapıştırdığı metin için ai_tool kullanın. |
{
"status": "ok",
"session_id": "dd1597af-fca5-4c11-9176-ec3a4e0755dc",
"nda_recipients": [],
"segments": [
{
"text": "we will match any competitor price for the next three years",
"sentence": "As agreed, we will match any competitor price for the next three years.",
"start": 11,
"end": 70,
"risk_level": "medium",
"risk_type": "compliance",
"explanation": "Firm long-term pricing commitment, confirm approval and contractual alignment",
"suggested_sentence": "we can discuss matching competitor pricing as part of our agreement",
"fix_type": "sentence"
}
]
}
| Alan | Notlar |
|---|---|
status | ok taslak kontrol edildiğinde döner. unavailable kontrol edilemediğinde döner. |
segments | Bulgular. Boş dizi ile birlikte ok dönmesi taslağın temiz olduğunu gösterir. |
start, end | Gönderdiğiniz metindeki karakter konumları; vurgulama veya yerinde değiştirme için kullanılır. |
risk_level | low, medium, high, critical. |
risk_type | Kategori, örneğin compliance, legal, financial_crime, confidentiality. |
fix_type | phrase işaretlenen bölüm değiştirilebiliyorsa, sentence cümlenin yeniden yazılması gerekiyorsa döner. |
session_id | Sonraki olayları ilişkilendirir, örneğin yazanın öneriyi kabul ettiğini. |
nda_recipients | Kayıtlı gizlilik sözleşmesi olmayan alıcılar. Yalnız şu alanı gönderdiğinizde döner: recipients. |
detail | Bazı unavailable yanıtlarında bulunur. Yazan kişiye gösterebileceğiniz bir cümledir, örneğin kullanım hakkının bittiğini söyler. Bu alan varsa yeniden denemek işe yaramaz. |
Yanıtta 200 ve "status": "ok" yoksa, yanıtı
kontrol edilmedi olarak değerlendirin ve ürününüzde bunu belirtin. Reddedilen istek herhangi bir değerlendirme içermez; 200 dışındaki bir yanıtta boş bir segments dizisi, taslağın temiz olduğu anlamına gelmez.
Bu hatayı biz de yaptık. Outlook eklentimiz durum kodunu kontrol etmeden gövdeyi okuyordu; bu yüzden istek sınırına takılan bir yanıt "risk tespit edilmedi" olarak görünüyordu. Bu ürünün yaşayabileceği en tehlikeli arızadır ve gövdeyi önce ayrıştıran her entegrasyonu aynı tuzak bekler.
if r.status_code != 200 or r.json().get("status") != "ok":
# show "not checked" and let the human decide; never fall through to "clean"
return Unchecked(reason=r.status_code)
| Kod | Anlamı | Ne yapılmalı |
|---|---|---|
200 + ok | Kontrol edildi. | Kullanılacak alan: segments. |
200 + unavailable | Kontrol tamamlanamadı. Neden geçici olmadığında detail dizgisi nedeni belirtir. | "Kontrol edilmedi" gösterin. Kısa bir aradan sonra bir kez yeniden deneyin; detail varsa yeniden denemeyin. |
200 + deactivated | Anahtar veya kullanıcı etkin durumda olmadığında döner. | Göndermeyi durdurun. Hesabı kontrol edin. |
413 | Taslak 50,000 karakteri aşıyor. | Metni bölün ve parçaları kontrol edin. |
429 | İstek sınırı aşıldı. | Bekleyip yeniden deneyin. Daha yüksek sınır için bize yazın. |
5xx | Sunucu hatası. | "Kontrol edilmedi" gösterin. Artan aralıklarla yeniden deneyin. |
| İstek sınırı | Anahtar başına dakikada 600 istek. Talep üzerine daha yüksek sınır verilir. |
|---|---|
| Gecikme | Kısa bir taslak için 2 ila 5 saniye. Kontrolü kendi metin üretiminizle paralel çağırın, yanıtı yalnız bulgu olduğunda bekletin. |
| Tekrarlanan metin | Aynı hesaptan birkaç saat içinde gelen özdeş taslak için önbellekteki sonuç dönebilir. Hiçbir şeyi değiştirmezseniz aynı cevabı hızla alırsınız. |
| Eşzamanlılık | Sizin tarafınızda kesin bir üst sınır yoktur. Planınızın kapasitesini aşan sürekli yük kuyruğa alınır; bu nedenle taahhüdünüzü en yoğun anınıza göre belirleyin. |
| Yeniden denemeler | Sorun yaratmaz. Bir kontrolün olay kaydı dışında yan etkisi yoktur. |
| Değerlendirme anahtarları | Toplam 5,000 kontrol ve kayan herhangi bir 24 saatlik dönemde 500 kontrol. Sınırlardan biri aşıldığında yanıt unavailable olur ve şu alanı içerir: detail. |
import httpx
def check(text: str) -> dict:
r = httpx.post(
"https://verbapulse.com/analyze",
json={"text": text, "org_api_key": KEY, "platform": "support-agent"},
timeout=30,
)
if r.status_code != 200:
return {"checked": False, "reason": r.status_code}
d = r.json()
if d.get("status") != "ok":
return {"checked": False, "reason": d.get("status")}
return {"checked": True, "findings": d["segments"]}
async function check(text) {
const r = await fetch("https://verbapulse.com/analyze", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({ text, org_api_key: KEY, platform: "support-agent" }),
});
if (!r.ok) return { checked: false, reason: r.status };
const d = await r.json();
if (d.status !== "ok") return { checked: false, reason: d.status };
return { checked: true, findings: d.segments };
}
Döndürdüğümüz bulgularla neler yapabileceğiniz, hizmet şartlarının 6. maddesinde düzenlenmiştir. Kısaca: bulguları kendi kurumunuzun yazışmalarını kontrol etmek için kullanın; aynı işi yapan bir modeli eğitmek veya değerlendirmek için kullanmayın.
Üst bilgiyle kimlik doğrulamalı sürümlü sunucu: POST https://api.verbapulse.com/v1/analyze
ve Authorization: Bearer, ayrıca bir kullanım uç noktası. Yukarıda anlatılan gövde anahtarı bu değişiklikten sonra da çalışır. Şimdi entegre ediyorsanız temel URL'yi ve kimlik doğrulama yöntemini tek bir sabitin arkasına alın; geçiş iki satırlık bir değişiklik olur.