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.
--regiondeğeri,.enviçindekiEU_REGIONSlistesindekilerden 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
/v1iki kez. OpenAI örneğini kopyalayıp adresi Anthropic'e çevirince/v1taşınır ve istek/v1/v1/messagesadresine düşer. Anthropic base URL'si/v1içermez.- Bölge adı birebir değil.
eu-west-1yazıpeu-westbeklemek çalışmaz; eşleşme tam metindir. .envdeğişti, servis yeniden başlamadı. Anahtar ekledikten sonradocker compose up -d gatewaygerekir.