Tanık Dokümantasyon

Başlangıç

#İlk istek

Bir isteğin geçmesi için iki tanım gerekir: isteği gönderecek uygulamanın anahtarı ve isteğin gideceği hedef (sağlayıcı). İkisi de konsoldan ya da komut satırından yapılır.

#1. Hedef tanımlayın

Konsolun Sağlayıcılar ekranında önce sağlayıcı anahtarınızı kasaya yazın, sonra bir hedef ekleyin. Komut satırından aynı iş:

# Anthropic — base URL /v1 ile BİTMEZ
docker compose exec -T gateway node apps/gateway/dist/cli/create-target.js \
  --name anthropic-eu --api-style anthropic \
  --base-url https://api.anthropic.com --region eu-frankfurt \
  --auth-kind x-api-key --secret-env ANTHROPIC_API_KEY --default

# OpenAI — base URL /v1 ile BİTER
docker compose exec -T gateway node apps/gateway/dist/cli/create-target.js \
  --name openai-eu --api-style openai \
  --base-url https://api.openai.com/v1 --region eu \
  --auth-kind bearer --secret-env UPSTREAM_API_KEY --models 'gpt-*,o*'

--secret-env, anahtarın kendisi değil, .env içindeki değişkenin adıdır. Anahtarın kendisini yazmak reddedilir.

Bölge etiketi KVKK Md. 9 kararını verir. --region değeri, .env içindeki EU_REGIONS listesindekilerden birebir biri olmalıdır (eu, eu-frankfurt, eu-west…). Yanlış etiket, kanıt raporunda savunulamaz bir iddia olur. Bölgeyi sağlayıcının belgelerinden doğrulayın; tahmin etmeyin.

Diğer sağlayıcılar için Azure ve diğerleri sayfasına bakın.

#2. Uygulama anahtarı üretin

Konsolun Anahtarlar ekranından ya da:

docker compose exec -T gateway node apps/gateway/dist/cli/create-api-key.js \
  --label destek-botu --purpose 'Müşteri destek taleplerinin özetlenmesi' \
  --legal-basis legitimate_interest

Anahtar bir kez gösterilir; veritabanında yalnız özeti tutulur. Her uygulama kendi anahtarını kullanmalıdır: kayıtta "kim gönderdi" sorusunu ayıran tek şey budur.

--purpose ve --legal-basis isteğe bağlıdır ama kanıt raporunun "hangi amaçla, hangi hukuki sebeple" sorusuna cevap verebilmesinin tek yoludur. Hukuki sebep şu listeden seçilir: explicit_consent, law_provides, vital_interest, contract, legal_obligation, made_public, legal_claim, legitimate_interest.

#3. İsteği gönderin

curl -s http://localhost:8080/v1/chat/completions \
  -H "authorization: Bearer $TANIK_KEY" -H 'content-type: application/json' \
  -d '{"model":"gpt-4o","messages":[{"role":"user","content":"merhaba"}]}'

Anthropic biçimi için:

curl -s http://localhost:8080/v1/messages \
  -H "authorization: Bearer $TANIK_KEY" -H 'content-type: application/json' \
  -H 'anthropic-version: 2023-06-01' \
  -d '{"model":"claude-sonnet-4-5","max_tokens":64,"messages":[{"role":"user","content":"merhaba"}]}'

Cevap sağlayıcının kendi cevabıdır; Tanık şeklini değiştirmez.

#4. Kaydı görün

Konsolun Denetim Defteri ekranında istek görünür: hangi adımların ne karar verdiği, hedef ve bölge, kayıt zincirindeki yeri. Kişisel veri içeren bir deneme için sentetik bir değer kullanın (gerçek bir TC numarası değil) ve kayıtta pii_in · mask kararını görün.

#Sık yapılan üç hata