

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

# Tutorial: Membangun agen Amazon Bedrock sederhana
<a name="agent-tutorial"></a>

Tutorial ini memandu Anda melalui pembuatan dan konfigurasi agen Amazon Bedrock sederhana menggunakan AWS Management Console. Anda akan belajar cara membuat agen yang dapat menanggapi kueri pengguna tentang tanggal dan waktu saat ini dengan menjalankan fungsi Lambda.

Dalam tutorial ini, Anda akan:

1. Buat fungsi Lambda — Bangun fungsi Python yang mengembalikan tanggal dan waktu saat ini saat dipanggil oleh agen Anda.

1. Buat agen Amazon Bedrock — Siapkan agen di konsol Amazon Bedrock dan konfigurasikan dengan instruksi untuk menangani kueri tanggal dan waktu.

1. Uji agen — Gunakan antarmuka pengujian bawaan untuk memverifikasi agen Anda dapat merespons permintaan tanggal dan waktu dengan benar.

1. Menyebarkan agen dengan alias — Buat versi agen Anda dan terapkan dengan alias untuk membuatnya tersedia untuk digunakan.

1. Hubungi agen dari kode Python — Pelajari cara berinteraksi secara terprogram dengan agen Anda menggunakan kode. AWS SDK for Python (Boto)

1. Bersihkan sumber daya - Hapus AWS sumber daya yang dibuat selama tutorial ini untuk menghindari biaya yang tidak perlu.

Pada akhir tutorial ini, Anda akan memiliki agen Amazon Bedrock yang berfungsi yang dapat memahami permintaan bahasa alami untuk informasi tanggal dan waktu dan merespons dengan data akurat dari fungsi Lambda Anda.

Tutorial ini didasarkan pada contoh kode agen dalam [GitHub repositori AWS](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/python/example_code/bedrock-agent/scenario_get_started_with_agents.py) dokumentasi. 

**Topics**
+ [Prasyarat](agent-tutorial-prereq.md)
+ [Langkah 1: Membuat fungsi Lambda](agent-tutorial-step1.md)
+ [Langkah 2: Buat agen Bedrock Amazon](agent-tutorial-step2.md)
+ [Langkah 3: Uji agen](agent-tutorial-step3.md)
+ [Langkah 4: Menyebarkan agen dengan alias](agent-tutorial-step4.md)
+ [Langkah 5: Hubungi agen dari Python kode](agent-tutorial-step5.md)
+ [Langkah 6: Bersihkan Sumber Daya](agent-tutorial-step6.md)
+ [Sumber daya tambahan](agent-tutorial-resources.md)

# Prasyarat
<a name="agent-tutorial-prereq"></a>

Sebelum Anda memulai tutorial ini, pastikan Anda memiliki yang berikut:
+ AWS akun dengan kebijakan terkelola berikut:
  + [AmazonBedrockFullAccess](https://docs.aws.amazon.com/bedrock/latest/userguide/security-iam-awsmanpol.html#security-iam-awsmanpol-AmazonBedrockFullAccess)
  + [AWSLambda\$1FullAccess](https://docs.aws.amazon.com/lambda/latest/dg/security-iam-awsmanpol.html#lambda-security-iam-awsmanpol-AWSLambda_FullAccess)
  + [IAMFullAkses](aws-managed-policy/latest/reference/IAMFullAccess.html)
**penting**  
Izin ini memungkinkan Anda untuk menjalankan tutorial ini dan tugas-tugas lain yang tidak terkait. Di lingkungan produksi pastikan untuk menetapkan hanya izin yang pengguna Anda perlukan untuk menjalankan aplikasi Anda.
+ Pemahaman dasar tentang peran dan izin IAM (Panduan Pengguna [IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html))
+ Keakraban dengan AWS Lambda fungsi (Panduan Pengembang [Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html))

# Langkah 1: Membuat fungsi Lambda
<a name="agent-tutorial-step1"></a>

Pertama, buat fungsi Lambda yang akan dipanggil agen Anda untuk melakukan tindakan. Dalam prosedur ini, Anda akan membuat fungsi Python Lambda yang mengembalikan tanggal dan waktu saat ini saat dipanggil. Anda akan mengatur fungsi dengan izin dasar, menambahkan kode yang diperlukan untuk menangani permintaan dari agen Amazon Bedrock Anda, dan menerapkan fungsi sehingga siap untuk terhubung ke agen Anda.

Untuk informasi selengkapnya, lihat [Membuat fungsi Lambda pertama Anda](https://docs.aws.amazon.com/lambda/latest/dg/getting-started.html) di panduan *AWS Lambda pengembang*.

**Buat fungsi Lambda**

1. Masuk ke Konsol AWS Manajemen dan buka konsol Lambda di. [https://console.aws.amazon.com/lambda/](https://console.aws.amazon.com/lambda/)

1. Pilih **Buat fungsi**.

1. Pilih **Penulis dari awal**.

1. Di bagian **Informasi dasar**:
   + Untuk **nama Fungsi**, masukkan nama fungsi (misalnya,`DateTimeFunction`). Perhatikan nama fungsi, Anda akan membutuhkannya di langkah 15 dari[Langkah 2: Buat agen Bedrock Amazon](agent-tutorial-step2.md).
   + Untuk **Runtime**, pilih **Python** 3.9 (atau versi pilihan Anda).
   + Untuk **Arsitektur**, biarkan tidak berubah.
   + Di **Izin**, pilih **Ubah peran eksekusi default**, lalu pilih **Buat peran baru dengan izin Lambda dasar**.

1. Pilih **Buat fungsi**.

1. Dalam **Ikhtisar fungsi**, di bawah **Fungsi ARN**, perhatikan Nama Sumber Daya Amazon (ARN) untuk fungsi tersebut. Anda membutuhkannya untuk langkah 24 dari[Langkah 2: Buat agen Bedrock Amazon](agent-tutorial-step2.md). 

1. Di tab **Kode**, ganti kode yang ada dengan yang berikut ini:

   ```
   # Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
   # SPDX-License-Identifier: Apache-2.0
   import datetime
   import json
   
   
   def lambda_handler(event, context):
       now = datetime.datetime.now()
   
       response = {"date": now.strftime("%Y-%m-%d"), "time": now.strftime("%H:%M:%S")}
   
       response_body = {"application/json": {"body": json.dumps(response)}}
   
       action_response = {
           "actionGroup": event["actionGroup"],
           "apiPath": event["apiPath"],
           "httpMethod": event["httpMethod"],
           "httpStatusCode": 200,
           "responseBody": response_body,
       }
   
       session_attributes = event["sessionAttributes"]
       prompt_session_attributes = event["promptSessionAttributes"]
   
       return {
           "messageVersion": "1.0",
           "response": action_response,
           "sessionAttributes": session_attributes,
           "promptSessionAttributes": prompt_session_attributes,
       }
   ```

1. Pilih **Deploy untuk menerapkan** fungsi Anda.

1. Pilih tab **Konfigurasi**.

1. Pilih **Izin**.

1. **Di bawah **pernyataan kebijakan berbasis sumber daya**, pilih Tambahkan izin.**

1. Dalam **pernyataan kebijakan Edit**, lakukan hal berikut:

   1. Pilih **AWS layanan**

   1. Di **Layanan** pilih **Lainnya**.

   1. Untuk **ID Pernyataan**, masukkan pengenal unik (misalnya,`AllowBedrockInvocation`).

   1. Untuk **Kepala Sekolah**, masukkan`bedrock.amazonaws.com`.

   1. Untuk **Sumber ARN**, masukkan `arn:aws:bedrock:region:AWS account ID:agent/*`

      Ganti `region` dengan AWS Region yang Anda gunakan, seperti`us-east-1`. Ganti ID `AWS account ID` AWS akun Anda.

   1. Untuk **Tindakan**, pilih`lambda:InvokeFunction`.

1. Pilih **Simpan**.

# Langkah 2: Buat agen Bedrock Amazon
<a name="agent-tutorial-step2"></a>

Selanjutnya, Anda akan membuat agen Amazon Bedrock. Dalam prosedur ini, Anda akan menyiapkan agen di konsol Amazon Bedrock, mengonfigurasinya dengan model foundation, dan memberikan instruksi yang mendefinisikan perilakunya sebagai chatbot ramah yang mengembalikan informasi tanggal dan waktu. Anda juga akan membuat grup tindakan dengan skema OpenAPI yang mendefinisikan titik akhir API yang dapat dipanggil agen Anda, khususnya titik akhir untuk mendapatkan tanggal dan waktu saat ini. Selain itu, Anda akan menambahkan kebijakan sebaris ke peran IAM agen Anda untuk memungkinkannya menjalankan fungsi Lambda Anda. Agen akan berfungsi sebagai antarmuka antara pengguna dan fungsi Lambda Anda, menafsirkan permintaan bahasa alami dan mengubahnya menjadi panggilan fungsi terstruktur untuk mengambil informasi tanggal dan waktu.

Untuk informasi selengkapnya, lihat [Buat dan konfigurasikan agen secara manual](agents-create.md).

**Buat agen Amazon Bedrock**

1. Masuk ke Konsol Manajemen AWS dengan identitas IAM yang memiliki izin untuk menggunakan konsol Amazon Bedrock. Kemudian, buka konsol Amazon Bedrock di [https://console.aws.amazon.com/bedrock](https://console.aws.amazon.com/bedrock).

1. Pastikan Anda berada di AWS [Wilayah](https://docs.aws.amazon.com/awsconsolehelpdocs/latest/gsg/select-region.html) yang mendukung [agen](agents-supported.md) Amazon Bedrock. 

1. Di panel navigasi, di bawah **Alat Builder**, pilih **Agen**.

1. Pilih **Buat agen**.

1. Untuk **Nama**, masukkan nama untuk agen Anda (misalnya,`MyBedrockAgent`).

1. (Opsional) Untuk **Deskripsi**, masukkan deskripsi.

1. Pilih **Buat**. Panel **pembangun Agen** terbuka.

1. Di bagian **Detail Agen**:
   + Untuk **peran sumber daya Agen**, pilih **Buat dan gunakan peran layanan baru**.
   + Untuk **Pilih model**, pilih model, sepertiClaude 3 Haiku.
   + Di bagian **Instruksi untuk Agen**, masukkan instruksi berikut.

     ```
     You are a friendly chat bot. You have access to a function called that returns
     information about the current date and time. When responding with date or time,
     please make sure to add the timezone UTC.
     ```

1. Pilih **Simpan**.

1. Pilih tab **Grup tindakan**.

1. Di **Grup tindakan**, pilih **Tambah**.

1. Untuk **Masukkan nama grup Tindakan**, masukkan nama untuk grup tindakan (misalnya,`TimeActions`).

1. (Opsional) Untuk **Deskripsi** Masukkan deskripsi untuk grup tindakan.

1. Dalam **tipe grup Action**, pilih **Tentukan dengan skema API**.

1. Dalam **Pemanggilan grup tindakan**, **pilih Pilih fungsi Lambda yang ada**. 

1. Di **Pilih fungsi Lambda**, pilih nama fungsi Lambda yang Anda buat. [Langkah 1: Membuat fungsi Lambda](agent-tutorial-step1.md)

1. Dalam **skema grup tindakan**, pilih **Tentukan melalui editor skema in-line**.

1. Di kotak teks skema **OpenAPI In-line**, ganti skema yang ada dengan skema OpenAPI YAMAL berikut:

   ```
   openapi: 3.0.0
   info:
     title: Time API
     version: 1.0.0
     description: API to get the current date and time.
   paths:
     /get-current-date-and-time:
       get:
         summary: Gets the current date and time.
         description: Gets the current date and time.
         operationId: getDateAndTime
         responses:
           '200':
             description: Gets the current date and time.
             content:
               'application/json':
                 schema:
                   type: object
                   properties:
                     date:
                       type: string
                       description: The current date
                     time:
                       type: string
                       description: The current time
   ```

1. Tinjau konfigurasi grup tindakan Anda dan pilih **Buat**.

1. Pilih **Simpan** untuk menyimpan perubahan Anda.

1. Pilih **Siapkan** untuk mempersiapkan agen.

1. Pilih **Simpan dan keluar** untuk menyimpan perubahan Anda dan keluar dari pembuat agen.

1. Di bagian **Ikhtisar agen**, di bawah **Izin**, pilih peran layanan IAM. Ini membuka peran di konsol IAM. 

1. Di konsol IAM, Pilih tab **Izin**.

1. Pilih **Tambahkan izin**, lalu pilih **Buat kebijakan sebaris**.

1. Pilih **JSON** dan tempel kebijakan berikut. Pastikan `Resource` adalah Amazon Resource Name (ARN) untuk fungsi Lambda Anda. Anda mencatat ARN di langkah 6 dari. [Langkah 1: Membuat fungsi Lambda](agent-tutorial-step1.md) 

1. Pilih **Berikutnya**.

1. Masukkan nama untuk kebijakan (misalnya,`BedrockAgentLambdaInvoke`).

1. Pilih **Buat kebijakan**.

# Langkah 3: Uji agen
<a name="agent-tutorial-step3"></a>

Dalam prosedur ini, Anda akan menguji draf kerja agen Anda menggunakan antarmuka pengujian bawaan di konsol Amazon Bedrock. Anda akan mengirim kueri bahasa alami yang menanyakan tanggal dan waktu saat ini, dan mengamati bagaimana agen memproses permintaan ini, memanggil fungsi Lambda Anda, dan mengembalikan respons yang diformat. Langkah pengujian ini memungkinkan Anda memverifikasi bahwa agen Anda memahami maksud pengguna dengan benar, memanggil fungsi Lambda dengan benar, dan menyajikan informasi dengan cara yang ramah pengguna.

Untuk informasi selengkapnya, lihat [Uji dan pecahkan masalah perilaku agen](agents-test.md).

**Untuk menguji agen**

1. Di konsol Amazon Bedrock, buka agen yang Anda buat [Langkah 2: Buat agen Bedrock Amazon](agent-tutorial-step2.md)

1. Pilih **Test** untuk membuka panel **Test**.

1. **Di dropdown **Alias**, pilih aliasTestAlias: Draf kerja.**

1. Di antarmuka obrolan, masukkan prompt yang akan memicu salah satu tindakan agen Anda, seperti:
   + **What time is it?**
   + **Can you tell me today's date?**

1. Agen akan memproses prompt Anda, memanggil fungsi Lambda jika perlu, dan mengembalikan respons.

1. (Opsional) Pilih **Tampilkan jejak** untuk melihat langkah-langkah [jejak](trace-events.md) untuk prompt yang Anda kirim ke model. Dalam jejak Anda akan melihat alasan yang digunakan model untuk menentukan kapan harus memanggil fungsi Lambda untuk mendapatkan tanggal dan waktu.

# Langkah 4: Menyebarkan agen dengan alias
<a name="agent-tutorial-step4"></a>

Setelah mengonfigurasi agen Anda, Anda perlu menerapkannya dengan alias agar tersedia untuk digunakan. Dalam prosedur ini, Anda akan mempersiapkan agen Anda untuk penyebaran dengan membuat alias dan versi agen Anda. Alias menunjuk ke versi, memungkinkan Anda untuk memanggil agen Anda melalui titik akhir yang stabil sambil mempertahankan kemampuan untuk memperbarui implementasi yang mendasarinya.

Untuk informasi selengkapnya, lihat [Menyebarkan dan menggunakan agen Amazon Bedrock di aplikasi Anda](agents-deploy.md).

**Menyebarkan agen dengan alias**

1. Di konsol Amazon Bedrock, buka agen yang Anda buat [Langkah 2: Buat agen Bedrock Amazon](agent-tutorial-step2.md)

1. Pilih **Buat Alias**.

1. Untuk **nama Alias**, masukkan nama untuk alias. Sebagai contoh, **DateTimeAliasAgentAlias**.

1. (Opsional) Untuk **Deskripsi**, masukkan deskripsi.

1. Untuk **Mengaitkan versi**, pilih **Buat versi baru dan kaitkan dengan alias ini**.

1. Pilih **Buat alias**.

1. Uji alias dengan mengikuti instruksi di[Langkah 3: Uji agen](agent-tutorial-step3.md). Untuk langkah 6, pilih alias yang baru saja Anda buat.

# Langkah 5: Hubungi agen dari Python kode
<a name="agent-tutorial-step5"></a>

Pada langkah ini, Anda akan belajar bagaimana berinteraksi secara terprogram dengan agen Anda menggunakan. AWS SDK for Python (Boto) Kode contoh menunjukkan cara menggunakan [InvokeAgent](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_InvokeAgent.html)operasi, yang memerlukan ID AGEN dan ID ALIAS sebagai parameter untuk memanggil agen Anda. Kode menunjukkan cara mengirim prompt ke agen Anda, memproses respons, dan menangani mode respons streaming dan non-streaming. Ini memungkinkan Anda untuk mengintegrasikan agen Bedrock Anda ke dalam aplikasi Python Anda sendiri.

Untuk informasi selengkapnya, lihat [Memanggil agen dari aplikasi Anda](agents-invoke-agent.md).

**Untuk memanggil agen dari Python kode**

1. Dapatkan ID untuk agen. Untuk informasi selengkapnya, lihat [Lihat informasi tentang agen](agents-view.md).

1. Dapatkan ID untuk alias agen. Untuk informasi selengkapnya, lihat [Lihat informasi tentang alias agen di Amazon Bedrock](agents-alias-view.md).

1. Jalankan kode berikut. Perbarui yang berikut ini:
   + **AGENT\$1ID** — ke ID agen Anda.
   + **ALIAS\$1ID** — ke ID Alias agen Anda.
   + **REGION** — ke AWS Wilayah tempat Anda membuat agen Anda, seperti`us-east-1`. 

   Untuk mengalirkan respons dari agen, ubah nilai `streamFinalResponse` ke`True`.

   ```
   import boto3
   import logging
   
   from botocore.exceptions import ClientError
   
   
   logging.basicConfig(level=logging.INFO)
   logger = logging.getLogger(__name__)
   
   def invoke_agent(client, agent_id, alias_id, prompt, session_id):
           response = client.invoke_agent(
               agentId=agent_id,
               agentAliasId=alias_id,
               enableTrace=True,
               sessionId = session_id,
               inputText=prompt,
               streamingConfigurations = { 
       "applyGuardrailInterval" : 20,
         "streamFinalResponse" : False
               }
           )
           completion = ""
           for event in response.get("completion"):
               #Collect agent output.
               if 'chunk' in event:
                   chunk = event["chunk"]
                   completion += chunk["bytes"].decode()
               
               # Log trace output.
               if 'trace' in event:
                   trace_event = event.get("trace")
                   trace = trace_event['trace']
                   for key, value in trace.items():
                       logging.info("%s: %s",key,value)
   
           print(f"Agent response: {completion}")
   
   
   if __name__ == "__main__":
   
       client=boto3.client(
               service_name="bedrock-agent-runtime",
               region_name="REGION") 
       
       agent_id = "AGENT_ID"
       alias_id = "ALIAS_ID"
       session_id = "123456"
       prompt = "What's the current time?"
   
       try:
   
           invoke_agent(client, agent_id, alias_id, prompt, session_id)
   
       except ClientError as e:
           print(f"Client error: {str(e)}")
           logger.error("Client error: %s", {str(e)})
   ```

# Langkah 6: Bersihkan Sumber Daya
<a name="agent-tutorial-step6"></a>

Setelah selesai dengan agen Amazon Bedrock Anda, Anda harus membersihkan sumber daya untuk menghindari biaya yang tidak perlu. Dalam prosedur akhir ini, Anda akan secara sistematis menghapus semua AWS sumber daya yang dibuat selama tutorial ini, termasuk agen Bedrock, fungsi Lambda, dan peran \$1IAM terkait. Proses pembersihan ini penting untuk manajemen biaya, karena mencegah biaya berkelanjutan untuk sumber daya yang tidak lagi Anda gunakan. Prosedur ini diatur menjadi tiga bagian: menghapus agen, menghapus fungsi Lambda, dan membersihkan peran IAM yang dibuat untuk mendukung layanan ini.

**Topics**
+ [Hapus agen](#agent-tutorial-step6-console-agent)
+ [Hapus fungsi Lambda](#agent-tutorial-step6-console-lambda)
+ [Hapus peran IAM](#agent-tutorial-step6-console-iam)

## Hapus agen
<a name="agent-tutorial-step6-console-agent"></a>

**Hapus agen**

1. Di konsol Amazon Bedrock, buka agen yang Anda buat [Langkah 2: Buat agen Bedrock Amazon](agent-tutorial-step2.md)

1. Pilih agen yang Anda buat.

1. Pilih **Hapus**.

1. Konfirmasi penghapusan.

## Hapus fungsi Lambda
<a name="agent-tutorial-step6-console-lambda"></a>

**Hapus fungsi Lambda**

1. Buka AWS Lambda konsol di [https://console.aws.amazon.com/lambda/](https://console.aws.amazon.com/lambda/).

1. Pilih fungsi Lambda yang Anda buat.

1. Pilih **Actions** (Tindakan), lalu **Delete** (Hapus).

1. Konfirmasi penghapusan.

## Hapus peran IAM
<a name="agent-tutorial-step6-console-iam"></a>

**Hapus peran IAM**

1. Buka konsol IAM di [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Di panel navigasi, pilih **Peran**.

1. Pilih peran layanan agen yang Anda buat.

1. Pilih **Hapus**.

1. Konfirmasi penghapusan.

1. Ulangi untuk peran eksekusi Lambda.

# Sumber daya tambahan
<a name="agent-tutorial-resources"></a>
+ [Panduan Pengguna Amazon Bedrock](https://docs.aws.amazon.com/bedrock/latest/userguide/what-is-bedrock.html)
+ [Referensi API Amazon Bedrock](https://docs.aws.amazon.com/bedrock/latest/APIReference/welcome.html)
+ [AWS Panduan Pengembang Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html)
+ [Panduan Pengguna IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html)
+ [Dokumentasi Agen Amazon Bedrock](https://docs.aws.amazon.com/bedrock/latest/userguide/agents.html)
+ [Spesifikasi OpenAPI](https://swagger.io/specification/)