Tutorial Lengkap AWS Bedrock: Managed Generative AI di AWS
Amazon Bedrock adalah layanan terkelola penuh yang menyediakan akses ke foundation models (FMs) dari perusahaan AI terkemuka melalui API terpadu. Layanan ini memungkinkan membangun aplikasi generative AI tanpa mengelola infrastruktur.
Mengapa AWS Bedrock?
Manfaat Utama:- Multiple FMs: Akses Claude, Llama, Titan, dan lainnya
- Fully managed: Tidak perlu mengelola infrastruktur
- Aman: Privasi data dan dukungan VPC
- Customizable: Fine-tune model dengan data Anda
- Terintegrasi: Integrasi native dengan layanan AWS
- Anthropic Claude (Claude 3, Claude 2)
- Meta Llama 2
- Amazon Titan
- AI21 Labs Jurassic
- Cohere Command
- Stability AI (gambar)
Prerequisites
pip install boto3
Konfigurasi AWS CLI
aws configure
Enable akses model Bedrock di AWS Console
Quick Start
1. Basic Text Generation
import boto3
import json
Buat Bedrock runtime client
bedrock = boto3.client(
servicename="bedrock-runtime",
regionname="us-east-1"
)
Panggil model Claude
def generatetext(prompt):
body = json.dumps({
"anthropicversion": "bedrock-2023-05-31",
"maxtokens": 1024,
"messages": [
{"role": "user", "content": prompt}
]
})
response = bedrock.invokemodel(
modelId="anthropic.claude-3-sonnet-20240229-v1:0",
body=body
)
result = json.loads(response["body"].read())
return result["content"][0]["text"]
Generate teks
response = generatetext("Jelaskan machine learning dengan bahasa sederhana.")
print(response)
2. Streaming Response
def generatetextstreaming(prompt):
body = json.dumps({
"anthropic
version": "bedrock-2023-05-31",
"maxtokens": 1024,
"messages": [
{"role": "user", "content": prompt}
]
})
response = bedrock.invokemodelwithresponsestream(
modelId="anthropic.claude-3-sonnet-20240229-v1:0",
body=body
)
for event in response["body"]:
chunk = json.loads(event["chunk"]["bytes"])
if chunk["type"] == "contentblockdelta":
print(chunk["delta"]["text"], end="", flush=True)
generatetextstreaming("Tulis puisi pendek tentang AI.")
Bekerja dengan Model Berbeda
1. Amazon Titan
def invoketitan(prompt):
body = json.dumps({
"inputText": prompt,
"textGenerationConfig": {
"maxTokenCount": 1024,
"temperature": 0.7,
"topP": 0.9
}
})
response = bedrock.invokemodel(
modelId="amazon.titan-text-express-v1",
body=body
)
result = json.loads(response["body"].read())
return result["results"][0]["outputText"]
response = invoketitan("Apa itu cloud computing?")
print(response)
2. Meta Llama 2
def invokellama(prompt):
body = json.dumps({
"prompt": f"[INST] {prompt} [/INST]",
"max
genlen": 512,
"temperature": 0.7,
"top
p": 0.9
})
response = bedrock.invokemodel(
modelId="meta.llama2-70b-chat-v1",
body=body
)
result = json.loads(response["body"].read())
return result["generation"]
response = invokellama("Jelaskan neural networks.")
print(response)
3. Cohere Command
def invokecohere(prompt):
body = json.dumps({
"prompt": prompt,
"max
tokens": 500,
"temperature": 0.7
})
response = bedrock.invokemodel(
modelId="cohere.command-text-v14",
body=body
)
result = json.loads(response["body"].read())