درس ۶ از ۵

ه ماتریس تصمیم

این جدول ۲۰ ردیفی، چارچوب تصمیم پایانی فصل است. هر ردیف یک سوالی است که معمار قبل از انتخاب surface می‌پرسد.

بُعد Anthropic Native API AWS Bedrock GCP Vertex AI
Auth surface header x-api-key، OAuth برای orgها AWS SigV4 / IAM / STS / bearer token Google ADC / gcloud / service accounts
Billing فاکتور Anthropic (USD)، کارت اعتباری یا invoicing فاکتور تجمیعی AWS فاکتور تجمیعی GCP
Procurement / contract قرارداد سازمانی مستقیم Anthropic AWS EDP موجود / Marketplace EULA GCP CUDs موجود / Marketplace EULA
Data residency US (با pilot EU) انتخاب region یا geo-CRIS (US/EU/JP/APAC) انتخاب region، multi-region (us/eu)، یا global
Compliance certs SOC 2، ISO 27001، HIPAA-eligible + FedRAMP High، IRAP، PCI، IL5 (از طریق GovCloud)، HITRUST + FedRAMP High، IL2، ISO 27017/27018، HITRUST
پایین‌ترین latency معمولاً سریع‌ترین (edge مستقیم) با routing global قابل قیاس با routing global قابل قیاس
First-token latency در streaming معمولاً ۱۵۰-۳۰۰ ms معمولاً ۲۰۰-۴۰۰ ms (Converse چند ms اضافه می‌کند) معمولاً ۲۰۰-۴۰۰ ms
Pricing baseline قیمت لیست Anthropic همان لیست (regional +۱۰٪ برای مدل‌های جدید) همان لیست (regional +۱۰٪ برای مدل‌های جدید)
Provisioned Throughput n/a (لایه‌های rate-limit) بله — فقط regional بله (GSUs) — فقط regional
Batch (۵۰٪ تخفیف) Message Batches API Bedrock Batch Vertex Batch Prediction
Prompt caching بله بله (Sonnet 3.5 v2+) بله (Sonnet 3.5+)
مدل جدید زودتر بله (day-zero) معمولاً ۱-۷ روز بعد از native معمولاً ۱-۷ روز بعد از native
Tool use schema بومی بومی یا toolConfig Converse بومی
RAG داخلی Files API + خودتان bring کنید Bedrock Knowledge Bases Vertex AI Search
agent داخلی Managed Agents Bedrock Agents Reasoning Engine
Guardrails داخلی safety در سطح API + bring-your-own Bedrock Guardrails (PII، denied topics، grounding) فیلترهای ایمنی Vertex AI + Model Armor
Logging کنسول، OTEL exports CloudWatch / S3 invocation logs Cloud Logging / BigQuery RR-logging
Org policy / VPC n/a VPC endpoints، PrivateLink، SCPs VPC-SC، Org Policy، Private Service Connect
بهترین برای پیش‌فرض؛ سریع‌ترین دسترسی به مدل؛ کوچک‌ترین stack فروشگاه‌های AWS-anchored؛ workloadهای HIPAA/FedRAMP؛ ناوگان موجود Bedrock فروشگاه‌های GCP-anchored؛ RAG چسبیده به BigQuery؛ ناوگان MLOps Vertex
بدترین برای شرکت‌هایی که نمی‌توانند vendor جدید تامین کنند مشتریانی که مدل day-zero می‌خواهند مشتریانی که مدل day-zero می‌خواهند

Heuristic سریع:

  • اگر تیم روی AWS است و entitlement Bedrock دارد → Bedrock بدون اصطکاک.
  • اگر تیم GCP-native است و BigQuery لایه داده است → Vertex AI داده، billing و IAM را در یک‌جا نگه می‌دارد.
  • اگر هیچ lock-in ابری اعمال نمی‌شود، یا اگر تازگی مدل اهمیت دارد (می‌خواهید Opus/Sonnet را روز اول داشته باشید) → native Anthropic API برنده است.
  • برای اپلیکیشن‌های multi-cloud یا model-portable، abstraction سطح SDK (anthropic[bedrock]، anthropic[vertex]) به شما اجازه می‌دهد یک code path نگه دارید و فقط با تعویض client init، backend را عوض کنید.

دیاگرام معماری (متنی)

                         ┌─────────────────────────────┐
                         │   Application code (Python  │
                         │   / TS / Go / Java / C#)    │
                         └────────────┬────────────────┘
                                      │ Messages API shape
                ┌─────────────────────┼─────────────────────┐
                │                     │                     │
                ▼                     ▼                     ▼
       ┌────────────────┐    ┌────────────────┐    ┌────────────────┐
       │ Anthropic SDK  │    │ Anthropic SDK  │    │ Anthropic SDK  │
       │   (native)     │    │  [bedrock]     │    │  [vertex]      │
       └───────┬────────┘    └───────┬────────┘    └───────┬────────┘
               │ x-api-key           │ SigV4/Bearer        │ ADC
               ▼                     ▼                     ▼
       ┌────────────────┐    ┌────────────────┐    ┌────────────────┐
       │ api.anthropic. │    │  AWS Bedrock   │    │  Vertex AI     │
       │ com /v1/...    │    │ bedrock-runtime│    │ aiplatform.    │
       │                │    │                │    │ googleapis.com │
       └───────┬────────┘    └───────┬────────┘    └───────┬────────┘
               │                     │                     │
               ▼                     ▼                     ▼
       ┌────────────────┐    ┌────────────────┐    ┌────────────────┐
       │ Anthropic infra│    │ AWS-hosted     │    │ Google-hosted  │
       │ (Anthropic ops)│    │ Anthropic infra│    │ Anthropic infra│
       └────────────────┘    └────────────────┘    └────────────────┘
                              + KB + Agents +        + Search +
                              Guardrails + Flows     Reasoning Engine

کد اپلیکیشن (بالا) در هر سه ستون یکسان است — فقط constructor client و model ID فرق می‌کند. این بزرگ‌ترین نکته آموزشی فصل‌های ابری است.


خلاصه فصل

  • Bedrock و Vertex، Claude را با همان وزن‌ها سرو می‌کنند؛ آنچه تغییر می‌کند احراز هویت، billing، compliance و ابزارهای جانبی است، نه کیفیت مدل.
  • روی Bedrock، anthropic[bedrock] نزدیک‌ترین تجربه به native است؛ boto3 سطح پایین‌تر است و فیلد anthropic_version: bedrock-2023-05-31 در body اجباری است؛ Converse API گزینه provider-agnostic است.
  • IAM روی Bedrock باید هم foundation-model/... و هم inference-profile/... را در Resource بپوشاند، در غیر این صورت CRIS با AccessDeniedException می‌خورد.
  • روی Vertex، model در URL است نه body؛ anthropic_version باید رشته vertex-2023-10-16 باشد؛ نقش roles/aiplatform.user حداقل لازم است.
  • چهار درس عمیق‌تر (reranking، contextual retrieval، batch tool use، automated debugging) برای مشتریان ابری حیاتی‌اند، چون با Knowledge Bases / Vertex Search و Agents / Reasoning Engine جفت می‌شوند. روش contextual retrieval Anthropic، نرخ شکست retrieval را تا ۶۷٪ کاهش می‌دهد.
  • ماتریس تصمیم: native برای day-zero و کوچک‌ترین stack، Bedrock برای AWS-shopها و FedRAMP/HIPAA، Vertex برای GCP-shopها و RAG چسبیده به BigQuery.

تمرین‌های پیشنهادی

  1. smoke test سه‌تایی. یک تابع Python بنویسید که با همان سه پیام (system prompt + user message)، یک‌بار anthropic.Anthropic، یک‌بار AnthropicBedrock و یک‌بار AnthropicVertex را صدا بزند. خروجی هر سه را با هم مقایسه کنید (token usage، first-token latency، wall time). انتظار: متن‌ها معنایی یکسان، latency و usage در محدوده ±۲۰٪.
  2. least-privilege IAM. policy IAM بخش ۶.ب.۳ را به یک نقش خالی اضافه کنید، آن را روی یک کاربر تست بایند کنید، و سعی کنید با CRIS (global.anthropic.claude-opus-4-6-v1) فراخوانی کنید. سپس خط inference-profile/... را پاک کنید و مشاهده کنید AccessDeniedException می‌گیرید. این تجربه را به اسناد runbook تیم اضافه کنید.
  3. Vertex custom role. YAML بخش ۶.ج.۳ را با gcloud iam roles create بسازید، آن را به یک service account ببندید، و یک smoke test روی Cloud Run با همان service account اجرا کنید.
  4. Converse multi-model. کدی بنویسید که با همان messages و system به‌ترتیب anthropic.claude-sonnet-4-5-20250929-v1:0، meta.llama3-70b-instruct-v1:0 و cohere.command-r-plus-v1:0 را روی Converse صدا بزند. ببینید کدام پارامترها بدون تغییر کار می‌کنند و کدام نیاز به additionalModelRequestFields دارند.
  5. Contextual retrieval mini-experiment. یک سند ۱۰۰۰۰ token بردارید، با chunkهای ۵۰۰ token تکه‌تکه کنید، یک‌بار با baseline RAG و یک‌بار با pipeline contextual retrieval (embedding + BM25 + rerank) همان ۱۰ سوال را اجرا کنید. Pass@5 را اندازه بگیرید.
  6. batch_tool harness. ابزار batch_tool بخش ۶.د.۳ را پیاده کنید با سه toolی که هر کدام یک API ساده می‌زند (مثلاً وضعیت آب‌و‌هوا، نرخ ارز، خلاصه ویکی‌پدیا). از Claude بخواهید همه‌شان را در یک turn فراخوانی کند. زمان end-to-end را با حالت سریالی مقایسه کنید.

منابع تکمیلی