Kalau tim kamu di Indonesia ingin memakai Claude, kabar kantor baru di Singapura tentu terasa dekat. Anthropic mengumumkan kantor itu pada 14 Oktober, bersama nota kesepahaman dengan pemerintah setempat. Isinya mencakup keamanan, pengujian, riset adopsi, dan penggunaan AI.
Kabar ini layak diikuti, tetapi belum membuktikan bahwa semua layanan, dukungan, atau pilihan lokasi data tersedia dengan syarat yang sama di Indonesia. Kamu masih perlu tahu layanan apa yang dipakai, di wilayah mana permintaan diproses, dan pengaturan apa yang bisa diperiksa. Lokasi kantor, alamat masuk layanan yang disebut endpoint, dan lokasi pemrosesan adalah tiga hal berbeda.
Di sini kita memakai Amazon Bedrock sebagai contoh jalur akses Claude. Kodenya adalah rancangan pemeriksaan Nalarku. Contoh itu tidak menggambarkan pengaturan Anthropic di Singapura dan tidak memilihkan wilayah yang cocok untuk semua organisasi.
Alamat layanan belum menceritakan seluruh perjalanan data
Wilayah layanan dalam sistem AWS disebut region. Saat permintaan untuk menghasilkan jawaban AI diarahkan ke wilayah lain, prosesnya disebut cross-region inference. Dokumentasi Bedrock membedakan kumpulan aturan tujuannya menjadi profil geografis dan profil global.
Profil geografis membatasi perjalanan permintaan pada geografi yang didukung. Profil global dapat memakai region komersial yang didukung secara lebih luas. Tujuan yang tersedia bergantung pada profil dan model yang kamu pakai.
Jadi, nama region di alamat layanan pada perangkat bantu pemrograman, atau SDK, belum cukup. Bila modelId menunjuk profil pemrosesan, atau inference profile, permintaan dapat mengikuti tujuan di dalam profil itu. Periksa juga apakah model dan profil tersedia bagi akun serta region asalmu.
Sebelum menilai kualitas jawaban model, ikuti dulu perjalanan data aplikasi. Pertanyaan berikut membantu memetakan setiap tempat yang dilewati:
| Bagian aplikasi | Yang perlu kamu cari tahu |
|---|---|
| Masukan aplikasi | Sudahkah identitas atau data yang tidak dibutuhkan dibuang? |
| Pintu masuk layanan dan antrean | Di mana isi permintaan tersimpan saat menunggu atau gagal? |
| Pemrosesan model | Model atau profil mana yang dipanggil, dan region mana yang dituju? |
| Pencatatan untuk pemantauan | Apakah petunjuk ke model masuk catatan, jejak permintaan, atau laporan kesalahan? |
| Penyimpanan hasil | Siapa yang bisa membacanya, dan sampai kapan disimpan? |
| Salinan cadangan | Apakah aturan region dan lama penyimpanannya sama? |
Tabel tadi membantu memeriksa susunan aplikasi. Jawabannya belum menjadi kesimpulan kepatuhan hukum. Kebutuhan organisasi tetap harus diubah menjadi aturan yang bisa dijalankan dan diperiksa.
Baca daftar tujuan profil sebelum memanggil model
AWS menyediakan GetInferenceProfile untuk membaca status dan daftar models, termasuk modelArn. ARN adalah penanda sumber daya AWS yang di contoh ini dipakai untuk membaca region tujuan model. Kamu lalu bisa mencocokkan region itu dengan daftar yang diizinkan aplikasi.
Contoh Python berikut memeriksa bentuk ARN model yang dikembalikan Bedrock. Daftar region yang diizinkan harus berasal dari aturan organisasi, sehingga tidak diisi otomatis. Kalau bentuk jawabannya tidak dikenali, pemeriksaan akan gagal:
def checked_regions(profile, allowed_regions):
if profile.get("status") != "ACTIVE":
raise ValueError("Inference profile belum aktif")
models = profile.get("models")
if not isinstance(models, list) or not models:
raise ValueError("Tujuan profile tidak tersedia")
regions = set()
for model in models:
arn = model.get("modelArn", "") if isinstance(model, dict) else ""
parts = arn.split(":", 5) if isinstance(arn, str) else []
if (len(parts) != 6 or parts[0] != "arn"
or parts[2] != "bedrock" or not parts[3]
or not parts[5].startswith("foundation-model/")):
raise ValueError("ARN tujuan tidak dikenali")
regions.add(parts[3])
if not regions.issubset(set(allowed_regions)):
raise ValueError("Ada region tujuan di luar kebijakan")
return regions
Fungsi tadi hanya memeriksa daftar dalam jawaban saat itu. Ia tidak mengunci profil milik penyedia dan tidak menjamin tujuannya tetap sama nanti. Tambahkan pembatasan izin AWS melalui IAM/SCP, pemeriksaan ulang, dan pemantauan perubahan yang sesuai.
Pemeriksaan dari aplikasi belum menjamin data tetap di wilayah yang disepakati sepanjang perjalanan. Jaminan lokasi data seperti itu sering disebut residensi end-to-end. Batas fungsi contoh ini perlu tetap jelas.
Sambungkan pemeriksaan tadi ke panggilan model
Contoh berikut memakai pustaka Python boto3 dan tiga nilai pengaturan di lingkungan program, atau variabel lingkungan. Bukti akses milik proses aplikasi diatur di luar kode. Identitas proses itu membutuhkan izin bedrock:GetInferenceProfile untuk membaca pengaturan layanan, atau control plane, serta izin pemrosesan pada sumber daya yang sesuai.
BEDROCK_PROFILE_ID harus menunjuk profil yang memang tersedia bagi akun. Jangan menebak nama profil dari nama pemasaran model. Berikut contoh sambungannya:
import os
import boto3
source_region = os.environ["AWS_REGION"]
profile_id = os.environ["BEDROCK_PROFILE_ID"]
allowed = {
item.strip()
for item in os.environ["APP_ALLOWED_REGIONS"].split(",")
if item.strip()
}
if not allowed:
raise ValueError("Kebijakan region wajib diisi")
control = boto3.client("bedrock", region_name=source_region)
profile = control.get_inference_profile(
inferenceProfileIdentifier=profile_id
)
checked_regions(profile, allowed)
runtime = boto3.client("bedrock-runtime", region_name=source_region)
response = runtime.converse(
modelId=profile_id,
messages=[{
"role": "user",
"content": [{"text": "Ringkas tiga poin dari bahan publik ini: ..."}]
}],
inferenceConfig={"maxTokens": 300}
)
Letakkan fungsi pemeriksaan sebelumnya di berkas yang sama, sebelum kode pemanggilan ini. Baris converse benar-benar memanggil layanan bila aksesnya tersedia dan dapat menimbulkan biaya. Penyusunan artikel ini tidak menjalankan panggilan AWS tersebut.
Teks ... adalah tempat untuk bahan publik contoh. Isinya bukan kumpulan bahan pengujian yang sudah diuji. Rujukan Converse menjelaskan bentuk pesan dan izin bedrock:InvokeModel yang dibutuhkan.
Untuk dipakai sehari-hari, aplikasi juga harus menangani jawaban, habisnya waktu tunggu atau timeout, pembatasan laju permintaan atau throttling, dan penolakan akses. Jika aturannya melarang semua pemrosesan model, periksa pula izin untuk jawaban yang dikirim sedikit demi sedikit, atau streaming. Menutup satu jalur belum otomatis menutup jalur lain.
Perlindungan layanan dan tanggung jawab aplikasi perlu sama-sama diperiksa
Dokumentasi perlindungan data Bedrock menjelaskan tanggung jawab bersama. Ada pengaturan izin IAM, penyandian data atau enkripsi, dan catatan untuk audit. Meski layanan menyediakan perlindungan itu, aplikasi tetap bertanggung jawab atas masukan, hasil, dan catatannya sendiri.
Misalnya, kode pemanggil tidak mencatat petunjuk untuk model, atau prompt. Namun, perangkat perantara untuk menelusuri permintaan bisa merekam seluruh isi HTTP. Antrean gagal juga bisa menyimpan isi permintaan lebih lama daripada hasil utamanya.
Layar bantuan pelanggan mungkin memberi hak baca kepada tim yang lebih luas daripada pengguna fitur. Karena itu, daftarkan semua tempat data bisa bertahan. Uji penghapusan dan lama penyimpanan dengan data buatan, termasuk salinan di cadangan dan antrean.
Klaim “data aman di cloud” belum menjelaskan pengaturan yang berlaku pada aplikasimu. Kamu tetap membutuhkan bukti dari tempat-tempat penyimpanan tadi.
Coba dengan bahasa dan pekerjaan timmu
Jarak geografis belum menentukan kualitas bahasa. Siapkan tugas yang memuat istilah Indonesia, bahasa campuran, angka rupiah, singkatan organisasi, dan sumber lokal. Bedakan fakta yang bisa diperiksa dari selera gaya tulisan.
Untuk ringkasan berita, periksa tanggal, angka, penyebutan sumber, dan batas kemampuan produk. Ukur waktu respons di titik tengah lewat p50, serta batas yang masih mencakup hampir semua permintaan lewat p95. Gunakan ukuran masukan dan jumlah permintaan bersamaan yang mewakili pemakaian timmu.
Catat region asal, profil, versi model yang terlihat, dan waktu pengukuran agar hasil bisa dibandingkan. Hitung biaya per hasil yang diterima setelah pemeriksaan manusia, termasuk percobaan ulang dan waktu perbaikan. Kalau region atau izin gagal, pakai jalur penanganan yang sudah disetujui; jangan diam-diam memindahkan permintaan ke profil global agar kesalahan berkurang.
Analisis Nalarku: kantor baru dapat membantu hubungan dengan pihak-pihak di sekitar Anthropic. Untuk menentukan cara memakai layanannya, kamu tetap perlu memeriksa model, izin, region, kualitas, dan biaya pada pengaturan yang benar-benar dipakai. Dari situ, kabar kantor baru bisa diterjemahkan menjadi pemeriksaan yang berguna bagi timmu.