View a markdown version of this page

Per-request penandaan metadata - Amazon Bedrock

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Per-request penandaan metadata

Metadata permintaan memungkinkan Anda melampirkan tag nilai kunci ke panggilan inferensi Amazon Bedrock individual di titik akhir. bedrock-runtime Tag direkam dengan permintaan di log pemanggilan model Anda. Anda kemudian dapat mengatribusikan penggunaan ke tim, aplikasi, lingkungan, eksperimen, atau dimensi lain yang bervariasi per panggilan. Tidak ada sumber daya untuk membuat atau mengkonfigurasi sebelumnya - setiap panggilan dapat membawa set tag yang berbeda.

Metadata permintaan didukung pada API berikut: bedrock-runtime

catatan

Metadata permintaan tidak didukung pada titik akhir. bedrock-mantle Untuk atribusi yang mengalir langsung ke AWS Cost Explorer dan Laporan AWS Biaya dan Penggunaan sebagai tag alokasi biaya, lihat Profil inferensi aplikasiProyek, atau. Workspace

Cara kerja metadata permintaan

Anda melampirkan metadata ke permintaan secara berbeda tergantung pada API yang Anda panggil:

  • InvokeModel dan InvokeModelWithResponseStream — Mengatur header X-Amzn-Bedrock-Request-Metadata HTTP pada permintaan. Nilainya adalah objek JSON yang kunci dan nilainya adalah string yang Anda pilih.

  • Converse dan ConverseStream — Atur requestMetadata bidang di badan permintaan. Untuk informasi selengkapnya, lihat PermintaMetadata.

Metadata permintaan direkam dalam log pemanggilan model Anda hanya saat logging diaktifkan di Wilayah AWS tempat panggilan dilakukan. Untuk petunjuk penyiapan, lihatMemantau pemanggilan model menggunakan CloudWatch Log dan Amazon S3.

Contoh berikut menunjukkan InvokeModel permintaan yang menandai panggilan dengan nama tim, lingkungan, dan pengidentifikasi kasus uji:

POST /model/anthropic.claude-3-haiku-20240307-v1:0/invoke HTTP/1.1 Content-Type: application/json X-Amzn-Bedrock-Request-Metadata: {"team": "orchestrator", "environment": "preview-test", "test_case": "invoke_model_sync"} { "anthropic_version": "bedrock-2023-05-31", "max_tokens": 50, "messages": [{"role": "user", "content": "Say hello in one word."}] }

Header yang sama didukung pada InvokeModelWithResponseStream:

POST /model/anthropic.claude-3-haiku-20240307-v1:0/invoke-with-response-stream HTTP/1.1 Content-Type: application/json X-Amzn-Bedrock-Request-Metadata: {"team": "orchestrator", "environment": "preview-test", "test_case": "invoke_model_stream"} { "anthropic_version": "bedrock-2023-05-31", "max_tokens": 50, "messages": [{"role": "user", "content": "Say hello in one word."}] }
penting

Saat Anda menandatangani permintaan dengan AWS Signature Version 4 (SigV4), sertakan X-Amzn-Bedrock-Request-Metadata dalam daftar. SignedHeaders Permintaan yang menghilangkan header dari daftar yang ditandatangani ditolak dengan fileInvalidSignatureException. AWS SDK yang mengekspos metadata permintaan sebagai parameter menangani ini secara otomatis.

Contoh berikut menetapkan metadata permintaan dengan AWS SDK for Python (Boto3) pada panggilan Converse. SDK menyertakan metadata di SigV4-signed header untuk Anda.

import boto3 client = boto3.client("bedrock-runtime") response = client.converse( modelId="us.anthropic.claude-opus-4-8", # or an inference profile ARN messages=[{"role": "user", "content": [{"text": "Summarize this ticket."}]}], requestMetadata={ "user": "alice@example.com", "team": "growth", "feature": "summarizer", "environment": "prod", }, )

Batas

Metadata permintaan memiliki batasan berikut, yang berlaku untuk X-Amzn-Bedrock-Request-Metadata header (InvokeModel, InvokeModelWithResponseStream) dan bidang requestMetadata tubuh (Converse,): ConverseStream

  • Maksimal 16 entri metadata per permintaan.

  • Tombol: maksimal 256 karakter.

  • Nilai: maksimum 256 karakter.

  • Karakter yang diizinkan: satu set karakter alfanumerik dan tanda baca terbatas.

Permintaan yang melebihi batas ini ditolak dengan kesalahan validasi.

Di mana metadata permintaan muncul

Metadata permintaan muncul di log pemanggilan model Amazon Bedrock Anda di bawah bidang tingkat atas. requestMetadata Entri log disingkat berikut menunjukkan bidang untuk InvokeModel panggilan:

{ "schemaType": "ModelInvocationLog", "schemaVersion": "1.0", "timestamp": "2024-01-15T12:00:00Z", "accountId": "123456789012", "region": "us-east-1", "requestId": "abcd1234-5678-efgh-ijkl-mnopqrstuvwx", "operation": "InvokeModel", "modelId": "anthropic.claude-3-haiku-20240307-v1:0", "requestMetadata": { "team": "orchestrator", "environment": "preview-test", "test_case": "invoke_model_sync" }, "input": { "...": "..." }, "output": { "...": "..." } }

Anda dapat memfilter dan menggabungkan log berdasarkan bidang metadata di Amazon CloudWatch Logs Insights, alat kueri Amazon S3 seperti Amazon Athena, atau sistem lain yang membaca log pemanggilan.

Mendapatkan biaya dari log Anda

Metadata permintaan dan jumlah token ditulis ke log pemanggilan model Anda, bukan ke tagihan Anda. Ada dua cara untuk mengubahnya menjadi biaya.

Hitung dari jumlah token

Setiap catatan log membawa jumlah token input, output, cache-read, dan cache-write untuk permintaan tersebut. Lipat gandakan ini dengan tarif per token dalam harga Amazon Bedrock dan kelompokkan dengan tag metadata apa pun. Pendekatan ini adalah per-prompt dan mendekati real-time, tetapi ini adalah perkiraan. Anda mempertahankan kartu tarif. Ini tidak mencerminkan diskon, komitmen, harga batch, tingkat gratis, atau throughput yang disediakan kecuali Anda memodelkannya.

Kueri CloudWatch Logs Insights berikut ini total token per pengguna dan model saat log pemanggilan dikirimkan ke Log: CloudWatch

fields requestMetadata.user as user, modelId, input.inputTokenCount as inTokens, output.outputTokenCount as outTokens | stats sum(inTokens) as totalInput, sum(outTokens) as totalOutput, count() as calls by user, modelId | sort totalInput desc

Untuk log yang dikirim ke Amazon S3, kueri Amazon Athena berikut memperkirakan biaya menurut tim. Ganti tarif per token dengan tarif saat ini dari harga Amazon Bedrock, dan sesuaikan referensi tabel dan kolom agar sesuai dengan definisi tabel Anda AWS Glue .

SELECT requestMetadata.team AS team, modelId, SUM(input.inputTokenCount) AS input_tokens, SUM(output.outputTokenCount) AS output_tokens, SUM(input.inputTokenCount) * 0.000015 AS est_input_cost, SUM(output.outputTokenCount) * 0.000075 AS est_output_cost FROM bedrock_invocation_logs GROUP BY requestMetadata.team, modelId ORDER BY est_input_cost DESC;
Rekonsiliasi melawan CUR

Bergabunglah dengan log pemanggilan Anda ke Laporan AWS Biaya dan Penggunaan Anda untuk total akurat faktur. Baik CUR klasik maupun CUR 2.0 tidak menyertakan pengidentifikasi per permintaan pada item barisnya. Kedua biaya agregat berdasarkan jenis penggunaan lebih dari satu jam atau sehari. Perlakukan jalur ini sebagai rekonsiliasi pada model dan butir tipe penggunaan, dengan log memberikan detail per permintaan di bawahnya.

catatan

Permintaan metadata dan tag sesi IAM adalah mekanisme yang berbeda. Metadata permintaan diatur per panggilan dan bervariasi per permintaan. Itu mendarat di log doa Anda. Tag sesi IAM terikat per sesi dan hanya muncul sebagai data penagihan agregat di AWS Cost Explorer dan CUR. Untuk atribusi per pengguna, per-prompt, gunakan metadata permintaan atau identitas per pengguna di ARN daripada tag sesi.

Pertimbangan-pertimbangan

  • Nilai metadata permintaan dicatat hanya ketika logging pemanggilan model diaktifkan dalam panggilan. Wilayah AWS Jika logging tidak dikonfigurasi, permintaan masih berhasil tetapi metadata tidak dipertahankan.

  • Metadata permintaan tidak dikirimkan sebagai tag alokasi AWS biaya dan tidak muncul di AWS Cost Explorer atau CUR. Untuk menganalisis biaya berdasarkan dimensi metadata, gabungkan log pemanggilan Anda dengan Laporan Biaya dan Penggunaan Anda. requestId Atau, token agregat dihitung langsung dari catatan log dan dikalikan dengan tarif per token dalam harga Amazon Bedrock. Untuk atribusi yang mengalir secara native ke Cost Explorer dan CUR, gunakan Profil inferensi aplikasiProyek, atau. Workspace

  • Pilih kunci stabil, kardinalitas rendah sepertiteam,, environmentfeature, atau experiment untuk analitik yang mudah digabungkan. Gunakan nilai kardinalitas yang lebih tinggi seperti pengidentifikasi sesi atau jejak hanya saat Anda perlu melacak panggilan individual.

  • Hindari menempatkan informasi identitas pribadi (PII), kredensil, atau data sensitif lainnya dalam metadata permintaan. Nilai disimpan dalam log pemanggilan model Anda dan sistem apa pun yang membaca log tersebut.

  • Metadata permintaan disediakan per panggilan dan tidak diberlakukan oleh Amazon Bedrock. Permintaan yang menghilangkannya masih berhasil, dan tidak ada kebijakan sisi layanan untuk memerlukannya. Untuk menjamin cakupan di seluruh organisasi, tetapkan metadata permintaan di klien bersama atau gateway LLM. Untuk atribusi yang selalu ada tanpa kode per panggilan, gunakan. Atribusi utama IAM Ini menangkap identitas penelepon secara otomatis.

  • Metadata permintaan berfungsi bersama metode pelacakan penggunaan Amazon Bedrock lainnya. Anda dapat menggunakan atribusi per identitas dan Atribusi utama IAM Profil inferensi aplikasi untuk tag alokasi biaya tingkat sumber daya pada beban kerja yang sama.