

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

# AI & pembelajaran mesin
<a name="machinelearning-pattern-list"></a>

**Topics**
+ [Kaitkan AWS CodeCommit repositori di satu dengan Akun AWS Amazon SageMaker AI Studio Classic di akun lain](associate-an-aws-codecommit-repository-in-one-aws-account-with-sagemaker-studio-in-another-account.md)
+ [Secara otomatis mengekstrak konten dari file PDF menggunakan Amazon Ttract](automatically-extract-content-from-pdf-files-using-amazon-textract.md)
+ [Buat model peramalan awal dingin dengan menggunakan DeepAR untuk deret waktu di SageMaker Amazon AI Studio Lab](build-a-cold-start-forecasting-model-by-using-deepar.md)
+ [Membangun MLOps alur kerja dengan menggunakan Amazon SageMaker AI dan Azure DevOps](build-an-mlops-workflow-by-using-amazon-sagemaker-and-azure-devops.md)
+ [Konfigurasikan pencatatan pemanggilan model di Amazon Bedrock dengan menggunakan AWS CloudFormation](configure-bedrock-invocation-logging-cloudformation.md)
+ [Buat image container Docker kustom untuk SageMaker dan gunakan untuk pelatihan model di AWS Step Functions](create-a-custom-docker-container-image-for-sagemaker-and-use-it-for-model-training-in-aws-step-functions.md)
+ [Gunakan agen Amazon Bedrock untuk mengotomatiskan pembuatan kontrol entri akses di Amazon EKS melalui petunjuk berbasis teks](using-amazon-bedrock-agents-to-automate-creation-of-access-entry-controls-in-amazon-eks.md)
+ [Terapkan kasus penggunaan RAG AWS dengan menggunakan Terraform dan Amazon Bedrock](deploy-rag-use-case-on-aws.md)
+ [Menerapkan logika preprocessing ke dalam model MLdalam satu titik akhir menggunakan pipeline inferensi di Amazon SageMaker](deploy-preprocessing-logic-into-an-ml-model-in-a-single-endpoint-using-an-inference-pipeline-in-amazon-sagemaker.md)
+ [Menyebarkan validasi keamanan pengkodean real-time dengan menggunakan server MCP dengan Kiro dan asisten pengkodean lainnya](deploy-real-time-coding-security-validation-by-using-an-mcp-server-with-kiro-and-other-coding-assistants.md)
+ [Kembangkan asisten berbasis obrolan AI generatif tingkat lanjut dengan menggunakan RAG dan prompt ReAct](develop-advanced-generative-ai-chat-based-assistants-by-using-rag-and-react-prompting.md)
+ [Kembangkan asisten berbasis obrolan otomatis sepenuhnya dengan menggunakan agen dan basis pengetahuan Amazon Bedrock](develop-a-fully-automated-chat-based-assistant-by-using-amazon-bedrock-agents-and-knowledge-bases.md)
+ [Dokumentasikan pengetahuan kelembagaan dari input suara dengan menggunakan Amazon Bedrock dan Amazon Transcribe](document-institutional-knowledge-from-voice-inputs-by-using-amazon-bedrock-and-amazon-transcribe.md)
+ [Buat rekomendasi yang dipersonalisasi dan diberi peringkat ulang menggunakan Amazon Personalize](generate-personalized-and-re-ranked-recommendations-using-amazon-personalize.md)
+ [Merampingkan alur kerja pembelajaran mesin dari pengembangan lokal hingga eksperimen yang dapat diskalakan dengan menggunakan SageMaker AI dan Hydra](streamline-machine-learning-workflows-by-using-amazon-sagemaker.md)
+ [Terjemahkan bahasa alami ke dalam kueri DSL untuk OpenSearch dan kueri Elasticsearch](translate-natural-language-query-dsl-opensearch-elasticsearch.md)
+ [Gunakan Amazon Q Developer sebagai asisten pengkodean untuk meningkatkan produktivitas Anda](use-q-developer-as-coding-assistant-to-increase-productivity.md)
+ [Gunakan SageMaker Processing untuk rekayasa fitur terdistribusi dari kumpulan data ML skala terabyte](use-sagemaker-processing-for-distributed-feature-engineering-of-terabyte-scale-ml-datasets.md)
+ [Visualisasikan hasil AI/ML model menggunakan Flask dan AWS Elastic Beanstalk](visualize-ai-ml-model-results-using-flask-and-aws-elastic-beanstalk.md)
+ [Lebih banyak pola](machinelearning-more-patterns-pattern-list.md)

# Kaitkan AWS CodeCommit repositori di satu dengan Akun AWS Amazon SageMaker AI Studio Classic di akun lain
<a name="associate-an-aws-codecommit-repository-in-one-aws-account-with-sagemaker-studio-in-another-account"></a>

*Laurens van der Maas dan Aubrey Oosthuizen, Amazon Web Services*

## Ringkasan
<a name="associate-an-aws-codecommit-repository-in-one-aws-account-with-sagemaker-studio-in-another-account-summary"></a>

Pola ini memberikan instruksi dan kode tentang cara mengaitkan AWS CodeCommit repositori di satu Akun AWS (Akun A) dengan Amazon SageMaker AI Studio Classic di tempat lain Akun AWS (Akun B). Untuk menyiapkan asosiasi, Anda harus membuat kebijakan dan peran AWS Identity and Access Management (IAM) di Akun A dan kebijakan sebaris IAM di Akun B. Kemudian, Anda menggunakan skrip shell untuk mengkloning CodeCommit repositori dari Akun A ke Amazon AI Classic di Akun B. SageMaker 

## Prasyarat dan batasan
<a name="associate-an-aws-codecommit-repository-in-one-aws-account-with-sagemaker-studio-in-another-account-prereqs"></a>

**Prasyarat**
+ Dua [Akun AWS](https://aws.amazon.com/premiumsupport/knowledge-center/create-and-activate-aws-account/), satu berisi CodeCommit repositori dan yang lainnya berisi Domain SageMaker AI dengan pengguna
+ [Domain dan pengguna SageMaker AI](https://docs.aws.amazon.com/sagemaker/latest/dg/gs-studio-onboard.html) yang disediakan, dengan akses internet atau akses ke CodeCommit dan AWS Security Token Service (AWS STS) melalui titik akhir jaringan pribadi virtual (VPC)
+ Pemahaman dasar [IAM](https://docs.aws.amazon.com/iam/?id=docs_gateway)
+ Pemahaman dasar tentang [SageMaker AI Studio Classic](https://docs.aws.amazon.com/sagemaker/latest/dg/studio.html)
+ Pemahaman dasar tentang [Git](https://git-scm.com/) dan [CodeCommit ](https://docs.aws.amazon.com/codecommit/index.html)

**Keterbatasan**

Pola ini hanya berlaku untuk SageMaker AI Studio Classic, bukan RStudio di Amazon SageMaker AI.

## Arsitektur
<a name="associate-an-aws-codecommit-repository-in-one-aws-account-with-sagemaker-studio-in-another-account-architecture"></a>

**Tumpukan teknologi**
+ Amazon SageMaker AI
+ Amazon SageMaker AI Studio Klasik
+ AWS CodeCommit
+ AWS Identity and Access Management (IAM) 
+ Git

**Arsitektur target**

Diagram berikut menunjukkan arsitektur yang mengaitkan CodeCommit repositori dari Akun A ke SageMaker AI Studio Classic di Akun B.

![\[Diagram arsitektur untuk asosiasi lintas akun\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/images/pattern-img/d40df9eb-6ee2-4cb8-8257-051fa624e52a/images/abb89a66-fc8f-4e72-8f45-f0f44c2ec6ce.png)


Diagram menunjukkan alur kerja berikut:

1. Pengguna mengasumsikan `MyCrossAccountRepositoryContributorRole` peran dalam Akun A melalui peran, saat menggunakan `sts:AssumeRole` peran eksekusi SageMaker AI di SageMaker AI Studio Classic di Akun B. Peran yang diasumsikan mencakup CodeCommit izin untuk mengkloning dan berinteraksi dengan repositori yang ditentukan.

1. Pengguna melakukan perintah Git dari terminal sistem di SageMaker AI Studio Classic.

**Otomatisasi dan skala**

Pola ini terdiri dari langkah-langkah manual yang dapat diotomatisasi dengan menggunakan [AWS Cloud Development Kit (AWS CDK)](https://docs.aws.amazon.com/cdk/?id=docs_gateway), [AWS CloudFormation](https://docs.aws.amazon.com/cloudformation/?id=docs_gateway), atau [Terraform](https://www.terraform.io/).

## Alat
<a name="associate-an-aws-codecommit-repository-in-one-aws-account-with-sagemaker-studio-in-another-account-tools"></a>

**Alat AWS**
+ [Amazon SageMaker AI](https://docs.aws.amazon.com/sagemaker/?id=docs_gateway) adalah layanan pembelajaran mesin terkelola (ML) yang membantu Anda membangun dan melatih model ML, lalu menerapkannya ke lingkungan host yang siap produksi.
+ [Amazon SageMaker AI Studio Classic](https://docs.aws.amazon.com/sagemaker/latest/dg/studio.html) adalah lingkungan pengembangan terintegrasi (IDE) berbasis web untuk pembelajaran mesin yang memungkinkan Anda membuat, melatih, men-debug, menerapkan, dan memantau model pembelajaran mesin Anda.
+ [AWS CodeCommit](https://docs.aws.amazon.com/codecommit/latest/userguide/welcome.html)adalah layanan kontrol versi yang membantu Anda menyimpan dan mengelola repositori Git secara pribadi, tanpa perlu mengelola sistem kontrol sumber Anda sendiri.

  **Pemberitahuan**: AWS CodeCommit tidak lagi tersedia untuk pelanggan baru. Pelanggan yang sudah ada AWS CodeCommit dapat terus menggunakan layanan seperti biasa. [Pelajari selengkapnya](https://aws.amazon.com/blogs/devops/how-to-migrate-your-aws-codecommit-repository-to-another-git-provider/)
+ [AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) membantu Anda mengelola akses ke AWS sumber daya dengan aman dengan mengontrol siapa yang diautentikasi dan diberi wewenang untuk menggunakannya.

**Alat lainnya**
+ [Git](https://git-scm.com/) adalah sistem kontrol versi terdistribusi untuk melacak perubahan kode sumber selama pengembangan perangkat lunak.

## Epik
<a name="associate-an-aws-codecommit-repository-in-one-aws-account-with-sagemaker-studio-in-another-account-epics"></a>

### Buat kebijakan IAM dan peran IAM di Akun A
<a name="create-an-iam-policy-and-iam-role-in-account-a"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Buat kebijakan IAM untuk akses repositori di Akun A. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/associate-an-aws-codecommit-repository-in-one-aws-account-with-sagemaker-studio-in-another-account.html)Ini adalah praktik terbaik untuk membatasi cakupan kebijakan IAM Anda ke izin minimum yang diperlukan untuk kasus penggunaan Anda. | AWS DevOps | 
| Buat peran IAM untuk akses repositori di Akun A. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/associate-an-aws-codecommit-repository-in-one-aws-account-with-sagemaker-studio-in-another-account.html) | AWS DevOps | 

### Buat kebijakan inline IAM di Akun B
<a name="create-an-iam-inline-policy-in-account-b"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Lampirkan kebijakan inline ke peran eksekusi yang dilampirkan ke pengguna SageMaker Domain Anda di Akun B. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/associate-an-aws-codecommit-repository-in-one-aws-account-with-sagemaker-studio-in-another-account.html) | AWS DevOps | 

### Kloning repositori di SageMaker AI Studio Classic untuk Akun B
<a name="clone-the-repository-in-sm-studio-classic-for-account-b"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Buat skrip shell di SageMaker AI Studio Classic di Akun B. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/associate-an-aws-codecommit-repository-in-one-aws-account-with-sagemaker-studio-in-another-account.html) | AWS DevOps | 
| Memanggil skrip shell dari terminal sistem. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/associate-an-aws-codecommit-repository-in-one-aws-account-with-sagemaker-studio-in-another-account.html)Anda telah mengkloning CodeCommit repositori Anda di akun lintas SageMaker AI Studio. Anda sekarang dapat melakukan semua perintah Git dari terminal sistem. | AWS DevOps | 

## Informasi tambahan
<a name="associate-an-aws-codecommit-repository-in-one-aws-account-with-sagemaker-studio-in-another-account-additional"></a>

**Contoh kebijakan IAM**

Jika Anda menggunakan kebijakan contoh ini, lakukan hal berikut:
+ Ganti `<CodeCommit_Repository_Region>` dengan Wilayah AWS untuk repositori.
+ Ganti `<Account_A_ID>` dengan ID akun untuk Akun A.
+ Ganti `<CodeCommit_Repository_Name>` dengan nama CodeCommit repositori Anda di Akun A.

```
{
"Version": "2012-10-17",		 	 	 
"Statement": [
    {
        "Effect": "Allow",
        "Action": [
            "codecommit:BatchGet*",
            "codecommit:Create*",
            "codecommit:DeleteBranch",
            "codecommit:Get*",
            "codecommit:List*",
            "codecommit:Describe*",
            "codecommit:Put*",
            "codecommit:Post*",
            "codecommit:Merge*",
            "codecommit:Test*",
            "codecommit:Update*",
            "codecommit:GitPull",
            "codecommit:GitPush"
        ],
        "Resource": [
            "arn:aws:codecommit:<CodeCommit_Repository_Region>:<Account_A_ID>:<CodeCommit_Repository_Name>"
        ]
    }
]
}
```

**Contoh skrip shell SageMaker AI**

Jika Anda menggunakan contoh skrip ini, lakukan hal berikut:
+ Ganti `<Account_A_ID>` dengan ID akun untuk Akun A.
+ Ganti `<Account_A_Role_Name>` dengan nama peran IAM yang Anda buat sebelumnya.
+ Ganti `<CodeCommit_Repository_Region>` dengan Wilayah AWS untuk repositori.
+ Ganti `<CodeCommit_Repository_Name>` dengan nama CodeCommit repositori Anda di Akun A.

```
#!/usr/bin/env bash
#Launch from system terminal
pip install --quiet git-remote-codecommit

mkdir -p ~/.aws
touch ~/.aws/config

echo "[profile CrossAccountAccessProfile]
region = <CodeCommit_Repository_Region>
credential_source=EcsContainer
role_arn = arn:aws:iam::<Account_A_ID>:role/<Account_A_Role_Name>
output = json" > ~/.aws/config

echo '[credential "https://git-codecommit.<CodeCommit_Repository_Region>.amazonaws.com"]
        helper = !aws codecommit credential-helper $@ --profile CrossAccountAccessProfile
        UseHttpPath = true' > ~/.gitconfig
        
git clone codecommit::<CodeCommit_Repository_Region>://CrossAccountAccessProfile@<CodeCommit_Repository_Name>
```

# Secara otomatis mengekstrak konten dari file PDF menggunakan Amazon Ttract
<a name="automatically-extract-content-from-pdf-files-using-amazon-textract"></a>

*Tianxia Jia, Amazon Web Services*

## Ringkasan
<a name="automatically-extract-content-from-pdf-files-using-amazon-textract-summary"></a>

Banyak organisasi perlu mengekstrak informasi dari file PDF yang diunggah ke aplikasi bisnis mereka. Misalnya, organisasi mungkin perlu mengekstrak informasi secara akurat dari file PDF pajak atau medis untuk analisis pajak atau pemrosesan klaim medis.

Di Amazon Web Services (AWS) Cloud, Amazon Textract secara otomatis mengekstrak informasi (misalnya, teks cetak, formulir, dan tabel) dari file PDF dan menghasilkan file berformat JSON yang berisi informasi dari file PDF asli. Anda dapat menggunakan Amazon Ttract di AWS Management Console atau dengan menerapkan panggilan API. Kami menyarankan Anda menggunakan [panggilan API terprogram](https://aws.amazon.com/textract/faqs/) untuk menskalakan dan secara otomatis memproses sejumlah besar file PDF.

Saat Amazon Textract memproses file, ia membuat daftar `Block` objek berikut: halaman, baris dan kata-kata teks, formulir (pasangan nilai kunci), tabel dan sel, dan elemen pemilihan. Informasi objek lainnya juga disertakan, misalnya, [kotak pembatas](https://docs.aws.amazon.com/textract/latest/dg/API_BoundingBox.html), interval kepercayaan IDs, dan hubungan. Amazon Ttract mengekstrak informasi konten sebagai string. Nilai data yang diidentifikasi dan diubah dengan benar diperlukan karena dapat lebih mudah digunakan oleh aplikasi hilir Anda. 

Pola ini menjelaskan step-by-step alur kerja untuk menggunakan Amazon Ttract untuk secara otomatis mengekstrak konten dari file PDF dan memprosesnya menjadi output yang bersih. Pola menggunakan teknik pencocokan template untuk mengidentifikasi dengan benar bidang yang diperlukan, nama kunci, dan tabel, dan kemudian menerapkan koreksi pasca-pemrosesan untuk setiap tipe data. Anda dapat menggunakan pola ini untuk memproses berbagai jenis file PDF dan Anda kemudian dapat menskalakan dan mengotomatiskan alur kerja ini untuk memproses file PDF yang memiliki format yang identik.   

## Prasyarat dan batasan
<a name="automatically-extract-content-from-pdf-files-using-amazon-textract-prereqs"></a>

**Prasyarat**
+ Akun AWS aktif.
+ Bucket Amazon Simple Storage Service (Amazon S3) yang ada untuk menyimpan file PDF setelah dikonversi ke format JPEG untuk diproses oleh Amazon Textract. Untuk informasi selengkapnya tentang bucket S3, lihat [ikhtisar Bucket di dokumentasi](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingBucket.html) Amazon S3.
+ Notebook `Textract_PostProcessing.ipynb` Jupyter (terlampir), diinstal dan dikonfigurasi. Untuk informasi selengkapnya tentang notebook Jupyter, lihat [Membuat buku catatan Jupyter di dokumentasi Amazon](https://docs.aws.amazon.com/sagemaker/latest/dg/ex1-prepare.html). SageMaker 
+ File PDF yang ada yang memiliki format identik.
+ Pemahaman tentang Python.

**Batasan**
+ File PDF Anda harus berkualitas baik dan dapat dibaca dengan jelas. File PDF asli direkomendasikan, tetapi Anda dapat menggunakan dokumen yang dipindai yang dikonversi ke format PDF jika semua kata individual jelas. Untuk informasi selengkapnya tentang ini, lihat [praprosesan dokumen PDF dengan Amazon Textract: Deteksi dan penghapusan visual](https://aws.amazon.com/blogs/machine-learning/process-text-and-images-in-pdf-documents-with-amazon-textract/) di Blog AWS Machine Learning.
+ Untuk file multipage, Anda dapat menggunakan operasi asinkron atau membagi file PDF menjadi satu halaman dan menggunakan operasi sinkron. Untuk informasi selengkapnya tentang dua opsi ini, lihat [Mendeteksi dan menganalisis teks dalam dokumen multihalaman](https://docs.aws.amazon.com/textract/latest/dg/async.html) serta [Mendeteksi dan menganalisis teks dalam dokumen satu halaman dalam dokumentasi](https://docs.aws.amazon.com/textract/latest/dg/sync.html) Amazon Textract.

## Arsitektur
<a name="automatically-extract-content-from-pdf-files-using-amazon-textract-architecture"></a>

Alur kerja pola ini pertama-tama menjalankan Amazon Ttract pada contoh file PDF *(Jalankan pertama kali*) dan kemudian menjalankannya pada file PDF yang memiliki format identik dengan PDF pertama *(*Ulangi jalankan). Diagram berikut menunjukkan gabungan alur kerja *First-time run* dan *Repeat run* yang secara otomatis dan berulang kali mengekstrak konten dari file PDF dengan format yang identik.

![\[Menggunakan Amazon Ttract untuk mengekstrak konten dari file PDF\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/images/pattern-img/2d724523-2cab-42c9-a773-65857014d9ec/images/9e20070f-3e0c-46aa-aa98-a8b1eb3395dc.png)


 

Diagram menunjukkan alur kerja berikut untuk pola ini:

1. Konversi file PDF ke dalam format JPEG dan simpan dalam ember S3. 

1. Panggil Amazon Texttract API dan uraikan file JSON respons Amazon Textract. 

1. Edit file JSON dengan menambahkan `KeyName:DataType` pasangan yang benar untuk setiap bidang yang diperlukan. Buat `TemplateJSON` file untuk tahap *Repeat run*.

1. Tentukan fungsi koreksi pasca-pemrosesan untuk setiap tipe data (misalnya, float, integer, dan tanggal).

1. Siapkan file PDF yang memiliki format yang identik dengan file PDF pertama Anda.

1. Hubungi Amazon Texttract API dan uraikan respons Amazon Textract JSON.

1. Cocokkan file JSON yang diurai dengan file. `TemplateJSON`

1. Menerapkan koreksi pasca-pemrosesan.

File keluaran JSON akhir memiliki yang benar `KeyName` dan `Value` untuk setiap bidang yang diperlukan.

**Tumpukan teknologi target**
+ Amazon SageMaker 
+ Amazon S3 
+ Amazon Textract

**Otomatisasi dan skala**

Anda dapat mengotomatiskan alur kerja *Repeat run* dengan menggunakan fungsi AWS Lambda yang memulai Amazon Ttract saat file PDF baru ditambahkan ke Amazon S3. Amazon Textract kemudian menjalankan skrip pemrosesan dan output akhir dapat disimpan ke lokasi penyimpanan. Untuk informasi selengkapnya tentang hal ini, lihat [Menggunakan pemicu Amazon S3 untuk menjalankan fungsi Lambda dalam dokumentasi Lambda](https://docs.aws.amazon.com/lambda/latest/dg/with-s3-example.html).

## Alat
<a name="automatically-extract-content-from-pdf-files-using-amazon-textract-tools"></a>
+ [Amazon SageMaker](https://docs.aws.amazon.com/sagemaker/latest/dg/whatis.html) adalah layanan ML yang dikelola sepenuhnya yang membantu Anda membuat dan melatih model ML dengan cepat dan mudah, lalu langsung menerapkannya ke lingkungan host yang siap produksi.
+ [Amazon Simple Storage Service (Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html)) adalah layanan penyimpanan objek berbasis cloud yang membantu Anda menyimpan, melindungi, dan mengambil sejumlah data.
+ [Amazon Textract](https://docs.aws.amazon.com/textract/latest/dg/what-is.html) memudahkan untuk menambahkan deteksi dan analisis teks dokumen ke aplikasi Anda.

## Epik
<a name="automatically-extract-content-from-pdf-files-using-amazon-textract-epics"></a>

### Lari pertama kali
<a name="first-time-run"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Konversi file PDF. | [Siapkan file PDF untuk pertama kali dijalankan dengan membaginya menjadi satu halaman dan mengubahnya menjadi format JPEG untuk operasi sinkron Amazon Textract ().](https://docs.aws.amazon.com/textract/latest/dg/sync.html) `Syn API`Anda juga dapat menggunakan [operasi asinkron](https://docs.aws.amazon.com/textract/latest/dg/async.html) Amazon Textract (`Asyn API`) untuk file PDF multihalaman. | Ilmuwan data, Pengembang | 
| Mengurai respons Amazon Texttract JSON. | Buka `Textract_PostProcessing.ipynb` notebook Jupyter (terlampir) dan panggil Amazon Textract API dengan menggunakan kode berikut:<pre>response = textract.analyze_document(<br />Document={<br />        'S3Object': {<br />            'Bucket': BUCKET,<br />            'Name': '{}'.format(filename)<br />                    }<br />                },<br />        FeatureTypes=["TABLES", "FORMS"])</pre>Parse JSON respon ke dalam bentuk dan tabel dengan menggunakan kode berikut:<pre>parseformKV=form_kv_from_JSON(response)<br />parseformTables=get_tables_fromJSON(response)</pre> | Ilmuwan data, Pengembang | 
| Edit file TemplateJSON. | Edit JSON yang diurai untuk masing-masing `KeyName` dan yang sesuai `DataType` (misalnya, string, float, integer, atau tanggal), dan header tabel (misalnya, dan). `ColumnNames` `RowNames`Template ini digunakan untuk setiap jenis file PDF individu, yang berarti bahwa template dapat digunakan kembali untuk file PDF yang memiliki format yang identik. | Ilmuwan data, Pengembang | 
| Tentukan fungsi koreksi pasca-pemrosesan. | Nilai dalam respons Amazon Textract untuk `TemplateJSON` file tersebut adalah string. Tidak ada diferensiasi untuk tanggal, float, integer, atau mata uang. Nilai-nilai ini harus dikonversi ke tipe data yang benar untuk kasus penggunaan hilir Anda. Perbaiki setiap tipe data sesuai dengan `TemplateJSON` file dengan menggunakan kode berikut:<pre>finalJSON=postprocessingCorrection(parsedJSON,templateJSON)</pre> | Ilmuwan data, Pengembang | 

### Ulangi lari
<a name="repeat-run"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Siapkan file PDF. | [Siapkan file PDF dengan membaginya menjadi satu halaman dan mengubahnya menjadi format JPEG untuk operasi sinkron Amazon Textract ().](https://docs.aws.amazon.com/textract/latest/dg/sync.html) `Syn API`Anda juga dapat menggunakan [operasi asinkron](https://docs.aws.amazon.com/textract/latest/dg/async.html) Amazon Textract (`Asyn API`) untuk file PDF multihalaman. | Ilmuwan data, Pengembang | 
| Hubungi Amazon Texttract API. | Hubungi Amazon Texttract API dengan menggunakan kode berikut:<pre>response = textract.analyze_document(<br />        Document={<br />        'S3Object': {<br />            'Bucket': BUCKET,<br />            'Name': '{}'.format(filename)<br />                    }<br />                },<br />        FeatureTypes=["TABLES", "FORMS"])</pre> | Ilmuwan data, Pengembang | 
| Mengurai respons Amazon Texttract JSON. | Parse JSON respon ke dalam bentuk dan tabel dengan menggunakan kode berikut:<pre>parseformKV=form_kv_from_JSON(response)<br />parseformTables=get_tables_fromJSON(response)</pre> | Ilmuwan data, Pengembang | 
| Muat file TemplateJSON dan cocokkan dengan JSON yang diurai. | Gunakan `TemplateJSON` file untuk mengekstrak pasangan kunci-nilai yang benar dan tabel dengan menggunakan perintah berikut:<pre>form_kv_corrected=form_kv_correction(parseformKV,templateJSON)<br />form_table_corrected=form_Table_correction(parseformTables, templateJSON)<br />form_kv_table_corrected_final={**form_kv_corrected , **form_table_corrected}</pre> | Ilmuwan data, Pengembang | 
| Koreksi pasca pemrosesan. | Gunakan `DataType` dalam `TemplateJSON` file dan fungsi pasca-pemrosesan untuk mengoreksi data dengan menggunakan kode berikut: <pre>finalJSON=postprocessingCorrection(form_kv_table_corrected_final,templateJSON)</pre> | Ilmuwan data, Pengembang | 

## Sumber daya terkait
<a name="automatically-extract-content-from-pdf-files-using-amazon-textract-resources"></a>
+ [Secara otomatis mengekstrak teks dan data terstruktur dari dokumen dengan Amazon Ttract](https://aws.amazon.com/blogs/machine-learning/automatically-extract-text-and-structured-data-from-documents-with-amazon-textract/)
+ [Ekstrak teks dan data terstruktur dengan Amazon Textract](https://aws.amazon.com/getting-started/hands-on/extract-text-with-amazon-textract/)
+ [Sumber daya Amazon Texttract](https://aws.amazon.com/textract/resources/?blog-posts-cards.sort-by=item.additionalFields.createdDate&blog-posts-cards.sort-order=desc)

## Lampiran
<a name="attachments-2d724523-2cab-42c9-a773-65857014d9ec"></a>

[Untuk mengakses konten tambahan yang terkait dengan dokumen ini, unzip file berikut: attachment.zip](samples/p-attach/2d724523-2cab-42c9-a773-65857014d9ec/attachments/attachment.zip)

# Buat model peramalan awal dingin dengan menggunakan DeepAR untuk deret waktu di SageMaker Amazon AI Studio Lab
<a name="build-a-cold-start-forecasting-model-by-using-deepar"></a>

*Ivan Cui dan Eyal Shacham, Amazon Web Services*

## Ringkasan
<a name="build-a-cold-start-forecasting-model-by-using-deepar-summary"></a>

Apakah Anda mengalokasikan sumber daya secara lebih efisien untuk lalu lintas web, memperkirakan permintaan pasien untuk kebutuhan staf, atau mengantisipasi penjualan produk perusahaan, peramalan adalah alat yang penting. Peramalan awal dingin membangun perkiraan untuk deret waktu yang memiliki sedikit data historis, seperti produk baru yang baru saja memasuki pasar ritel. Pola ini menggunakan algoritme peramalan Amazon SageMaker AI DeepAR untuk melatih model peramalan awal dingin dan menunjukkan cara melakukan peramalan pada item start dingin.

 

[DeepAR](https://docs.aws.amazon.com/sagemaker/latest/dg/deepar.html) adalah algoritma pembelajaran yang diawasi untuk meramalkan deret waktu skalar (satu dimensi) menggunakan jaringan saraf berulang (RNN). DeepAR mengambil pendekatan pelatihan satu model bersama-sama di semua rangkaian waktu deret waktu produk terkait. 

Metode peramalan deret waktu tradisional seperti autoregressive integrated moving average (ARIMA) atau exponential smoothing (ETS) sangat bergantung pada deret waktu historis dari setiap produk individu. Oleh karena itu, metode tersebut tidak efektif untuk peramalan awal dingin. Ketika kumpulan data Anda berisi ratusan deret waktu terkait, DeepAR mengungguli metode ARIMA dan ETS standar. Anda juga dapat menggunakan model terlatih untuk menghasilkan perkiraan untuk deret waktu baru yang mirip dengan deret waktu yang telah dilatihnya.

## Prasyarat dan batasan
<a name="build-a-cold-start-forecasting-model-by-using-deepar-prereqs"></a>

**Prasyarat**
+ Aktif Akun AWS.
+ [Domain SageMaker AI Amazon.](https://docs.aws.amazon.com/sagemaker/latest/dg/gs-studio-onboard.html)
+ Aplikasi [lab Amazon SageMaker AI Studio](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-lab.html) atau Jupiter.
+ Bucket Amazon Simple Storage Service (Amazon S3) dengan izin baca dan tulis.
+ Pengetahuan tentang pemrograman dengan Python.
+ Pengetahuan tentang menggunakan notebook Jupyter.

**Batasan**
+ Memanggil model perkiraan tanpa titik data historis akan mengembalikan kesalahan. Memohon model dengan titik data historis minimal akan mengembalikan prediksi yang tidak akurat dengan keyakinan tinggi. Pola ini menyarankan pendekatan untuk menyelesaikan keterbatasan peramalan awal dingin yang diketahui ini.
+ Beberapa Layanan AWS tidak tersedia di semua Wilayah AWS. Untuk ketersediaan Wilayah, lihat [layanan AWS menurut Wilayah](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/). Untuk titik akhir tertentu, lihat [Titik akhir dan kuota layanan](https://docs.aws.amazon.com/general/latest/gr/aws-service-information.html), dan pilih tautan untuk layanan.

**Versi produk**
+ Python versi 3.10 atau yang lebih baru.
+ Notebook pola diuji di Amazon SageMaker AI Studio pada instance ml.t3.medium dengan kernel Python 3 (Data Science).

## Arsitektur
<a name="build-a-cold-start-forecasting-model-by-using-deepar-architecture"></a>

Diagram berikut menunjukkan alur kerja dan komponen arsitektur untuk pola ini.

![\[Alur kerja untuk membangun model peramalan awal dingin menggunakan SageMaker dan Amazon S3.\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/images/pattern-img/98d021d3-96d2-40a9-b0ce-717934652173/images/d97d66a0-8eef-4d30-ac5f-4c6c79cf6c9f.png)


Alur kerja melakukan tugas-tugas berikut:

1. File input data pelatihan dan pengujian disintesis dan kemudian diunggah ke bucket Amazon S3. Data ini mencakup beberapa deret waktu dengan fitur kategoris dan dinamis, bersama dengan nilai target (untuk diprediksi). Notebook Jupyter memvisualisasikan data untuk lebih memahami persyaratan data pelatihan dan nilai prediksi yang diharapkan.

1. Pekerjaan tuner hyperparameters dibuat untuk melatih model dan menemukan model terbaik berdasarkan metrik yang telah ditentukan.

1. File input diunduh dari bucket Amazon S3 ke setiap instance pekerjaan penyetelan hyperparameters.

1. Setelah pekerjaan tuner memilih model terbaik berdasarkan ambang batas yang telah ditentukan tuner, model tersebut digunakan sebagai titik akhir AI. SageMaker 

1. Model yang diterapkan kemudian siap untuk dipanggil di mana prediksinya divalidasi terhadap data pengujian.

Notebook menunjukkan seberapa baik model memprediksi nilai target ketika jumlah titik data historis yang memadai tersedia. Namun, ketika kami menggunakan model dengan titik data historis yang lebih sedikit (yang mewakili produk dingin), prediksi model tidak cocok dengan data pengujian asli bahkan dalam tingkat kepercayaan model. Dalam polanya, model baru dibangun untuk produk dingin di mana panjang konteks awalnya (titik prediksi) didefinisikan sebagai jumlah titik sejarah yang tersedia, dan model baru dilatih secara iteratif saat titik data baru diperoleh. Notebook menunjukkan bahwa model akan memiliki prediksi yang akurat selama jumlah titik data historis mendekati panjang konteksnya.

## Alat
<a name="build-a-cold-start-forecasting-model-by-using-deepar-tools"></a>

**Layanan AWS**
+ [AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) membantu Anda mengelola akses ke AWS sumber daya dengan aman dengan mengontrol siapa yang diautentikasi dan diberi wewenang untuk menggunakannya.
+ [Amazon SageMaker AI](https://docs.aws.amazon.com/sagemaker/?id=docs_gateway) adalah layanan pembelajaran mesin terkelola (ML) yang membantu Anda membangun dan melatih model ML, lalu menerapkannya ke lingkungan host yang siap produksi.
+ [Amazon SageMaker AI Studio](https://docs.aws.amazon.com/sagemaker/latest/dg/studio.html) adalah lingkungan pengembangan terintegrasi (IDE) berbasis web untuk ML yang memungkinkan Anda membuat, melatih, men-debug, menerapkan, dan memantau model ML Anda.
+ [Amazon Simple Storage Service (Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html)) adalah layanan penyimpanan objek berbasis cloud yang membantu Anda menyimpan, melindungi, dan mengambil sejumlah data.

**Alat lainnya**
+ [Python adalah bahasa](https://www.python.org/) pemrograman komputer tujuan umum.

**Repositori kode**

Kode untuk pola ini tersedia di repositori GitHub [DeepAR- ColdProduct -Pattern](https://github.com/aws-samples/DeepAR-ColdProduct-Pattern).

## Praktik terbaik
<a name="build-a-cold-start-forecasting-model-by-using-deepar-best-practices"></a>
+ Latih model Anda di lingkungan virtual, dan selalu gunakan kontrol versi untuk upaya reproduktifitas tertinggi.
+ Sertakan sebanyak mungkin fitur kategoris berkualitas tinggi untuk mendapatkan model prediktif tertinggi.
+ Pastikan bahwa metadata berisi item kategoris yang serupa agar model dapat menyimpulkan prediksi produk start dingin secara memadai.
+ Jalankan pekerjaan tuning hyperparameter untuk mendapatkan model prediktif tertinggi.
+ Dalam pola ini, model yang Anda buat memiliki panjang konteks 24 jam, yang berarti akan memprediksi 24 jam ke depan. Jika Anda mencoba memprediksi 24 jam ke depan ketika Anda memiliki data kurang dari 24 jam secara historis, akurasi prediksi model menurun secara linier berdasarkan jumlah titik data historis. Untuk mengurangi masalah ini, buat model baru untuk setiap set titik data historis hingga angka ini mencapai panjang prediksi (konteks) yang diinginkan. Misalnya, mulailah dengan model panjang konteks 2 jam, kemudian tingkatkan model secara progresif menjadi 4 jam, 8 jam, 16 jam, dan 24 jam.

## Epik
<a name="build-a-cold-start-forecasting-model-by-using-deepar-epics"></a>

### Mulai aplikasi SageMaker AI Studio Classic Anda
<a name="start-your-sm-studio-classic-application"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Mulai lingkungan notebook Anda. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/build-a-cold-start-forecasting-model-by-using-deepar.html)Untuk informasi selengkapnya, lihat [Meluncurkan Amazon SageMaker AI Studio](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-updated-launch.html) di dokumentasi SageMaker AI. | Ilmuwan data | 

### Buat dan aktifkan notebook
<a name="create-and-activate-the-notebook"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Siapkan lingkungan virtual Anda untuk pelatihan model. | Untuk mengatur lingkungan virtual Anda untuk pelatihan model, lakukan hal berikut:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/build-a-cold-start-forecasting-model-by-using-deepar.html)Untuk informasi selengkapnya, lihat [Mengunggah File ke SageMaker AI Studio Classic](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-tasks-files.html) dalam dokumentasi SageMaker AI. | Ilmuwan data | 
| Buat dan validasi model peramalan. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/build-a-cold-start-forecasting-model-by-using-deepar.html) | Ilmuwan data | 

## Sumber daya terkait
<a name="build-a-cold-start-forecasting-model-by-using-deepar-resources"></a>
+ [DeepAR Hyperparameter](https://docs.aws.amazon.com/sagemaker/latest/dg/deepar_hyperparameters.html)
+ [Perkiraan permintaan untuk pengenalan produk baru dengan menggunakan layanan pembelajaran AWS mesin](https://docs.aws.amazon.com/prescriptive-guidance/latest/forecast-demand-new-product/introduction.html)
+ [Luncurkan Amazon SageMaker AI Studio Classic](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-launch.html)
+ [Gunakan algoritma SageMaker peramalan AI DeepAR](https://docs.aws.amazon.com/sagemaker/latest/dg/deepar.html)

# Membangun MLOps alur kerja dengan menggunakan Amazon SageMaker AI dan Azure DevOps
<a name="build-an-mlops-workflow-by-using-amazon-sagemaker-and-azure-devops"></a>

*Deepika Kumar, Sara van de Moosdijk, dan Philips Kokoh Prasetyo, Amazon Web Services*

## Ringkasan
<a name="build-an-mlops-workflow-by-using-amazon-sagemaker-and-azure-devops-summary"></a>

Operasi pembelajaran mesin (MLOps) adalah seperangkat praktik yang mengotomatiskan dan menyederhanakan alur kerja dan penerapan pembelajaran mesin (ML). MLOps berfokus pada otomatisasi siklus hidup ML. Ini membantu memastikan bahwa model tidak hanya dikembangkan tetapi juga digunakan, dipantau, dan dilatih ulang secara sistematis dan berulang kali. Ini membawa DevOps prinsip ke ML. MLOps menghasilkan penerapan model ML yang lebih cepat, akurasi yang lebih baik dari waktu ke waktu, dan jaminan yang lebih kuat bahwa model tersebut memberikan nilai bisnis yang nyata.

Organizations sering memiliki DevOps alat dan solusi penyimpanan data yang ada sebelum memulai MLOps perjalanan mereka. Pola ini menampilkan cara memanfaatkan kekuatan Microsoft Azure dan. AWS Ini membantu Anda mengintegrasikan Azure DevOps dengan Amazon SageMaker AI untuk membuat MLOps alur kerja.

Solusinya menyederhanakan kerja antara Azure dan. AWS Anda dapat menggunakan Azure untuk pengembangan dan AWS pembelajaran mesin. Ini mempromosikan proses yang efektif untuk membuat model pembelajaran mesin dari awal hingga akhir, termasuk penanganan data, pelatihan, dan penyebaran. AWS Untuk efisiensi, Anda mengelola proses ini melalui DevOps pipa Azure. Solusi ini berlaku untuk operasi model dasar (FMOps) dan operasi model bahasa besar (LLMOps) dalam AI generatif, yang mencakup fine-tuning, database vektor, dan manajemen yang cepat.

## Prasyarat dan batasan
<a name="build-an-mlops-workflow-by-using-amazon-sagemaker-and-azure-devops-prereqs"></a>

**Prasyarat**
+ **Langganan Azure** — Akses ke layanan Azure, seperti Azure DevOps, untuk menyiapkan pipeline integrasi berkelanjutan dan penyebaran berkelanjutan (CI/CD).
+ **Active AWS Active Account** — Izin untuk menggunakan yang Layanan AWS digunakan dalam pola ini.
+ **Data** — Akses ke data historis untuk melatih model pembelajaran mesin.
+ **Keakraban dengan konsep ML** — Pemahaman tentang Python, Notebook Jupyter, dan pengembangan model pembelajaran mesin.
+ **Konfigurasi keamanan** — Konfigurasi peran, kebijakan, dan izin yang tepat di Azure dan AWS untuk memastikan transfer dan akses data yang aman.
+ **(Opsional) Database vektor** — Jika Anda menggunakan pendekatan Retrieval Augmented Generation (RAG) dan layanan pihak ketiga untuk database vektor, Anda memerlukan akses ke database vektor eksternal.

**Batasan**
+ Panduan ini tidak membahas transfer data lintas cloud yang aman. Untuk informasi selengkapnya tentang transfer data lintas cloud, lihat [AWS Solusi untuk Hybrid dan Multicloud](https://aws.amazon.com/hybrid-multicloud/).
+ Solusi multicloud dapat meningkatkan latensi untuk pemrosesan data real-time dan inferensi model.
+ Panduan ini memberikan salah satu contoh MLOps arsitektur multi-akun. Penyesuaian diperlukan berdasarkan pembelajaran dan AWS strategi mesin Anda.
+ Panduan ini tidak menjelaskan penggunaan AI/ML layanan selain Amazon SageMaker AI.
+ Beberapa Layanan AWS tidak tersedia di semua Wilayah AWS. Untuk ketersediaan Wilayah, lihat [Layanan AWS berdasarkan Wilayah](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/). Untuk titik akhir tertentu, lihat halaman [titik akhir dan kuota Layanan](https://docs.aws.amazon.com/general/latest/gr/aws-service-information.html), dan pilih tautan untuk layanan.

## Arsitektur
<a name="build-an-mlops-workflow-by-using-amazon-sagemaker-and-azure-devops-architecture"></a>

**Arsitektur target**

Arsitektur target mengintegrasikan Azure dengan DevOps Amazon SageMaker AI, menciptakan alur kerja ML-cloud. Ini menggunakan Azure untuk CI/CD proses dan SageMaker AI untuk pelatihan dan penerapan model ML. Ini menguraikan proses memperoleh data (dari sumber seperti Amazon S3, Snowflake, dan Azure Data Lake) melalui pembuatan dan penyebaran model. Komponen utama termasuk CI/CD pipeline untuk pembuatan dan penerapan model, persiapan data, manajemen infrastruktur, dan Amazon SageMaker AI untuk pelatihan dan fine-tuning, evaluasi, dan penerapan model ML. Arsitektur ini dirancang untuk menyediakan alur kerja ML yang efisien, otomatis, dan terukur di seluruh platform cloud.

![\[Diagram arsitektur MLOps alur kerja yang menggunakan Azure Devops dan. SageMaker\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/images/pattern-img/95fdf414-e561-4a93-9628-b41db39a577e/images/84ddcc36-54ef-473e-875f-154fae18cb13.png)


Arsitektur terdiri dari komponen-komponen berikut:

1. Ilmuwan data melakukan eksperimen ML di akun pengembangan untuk mengeksplorasi pendekatan yang berbeda untuk kasus penggunaan ML dengan menggunakan berbagai sumber data. Ilmuwan data melakukan pengujian unit dan uji coba, dan untuk melacak eksperimen mereka, mereka dapat menggunakan [Amazon SageMaker AI MLflow](https://docs.aws.amazon.com/sagemaker/latest/dg/mlflow.html). Dalam pengembangan model AI generatif, ilmuwan data menyempurnakan model fondasi dari hub model SageMaker AI JumpStart Amazon. Setelah evaluasi model, ilmuwan data mendorong dan menggabungkan kode ke repositori Model Build, yang di-host di Azure. DevOps Repositori ini berisi kode untuk pipa bangunan model multi-langkah.

1. Di Azure DevOps, pipeline Model Build, yang menyediakan integrasi berkelanjutan (CI), dapat diaktifkan secara otomatis atau manual setelah penggabungan kode ke cabang utama. Di akun Otomasi, ini mengaktifkan pipeline SageMaker AI untuk pra-pemrosesan data, pelatihan model dan fine-tuning, evaluasi model, dan pendaftaran model bersyarat berdasarkan akurasi.

1. Akun Otomasi adalah akun pusat di seluruh platform MLyang meng-host lingkungan ML (Amazon ECR), model (Amazon S3), metadata model SageMaker (AI Model Registry), fitur (AI Feature Store), pipeline otomatis SageMaker (AI Pipelines), dan wawasan log ML SageMaker (). CloudWatch Untuk beban kerja AI generatif, Anda mungkin memerlukan evaluasi tambahan untuk petunjuk di aplikasi hilir. Aplikasi manajemen yang cepat membantu merampingkan dan mengotomatiskan proses. Akun ini memungkinkan penggunaan kembali aset ML dan memberlakukan praktik terbaik mempercepat pengiriman kasus penggunaan ML.

1. Versi model terbaru ditambahkan ke SageMaker AI Model Registry untuk ditinjau. Ini melacak versi model dan artefak masing-masing (garis keturunan dan metadata). Ini juga mengelola status model (menyetujui, menolak, atau menunggu), dan mengelola versi untuk penyebaran hilir.

1. Setelah model terlatih di Model Registry disetujui melalui antarmuka studio atau panggilan API, acara dapat dikirim ke Amazon. EventBridge EventBridge memulai pipa Model Deploy di DevOps Azure.

1. Pipeline Model Deploy, yang menyediakan continuous deployment (CD), memeriksa sumber dari repositori Model Deploy. Sumber berisi kode, konfigurasi untuk penerapan model, dan skrip pengujian untuk tolok ukur kualitas. Pipeline Model Deploy dapat disesuaikan dengan jenis inferensi Anda.

1. Setelah pemeriksaan kontrol kualitas, pipeline Model Deploy menyebarkan model ke akun Staging. Akun Staging adalah salinan akun Produksi, dan digunakan untuk pengujian dan evaluasi integrasi. Untuk transformasi batch, pipeline Model Deploy dapat secara otomatis memperbarui proses inferensi batch untuk menggunakan versi model terbaru yang disetujui. Untuk inferensi real-time, tanpa server, atau asinkron, ini mengatur atau memperbarui titik akhir model masing-masing.

1. Setelah pengujian berhasil di akun Staging, model dapat digunakan ke akun Produksi dengan persetujuan manual melalui pipeline Model Deploy. Pipeline ini menyediakan titik akhir produksi dalam langkah **Deploy to production**, termasuk pemantauan model dan mekanisme umpan balik data.

1. Setelah model diproduksi, gunakan alat seperti SageMaker AI Model Monitor dan SageMaker AI Clarify untuk mengidentifikasi bias, mendeteksi penyimpangan, dan terus memantau kinerja model.

**Otomatisasi dan skala**

Gunakan infrastruktur sebagai kode (IAc) untuk secara otomatis menyebarkan ke beberapa akun dan lingkungan. Dengan mengotomatiskan proses pengaturan MLOps alur kerja, dimungkinkan untuk memisahkan lingkungan yang digunakan oleh tim ML yang mengerjakan proyek yang berbeda. [AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html)membantu Anda memodelkan, menyediakan, dan mengelola AWS sumber daya dengan memperlakukan infrastruktur sebagai kode.

## Alat
<a name="build-an-mlops-workflow-by-using-amazon-sagemaker-and-azure-devops-tools"></a>

**Layanan AWS**
+ [Amazon SageMaker AI](https://docs.aws.amazon.com/sagemaker/latest/dg/whatis.html) adalah layanan ML terkelola yang membantu Anda membangun dan melatih model ML dan kemudian menerapkannya ke lingkungan host yang siap produksi.
+ [AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/what-is-glue.html)adalah layanan ekstrak, transformasi, dan beban (ETL) yang dikelola sepenuhnya. Ini membantu Anda mengkategorikan, membersihkan, memperkaya, dan memindahkan data dengan andal antara penyimpanan data dan aliran data.
+ [Amazon Simple Storage Service (Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html)) adalah layanan penyimpanan objek berbasis cloud yang membantu Anda menyimpan, melindungi, dan mengambil sejumlah data. Dalam pola ini, Amazon S3 digunakan untuk penyimpanan data dan terintegrasi dengan SageMaker AI untuk pelatihan model dan objek model.
+ [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html)adalah layanan komputasi yang membantu Anda menjalankan kode tanpa perlu menyediakan atau mengelola server. Ini menjalankan kode Anda hanya bila diperlukan dan skala secara otomatis, jadi Anda hanya membayar untuk waktu komputasi yang Anda gunakan. Dalam pola ini, Lambda digunakan untuk tugas pra-pemrosesan dan pasca-pemrosesan data.
+ [Amazon Elastic Container Registry (Amazon ECR](https://docs.aws.amazon.com/AmazonECR/latest/userguide/what-is-ecr.html)) adalah layanan registri gambar kontainer terkelola yang aman, terukur, dan andal. Dalam pola ini, ia menyimpan wadah Docker yang digunakan SageMaker AI sebagai lingkungan pelatihan dan penerapan.
+ [Amazon EventBridge](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-what-is.html) adalah layanan bus acara tanpa server yang membantu Anda menghubungkan aplikasi Anda dengan data waktu nyata dari berbagai sumber. Dalam pola ini, EventBridge mengatur alur kerja berbasis peristiwa atau berbasis waktu yang memulai pelatihan ulang atau penerapan model otomatis.
+ [Amazon API Gateway](https://docs.aws.amazon.com/apigateway/latest/developerguide/welcome.html) membantu Anda membuat, menerbitkan, memelihara, memantau, dan mengamankan REST, HTTP, dan WebSocket APIs dalam skala apa pun.  Dalam pola ini, ini digunakan untuk membuat titik masuk tunggal yang menghadap eksternal untuk SageMaker titik akhir AI.
+ Untuk aplikasi RAG, Anda dapat menggunakan Layanan AWS, seperti [Amazon OpenSearch Service dan Amazon](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/what-is.html) [RDS for PostgreSQL](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_PostgreSQL.html), untuk menyimpan embeddings vektor yang menyediakan LLM dengan data internal Anda.

**Alat-alat lainnya**
+ [Azure DevOps](https://learn.microsoft.com/en-us/azure/devops/user-guide/what-is-azure-devops) membantu Anda mengelola CI/CD pipeline dan memfasilitasi pembuatan kode, pengujian, dan penerapan.
+ [Azure Data Lake Storage](https://learn.microsoft.com/en-us/azure/storage/blobs/data-lake-storage-introduction) atau [Snowflake](https://docs.snowflake.com/en/) adalah sumber data pelatihan pihak ketiga yang memungkinkan untuk model ML.
+ [Pinecone](https://docs.pinecone.io/home), [Milvus](https://milvus.io/docs/overview.md), atau [ChromaDB](https://docs.trychroma.com/) adalah database vektor pihak ketiga yang memungkinkan untuk menyimpan penyematan vektor.

## Praktik terbaik
<a name="build-an-mlops-workflow-by-using-amazon-sagemaker-and-azure-devops-best-practices"></a>

Sebelum menerapkan komponen apa pun dari MLOps alur kerja multicloud ini, selesaikan aktivitas berikut:
+ Tentukan dan pahami alur kerja pembelajaran mesin dan alat yang diperlukan untuk mendukungnya. Kasus penggunaan yang berbeda memerlukan alur kerja dan komponen yang berbeda. Misalnya, feature store mungkin diperlukan untuk penggunaan kembali fitur dan inferensi latensi rendah dalam kasus penggunaan personalisasi, tetapi mungkin tidak diperlukan untuk kasus penggunaan lainnya. Memahami alur kerja target, persyaratan kasus penggunaan, dan metode kolaborasi pilihan tim ilmu data diperlukan untuk berhasil menyesuaikan arsitektur.
+ Buat pemisahan tanggung jawab yang jelas untuk setiap komponen arsitektur. Menyebarkan penyimpanan data di Azure Data Lake Storage, Snowflake, dan Amazon S3 dapat meningkatkan kompleksitas dan biaya. Jika memungkinkan, pilih mekanisme penyimpanan yang konsisten. Demikian pula, hindari menggunakan kombinasi layanan Azure dan AWS, atau kombinasi DevOps layanan Azure dan AWS ML.
+ Pilih satu atau beberapa model dan kumpulan data yang ada untuk melakukan end-to-end pengujian alur kerja. MLOps Artefak uji harus mencerminkan kasus penggunaan nyata yang dikembangkan tim ilmu data ketika platform memasuki produksi.

## Epik
<a name="build-an-mlops-workflow-by-using-amazon-sagemaker-and-azure-devops-epics"></a>

### Rancang MLOps arsitektur Anda
<a name="design-your-mlops-architecture"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Identifikasi sumber data. | Berdasarkan kasus penggunaan saat ini dan masa depan, sumber data yang tersedia, dan jenis data (seperti data rahasia), dokumentasikan sumber data yang perlu diintegrasikan dengan MLOps platform. Data dapat disimpan di Amazon S3, Penyimpanan Danau Data Azure, Kepingan Salju, atau sumber lainnya. Untuk beban kerja AI generatif, data mungkin juga menyertakan basis pengetahuan yang mendasari respons yang dihasilkan. Data ini disimpan sebagai embeddings vektor dalam database vektor. Buat rencana untuk mengintegrasikan sumber-sumber ini dengan platform Anda dan mengamankan akses ke sumber daya yang benar. | Insinyur data, Ilmuwan data, arsitek Cloud | 
| Pilih layanan yang berlaku. | Sesuaikan arsitektur dengan menambahkan atau menghapus layanan berdasarkan alur kerja yang diinginkan dari tim ilmu data, sumber data yang berlaku, dan arsitektur cloud yang ada. Misalnya, insinyur data dan ilmuwan data dapat melakukan pra-pemrosesan data dan rekayasa fitur di SageMaker AI, AWS Glue, atau Amazon EMR. Tidak mungkin ketiga layanan tersebut diperlukan. | Administrator AWS, Insinyur data, ilmuwan data, insinyur ML | 
| Menganalisis persyaratan keamanan. | Kumpulkan dan dokumentasikan persyaratan keamanan. Ini termasuk menentukan:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/build-an-mlops-workflow-by-using-amazon-sagemaker-and-azure-devops.html)Untuk informasi lebih lanjut tentang mengamankan beban kerja AI generatif, lihat [Mengamankan AI generatif: Pengantar Matriks Pelingkupan Keamanan AI Generatif](https://aws.amazon.com/blogs/security/securing-generative-ai-an-introduction-to-the-generative-ai-security-scoping-matrix/) (posting blog).AWS  | Administrator AWS, arsitek Cloud | 

### Mengatur AWS Organizations
<a name="set-up-aolong"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Mengatur AWS Organizations. | Siapkan AWS Organizations di root Akun AWS. Ini membantu Anda mengelola akun berikutnya yang Anda buat sebagai bagian dari MLOps strategi multi-akun. Lihat informasi yang lebih lengkap dalam [dokumentasi AWS Organizations](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_tutorials_basic.html). | Administrator AWS | 

### Mengatur lingkungan pengembangan dan pembuatan versi
<a name="set-up-the-development-environment-and-versioning"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Buat akun AWS pengembangan. | Buat Akun AWS tempat insinyur data dan ilmuwan data memiliki izin untuk bereksperimen dan membuat model ML. Untuk petunjuk, lihat [Membuat akun anggota di organisasi Anda](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_accounts_create.html) dalam AWS Organizations dokumentasi. | Administrator AWS | 
| Buat repositori Model Build. | Buat repositori Git di Azure di mana ilmuwan data dapat mendorong pembuatan model dan kode penerapan mereka setelah fase eksperimen selesai. Untuk instruksi, lihat [Mengatur repositori Git di dokumentasi](https://learn.microsoft.com/en-us/devops/develop/git/set-up-a-git-repository) DevOps Azure. | DevOps insinyur, insinyur ML | 
| Buat repositori Model Deploy. | Buat repositori Git di Azure yang menyimpan kode dan templat penerapan standar. Ini harus menyertakan kode untuk setiap opsi penerapan yang digunakan organisasi, seperti yang diidentifikasi dalam fase desain. Misalnya, ini harus mencakup titik akhir waktu nyata, titik akhir asinkron, inferensi tanpa server, atau transformasi batch. Untuk instruksi, lihat [Mengatur repositori Git di dokumentasi](https://learn.microsoft.com/en-us/devops/develop/git/set-up-a-git-repository) DevOps Azure. | DevOps insinyur, insinyur ML | 
| Buat repositori Amazon ECR. | Siapkan repositori Amazon ECR yang menyimpan lingkungan ML yang disetujui sebagai gambar Docker. Izinkan ilmuwan data dan insinyur ML untuk menentukan lingkungan baru. Untuk petunjuknya, lihat [Membuat repositori pribadi](https://docs.aws.amazon.com/AmazonECR/latest/userguide/repository-create.html) di dokumentasi Amazon ECR. | Insinyur ML | 
| Siapkan SageMaker AI Studio. | Siapkan SageMaker AI Studio di akun pengembangan sesuai dengan persyaratan keamanan yang ditentukan sebelumnya, alat ilmu data pilihan (seperti MLflow), dan lingkungan pengembangan terintegrasi (IDE) yang disukai. Gunakan konfigurasi siklus hidup untuk mengotomatiskan pemasangan fungsionalitas utama dan menciptakan lingkungan pengembangan yang seragam bagi ilmuwan data. Untuk informasi selengkapnya, lihat [Amazon SageMaker AI Studio](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-updated.html) dan [server MLflow pelacakan](https://docs.aws.amazon.com/sagemaker/latest/dg/mlflow.html) di dokumentasi SageMaker AI. | Ilmuwan data, insinyur ML, insinyur Prompt | 

### Integrasikan CI/CD jaringan pipa
<a name="integrate-ci-cd-pipelines"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Buat akun Otomasi. | Buat Akun AWS tempat jaringan pipa dan pekerjaan otomatis berjalan. Anda dapat memberikan akses baca tim ilmu data ke akun ini. Untuk petunjuk, lihat [Membuat akun anggota di organisasi Anda](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_accounts_create.html) dalam AWS Organizations dokumentasi. | Administrator AWS | 
| Siapkan registri model. | Siapkan Registri Model SageMaker AI di akun Otomasi. Registri ini menyimpan metadata untuk model ML dan membantu ilmuwan data atau tim tertentu untuk menyetujui atau menolak model. Untuk informasi selengkapnya, lihat [Mendaftarkan dan menerapkan model dengan Model Registry](https://docs.aws.amazon.com/sagemaker/latest/dg/model-registry.html) di dokumentasi SageMaker AI. | Insinyur ML | 
| Buat pipeline Model Build. | Buat CI/CD pipeline di Azure yang dimulai secara manual atau otomatis saat kode didorong ke repositori Model Build. Pipeline harus memeriksa kode sumber dan membuat atau memperbarui pipa SageMaker AI di akun Otomasi. Pipeline harus menambahkan model baru ke registri model. Untuk informasi selengkapnya tentang membuat pipeline, lihat dokumentasi [Azure Pipelines](https://learn.microsoft.com/en-us/azure/devops/pipelines/get-started/what-is-azure-pipelines). | DevOps insinyur, insinyur ML | 

### Bangun tumpukan penerapan
<a name="build-the-deployment-stack"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Buat AWS akun pementasan dan penyebaran. | Buat Akun AWS untuk pementasan dan penerapan model ML. Akun ini harus identik untuk memungkinkan pengujian model yang akurat dalam pementasan sebelum pindah ke produksi. Anda dapat memberikan akses baca tim ilmu data ke akun pementasan. Untuk petunjuk, lihat [Membuat akun anggota di organisasi Anda](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_accounts_create.html) dalam AWS Organizations dokumentasi. | Administrator AWS | 
| Siapkan bucket S3 untuk pemantauan model. | Selesaikan langkah ini jika Anda ingin mengaktifkan pemantauan model untuk model yang diterapkan yang dibuat oleh pipeline Model Deploy. Buat bucket Amazon S3 untuk menyimpan data input dan output. Untuk informasi selengkapnya tentang membuat bucket S3, lihat [Membuat bucket di dokumentasi](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket-overview.html) Amazon S3. Siapkan izin lintas akun sehingga pekerjaan pemantauan model otomatis berjalan di akun Otomasi. Untuk informasi selengkapnya, lihat [Memantau data dan kualitas model](https://docs.aws.amazon.com/sagemaker/latest/dg/model-monitor.html) dalam dokumentasi SageMaker AI. | Insinyur ML | 
| Buat pipa Model Deploy. | Buat CI/CD pipeline di Azure yang dimulai saat model disetujui di registri model. Pipeline harus memeriksa kode sumber dan artefak model, membangun templat infrastruktur untuk menerapkan model di akun pementasan dan produksi, menyebarkan model di akun pementasan, menjalankan pengujian otomatis, menunggu persetujuan manual, dan menerapkan model yang disetujui ke dalam akun produksi. Untuk informasi selengkapnya tentang membuat pipeline, lihat dokumentasi [Azure Pipelines](https://learn.microsoft.com/en-us/azure/devops/pipelines/get-started/what-is-azure-pipelines). | DevOps insinyur, insinyur ML | 

### (Opsional) Otomatiskan infrastruktur lingkungan ML
<a name="optional-automate-ml-environment-infrastructure"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Bangun AWS CDK atau CloudFormation templat. | Tentukan AWS Cloud Development Kit (AWS CDK) atau AWS CloudFormation templat untuk semua lingkungan yang perlu digunakan secara otomatis. Ini mungkin termasuk lingkungan pengembangan, lingkungan otomatisasi, dan lingkungan pementasan dan penyebaran. Untuk informasi lebih lanjut, lihat [AWS CDK](https://docs.aws.amazon.com/cdk/v2/guide/home.html)dan [CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html)dokumentasi. | AWS DevOps | 
| Buat pipa Infrastruktur. | Buat CI/CD pipeline di Azure untuk penerapan infrastruktur. Administrator dapat memulai pipeline ini untuk membuat yang baru Akun AWS dan menyiapkan lingkungan yang dibutuhkan tim ML. | DevOps insinyur | 

## Pemecahan masalah
<a name="build-an-mlops-workflow-by-using-amazon-sagemaker-and-azure-devops-troubleshooting"></a>


| Isu | Solusi | 
| --- | --- | 
| **Pemantauan dan deteksi drift** yang tidak memadai - Pemantauan yang tidak memadai dapat menyebabkan deteksi masalah kinerja model atau penyimpangan data yang tidak memadai. | Perkuat kerangka kerja pemantauan dengan alat seperti Amazon CloudWatch, SageMaker AI Model Monitor, dan SageMaker AI Clarify. Konfigurasikan peringatan untuk tindakan segera pada masalah yang diidentifikasi. | 
| **Kesalahan pemicu pipa CI** —**** Pipa CI di Azure DevOps mungkin tidak dipicu saat penggabungan kode karena kesalahan konfigurasi. | Periksa pengaturan DevOps proyek Azure untuk memastikan bahwa webhook diatur dengan benar dan menunjuk ke titik akhir AI yang benar. SageMaker  | 
| **Tata Kelola** —**** Akun Otomasi pusat mungkin tidak menerapkan praktik terbaik di seluruh platform ML, yang mengarah ke alur kerja yang tidak konsisten. | Audit pengaturan akun Automation, memastikan bahwa semua lingkungan dan model ML sesuai dengan praktik dan kebijakan terbaik yang telah ditentukan sebelumnya. | 
| **Penundaan persetujuan registri model —** Ini terjadi ketika ada penundaan dalam memeriksa dan menyetujui model, baik karena orang meluangkan waktu untuk memeriksanya atau karena masalah teknis. | Menerapkan sistem notifikasi untuk mengingatkan pemangku kepentingan model yang menunggu persetujuan, dan merampingkan proses peninjauan. | 
| **Kegagalan peristiwa penerapan model** —**** Peristiwa yang dikirim untuk memulai pipeline penerapan model mungkin gagal, menyebabkan penundaan penerapan. | Konfirmasikan bahwa Amazon EventBridge memiliki izin dan pola peristiwa yang benar untuk menjalankan pipeline Azure DevOps dengan sukses. | 
| **Kemacetan penyebaran produksi** — Proses persetujuan**** manual dapat menciptakan kemacetan, menunda penyebaran model produksi. | Optimalkan alur kerja persetujuan dalam pipeline penerapan model, mempromosikan tinjauan tepat waktu dan saluran komunikasi yang jelas. | 

## Sumber daya terkait
<a name="build-an-mlops-workflow-by-using-amazon-sagemaker-and-azure-devops-resources"></a>

**AWS dokumentasi**
+ [Dokumentasi Amazon SageMaker AI](https://docs.aws.amazon.com/sagemaker/)
+ [Machine Learning Lens](https://docs.aws.amazon.com/wellarchitected/latest/machine-learning-lens/machine-learning-lens.html) (AWS Well Architected Framework)
+ [Perencanaan untuk sukses MLOps](https://docs.aws.amazon.com/prescriptive-guidance/latest/ml-operations-planning/welcome.html) (Panduan AWS Preskriptif)

** AWS Sumber daya lainnya**
+ [MLOps peta jalan dasar untuk perusahaan dengan Amazon SageMaker AI](https://aws.amazon.com/blogs/machine-learning/mlops-foundation-roadmap-for-enterprises-with-amazon-sagemaker/) (posting AWS blog)
+ [AWS Summit ANZ 2022 - End-to-end MLOps untuk arsitek (video](https://www.youtube.com/watch?v=UnAN35gu3Rw)) YouTube 
+ [FMOps/LLMOps: Operasionalkan AI generatif dan perbedaan dengan MLOps](https://aws.amazon.com/blogs/machine-learning/fmops-llmops-operationalize-generative-ai-and-differences-with-mlops/) (AWS posting blog)
+ [Operasionalkan Evaluasi LLM pada Skala menggunakan Amazon SageMaker AI Clarify dan MLOps layanan (posting blog](https://aws.amazon.com/blogs/machine-learning/operationalize-llm-evaluation-at-scale-using-amazon-sagemaker-clarify-and-mlops-services/))AWS 
+ [Peran database vektor dalam aplikasi AI generatif](https://aws.amazon.com/blogs/database/the-role-of-vector-datastores-in-generative-ai-applications/) (AWS posting blog)

**Dokumentasi Azure**
+ [Dokumentasi Azure DevOps ](https://learn.microsoft.com/en-us/azure/devops/user-guide/what-is-azure-devops)
+ [Dokumentasi Azure Pipelines](https://learn.microsoft.com/en-us/azure/devops/pipelines/get-started/what-is-azure-pipelines)

# Konfigurasikan pencatatan pemanggilan model di Amazon Bedrock dengan menggunakan AWS CloudFormation
<a name="configure-bedrock-invocation-logging-cloudformation"></a>

*Vikramaditya Bhatnagar, Amazon Web Services*

## Ringkasan
<a name="configure-bedrock-invocation-logging-cloudformation-summary"></a>

Anda dapat mengonfigurasi Amazon Bedrock untuk mengumpulkan log pemanggilan, data input model, dan data keluaran model untuk semua pemanggilan model di file Anda. Akun AWS Ini adalah [praktik terbaik](https://aws.amazon.com/blogs/machine-learning/best-practices-for-building-robust-generative-ai-applications-with-amazon-bedrock-agents-part-2/) untuk membangun aplikasi AI generatif yang kuat dengan Amazon Bedrock. Anda dapat menyimpan log pemanggilan model di grup CloudWatch log Amazon Logs, di bucket Amazon Simple Storage Service (Amazon S3), atau di keduanya. Memiliki data CloudWatch log di Log membantu Anda membuat filter metrik kustom, alarm, dan dasbor. Amazon S3 sangat ideal untuk mereplikasi data di seluruh Wilayah AWS atau untuk penyimpanan jangka panjang, sebagaimana diatur oleh kebijakan organisasi Anda.

Pola ini menyediakan contoh AWS CloudFormation template yang menggunakan pendekatan infrastruktur sebagai kode (IAc) untuk mengonfigurasi pencatatan pemanggilan model untuk Amazon Bedrock. Template mengonfigurasi penyimpanan log di CloudWatch Log dan Amazon S3.

## Prasyarat dan batasan
<a name="configure-bedrock-invocation-logging-cloudformation-prereqs"></a>

**Prasyarat**
+ Aktif Akun AWS
+ Izin berikut:
  + [Izin](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-iam-template.html) untuk membuat tumpukan CloudFormation 
  + [Izin](https://docs.aws.amazon.com/bedrock/latest/userguide/security-iam-awsmanpol.html#security-iam-awsmanpol-updates) untuk mengakses Amazon Bedrock
  + [Izin](https://docs.aws.amazon.com/AmazonS3/latest/userguide/example-policies-s3.html) untuk membuat dan mengakses bucket Amazon S3
  + [Izin](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/iam-identity-based-access-control-cwl.html) untuk membuat dan mengakses grup CloudWatch log Log
  + [Izin](https://docs.aws.amazon.com/lambda/latest/dg/security-iam-awsmanpol.html) untuk membuat dan mengakses fungsi AWS Lambda 
  + [Izin](https://docs.aws.amazon.com/kms/latest/developerguide/customer-managed-policies.html) untuk membuat dan mengakses AWS Key Management Service (AWS KMS) kunci

**Batasan**

Pola ini mencatat pemanggilan model ke CloudWatch Log dan Amazon S3. Itu tidak mendukung memilih hanya satu dari dua layanan ini.

## Arsitektur
<a name="configure-bedrock-invocation-logging-cloudformation-architecture"></a>

**Arsitektur target**

 CloudFormation Template menyediakan sumber daya berikut dalam target Anda Akun AWS:
+ Grup CloudWatch log Log untuk menyimpan log pemanggilan model
+ Bucket Amazon S3 untuk menyimpan log pemanggilan model dan kebijakan bucket terkait
+ Bucket Amazon S3 untuk menyimpan log akses sisi server dan kebijakan bucket terkait
+  AWS Lambda Fungsi yang mengonfigurasi pengaturan logging di Amazon Bedrock
+ Sebuah AWS KMS key dan alias kunci yang sesuai
+ Peran layanan AWS Identity and Access Management (IAM) untuk Amazon Bedrock

Diagram berikut menunjukkan bagaimana log pemanggilan disimpan setelah Anda menyebarkan CloudFormation tumpukan yang terkait dengan pola ini. Amazon Bedrock menerbitkan data log saat model foundation mengirimkan teks, gambar, video, atau data penyematan. Seperti yang ditunjukkan pada diagram, bucket Amazon S3 dan grup CloudWatch log Log dienkripsi dengan file. AWS KMS key

![\[Alur kerja untuk mencatat pemanggilan model fondasi Amazon Bedrock.\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/images/pattern-img/a55e7495-ec84-4d41-886e-5c37b37aac67/images/a958d52f-9072-40af-80cb-360f6c1c7fd5.png)


Diagram menunjukkan alur kerja berikut:

1. Pengguna mengirimkan kueri ke model dasar di Amazon Bedrock.

1. Amazon Bedrock mengasumsikan peran layanan IAM.

1. Amazon Bedrock menghasilkan data log dan menyimpannya di grup CloudWatch log Log dan di bucket Amazon S3.

1. Jika pengguna membaca, mengunggah, atau menghapus file apa pun di bucket Amazon S3 yang berisi log pemanggilan model, aktivitas tersebut akan masuk ke bucket Amazon S3 lain untuk log akses sisi server.

**Otomatisasi dan skala**

Untuk menskalakan solusi ini, Anda dapat menerapkan CloudFormation template sebagai tumpukan yang disetel ke beberapa Wilayah AWS dan Akun AWS. Untuk informasi selengkapnya, lihat [Mengelola tumpukan di seluruh akun dan Wilayah dengan StackSets](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/what-is-cfnstacksets.html) CloudFormation dokumentasi.

## Alat
<a name="configure-bedrock-invocation-logging-cloudformation-tools"></a>

**Layanan AWS**
+ [Amazon Bedrock](https://docs.aws.amazon.com/bedrock/latest/userguide/what-is-bedrock.html) adalah layanan yang dikelola sepenuhnya yang membuat model foundation berkinerja tinggi (FMs) dari perusahaan AI terkemuka dan Amazon tersedia untuk Anda gunakan melalui API terpadu.
+ [AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html)membantu Anda menyiapkan AWS sumber daya, menyediakannya dengan cepat dan konsisten, dan mengelolanya sepanjang siklus hidupnya di seluruh Akun AWS dan. Wilayah AWS
+ [Amazon CloudWatch Logs](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/WhatIsCloudWatchLogs.html) membantu Anda memusatkan log dari semua sistem, aplikasi, Layanan AWS sehingga Anda dapat memantau dan mengarsipkannya dengan aman.
+ [AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) membantu Anda mengelola akses ke AWS sumber daya dengan aman dengan mengontrol siapa yang diautentikasi dan diberi wewenang untuk menggunakannya.
+ [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html)adalah layanan komputasi yang membantu Anda menjalankan kode tanpa perlu menyediakan atau mengelola server. Ini menjalankan kode Anda hanya bila diperlukan dan skala secara otomatis, jadi Anda hanya membayar untuk waktu komputasi yang Anda gunakan.
+ [AWS Key Management Service (AWS KMS)](https://docs.aws.amazon.com/kms/latest/developerguide/overview.html) membantu Anda membuat dan mengontrol kunci kriptografi untuk membantu melindungi data Anda.
+ [Amazon Simple Storage Service (Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html)) adalah layanan penyimpanan objek yang menawarkan skalabilitas, ketersediaan data, keamanan, dan kinerja terdepan di industri.

**Alat-alat lainnya**
+ [Git](https://git-scm.com/docs) adalah sistem kontrol versi terdistribusi open source.

**Repositori kode**

Kode untuk pola ini tersedia di repositori GitHub [enable-bedrock-logging-using-cloudformation](https://github.com/aws-samples/enable-bedrock-logging-using-cloudformation).

## Epik
<a name="configure-bedrock-invocation-logging-cloudformation-epics"></a>

### Buat CloudFormation tumpukan
<a name="create-the-cfnshort-stack"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Unduh CloudFormation template. | Unduh [CloudFormation template](https://github.com/aws-samples/enable-bedrock-logging-using-cloudformation/blob/main/enable-bedrock-logging-using-cloudformation.yaml) dari GitHub repositori. | Arsitek awan | 
| Menyebarkan template. | Buat tumpukan di akun target dan Wilayah Anda. Di bagian **Parameter**, tentukan nilai untuk parameter yang ditentukan dalam templat. Untuk petunjuk, lihat [Membuat tumpukan](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-console-create-stack.html) dalam CloudFormation dokumentasi. | Arsitek awan | 

### Pengujian solusi
<a name="test-the-solution"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Aktifkan akses model. | Di Amazon Bedrock, tambahkan akses ke model foundation. Untuk petunjuknya, lihat [Menambahkan atau menghapus akses ke model foundation Amazon Bedrock](https://docs.aws.amazon.com/bedrock/latest/userguide/model-access-modify.html) di dokumentasi Amazon Bedrock. | Arsitek awan | 
| Jalankan prompt sampel. | Di taman bermain Amazon Bedrock, jalankan prompt sampel. Untuk petunjuknya, lihat [Menghasilkan respons di konsol menggunakan taman bermain](https://docs.aws.amazon.com/bedrock/latest/userguide/playgrounds.html) di dokumentasi Amazon Bedrock. | Arsitek awan | 
| Tinjau konfigurasi logging. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/configure-bedrock-invocation-logging-cloudformation.html) | Arsitek awan | 
| Tinjau ember Amazon S3. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/configure-bedrock-invocation-logging-cloudformation.html) | Arsitek awan | 
| Tinjau grup log. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/configure-bedrock-invocation-logging-cloudformation.html) | Arsitek awan | 

## Sumber daya terkait
<a name="configure-bedrock-invocation-logging-cloudformation-resources"></a>

**AWS dokumentasi**
+ [Mengakses bucket Amazon S3 (dokumentasi](https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-bucket-intro.html) Amazon S3)
+ [Membuat dan mengelola tumpukan](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stacks.html) (CloudFormation dokumentasi)
+ [Memantau pemanggilan model (dokumentasi](https://docs.aws.amazon.com/bedrock/latest/userguide/model-invocation-logging.html) Amazon Bedrock)
+ [Bekerja dengan grup log dan aliran log](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/Working-with-log-groups-and-streams.html) (dokumentasi CloudWatch Log)

**AWS posting blog**
+ [Memantau aplikasi AI Generatif menggunakan Amazon Bedrock dan integrasi Amazon CloudWatch ](https://aws.amazon.com/blogs/mt/monitoring-generative-ai-applications-using-amazon-bedrock-and-amazon-cloudwatch-integration/)
+ [Praktik terbaik untuk membangun aplikasi AI generatif yang kuat dengan Amazon Bedrock Agents - Bagian 1](https://aws.amazon.com/blogs/machine-learning/best-practices-for-building-robust-generative-ai-applications-with-amazon-bedrock-agents-part-1/)
+ [Praktik terbaik untuk membangun aplikasi AI generatif yang kuat dengan Amazon Bedrock Agents - Bagian 2](https://aws.amazon.com/blogs/machine-learning/best-practices-for-building-robust-generative-ai-applications-with-amazon-bedrock-agents-part-2/)

# Buat image container Docker kustom untuk SageMaker dan gunakan untuk pelatihan model di AWS Step Functions
<a name="create-a-custom-docker-container-image-for-sagemaker-and-use-it-for-model-training-in-aws-step-functions"></a>

*Julia Bluszcz, Aubrey Oosthuizen, Mohan Gowda Purushothama, Neha Sharma, dan Mateusz Zaremba, Amazon Web Services*

## Ringkasan
<a name="create-a-custom-docker-container-image-for-sagemaker-and-use-it-for-model-training-in-aws-step-functions-summary"></a>

Pola ini menunjukkan cara membuat image container Docker untuk [Amazon SageMaker](https://docs.aws.amazon.com/sagemaker/latest/dg/whatis.html) dan menggunakannya untuk model pelatihan di [AWS Step Functions](https://docs.aws.amazon.com/step-functions/latest/dg/welcome.html). Dengan mengemas algoritme kustom dalam wadah, Anda dapat menjalankan hampir semua kode di SageMaker lingkungan, terlepas dari bahasa pemrograman, kerangka kerja, atau dependensi.

Dalam contoh [SageMaker notebook](https://docs.aws.amazon.com/sagemaker/latest/dg/nbi.html) yang disediakan, image container Docker kustom disimpan di [Amazon Elastic Container Registry (Amazon ECR) Registry ECR)](https://docs.aws.amazon.com/AmazonECR/latest/userguide/what-is-ecr.html). Step Functions kemudian menggunakan wadah yang disimpan di Amazon ECR untuk menjalankan skrip pemrosesan Python. SageMaker Kemudian, wadah mengekspor model ke [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html).

## Prasyarat dan batasan
<a name="create-a-custom-docker-container-image-for-sagemaker-and-use-it-for-model-training-in-aws-step-functions-prereqs"></a>

**Prasyarat**
+ Akun AWS yang aktif
+ Peran [AWS Identity and Access Management (IAM) SageMaker](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-roles.html) dengan izin Amazon S3
+ Peran [IAM untuk Step](https://sagemaker-examples.readthedocs.io/en/latest/step-functions-data-science-sdk/step_functions_mlworkflow_processing/step_functions_mlworkflow_scikit_learn_data_processing_and_model_evaluation.html#Create-an-Execution-Role-for-Step-Functions) Functions
+ Keakraban dengan Python
+ Keakraban dengan Amazon SageMaker Python SDK
+ Keakraban dengan AWS Command Line Interface (AWS CLI)
+ Keakraban dengan AWS SDK for Python (Boto3)
+ Keakraban dengan Amazon ECR
+ Keakraban dengan Docker

**Versi produk**
+ AWS Step Functions Data Science SDK versi 2.3.0
+ Amazon SageMaker Python SDK versi 2.78.0

## Arsitektur
<a name="create-a-custom-docker-container-image-for-sagemaker-and-use-it-for-model-training-in-aws-step-functions-architecture"></a>

Diagram berikut menunjukkan contoh alur kerja untuk membuat image container Docker untuk SageMaker, kemudian menggunakannya untuk model pelatihan di Step Functions:

![\[Workflow untuk membuat image container Docker SageMaker untuk digunakan sebagai model pelatihan Step Functions.\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/images/pattern-img/7857d57f-3077-4b06-8971-fb5846387693/images/37755e38-0bc4-4dd0-90c7-135d95b00053.png)


Diagram menunjukkan alur kerja berikut:

1. Seorang ilmuwan atau DevOps insinyur data menggunakan SageMaker notebook Amazon untuk membuat gambar kontainer Docker kustom.

1. Seorang ilmuwan atau DevOps insinyur data menyimpan gambar kontainer Docker di repositori pribadi Amazon ECR yang ada di registri pribadi.

1. Seorang ilmuwan atau DevOps insinyur data menggunakan wadah Docker untuk menjalankan pekerjaan pemrosesan SageMaker Python dalam alur kerja Step Functions.

**Otomatisasi dan skala**

Contoh SageMaker notebook dalam pola ini menggunakan jenis instance `ml.m5.xlarge` notebook. Anda dapat mengubah jenis instance agar sesuai dengan kasus penggunaan Anda. Untuk informasi selengkapnya tentang jenis instans SageMaker notebook, lihat [ SageMaker Harga Amazon](https://aws.amazon.com/sagemaker/pricing/).

## Alat
<a name="create-a-custom-docker-container-image-for-sagemaker-and-use-it-for-model-training-in-aws-step-functions-tools"></a>
+ [Amazon Elastic Container Registry (Amazon ECR](https://docs.aws.amazon.com/AmazonECR/latest/userguide/what-is-ecr.html)) adalah layanan registri gambar kontainer terkelola yang aman, terukur, dan andal.
+ [Amazon SageMaker](https://docs.aws.amazon.com/sagemaker/latest/dg/whatis.html) adalah layanan pembelajaran mesin terkelola (ML) yang membantu Anda membuat dan melatih model ML, lalu menerapkannya ke lingkungan host yang siap produksi.
+ [Amazon SageMaker Python SDK](https://github.com/aws/sagemaker-python-sdk) adalah pustaka sumber terbuka untuk melatih dan menerapkan model pembelajaran mesin. SageMaker
+ [AWS Step Functions](https://docs.aws.amazon.com/step-functions/latest/dg/welcome.html) adalah layanan orkestrasi tanpa server yang membantu Anda menggabungkan fungsi AWS Lambda dan layanan AWS lainnya untuk membangun aplikasi yang penting bagi bisnis.
+ [AWS Step Functions Data Science Python SDK](https://aws-step-functions-data-science-sdk.readthedocs.io/en/stable/index.html) adalah pustaka open source yang membantu Anda membuat alur kerja Step Functions yang memproses dan menerbitkan model pembelajaran mesin.

## Epik
<a name="create-a-custom-docker-container-image-for-sagemaker-and-use-it-for-model-training-in-aws-step-functions-epics"></a>

### Buat gambar kontainer Docker khusus dan simpan di Amazon ECR
<a name="create-a-custom-docker-container-image-and-store-it-in-amazon-ecr"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Siapkan Amazon ECR dan buat registri pribadi baru. | Jika Anda belum melakukannya, siapkan Amazon ECR dengan mengikuti petunjuk dalam [Menyiapkan dengan Amazon ECR di Panduan](https://docs.aws.amazon.com/AmazonECR/latest/userguide/get-set-up-for-amazon-ecr.html) Pengguna *Amazon ECR*. Setiap akun AWS dilengkapi dengan registri ECR Amazon pribadi default. | DevOps insinyur | 
| Buat repositori pribadi Amazon ECR. | Ikuti petunjuk dalam [Membuat repositori pribadi di Panduan](https://docs.aws.amazon.com/AmazonECR/latest/userguide/repository-create.html) Pengguna *Amazon ECR*.Repositori yang Anda buat adalah tempat Anda akan menyimpan gambar kontainer Docker kustom Anda. | DevOps insinyur | 
| Buat Dockerfile yang menyertakan spesifikasi yang diperlukan untuk menjalankan pekerjaan SageMaker pemrosesan Anda.  | Buat Dockerfile yang menyertakan spesifikasi yang diperlukan untuk menjalankan pekerjaan SageMaker pemrosesan Anda dengan mengonfigurasi Dockerfile. Untuk petunjuknya, lihat [Mengadaptasi wadah pelatihan Anda sendiri](https://docs.aws.amazon.com/sagemaker/latest/dg/adapt-training-container.html) di *Panduan SageMaker Pengembang Amazon*.Untuk informasi selengkapnya tentang Dockerfiles, lihat [Referensi Dockerfile](https://docs.docker.com/engine/reference/builder/) dalam dokumentasi Docker.**Contoh sel kode notebook Jupyter untuk membuat Dockerfile***Sel 1*<pre># Make docker folder<br />!mkdir -p docker</pre>*Sel 2*<pre>%%writefile docker/Dockerfile<br /><br />FROM python:3.7-slim-buster<br /><br />RUN pip3 install pandas==0.25.3 scikit-learn==0.21.3<br />ENV PYTHONUNBUFFERED=TRUE<br /><br />ENTRYPOINT ["python3"]</pre> | DevOps insinyur | 
| Buat gambar kontainer Docker Anda dan dorong ke Amazon ECR. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/create-a-custom-docker-container-image-for-sagemaker-and-use-it-for-model-training-in-aws-step-functions.html)Untuk informasi selengkapnya, lihat [Membangun dan mendaftarkan kontainer](https://sagemaker-examples.readthedocs.io/en/latest/advanced_functionality/scikit_bring_your_own/scikit_bring_your_own.html#Building-and-registering-the-container) di *Membangun wadah algoritme Anda sendiri* GitHub.**Contoh sel kode notebook Jupyter untuk membangun dan mendaftarkan gambar Docker**Sebelum menjalankan sel berikut, pastikan Anda telah membuat Dockerfile dan menyimpannya di direktori yang disebut. `docker` Selain itu, pastikan Anda telah membuat repositori Amazon ECR, dan Anda mengganti `ecr_repository` nilai di sel pertama dengan nama repositori Anda.*Sel 1*<pre>import boto3<br />tag = ':latest'<br />account_id = boto3.client('sts').get_caller_identity().get('Account')<br />region = boto3.Session().region_name<br />ecr_repository = 'byoc'<br /><br />image_uri = '{}.dkr.ecr.{}.amazonaws.com/{}'.format(account_id, region, ecr_repository + tag)</pre>*Sel 2*<pre># Build docker image<br />!docker build -t $image_uri docker</pre>*Sel 3*<pre># Authenticate to ECR<br />!aws ecr get-login-password --region {region} | docker login --username AWS --password-stdin {account_id}.dkr.ecr.{region}.amazonaws.com</pre>*Sel 4*<pre># Push docker image<br />!docker push $image_uri</pre>Anda harus [mengautentikasi klien Docker Anda ke registri pribadi](https://docs.aws.amazon.com/AmazonECR/latest/userguide/registry_auth.html) Anda sehingga Anda dapat menggunakan perintah `docker push` dan`docker pull`. Perintah ini mendorong dan menarik gambar ke dan dari repositori di registri Anda. | DevOps insinyur | 

### Buat alur kerja Step Functions yang menggunakan gambar kontainer Docker kustom Anda
<a name="create-a-step-functions-workflow-that-uses-your-custom-docker-container-image"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Buat skrip Python yang mencakup pemrosesan kustom dan logika pelatihan model Anda. | Tulis logika pemrosesan khusus untuk dijalankan dalam skrip pemrosesan data Anda. Kemudian, simpan sebagai skrip Python bernama. `training.py`Untuk informasi selengkapnya, lihat [Membawa model Anda sendiri dengan Mode SageMaker Skrip aktif](https://sagemaker-examples.readthedocs.io/en/latest/sagemaker-script-mode/sagemaker-script-mode.html) GitHub.**Contoh skrip Python yang mencakup pemrosesan kustom dan logika pelatihan model**<pre>%%writefile training.py<br />from numpy import empty<br />import pandas as pd<br />import os<br />from sklearn import datasets, svm<br />from joblib import dump, load<br /><br /><br />if __name__ == '__main__':<br />    digits = datasets.load_digits()<br />    #create classifier object<br />    clf = svm.SVC(gamma=0.001, C=100.)<br />    <br />    #fit the model<br />    clf.fit(digits.data[:-1], digits.target[:-1])<br />    <br />    #model output in binary format<br />    output_path = os.path.join('/opt/ml/processing/model', "model.joblib")<br />    dump(clf, output_path)</pre> | Ilmuwan data | 
| Buat alur kerja Step Functions yang menyertakan pekerjaan SageMaker Processing Anda sebagai salah satu langkahnya.  | Instal dan impor [AWS Step Functions Data Science SDK](https://aws-step-functions-data-science-sdk.readthedocs.io/en/stable/readmelink.html) dan unggah file **training.py** ke Amazon S3. Kemudian, gunakan [Amazon SageMaker Python SDK](https://github.com/aws/sagemaker-python-sdk) untuk menentukan langkah pemrosesan di Step Functions.Pastikan Anda telah [membuat peran eksekusi IAM untuk Step Functions](https://sagemaker-examples.readthedocs.io/en/latest/step-functions-data-science-sdk/step_functions_mlworkflow_processing/step_functions_mlworkflow_scikit_learn_data_processing_and_model_evaluation.html#Create-an-Execution-Role-for-Step-Functions) di akun AWS Anda.**Contoh pengaturan lingkungan dan skrip pelatihan khusus untuk diunggah ke Amazon S3**<pre>!pip install stepfunctions<br /><br />import boto3<br />import stepfunctions<br />import sagemaker<br />import datetime<br /><br />from stepfunctions import steps<br />from stepfunctions.inputs import ExecutionInput<br />from stepfunctions.steps import (<br />    Chain<br />)<br />from stepfunctions.workflow import Workflow<br />from sagemaker.processing import ScriptProcessor, ProcessingInput, ProcessingOutput<br /><br />sagemaker_session = sagemaker.Session()<br />bucket = sagemaker_session.default_bucket() <br />role = sagemaker.get_execution_role()<br />prefix = 'byoc-training-model'<br /><br /># See prerequisites section to create this role<br />workflow_execution_role = f"arn:aws:iam::{account_id}:role/AmazonSageMaker-StepFunctionsWorkflowExecutionRole"<br /><br />execution_input = ExecutionInput(<br />    schema={<br />        "PreprocessingJobName": str})<br /><br /><br />input_code = sagemaker_session.upload_data(<br />    "training.py",<br />    bucket=bucket,<br />    key_prefix="preprocessing.py",<br />)</pre>**Contoh definisi langkah SageMaker pemrosesan yang menggunakan gambar Amazon ECR kustom dan skrip Python**Pastikan Anda menggunakan `execution_input` parameter untuk menentukan nama pekerjaan. Nilai parameter harus unik setiap kali pekerjaan berjalan. Juga, kode file **training.py** diteruskan sebagai `input` parameter ke`ProcessingStep`, yang berarti bahwa itu akan disalin di dalam wadah. Tujuan untuk `ProcessingInput` kode adalah sama dengan argumen kedua di dalam`container_entrypoint`.<pre>script_processor = ScriptProcessor(command=['python3'],<br />                image_uri=image_uri,<br />                role=role,<br />                instance_count=1,<br />                instance_type='ml.m5.xlarge')<br /><br /><br />processing_step = steps.ProcessingStep(<br />    "training-step",<br />    processor=script_processor,<br />    job_name=execution_input["PreprocessingJobName"],<br />    inputs=[<br />        ProcessingInput(<br />            source=input_code,<br />            destination="/opt/ml/processing/input/code",<br />            input_name="code",<br />        ),<br />    ],<br />    outputs=[<br />        ProcessingOutput(<br />            source='/opt/ml/processing/model', <br />            destination="s3://{}/{}".format(bucket, prefix), <br />            output_name='byoc-example')<br />    ],<br />    container_entrypoint=["python3", "/opt/ml/processing/input/code/training.py"],<br />)</pre>**Contoh alur kerja Step Functions yang menjalankan pekerjaan SageMaker pemrosesan**Contoh alur kerja ini mencakup langkah pekerjaan SageMaker pemrosesan saja, bukan alur kerja Step Functions yang lengkap. Untuk contoh alur kerja lengkap, lihat [Contoh notebook SageMaker dalam](https://aws-step-functions-data-science-sdk.readthedocs.io/en/stable/readmelink.html#example-notebooks-in-sagemaker) dokumentasi AWS Step Functions Data Science SDK.<pre>workflow_graph = Chain([processing_step])<br /><br />workflow = Workflow(<br />    name="ProcessingWorkflow",<br />    definition=workflow_graph,<br />    role=workflow_execution_role<br />)<br /><br />workflow.create()<br /># Execute workflow<br />execution = workflow.execute(<br />    inputs={<br />        "PreprocessingJobName": str(datetime.datetime.now().strftime("%Y%m%d%H%M-%SS")),  # Each pre processing job (SageMaker processing job) requires a unique name,<br />    }<br />)<br />execution_output = execution.get_output(wait=True)</pre> | Ilmuwan data | 

## Sumber daya terkait
<a name="create-a-custom-docker-container-image-for-sagemaker-and-use-it-for-model-training-in-aws-step-functions-resources"></a>
+ [Memproses data](https://docs.aws.amazon.com/sagemaker/latest/dg/processing-job.html) (*Panduan SageMaker Pengembang Amazon*)
+ [Mengadaptasi wadah pelatihan Anda sendiri](https://docs.aws.amazon.com/sagemaker/latest/dg/adapt-training-container.html) (*Panduan SageMaker Pengembang Amazon*)

# Gunakan agen Amazon Bedrock untuk mengotomatiskan pembuatan kontrol entri akses di Amazon EKS melalui petunjuk berbasis teks
<a name="using-amazon-bedrock-agents-to-automate-creation-of-access-entry-controls-in-amazon-eks"></a>

*Keshav Ganesh dan Sudhanshu Saurav, Amazon Web Services*

## Ringkasan
<a name="using-amazon-bedrock-agents-to-automate-creation-of-access-entry-controls-in-amazon-eks-summary"></a>

Organizations menghadapi tantangan dalam mengelola kontrol akses dan penyediaan sumber daya ketika beberapa tim perlu bekerja dengan cluster Amazon Elastic Kubernetes Service (Amazon EKS) bersama. Layanan Kubernetes yang dikelola seperti Amazon EKS telah menyederhanakan operasi klaster. Namun, overhead administratif untuk mengelola akses tim dan izin sumber daya tetap kompleks dan memakan waktu. 

Pola ini menunjukkan bagaimana agen Amazon Bedrock dapat membantu Anda mengotomatiskan manajemen akses klaster Amazon EKS. Otomatisasi ini memungkinkan tim pengembangan untuk fokus pada pengembangan aplikasi inti mereka daripada berurusan dengan pengaturan dan manajemen kontrol akses. Anda dapat menyesuaikan agen Amazon Bedrock untuk melakukan tindakan untuk berbagai tugas melalui petunjuk bahasa alami yang sederhana.

Dengan menggunakan AWS Lambda fungsi sebagai grup tindakan, agen Amazon Bedrock dapat menangani tugas seperti membuat entri akses pengguna dan mengelola kebijakan akses. Selain itu, agen Amazon Bedrock dapat mengonfigurasi asosiasi identitas pod yang memungkinkan akses ke sumber daya AWS Identity and Access Management (IAM) untuk pod yang berjalan di klaster. Dengan menggunakan solusi ini, organisasi dapat merampingkan administrasi klaster Amazon EKS mereka dengan petunjuk berbasis teks sederhana, mengurangi overhead manual, dan meningkatkan efisiensi pengembangan secara keseluruhan.

## Prasyarat dan batasan
<a name="using-amazon-bedrock-agents-to-automate-creation-of-access-entry-controls-in-amazon-eks-prereqs"></a>

**Prasyarat**
+ Aktif Akun AWS.
+ Menetapkan [peran dan izin](https://docs.aws.amazon.com/bedrock/latest/userguide/security_iam_id-based-policy-examples.html) IAM untuk proses penerapan. Ini termasuk izin untuk mengakses Amazon Bedrock foundation models (FM), membuat fungsi Lambda, dan sumber daya lain yang diperlukan di seluruh target. Akun AWS
+ [Akses diaktifkan](https://docs.aws.amazon.com/bedrock/latest/userguide/model-access.html) di aktif Akun AWS ke Amazon Bedrock ini FMs: Amazon Titan Text Embeddings V2 dan Anthropic Claude 3 Haiku.
+ AWS Command Line Interface [(AWS CLI) versi 2.9.11 atau yang lebih baru, [diinstal](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html) dan dikonfigurasi.](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html)
+ [eksctl 0.194.0 atau yang lebih baru, diinstal.](https://eksctl.io/installation/)

**Batasan**
+ Pelatihan dan dokumentasi mungkin diperlukan untuk membantu memastikan kelancaran adopsi dan penggunaan teknik ini secara efektif. Menggunakan Amazon Bedrock, Amazon EKS, Lambda, OpenSearch Amazon Service, dan [OpenAPI](https://www.openapis.org/what-is-openapi) melibatkan kurva pembelajaran yang signifikan bagi pengembang dan tim. DevOps 
+ Beberapa Layanan AWS tidak tersedia di semua Wilayah AWS. Untuk ketersediaan Wilayah, lihat [layanan AWS menurut Wilayah](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/). Untuk titik akhir tertentu, lihat [Titik akhir dan kuota layanan](https://docs.aws.amazon.com/general/latest/gr/aws-service-information.html), dan pilih tautan untuk layanan.

## Arsitektur
<a name="using-amazon-bedrock-agents-to-automate-creation-of-access-entry-controls-in-amazon-eks-architecture"></a>

Diagram berikut menunjukkan alur kerja dan komponen arsitektur untuk pola ini.

![\[Alur kerja dan komponen untuk membuat kontrol akses di Amazon EKS dengan agen Amazon Bedrock.\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/images/pattern-img/2c52b1ba-bbad-4a46-ab1e-10e69a0a66e7/images/c7981a86-f734-4c07-a2f7-63ad38b66ab6.png)


Solusi ini melakukan langkah-langkah berikut:

1. Pengguna berinteraksi dengan agen Amazon Bedrock dengan mengirimkan prompt atau kueri yang berfungsi sebagai masukan bagi agen untuk memproses dan mengambil tindakan.

1. Berdasarkan prompt, agen Amazon Bedrock memeriksa skema OpenAPI untuk mengidentifikasi API yang benar untuk ditargetkan. Jika agen Amazon Bedrock menemukan panggilan API yang benar, permintaan akan masuk ke grup tindakan yang terkait dengan fungsi Lambda yang mengimplementasikan tindakan ini.

1. Jika API yang relevan tidak ditemukan, agen Amazon Bedrock akan menanyakan koleksi tersebut OpenSearch . OpenSearch *Koleksinya menggunakan konten basis pengetahuan terindeks yang bersumber dari bucket Amazon S3 yang berisi Panduan Pengguna Amazon EKS.*

1.  OpenSearch Koleksi mengembalikan informasi kontekstual yang relevan ke agen Amazon Bedrock.

1. Untuk permintaan yang dapat ditindaklanjuti (yang cocok dengan operasi API), agen Amazon Bedrock mengeksekusi dalam cloud pribadi virtual (VPC) dan memicu fungsi Lambda.

1. Fungsi Lambda melakukan tindakan yang didasarkan pada input pengguna di dalam klaster Amazon EKS.

1. Bucket Amazon S3 untuk kode Lambda menyimpan artefak yang memiliki kode dan logika yang ditulis untuk fungsi Lambda.

## Alat
<a name="using-amazon-bedrock-agents-to-automate-creation-of-access-entry-controls-in-amazon-eks-tools"></a>

**Layanan AWS**
+ [Amazon Bedrock](https://docs.aws.amazon.com/bedrock/latest/userguide/what-is-bedrock.html) adalah layanan yang dikelola sepenuhnya yang membuat model foundation berkinerja tinggi (FMs) dari startup AI terkemuka dan Amazon tersedia untuk Anda gunakan melalui API terpadu.
+ [AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html)membantu Anda menyiapkan AWS sumber daya, menyediakannya dengan cepat dan konsisten, dan mengelolanya sepanjang siklus hidupnya di seluruh Akun AWS dan. Wilayah AWS
+ [Amazon Elastic Kubernetes Service (Amazon](https://docs.aws.amazon.com/eks/latest/userguide/getting-started.html) EKS) membantu Anda menjalankan AWS Kubernetes tanpa perlu menginstal atau memelihara control plane atau node Kubernetes Anda sendiri.
+ [AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) membantu Anda mengelola akses ke AWS sumber daya dengan aman dengan mengontrol siapa yang diautentikasi dan diberi wewenang untuk menggunakannya.
+ [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html)adalah layanan komputasi yang membantu Anda menjalankan kode tanpa perlu menyediakan atau mengelola server. Ini menjalankan kode Anda hanya bila diperlukan dan skala secara otomatis, jadi Anda hanya membayar untuk waktu komputasi yang Anda gunakan.
+ [Amazon OpenSearch Service adalah layanan](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/what-is.html) terkelola yang membantu Anda menyebarkan, mengoperasikan, dan menskalakan OpenSearch klaster di. AWS Cloud Fitur koleksinya membantu Anda mengatur data dan membangun basis pengetahuan komprehensif yang dapat digunakan asisten AI seperti agen Amazon Bedrock.
+ [Amazon Simple Storage Service (Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html)) adalah layanan penyimpanan objek berbasis cloud yang membantu Anda menyimpan, melindungi, dan mengambil sejumlah data.

**Alat lainnya**
+ [eksctl](https://docs.aws.amazon.com/eks/latest/userguide/getting-started-eksctl.html) adalah utilitas baris perintah untuk membuat dan mengelola cluster Kubernetes di Amazon EKS.

**Repositori kode**

Kode untuk pola ini tersedia di repositori GitHub [eks-access-controls-bedrock-agent](https://github.com/aws-samples/eks-access-controls-bedrock-agent.git).

## Praktik terbaik
<a name="using-amazon-bedrock-agents-to-automate-creation-of-access-entry-controls-in-amazon-eks-best-practices"></a>
+ Pertahankan keamanan setinggi mungkin saat menerapkan pola ini. Pastikan klaster Amazon EKS bersifat pribadi, memiliki izin akses terbatas, dan semua sumber daya berada di dalam cloud pribadi virtual (VPC). Untuk informasi tambahan, lihat [Praktik terbaik untuk keamanan](https://docs.aws.amazon.com/eks/latest/best-practices/security.html) dalam dokumentasi Amazon EKS.
+ Gunakan [kunci terkelola AWS KMS pelanggan](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html) sedapat mungkin, dan berikan izin akses terbatas kepada mereka.
+ Ikuti prinsip hak istimewa terkecil dan berikan izin minimum yang diperlukan untuk melakukan tugas. Untuk informasi selengkapnya, lihat [Berikan hak istimewa terkecil](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#grant-least-priv) dan [praktik terbaik Keamanan](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html) dalam dokumentasi IAM.

## Epik
<a name="using-amazon-bedrock-agents-to-automate-creation-of-access-entry-controls-in-amazon-eks-epics"></a>

### Mengatur lingkungan
<a name="set-up-the-environment"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Kloning repositori. | Untuk mengkloning repositori pola ini, jalankan perintah berikut di workstation lokal Anda:<pre>git clone https://github.com/aws-samples/eks-access-controls-bedrock-agent.git</pre> | AWS DevOps | 
| Dapatkan Akun AWS ID. | Untuk mendapatkan Akun AWS ID, gunakan langkah-langkah berikut:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/using-amazon-bedrock-agents-to-automate-creation-of-access-entry-controls-in-amazon-eks.html)Perintah ini menyimpan Akun AWS ID Anda dalam `AWS_ACCOUNT` variabel. | AWS DevOps | 
| Buat bucket S3 untuk kode Lambda. | [Untuk menerapkan solusi ini, Anda harus membuat tiga bucket Amazon S3 yang melayani tujuan berbeda, seperti yang ditunjukkan pada diagram arsitektur.](#using-amazon-bedrock-agents-to-automate-creation-of-access-entry-controls-in-amazon-eks-architecture) Bucket S3 adalah untuk kode Lambda, basis pengetahuan, dan skema OpenAPI.Untuk membuat bucket kode Lambda, gunakan langkah-langkah berikut:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/using-amazon-bedrock-agents-to-automate-creation-of-access-entry-controls-in-amazon-eks.html)Perintah package membuat CloudFormation template baru (`eks-access-controls-template.yaml`) yang berisi:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/using-amazon-bedrock-agents-to-automate-creation-of-access-entry-controls-in-amazon-eks.html) | AWS DevOps | 
| Buat bucket S3 untuk basis pengetahuan. | Untuk membuat bucket Amazon S3 untuk basis pengetahuan, gunakan langkah-langkah berikut:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/using-amazon-bedrock-agents-to-automate-creation-of-access-entry-controls-in-amazon-eks.html) | AWS DevOps | 
| Buat bucket S3 untuk skema OpenAPI. | Untuk membuat bucket Amazon S3 untuk skema OpenAPI, gunakan langkah-langkah berikut:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/using-amazon-bedrock-agents-to-automate-creation-of-access-entry-controls-in-amazon-eks.html) | AWS DevOps | 

### Menyebarkan tumpukan CloudFormation
<a name="deploy-the-cfnshort-stack"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Menyebarkan CloudFormation tumpukan.  | Untuk menyebarkan CloudFormation tumpukan, gunakan file CloudFormation template `eks-access-controls-template.yaml` yang Anda buat sebelumnya. Untuk petunjuk selengkapnya, lihat [Membuat tumpukan dari CloudFormation konsol](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-console-create-stack.html) di CloudFormation dokumentasi.Penyediaan OpenSearch indeks dengan CloudFormation template membutuhkan waktu sekitar 10 menit.Setelah tumpukan dibuat, buat catatan `VPC_ID` dan `PRIVATE_SUBNET ID` s. | AWS DevOps | 
| Buat cluster Amazon EKS.  | Untuk membuat cluster Amazon EKS di dalam VPC, gunakan langkah-langkah berikut:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/using-amazon-bedrock-agents-to-automate-creation-of-access-entry-controls-in-amazon-eks.html)Hasil yang diharapkan adalah sebagai berikut:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/using-amazon-bedrock-agents-to-automate-creation-of-access-entry-controls-in-amazon-eks.html) | AWS DevOps | 

### Hubungkan fungsi Lambda dan kluster Amazon EKS
<a name="connect-the-lam-function-and-the-eks-cluster"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Buat koneksi antara kluster Amazon EKS dan fungsi Lambda. | Untuk mengatur izin jaringan dan IAM agar fungsi Lambda dapat berkomunikasi dengan klaster Amazon EKS, gunakan langkah-langkah berikut:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/using-amazon-bedrock-agents-to-automate-creation-of-access-entry-controls-in-amazon-eks.html) | AWS DevOps | 

### Pengujian solusi
<a name="test-the-solution"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Uji agen Amazon Bedrock. | Sebelum menguji agen Amazon Bedrock, pastikan Anda melakukan hal berikut:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/using-amazon-bedrock-agents-to-automate-creation-of-access-entry-controls-in-amazon-eks.html)Untuk mengakses agen Amazon Bedrock, gunakan langkah-langkah berikut:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/using-amazon-bedrock-agents-to-automate-creation-of-access-entry-controls-in-amazon-eks.html)[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/using-amazon-bedrock-agents-to-automate-creation-of-access-entry-controls-in-amazon-eks.html)Anda juga dapat meminta agen untuk melakukan tindakan untuk asosiasi EKS Pod Identity. Untuk detail selengkapnya, lihat [Pelajari cara EKS Pod Identity memberikan akses Pod ke Layanan AWS](https://docs.aws.amazon.com/eks/latest/userguide/pod-identities.html) dalam dokumentasi Amazon EKS. | AWS DevOps | 

### Bersihkan
<a name="clean-up"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Pembersihan sumber daya  | Untuk membersihkan sumber daya yang dibuat pola ini, gunakan prosedur berikut. Tunggu setiap langkah penghapusan selesai sebelum melanjutkan ke langkah berikutnya.Prosedur ini akan menghapus semua sumber daya yang dibuat oleh tumpukan ini secara permanen. Pastikan Anda telah mencadangkan data penting apa pun sebelum melanjutkan.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/using-amazon-bedrock-agents-to-automate-creation-of-access-entry-controls-in-amazon-eks.html) | AWS DevOps | 

## Pemecahan masalah
<a name="using-amazon-bedrock-agents-to-automate-creation-of-access-entry-controls-in-amazon-eks-troubleshooting"></a>


| Isu | Solusi | 
| --- | --- | 
| Kode kesalahan bukan nol dikembalikan selama pengaturan lingkungan. | Verifikasi bahwa Anda menggunakan folder yang benar saat menjalankan perintah apa pun untuk menerapkan solusi ini. Untuk informasi selengkapnya, lihat file [First\$1Deploy.md](https://github.com/aws-samples/eks-access-controls-bedrock-agent/blob/main/FIRST_DEPLOY.md) di repositori pola ini. | 
| Fungsi Lambda tidak dapat melakukan tugas. | Pastikan konektivitas diatur dengan benar dari fungsi Lambda ke cluster Amazon EKS. | 
| Agen meminta tidak mengenali. APIs | Menerapkan kembali solusinya. Untuk informasi selengkapnya, lihat file [RE\$1DEPLOY.md](https://github.com/aws-samples/eks-access-controls-bedrock-agent/blob/main/RE_DEPLOY.md) di repositori pola ini. | 
| Tumpukan gagal dihapus. | Upaya awal untuk menghapus tumpukan mungkin gagal. Kegagalan ini dapat terjadi karena masalah ketergantungan dengan sumber daya khusus yang dibuat untuk OpenSearch koleksi yang melakukan pengindeksan untuk basis pengetahuan. Untuk menghapus tumpukan, coba lagi operasi hapus dengan mempertahankan sumber daya kustom. | 

## Sumber daya terkait
<a name="using-amazon-bedrock-agents-to-automate-creation-of-access-entry-controls-in-amazon-eks-resources"></a>

**AWS Blog**
+ [Penyelaman mendalam ke kontrol manajemen akses Amazon EKS yang disederhanakan](https://aws.amazon.com/blogs/containers/a-deep-dive-into-simplified-amazon-eks-access-management-controls/) 

**Dokumentasi Amazon Bedrock**
+ [Otomatiskan tugas dalam aplikasi Anda menggunakan agen AI](https://docs.aws.amazon.com/bedrock/latest/userguide/agents.html) 
+ [Bagaimana Agen Amazon Bedrock bekerja](https://docs.aws.amazon.com/bedrock/latest/userguide/agents-how.html)
+ [Menguji dan memecahkan masalah perilaku agen](https://docs.aws.amazon.com/bedrock/latest/userguide/agents-test.html)
+ [Gunakan grup tindakan untuk menentukan tindakan yang harus dilakukan agen Anda](https://docs.aws.amazon.com/bedrock/latest/userguide/agents-action-create.html) 

**Dokumentasi Amazon EKS**
+ [Pelajari cara kerja kontrol akses di Amazon EKS](https://docs.aws.amazon.com/eks/latest/userguide/cluster-auth.html)

# Terapkan kasus penggunaan RAG AWS dengan menggunakan Terraform dan Amazon Bedrock
<a name="deploy-rag-use-case-on-aws"></a>

*Martin Maritsch, Nicolas Jacob Baer, Olivier Brique, Julian Ferdinand Grueber, Alice Morano, dan Nicola D Orazio, Amazon Web Services*

## Ringkasan
<a name="deploy-rag-use-case-on-aws-summary"></a>

AWS menyediakan berbagai opsi untuk membangun kasus penggunaan AI generatif yang diaktifkan [Retrieval Augmented Generation (RAG)](https://aws.amazon.com/what-is/retrieval-augmented-generation/). Pola ini memberi Anda solusi untuk aplikasi berbasis RAG berdasarkan LangChain dan kompatibel dengan Amazon Aurora PostgreSQL sebagai penyimpanan vektor. Anda dapat langsung menerapkan solusi ini dengan Terraform ke dalam Akun AWS dan menerapkan kasus penggunaan RAG sederhana berikut:

1. Pengguna mengunggah file secara manual ke bucket Amazon Simple Storage Service (Amazon S3), seperti file Microsoft Excel atau dokumen PDF. (Untuk informasi selengkapnya tentang jenis file yang didukung, lihat Dokumentasi [tidak terstruktur](https://docs.unstructured.io/open-source/core-functionality/partitioning).)

1. Isi file diekstraksi dan disematkan ke dalam database pengetahuan yang didasarkan pada Aurora PostgreSQL kompatibel tanpa server, yang mendukung konsumsi dokumen secara real-time ke dalam penyimpanan vektor. Pendekatan ini memungkinkan model RAG untuk mengakses dan mengambil informasi yang relevan untuk kasus penggunaan di mana latensi rendah penting.

1. Ketika pengguna terlibat dengan model pembuatan teks, itu meningkatkan interaksi melalui augmentasi pengambilan konten yang relevan dari file yang diunggah sebelumnya.

Pola ini menggunakan [Amazon Titan Text Embeddings v2](https://docs.aws.amazon.com/bedrock/latest/userguide/titan-embedding-models.html) sebagai model embedding dan [Anthropic Claude 3 Soneta](https://aws.amazon.com/bedrock/claude/) sebagai model pembuatan teks, keduanya tersedia di Amazon Bedrock.

## Prasyarat dan batasan
<a name="deploy-rag-use-case-on-aws-prereqs"></a>

**Prasyarat**
+ Aktif Akun AWS.
+ AWS Command Line Interface (AWS CLI) diinstal dan dikonfigurasi dengan Anda Akun AWS. Untuk petunjuk [penginstalan, lihat Menginstal atau memperbarui ke versi terbaru](https://docs.aws.amazon.com/cli/latest/userguide/install-cliv2.html) dari AWS CLI dokumentasi. AWS CLI Untuk meninjau AWS kredensi Anda dan akses Anda ke akun Anda, lihat [Pengaturan konfigurasi dan file kredensi dalam dokumentasi](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html). AWS CLI 
+ Akses model yang diaktifkan untuk model bahasa besar yang diperlukan (LLMs) di konsol Amazon Bedrock Anda Akun AWS. Pola ini membutuhkan yang berikut LLMs:
  + `amazon.titan-embed-text-v2:0`
  + `anthropic.claude-3-sonnet-20240229-v1:0`

**Batasan**
+ Contoh arsitektur ini tidak menyertakan antarmuka untuk menjawab pertanyaan terprogram dengan database vektor. Jika kasus penggunaan Anda memerlukan API, pertimbangkan untuk menambahkan [Amazon API Gateway](https://docs.aws.amazon.com/apigateway/latest/developerguide) dengan AWS Lambda fungsi yang menjalankan tugas pengambilan dan penjawab pertanyaan. 
+ Contoh arsitektur ini tidak menyertakan fitur pemantauan untuk infrastruktur yang digunakan. Jika kasus penggunaan Anda memerlukan pemantauan, pertimbangkan untuk menambahkan [layanan AWS pemantauan](https://docs.aws.amazon.com/prescriptive-guidance/latest/implementing-logging-monitoring-cloudwatch/welcome.html).
+ Jika Anda mengunggah banyak dokumen dalam jangka waktu singkat ke bucket Amazon S3, fungsi Lambda mungkin mengalami batas tarif. Sebagai solusinya, Anda dapat memisahkan fungsi Lambda dengan antrian Amazon Simple Queue Service (Amazon SQS) di mana Anda dapat mengontrol laju pemanggilan Lambda.
+ Beberapa Layanan AWS tidak tersedia di semua Wilayah AWS. Untuk ketersediaan Wilayah, lihat [Layanan AWS berdasarkan Wilayah](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/). Untuk titik akhir tertentu, lihat [Titik akhir dan kuota layanan](https://docs.aws.amazon.com/general/latest/gr/aws-service-information.html), dan pilih tautan untuk layanan.

**Versi produk**
+ [AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) versi 2 atau yang lebih baru
+ [Docker](https://docs.docker.com/get-started/) versi 26.0.0 atau yang lebih baru
+ [Puisi](https://pypi.org/project/poetry/) versi 1.7.1 atau yang lebih baru
+ [Python](https://www.python.org/downloads/) versi 3.10 atau yang lebih baru
+ [Terraform](https://developer.hashicorp.com/terraform/install) versi 1.8.4 atau yang lebih baru

## Arsitektur
<a name="deploy-rag-use-case-on-aws-architecture"></a>

Diagram berikut menunjukkan alur kerja dan komponen arsitektur untuk pola ini.

![\[Alur kerja untuk membuat aplikasi berbasis RAG menggunakan Aurora PostgreSQL dan di Amazon Bedrock. LLMs\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/images/pattern-img/8f184945-7f17-4760-8806-6d0eaeef372a/images/3771b7a0-05bd-4eb3-ad5b-199e22f86184.png)


Diagram ini menggambarkan hal berikut:

1. Saat objek dibuat di bucket Amazon S3`bedrock-rag-template-<account_id>`, notifikasi Amazon [S3 akan memanggil fungsi Lambda](https://docs.aws.amazon.com/AmazonS3/latest/userguide/EventNotifications.html). `data-ingestion-processor`

1. Fungsi Lambda `data-ingestion-processor` didasarkan pada image Docker yang disimpan di repositori Amazon Elastic Container Registry (Amazon ECR) Registry ECR). `bedrock-rag-template`

   Fungsi ini menggunakan [LangChain S3 FileLoader](https://python.langchain.com/v0.1/docs/integrations/document_loaders/aws_s3_file/) untuk membaca file sebagai [LangChain Dokumen](https://api.python.langchain.com/en/v0.0.339/schema/langchain.schema.document.Document.html). Kemudian, [LangChain RecursiveCharacterTextSplitter](https://python.langchain.com/v0.1/docs/modules/data_connection/document_transformers/recursive_text_splitter/)potongan setiap dokumen, diberi a `CHUNK_SIZE` dan a `CHUNK_OVERLAP` yang bergantung pada ukuran token maksimum model penyematan Amazon Titan Text Embedding V2. Selanjutnya, fungsi Lambda memanggil model embedding di Amazon Bedrock untuk menyematkan potongan ke dalam representasi vektor numerik. Terakhir, vektor-vektor ini disimpan dalam database Aurora PostgreSQL. Untuk mengakses database, fungsi Lambda pertama-tama mengambil nama pengguna dan kata sandi dari. AWS Secrets Manager

1. Pada [instance notebook](https://docs.aws.amazon.com/sagemaker/latest/dg/nbi.html) Amazon SageMaker AI`aws-sample-bedrock-rag-template`, pengguna dapat menulis prompt pertanyaan. Kode memanggil Claude 3 di Amazon Bedrock dan menambahkan informasi basis pengetahuan ke konteks prompt. Akibatnya, Claude 3 memberikan tanggapan menggunakan informasi dalam dokumen.

Pendekatan pola ini terhadap jaringan dan keamanan adalah sebagai berikut:
+ Fungsi Lambda `data-ingestion-processor` ada di subnet pribadi dalam virtual private cloud (VPC). Fungsi Lambda tidak diizinkan untuk mengirim lalu lintas ke internet publik karena grup keamanannya. Akibatnya, lalu lintas ke Amazon S3 dan Amazon Bedrock dirutekan melalui titik akhir VPC saja. Akibatnya, lalu lintas tidak melintasi internet publik, yang mengurangi latensi dan menambahkan lapisan keamanan tambahan di tingkat jaringan.
+ Semua sumber daya dan data dienkripsi kapan pun berlaku dengan menggunakan kunci AWS Key Management Service (AWS KMS) dengan alias. `aws-sample/bedrock-rag-template`

**Otomatisasi dan skala**

Pola ini menggunakan Terraform untuk menyebarkan infrastruktur dari repositori kode ke file. Akun AWS

## Alat
<a name="deploy-rag-use-case-on-aws-tools"></a>

**Layanan AWS**
+ [Amazon Aurora PostgreSQL Compatible Edition](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Aurora.AuroraPostgreSQL.html) adalah mesin database relasional yang dikelola sepenuhnya dan sesuai dengan ACID yang membantu Anda mengatur, mengoperasikan, dan menskalakan penerapan PostgreSQL. Dalam pola ini, Aurora PostgreSQL kompatibel menggunakan plugin pgvector sebagai database vektor.
+ [Amazon Bedrock](https://docs.aws.amazon.com/bedrock/latest/userguide/what-is-bedrock.html) adalah layanan yang dikelola sepenuhnya yang membuat model foundation berkinerja tinggi (FMs) dari startup AI terkemuka dan Amazon tersedia untuk Anda gunakan melalui API terpadu.
+ [AWS Command Line Interface (AWS CLI)](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html) adalah alat open source yang membantu Anda berinteraksi Layanan AWS melalui perintah di shell baris perintah Anda.
+ [Amazon Elastic Container Registry (Amazon ECR](https://docs.aws.amazon.com/AmazonECR/latest/userguide/what-is-ecr.html)) adalah layanan registri gambar kontainer terkelola yang aman, terukur, dan andal. Dalam pola ini, Amazon ECR meng-host image Docker untuk fungsi Lambda`data-ingestion-processor`.
+ [AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) membantu Anda mengelola akses ke AWS sumber daya dengan aman dengan mengontrol siapa yang diautentikasi dan diberi wewenang untuk menggunakannya.
+ [AWS Key Management Service (AWS KMS)](https://docs.aws.amazon.com/kms/latest/developerguide/overview.html) membantu Anda membuat dan mengontrol kunci kriptografi untuk membantu melindungi data Anda.
+ [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html)adalah layanan komputasi yang membantu Anda menjalankan kode tanpa perlu menyediakan atau mengelola server. Ini menjalankan kode Anda hanya bila diperlukan dan skala secara otomatis, jadi Anda hanya membayar untuk waktu komputasi yang Anda gunakan. Dalam pola ini, Lambda menyerap data ke dalam penyimpanan vektor.
+ [Amazon SageMaker AI](https://docs.aws.amazon.com/sagemaker/?id=docs_gateway) adalah layanan pembelajaran mesin terkelola (ML) yang membantu Anda membuat dan melatih model ML, lalu menerapkannya ke lingkungan host yang siap produksi.
+ [AWS Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/intro.html)membantu Anda mengganti kredensi hardcode dalam kode Anda, termasuk kata sandi, dengan panggilan API ke Secrets Manager untuk mengambil rahasia secara terprogram.
+ [Amazon Simple Storage Service (Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html)) adalah layanan penyimpanan objek berbasis cloud yang membantu Anda menyimpan, melindungi, dan mengambil sejumlah data.
+ [Amazon Virtual Private Cloud (Amazon VPC)](https://docs.aws.amazon.com/vpc/latest/userguide/what-is-amazon-vpc.html) membantu Anda meluncurkan AWS sumber daya ke jaringan virtual yang telah Anda tentukan. Jaringan virtual ini menyerupai jaringan tradisional yang akan Anda operasikan di pusat data Anda sendiri, dengan manfaat menggunakan infrastruktur yang dapat diskalakan. AWS VPC mencakup subnet dan tabel routing untuk mengontrol arus lalu lintas.

**Alat-alat lainnya**
+ [Docker](https://docs.docker.com/manuals/) adalah seperangkat produk platform as a service (PaaS) yang menggunakan virtualisasi pada tingkat sistem operasi untuk mengirimkan perangkat lunak dalam wadah.
+ [HashiCorp Terraform](https://www.terraform.io/docs) adalah alat infrastruktur sebagai kode (IAc) yang membantu Anda menggunakan kode untuk menyediakan dan mengelola infrastruktur dan sumber daya cloud.
+ [Puisi](https://pypi.org/project/poetry/) adalah alat untuk manajemen ketergantungan dan pengemasan dengan Python.
+ [Python adalah bahasa](https://www.python.org/) pemrograman komputer tujuan umum.

**Repositori kode**

Kode untuk pola ini tersedia di repositori GitHub [terraform-rag-template-using-amazon-bedrock](https://github.com/aws-samples/terraform-rag-template-using-amazon-bedrock).

## Praktik terbaik
<a name="deploy-rag-use-case-on-aws-best-practices"></a>
+ Meskipun contoh kode ini dapat digunakan di mana pun Wilayah AWS, kami menyarankan Anda menggunakan US East (Virginia N.) — `us-east-1` atau US West (California N.) —. `us-west-1` Rekomendasi ini didasarkan pada ketersediaan fondasi dan model penyematan di Amazon Bedrock pada saat publikasi pola ini. Untuk up-to-date daftar dukungan model fondasi Amazon Bedrock di Wilayah AWS, lihat [Dukungan model oleh Wilayah AWS](https://docs.aws.amazon.com/bedrock/latest/userguide/models-regions.html) dalam dokumentasi Amazon Bedrock. Untuk informasi tentang menerapkan contoh kode ini ke Wilayah lain, lihat [Informasi tambahan](#deploy-rag-use-case-on-aws-additional).
+ Pola ini hanya menyediakan proof-of-concept (PoC) atau demo percontohan. Jika Anda ingin membawa kode ke produksi, pastikan untuk menggunakan praktik terbaik berikut:
  + Aktifkan pencatatan akses server untuk Amazon S3.
  + Siapkan [pemantauan dan peringatan untuk fungsi](https://docs.aws.amazon.com/lambda/latest/dg/lambda-monitoring.html) Lambda.
  + Jika kasus penggunaan Anda memerlukan API, pertimbangkan untuk menambahkan Amazon API Gateway dengan fungsi Lambda yang menjalankan tugas pengambilan dan penjawab pertanyaan.
+ Ikuti prinsip hak istimewa terkecil dan berikan izin minimum yang diperlukan untuk melakukan tugas. Untuk informasi selengkapnya, lihat [Berikan hak istimewa terkecil](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#grant-least-priv) dan [praktik terbaik Keamanan](https://docs.aws.amazon.com/IAM/latest/UserGuide/IAMBestPracticesAndUseCases.html) dalam dokumentasi IAM.

## Epik
<a name="deploy-rag-use-case-on-aws-epics"></a>

### Terapkan solusi dalam Akun AWS
<a name="deploy-the-solution-in-an-aws-account"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Kloning repositori. | Untuk mengkloning GitHub repositori yang disediakan dengan pola ini, gunakan perintah berikut:<pre>git clone https://github.com/aws-samples/terraform-rag-template-using-amazon-bedrock</pre> | AWS DevOps | 
| Konfigurasikan variabel. | Untuk mengkonfigurasi parameter untuk pola ini, lakukan hal berikut:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/deploy-rag-use-case-on-aws.html) | AWS DevOps | 
| Menyebarkan solusinya. | Untuk menerapkan solusi, lakukan hal berikut:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/deploy-rag-use-case-on-aws.html)Penyebaran infrastruktur menyediakan instance SageMaker AI di dalam VPC dan dengan izin untuk mengakses database Aurora PostgreSQL. | AWS DevOps | 

### Pengujian solusi
<a name="test-the-solution"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Jalankan demo. | Setelah penerapan infrastruktur sebelumnya berhasil, gunakan langkah-langkah berikut untuk menjalankan demo di notebook Jupyter:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/deploy-rag-use-case-on-aws.html)Notebook Jupyter memandu Anda melalui proses berikut:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/deploy-rag-use-case-on-aws.html) | AWS Umum | 

### Bersihkan infrastur
<a name="clean-up-infrastucture"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Bersihkan infrastruktur. | Untuk menghapus semua sumber daya yang Anda buat saat tidak lagi diperlukan, gunakan perintah berikut:<pre>terraform destroy -var-file=commons.tfvars</pre> | AWS DevOps | 

## Sumber daya terkait
<a name="deploy-rag-use-case-on-aws-resources"></a>

**AWS sumber daya**
+ [Membangun fungsi Lambda dengan Python](https://docs.aws.amazon.com/lambda/latest/dg/lambda-python.html)
+ [Parameter inferensi untuk model pondasi](https://docs.aws.amazon.com/bedrock/latest/userguide/model-parameters.html)
+ [Akses ke model fondasi Amazon Bedrock](https://docs.aws.amazon.com/bedrock/latest/userguide/model-access.html)
+ [Peran database vektor dalam aplikasi AI generatif](https://aws.amazon.com/blogs/database/the-role-of-vector-datastores-in-generative-ai-applications/) (Blog AWS Database)
+ [Bekerja dengan Amazon Aurora PostgreSQL](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Aurora.AuroraPostgreSQL.html)

**Sumber daya lainnya**
+ [dokumentasi pgvector](https://github.com/pgvector/pgvector)

## Informasi tambahan
<a name="deploy-rag-use-case-on-aws-additional"></a>

**Menerapkan database vektor**

Pola ini menggunakan Aurora PostgreSQL kompatibel untuk mengimplementasikan database vektor untuk RAG. Sebagai alternatif untuk Aurora PostgreSQL, AWS menyediakan kemampuan dan layanan lain untuk RAG, seperti Amazon Bedrock Knowledge Bases dan Amazon Service. OpenSearch Anda dapat memilih solusi yang paling sesuai dengan kebutuhan spesifik Anda:
+ [Amazon OpenSearch Service](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/what-is.html) menyediakan mesin pencari dan analitik terdistribusi yang dapat Anda gunakan untuk menyimpan dan menanyakan data dalam jumlah besar.
+ [Amazon Bedrock Knowledge Bases](https://docs.aws.amazon.com/bedrock/latest/userguide/knowledge-base.html) dirancang untuk membangun dan menyebarkan basis pengetahuan sebagai abstraksi tambahan untuk menyederhanakan proses konsumsi dan pengambilan RAG. Pangkalan Pengetahuan Amazon Bedrock dapat bekerja dengan Aurora PostgreSQL dan Amazon Service. OpenSearch 

**Menyebarkan ke yang lain Wilayah AWS**

Seperti yang dijelaskan dalam [Arsitektur](#deploy-rag-use-case-on-aws-architecture), kami menyarankan Anda menggunakan Region US East (Virginia N.) — `us-east-1` atau US West (California N.) — `us-west-1` untuk menyebarkan contoh kode ini. Namun, ada dua cara yang mungkin untuk menyebarkan contoh kode ini ke Wilayah selain `us-east-1` dan`us-west-1`. Anda dapat mengonfigurasi Wilayah penyebaran dalam `commons.tfvars` file. Untuk akses model pondasi lintas wilayah, pertimbangkan opsi berikut:
+ **Melintasi internet publik** — Jika lalu lintas dapat melintasi internet publik, tambahkan gateway internet ke VPC. Kemudian, sesuaikan grup keamanan yang ditetapkan ke fungsi Lambda `data-ingestion-processor` dan instance notebook SageMaker AI untuk memungkinkan lalu lintas keluar ke internet publik.
+ **Tidak melintasi internet publik** — Untuk menyebarkan sampel ini ke Wilayah mana pun selain `us-east-1` atau`us-west-1`, lakukan hal berikut:

1. Di `us-west-1` Wilayah `us-east-1` atau, buat VPC tambahan termasuk titik akhir VPC untuk. `bedrock-runtime` 

1. Buat koneksi peering dengan menggunakan [VPC](https://docs.aws.amazon.com/vpc/latest/peering/what-is-vpc-peering.html) peering atau gateway [transit ke aplikasi](https://docs.aws.amazon.com/vpc/latest/tgw/tgw-peering.html) VPC.

1. Saat mengonfigurasi klien `bedrock-runtime` boto3 dalam fungsi Lambda apa pun di luar `us-east-1` atau`us-west-1`, teruskan nama DNS pribadi dari titik akhir VPC untuk `bedrock-runtime` in `us-east-1` atau us-west-1 sebagai ke klien boto3. `endpoint_url`

# Menerapkan logika preprocessing ke dalam model MLdalam satu titik akhir menggunakan pipeline inferensi di Amazon SageMaker
<a name="deploy-preprocessing-logic-into-an-ml-model-in-a-single-endpoint-using-an-inference-pipeline-in-amazon-sagemaker"></a>

*Mohan Gowda Purushothama, Gabriel Rodriguez Garcia, dan Mateusz Zaremba, Amazon Web Services*

## Ringkasan
<a name="deploy-preprocessing-logic-into-an-ml-model-in-a-single-endpoint-using-an-inference-pipeline-in-amazon-sagemaker-summary"></a>

Pola ini menjelaskan cara menerapkan beberapa objek model pipeline dalam satu titik akhir dengan menggunakan pipeline [inferensi di Amazon](https://docs.aws.amazon.com/sagemaker/latest/dg/inference-pipelines.html). SageMaker Objek model pipeline mewakili tahapan alur kerja machine learning (ML) yang berbeda, seperti preprocessing, inferensi model, dan postprocessing. [Untuk mengilustrasikan penerapan objek model pipeline yang terhubung secara serial, pola ini menunjukkan kepada Anda cara menerapkan wadah [Scikit-learn pra-pemrosesan dan model regresi berdasarkan algoritme pembelajar](https://docs.aws.amazon.com/sagemaker/latest/dg/sklearn.html) linier yang ada di dalamnya.](https://docs.aws.amazon.com/sagemaker/latest/dg/linear-learner.html) SageMaker Penerapan di-host di belakang satu titik akhir di. SageMaker

**catatan**  
Penerapan dalam pola ini menggunakan tipe instance ml.m4.2xlarge. Sebaiknya gunakan jenis instans yang sesuai dengan persyaratan ukuran data dan kompleksitas alur kerja Anda. Untuk informasi selengkapnya, lihat [ SageMaker Harga Amazon](https://aws.amazon.com/sagemaker/pricing/). Pola ini menggunakan [gambar Docker bawaan untuk Scikit-learn](https://docs.aws.amazon.com/sagemaker/latest/dg/pre-built-docker-containers-scikit-learn-spark.html), tetapi Anda dapat menggunakan wadah Docker Anda sendiri dan mengintegrasikannya ke dalam alur kerja Anda.

## Prasyarat dan batasan
<a name="deploy-preprocessing-logic-into-an-ml-model-in-a-single-endpoint-using-an-inference-pipeline-in-amazon-sagemaker-prereqs"></a>

**Prasyarat**
+ Akun AWS yang aktif
+ [Python 3.9](https://www.python.org/downloads/release/python-390/)
+ [Perpustakaan Amazon SageMaker Python SDK](https://sagemaker.readthedocs.io/en/stable/) [dan Boto3](https://boto3.amazonaws.com/v1/documentation/api/latest/index.html)
+ [Peran](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html) [AWS Identity and Access Management (AWS IAM) dengan SageMaker [izin dasar dan izin](https://docs.aws.amazon.com/sagemaker/latest/dg/api-permissions-reference.html) Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-policy-language-overview.html)

**Versi produk**
+ [Amazon SageMaker Python SDK 2.49.2](https://sagemaker.readthedocs.io/en/v2.49.2/)

## Arsitektur
<a name="deploy-preprocessing-logic-into-an-ml-model-in-a-single-endpoint-using-an-inference-pipeline-in-amazon-sagemaker-architecture"></a>

**Tumpukan teknologi target**
+ Amazon Elastic Container Registry (Amazon ECR)
+ Amazon SageMaker
+  SageMaker Studio Amazon
+ Amazon Simple Storage Service (Amazon S3)
+ Titik akhir [inferensi waktu nyata](https://docs.aws.amazon.com/sagemaker/latest/dg/realtime-endpoints.html) untuk Amazon SageMaker

**Arsitektur target**

Diagram berikut menunjukkan arsitektur untuk penyebaran objek model SageMaker pipa Amazon.

![\[Arsitektur untuk penyebaran objek model SageMaker pipa\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/images/pattern-img/1105d51b-752f-46d7-962c-acef1fb3399f/images/12f06715-b1c2-4de0-b277-99ce87308152.png)


Diagram menunjukkan alur kerja berikut:

1.  SageMaker Notebook menyebarkan model pipa.

1. Ember S3 menyimpan artefak model.

1. Amazon ECR mendapatkan gambar wadah sumber dari bucket S3.

## Alat
<a name="deploy-preprocessing-logic-into-an-ml-model-in-a-single-endpoint-using-an-inference-pipeline-in-amazon-sagemaker-tools"></a>

**Alat AWS**
+ [Amazon Elastic Container Registry (Amazon ECR](https://docs.aws.amazon.com/AmazonECR/latest/userguide/what-is-ecr.html)) adalah layanan registri gambar kontainer terkelola yang aman, terukur, dan andal.
+ [Amazon SageMaker](https://docs.aws.amazon.com/sagemaker/latest/dg/whatis.html) adalah layanan ML terkelola yang membantu Anda membuat dan melatih model ML, lalu menerapkannya ke lingkungan host yang siap produksi.
+ [Amazon SageMaker Studio](https://docs.aws.amazon.com/sagemaker/latest/dg/studio.html) adalah lingkungan pengembangan terintegrasi (IDE) berbasis web untuk ML yang memungkinkan Anda membuat, melatih, men-debug, menerapkan, dan memantau model ML Anda.
+ [Amazon Simple Storage Service (Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html)) adalah layanan penyimpanan objek berbasis cloud yang membantu Anda menyimpan, melindungi, dan mengambil sejumlah data.

**Kode**

Kode untuk pola ini tersedia di GitHub [Inference Pipeline dengan repositori Scikit-learn dan](https://github.com/aws/amazon-sagemaker-examples/blob/main/sagemaker-python-sdk/scikit_learn_inference_pipeline/Inference%20Pipeline%20with%20Scikit-learn%20and%20Linear%20Learner.ipynb) Linear Learner.

## Epik
<a name="deploy-preprocessing-logic-into-an-ml-model-in-a-single-endpoint-using-an-inference-pipeline-in-amazon-sagemaker-epics"></a>

### Siapkan dataset
<a name="prepare-the-dataset"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Siapkan dataset untuk tugas regresi Anda. | [Buka buku catatan](https://docs.aws.amazon.com/sagemaker/latest/dg/notebooks-create-open.html#notebooks-open) di Amazon SageMaker Studio.Untuk mengimpor semua pustaka yang diperlukan dan menginisialisasi lingkungan kerja Anda, gunakan kode contoh berikut di buku catatan Anda:<pre>import sagemaker<br />from sagemaker import get_execution_role<br /><br />sagemaker_session = sagemaker.Session()<br /><br /># Get a SageMaker-compatible role used by this Notebook Instance.<br />role = get_execution_role()<br /><br /># S3 prefix<br />bucket = sagemaker_session.default_bucket()<br />prefix = "Scikit-LinearLearner-pipeline-abalone-example"</pre>Untuk mengunduh kumpulan data sampel, tambahkan kode berikut ke buku catatan Anda:<pre>! mkdir abalone_data<br />! aws s3 cp s3://sagemaker-sample-files/datasets/tabular/uci_abalone/abalone.csv ./abalone_data</pre>****Contoh dalam pola ini menggunakan [Abalone Data Set](https://archive.ics.uci.edu/ml/datasets/abalone) dari UCI Machine Learning Repository. | Ilmuwan data | 
| Unggah kumpulan data ke bucket S3. | Di buku catatan tempat Anda menyiapkan kumpulan data sebelumnya, tambahkan kode berikut untuk mengunggah data sampel ke bucket S3:<pre>WORK_DIRECTORY = "abalone_data"<br /><br />train_input = sagemaker_session.upload_data(<br />    path="{}/{}".format(WORK_DIRECTORY, "abalone.csv"),<br />    bucket=bucket,<br />    key_prefix="{}/{}".format(prefix, "train"),<br />)</pre> | Ilmuwan data | 

### Buat preprocessor data menggunakan SKLearn
<a name="create-the-data-preprocessor-using-sklearn"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Siapkan skrip preprocessor.py. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/deploy-preprocessing-logic-into-an-ml-model-in-a-single-endpoint-using-an-inference-pipeline-in-amazon-sagemaker.html) | Ilmuwan data | 
| Buat objek SKLearn preprocessor. | Untuk membuat objek SKLearn preprocessor (disebut SKLearn Estimator) yang dapat Anda masukkan ke dalam pipeline inferensi akhir, jalankan kode berikut di buku catatan Anda: SageMaker <pre>from sagemaker.sklearn.estimator import SKLearn<br /><br />FRAMEWORK_VERSION = "0.23-1"<br />script_path = "sklearn_abalone_featurizer.py"<br /><br />sklearn_preprocessor = SKLearn(<br />    entry_point=script_path,<br />    role=role,<br />    framework_version=FRAMEWORK_VERSION,<br />    instance_type="ml.c4.xlarge",<br />    sagemaker_session=sagemaker_session,<br />)<br />sklearn_preprocessor.fit({"train": train_input})</pre> | Ilmuwan data | 
| Uji inferensi preprocessor. | Untuk mengonfirmasi bahwa preprosesor Anda didefinisikan dengan benar, luncurkan [pekerjaan transformasi batch](https://docs.aws.amazon.com/sagemaker/latest/dg/batch-transform.html) dengan memasukkan kode berikut di SageMaker buku catatan Anda:<pre># Define a SKLearn Transformer from the trained SKLearn Estimator<br />transformer = sklearn_preprocessor.transformer(<br />    instance_count=1, instance_type="ml.m5.xlarge", assemble_with="Line", accept="text/csv"<br />)<br /><br /><br /># Preprocess training input<br />transformer.transform(train_input, content_type="text/csv")<br />print("Waiting for transform job: " + transformer.latest_transform_job.job_name)<br />transformer.wait()<br />preprocessed_train = transformer.output_path</pre> |  | 

### Buat model pembelajaran mesin
<a name="create-a-machine-learning-model"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Buat objek model. | Untuk membuat objek model berdasarkan algoritme pembelajar linier, masukkan kode berikut di SageMaker buku catatan Anda:<pre>import boto3<br />from sagemaker.image_uris import retrieve<br /><br />ll_image = retrieve("linear-learner", boto3.Session().region_name)<br />s3_ll_output_key_prefix = "ll_training_output"<br />s3_ll_output_location = "s3://{}/{}/{}/{}".format(<br />    bucket, prefix, s3_ll_output_key_prefix, "ll_model"<br />)<br /><br />ll_estimator = sagemaker.estimator.Estimator(<br />    ll_image,<br />    role,<br />    instance_count=1,<br />    instance_type="ml.m4.2xlarge",<br />    volume_size=20,<br />    max_run=3600,<br />    input_mode="File",<br />    output_path=s3_ll_output_location,<br />    sagemaker_session=sagemaker_session,<br />)<br /><br />ll_estimator.set_hyperparameters(feature_dim=10, predictor_type="regressor", mini_batch_size=32)<br /><br />ll_train_data = sagemaker.inputs.TrainingInput(<br />    preprocessed_train,<br />    distribution="FullyReplicated",<br />    content_type="text/csv",<br />    s3_data_type="S3Prefix",<br />)<br /><br />data_channels = {"train": ll_train_data}<br />ll_estimator.fit(inputs=data_channels, logs=True)</pre>Kode sebelumnya mengambil image Amazon ECR Docker yang relevan dari Amazon ECR Registry publik untuk model, membuat objek estimator, dan kemudian menggunakan objek tersebut untuk melatih model regresi. | Ilmuwan data | 

### Menyebarkan pipa akhir
<a name="deploy-the-final-pipeline"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Menyebarkan model pipa. | Untuk membuat objek model pipeline (yaitu objek preprocessor) dan menyebarkan objek, masukkan kode berikut di buku catatan Anda SageMaker :<pre>from sagemaker.model import Model<br />from sagemaker.pipeline import PipelineModel<br />import boto3<br />from time import gmtime, strftime<br /><br />timestamp_prefix = strftime("%Y-%m-%d-%H-%M-%S", gmtime())<br /><br />scikit_learn_inferencee_model = sklearn_preprocessor.create_model()<br />linear_learner_model = ll_estimator.create_model()<br /><br />model_name = "inference-pipeline-" + timestamp_prefix<br />endpoint_name = "inference-pipeline-ep-" + timestamp_prefix<br />sm_model = PipelineModel(<br />    name=model_name, role=role, models= [scikit_learn_inferencee_model, linear_learner_model]<br />)<br /><br />sm_model.deploy(initial_instance_count=1, instance_type="ml.c4.xlarge", endpoint_name=endpoint_name)</pre>Anda dapat menyesuaikan jenis instance yang digunakan dalam objek model untuk memenuhi kebutuhan Anda. | Ilmuwan data | 
| Uji inferensi. | Untuk mengonfirmasi bahwa titik akhir berfungsi dengan benar, jalankan contoh kode inferensi berikut di buku catatan Anda SageMaker :<pre>from sagemaker.predictor import Predictor<br />from sagemaker.serializers import CSVSerializer<br /><br />payload = "M, 0.44, 0.365, 0.125, 0.516, 0.2155, 0.114, 0.155"<br />actual_rings = 10<br />predictor = Predictor(<br />    endpoint_name=endpoint_name, sagemaker_session=sagemaker_session, serializer=CSVSerializer()<br />)<br /><br />print(predictor.predict(payload))</pre> | Ilmuwan data | 

## Sumber daya terkait
<a name="deploy-preprocessing-logic-into-an-ml-model-in-a-single-endpoint-using-an-inference-pipeline-in-amazon-sagemaker-resources"></a>
+ [Memproses data input sebelum membuat prediksi menggunakan pipeline SageMaker inferensi Amazon dan Scikit-learn (AWS](https://aws.amazon.com/blogs/machine-learning/preprocess-input-data-before-making-predictions-using-amazon-sagemaker-inference-pipelines-and-scikit-learn/) Machine Learning Blog)
+ [Machine Learning ujung ke ujung dengan Amazon SageMaker](https://github.com/aws-samples/amazon-sagemaker-build-train-deploy) (GitHub)

# Menyebarkan validasi keamanan pengkodean real-time dengan menggunakan server MCP dengan Kiro dan asisten pengkodean lainnya
<a name="deploy-real-time-coding-security-validation-by-using-an-mcp-server-with-kiro-and-other-coding-assistants"></a>

*Ivan Girardi dan Iker Reina Fuente, Amazon Web Services*

## Ringkasan
<a name="deploy-real-time-coding-security-validation-by-using-an-mcp-server-with-kiro-and-other-coding-assistants-summary"></a>

Pola ini menjelaskan bagaimana menerapkan server Model Context Protocol (MCP) yang mengintegrasikan tiga alat pemindaian keamanan standar industri untuk menyediakan analisis keamanan kode yang komprehensif. Server memungkinkan asisten pengkodean AI (seperti Kiro, Pengembang Amazon Q, dan Cline) untuk secara otomatis memindai cuplikan kode dan infrastruktur sebagai konfigurasi kode (IAc). Dengan pemindaian ini, asisten pengkodean dapat membantu mengidentifikasi kerentanan keamanan, kesalahan konfigurasi, dan pelanggaran kepatuhan.

Generator kode AI yang dilatih pada jutaan cuplikan kode menciptakan titik buta keamanan—seberapa amankah data pelatihan itu? Pola ini memberikan validasi keamanan real-time selama pembuatan kode, membantu pengembang mengidentifikasi dan memahami potensi masalah keamanan saat mereka membuat kode. Pendekatan ini membantu pengembang mengatasi kerentanan langsung dan risiko warisan dari dependensi. Dengan menjembatani kesenjangan antara efisiensi AI dan kepatuhan keamanan, pola ini membantu memungkinkan adopsi alat pengembangan bertenaga AI yang aman.

Pola ini membantu organisasi meningkatkan praktik keamanan pengembangan mereka melalui alat pengkodean berbantuan AI, menyediakan kemampuan pemindaian keamanan berkelanjutan di berbagai bahasa pemrograman dan definisi infrastruktur. Solusinya menggabungkan kemampuan alat-alat berikut:
+ Checkov untuk memindai file IAc, termasuk Terraform,, dan manifes AWS CloudFormation Kubernetes
+ Semgrep untuk menganalisis beberapa bahasa pemrograman seperti Python,, Java JavaScript, dan lainnya
+ Bandit untuk pemindaian keamanan Python khusus 

Fitur utama dari solusi ini meliputi:
+ Pemindaian delta segmen kode baru, mengurangi overhead komputasi
+ Lingkungan alat keamanan yang terisolasi, mencegah kontaminasi lintas alat
+ Integrasi tanpa batas dengan asisten pengkodean AI (Kiro, Pengembang Amazon Q, Cline, dan lainnya)
+ Umpan balik keamanan waktu nyata selama pembuatan kode
+ Aturan pemindaian yang dapat disesuaikan untuk kepatuhan organisasi

Pola ini menyediakan antarmuka terpadu untuk pemindaian keamanan dengan format respons standar, sehingga lebih mudah untuk mengintegrasikan pemeriksaan keamanan ke dalam alur kerja pengembangan. Pola ini menggunakan Python dan kerangka MCP untuk memberikan umpan balik keamanan otomatis. Pendekatan ini membantu pengembang mengidentifikasi dan mengatasi masalah keamanan di awal proses pengembangan sambil belajar tentang praktik terbaik keamanan melalui temuan terperinci.

## Prasyarat dan batasan
<a name="deploy-real-time-coding-security-validation-by-using-an-mcp-server-with-kiro-and-other-coding-assistants-prereqs"></a>

**Prasyarat**
+ Aktif Akun AWS dengan akses untuk menggunakan Kiro atau Amazon Q Developer, jika Anda ingin menggunakan salah satu asisten pengkodean tersebut
+ [Python versi 3.10 atau yang lebih baru diinstal](https://www.python.org/downloads/)
+ `uv`manajer paket [diinstal](https://docs.astral.sh/uv/getting-started/installation/)
+ Keakraban dengan alat dan konsep pemindaian keamanan
+ Pemahaman dasar tentang IAc dan keamanan aplikasi

**Batasan**
+ Pemindaian bandit terbatas pada file Python saja.
+ Pemindaian waktu nyata dapat memengaruhi kinerja untuk basis kode yang besar.
+ Keterbatasan khusus alat didasarkan pada format dan bahasa file yang didukung.
+ Tinjauan manual diperlukan untuk memvalidasi temuan keamanan.
+ Hasil pemindaian keamanan memerlukan keahlian keamanan untuk interpretasi yang tepat.
+ Beberapa Layanan AWS tidak tersedia di semua Wilayah AWS. Untuk ketersediaan Wilayah, lihat [AWS Layanan menurut Wilayah](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/). Untuk titik akhir tertentu, lihat [Titik akhir dan kuota layanan](https://docs.aws.amazon.com/general/latest/gr/aws-service-information.html), dan pilih tautan untuk layanan.

**Versi produk**
+ Python versi 3.10 atau yang lebih baru
+ Checkov versi 3.0.0 atau yang lebih baru
+ Semgrep versi 1.45.0 atau yang lebih baru
+ Bandit versi 1.7.5 atau yang lebih baru
+ MCP [cli] versi 1.11.0 atau yang lebih baru
+ Pydantic versi 1.10.0 atau yang lebih baru
+ Loguru versi 0.6.0 atau yang lebih baru

## Arsitektur
<a name="deploy-real-time-coding-security-validation-by-using-an-mcp-server-with-kiro-and-other-coding-assistants-architecture"></a>

Diagram berikut menunjukkan arsitektur untuk solusi ini.

![\[Asisten AI mengirim kode ke server pemindai keamanan MCP untuk merutekan ke pemindai khusus; hasil pemindaian dikirim ke pengembang.\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/images/pattern-img/fa623544-4d54-48af-a4e4-9b6a0624e776/images/9c881f95-76d0-40f6-983e-d987fd2097b8.png)


Diagram menunjukkan alur kerja berikut:

1. Pengembang menggunakan asisten AI (misalnya, Kiro, Cline, Amazon Q Developer, atau Roo Code) untuk menghasilkan atau menganalisis kode. Asisten AI mengirimkan kode untuk pemindaian keamanan.

1. Server pemindai keamanan MCP memproses permintaan dengan merutekan ke pemindai khusus yang sesuai: Checkov untuk file IAC, Semgrep untuk analisis beberapa bahasa pemrograman, atau Bandit untuk pemindaian keamanan khusus Python.

1. Hasil pemindai dengan temuan keamanan, tingkat keparahan, deskripsi terperinci, dan perbaikan yang disarankan dikirim kembali ke pengembang melalui asisten AI.

1. Loop umpan balik berkelanjutan dibuat di mana pengembang menerima validasi keamanan waktu nyata, memungkinkan perbaikan otomatis melalui asisten AI dan mempromosikan praktik terbaik keamanan selama pengembangan.

Arsitektur mengurangi risiko keamanan umum berikut: 
+ Injeksi perintah
+ Injeksi cepat
+ Jalur traversal
+ Serangan ketergantungan
+ Kelelahan sumber daya 

Arsitektur mengurangi risiko keamanan umum ini dengan menerapkan praktik terbaik berikut: 
+ Semua input model pengguna dan AI ditulis ke file sementara.
+ Tidak ada input langsung yang disediakan untuk perintah antarmuka baris perintah (CLI).
+ Akses sistem file dibatasi untuk direktori sementara dan file saja.
+ File sementara secara otomatis dibersihkan.
+ Respons pemindaian disanitasi.
+ Isolasi proses yang membatasi kemampuan proses diberlakukan.
+ Semua aktivitas pemindaian dicatat.

**Otomatisasi dan skala**

Pola ini mendukung otomatisasi melalui kemampuan berikut:
+ Integrasi dengan asisten pengkodean AI untuk pemindaian kode otomatis
+ Respons API standar untuk pemrosesan otomatis
+ Konfigurasi melalui file konfigurasi MCP
+ Support untuk pemrosesan batch dari beberapa file
+ Pemindaian yang dapat diskalakan di berbagai bahasa pemrograman dan format IAC

Proses pemindaian dapat diotomatisasi melalui titik akhir API yang disediakan:
+ `scan_with_checkov`untuk pemindaian IAc
+ `scan_with_semgrep`untuk pemindaian kode multi-bahasa
+ `scan_with_bandit`untuk pemindaian khusus Python
+ `get_supported_formats`untuk validasi format

Saat memperluas alat pemindaian, ikuti prinsip desain dan praktik terbaik yang dijelaskan sebelumnya di bagian ini. Lihat juga [Praktik terbaik](#deploy-real-time-coding-security-validation-by-using-an-mcp-server-with-kiro-and-other-coding-assistants-best-practices). 

## Alat
<a name="deploy-real-time-coding-security-validation-by-using-an-mcp-server-with-kiro-and-other-coding-assistants-tools"></a>

**Layanan AWS**
+ [Kiro](https://aws.amazon.com/documentation-overview/kiro/) adalah layanan pengkodean agen yang bekerja bersama pengembang untuk mengubah prompt menjadi spesifikasi terperinci, kemudian menjadi kode kerja, dokumen, dan pengujian. Agen Kiro membantu pengembang memecahkan masalah yang menantang dan mengotomatiskan tugas-tugas seperti menghasilkan dokumentasi dan pengujian unit.
+ [Amazon Q Developer](https://docs.aws.amazon.com/amazonq/latest/qdeveloper-ug/what-is.html) adalah asisten percakapan bertenaga AI generatif yang dapat membantu Anda memahami, membangun, memperluas, dan mengoperasikan aplikasi. AWS 

**Alat lainnya**
+ [Bandit](https://bandit.readthedocs.io/en/latest/) adalah alat pemindai keamanan Python khusus. Ini mendeteksi masalah keamanan Python umum seperti fungsi tidak aman, rahasia hardcode, dan kerentanan injeksi. Bandit memberikan peringkat kepercayaan dan tingkat keparahan yang terperinci.
+ [Checkov](https://github.com/bridgecrewio/checkov) adalah alat analisis kode statis yang memeriksa IAc untuk kesalahan konfigurasi keamanan dan kepatuhan. Selain itu, Checkov mendeteksi pelanggaran kepatuhan dan praktik terbaik keamanan.
+ [Cline](https://cline.bot/) adalah asisten pengkodean bertenaga AI yang berjalan di VS Code.
+ [Loguru](https://loguru.readthedocs.io/en/stable/) adalah pustaka validasi data untuk Python.
+ [Model Context Protocol (MCP)](https://modelcontextprotocol.io/docs/getting-started/intro) adalah kerangka kerja open source untuk membangun alat pengembangan yang dibantu AI.
+ [Pydantic adalah pustaka](https://docs.pydantic.dev/latest/) validasi data untuk Python.
+ [Semgrep](https://semgrep.dev/docs/introduction) menganalisis kode sumber untuk kerentanan keamanan dan bug. Ini mendukung beberapa bahasa pemrograman. Semgrep menggunakan aturan yang berfokus pada keamanan untuk analisis komprehensif. Ini memberikan peringkat kepercayaan dan tingkat keparahan yang terperinci.

**Repositori kode**

Kode untuk pola ini tersedia di repositori GitHub [MCP Security Scanner: Real-Time Protection for AI Code Assistants](https://github.com/aws-samples/sample-mcp-security-scanner). Repositori mencakup implementasi server MCP, detail tentang konfigurasi MCP untuk Kiro, Pengembang Amazon Q, Cline dan lainnya, contoh konfigurasi, dan utilitas pengujian.

Struktur repositori meliputi:
+ `security_scanner_mcp_server/`- Implementasi server utama
+ `docs/`- Dokumentasi dan materi demo
+ `tests/`- File uji
+ `mcp-config-example.json`- Contoh konfigurasi MCP
+ `requirements.txt`- Ketergantungan proyek

## Praktik terbaik
<a name="deploy-real-time-coding-security-validation-by-using-an-mcp-server-with-kiro-and-other-coding-assistants-best-practices"></a>

**Implementasi pemindaian keamanan**
+ Tinjau temuan keamanan untuk memvalidasi dan memprioritaskan masalah.
+ Tetap perbarui alat pemindaian (Checkov, Semgrep, dan Bandit) ke versi terbaru.
+ Gunakan alat keamanan MCP pola ini bersama dengan langkah-langkah dan alat keamanan lainnya.
+ Perbarui set aturan dan kebijakan keamanan secara teratur.

**Manajemen konfigurasi**
+ Gunakan file konfigurasi MCP di sumber kontrol versi resmi.
+ Dokumentasikan aturan dan konfigurasi kustom.

**Integrasi**
+ Integrasikan pemindaian keamanan di awal siklus pengembangan.
+ Siapkan pemindaian otomatis di kait pra-komit atau pipeline integrasi berkelanjutan dan penerapan berkelanjutan (CI/CD).
+ Konfigurasikan ambang batas keparahan yang sesuai untuk lingkungan Anda.
+ Menetapkan prosedur yang jelas untuk menangani temuan keamanan.

**Pertimbangan operasional**
+ Pantau kinerja pemindaian dan penggunaan sumber daya.
+ Menerapkan penanganan kesalahan dan logging yang tepat.
+ Pertahankan dokumentasi konfigurasi kustom.
+ Menetapkan proses untuk meninjau dan memperbarui aturan keamanan.

Juga, ingatlah praktik terbaik berikut:
+ Selalu validasi temuan keamanan dalam konteks spesifik Anda.
+ Tetap perbarui alat keamanan dan dependensi.
+ Gunakan beberapa alat keamanan untuk cakupan yang komprehensif.
+ Ikuti praktik terbaik keamanan dalam proses pengembangan Anda.

## Epik
<a name="deploy-real-time-coding-security-validation-by-using-an-mcp-server-with-kiro-and-other-coding-assistants-epics"></a>

### (Pengguna Kiro) Siapkan server pemindai keamanan MCP
<a name="kiro-users-set-up-the-mcp-security-scanner-server"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Konfigurasikan pengaturan MCP. | Anda dapat mengedit file konfigurasi di Kiro baik dengan (Opsi 1) secara manual menemukan file konfigurasi atau (Opsi 2) dengan menggunakan IDE Kiro.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/deploy-real-time-coding-security-validation-by-using-an-mcp-server-with-kiro-and-other-coding-assistants.html)<pre>{<br />  "mcpServers": {<br />    "security-scanner": {<br />      "command": "uvx",<br />      "args": [<br />        "--from",<br />        "git+https://github.com/aws-samples/sample-mcp-security-scanner.git@main",<br />        "security_scanner_mcp_server"<br />      ],<br />      "env": {<br />        "FASTMCP_LOG_LEVEL": "ERROR"<br />      },<br />      "disabled": false,<br />      "autoApprove": []<br />    }<br />  }<br />}</pre> | Pengembang aplikasi | 

### (Pengguna Pengembang Amazon Q) Siapkan server pemindai keamanan MCP
<a name="qdevlong-users-set-up-the-mcp-security-scanner-server"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Konfigurasikan pengaturan MCP. | Untuk mengonfigurasi pengaturan MCP secara manual, gunakan langkah-langkah berikut:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/deploy-real-time-coding-security-validation-by-using-an-mcp-server-with-kiro-and-other-coding-assistants.html)<pre>{<br />  "mcpServers": {<br />    "security-scanner": {<br />      "command": "uvx",<br />      "args": [<br />        "--from",<br />        "git+https://github.com/aws-samples/sample-mcp-security-scanner.git@main",<br />        "security_scanner_mcp_server"<br />      ],<br />      "env": {<br />        "FASTMCP_LOG_LEVEL": "ERROR"<br />      }<br />    }<br />  }<br />}</pre> | Pengembang aplikasi | 

### (Pengguna Cline) Siapkan server pemindai keamanan MCP
<a name="cline-users-set-up-the-mcp-security-scanner-server"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Konfigurasikan pengaturan MCP. | Untuk mengonfigurasi pengaturan MCP secara manual, gunakan langkah-langkah berikut:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/deploy-real-time-coding-security-validation-by-using-an-mcp-server-with-kiro-and-other-coding-assistants.html)<pre>{<br />  "mcpServers": {<br />    "security-scanner": {<br />      "command": "uvx",<br />      "args": [<br />        "--from",<br />        "git+https://github.com/aws-samples/sample-mcp-security-scanner.git@main",<br />        "security_scanner_mcp_server"<br />      ],<br />      "env": {<br />        "FASTMCP_LOG_LEVEL": "ERROR"<br />      },<br />      "disabled": false,<br />      "autoApprove": []<br />    }<br />  }<br />}</pre> | Pengembang aplikasi | 

### Contoh analisis kode menggunakan Python dan Bandit
<a name="example-of-code-analysis-using-python-and-bandit"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Lakukan analisis kode. | Untuk melakukan analisis kode dengan menggunakan Python dan Bandit, gunakan langkah-langkah berikut:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/deploy-real-time-coding-security-validation-by-using-an-mcp-server-with-kiro-and-other-coding-assistants.html) | Pengembang aplikasi | 

### Contoh analisis kode menggunakan Terraform dan Checkov
<a name="example-of-code-analysis-using-terraform-and-checkov"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Lakukan analisis kode. | Untuk melakukan analisis kode dengan menggunakan Terraform dan Checkov, gunakan langkah-langkah berikut:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/deploy-real-time-coding-security-validation-by-using-an-mcp-server-with-kiro-and-other-coding-assistants.html) | Pengembang aplikasi | 

### Contoh kemampuan pemindaian tingkat lanjut
<a name="example-of-advanced-scanning-capabilities"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Lakukan pemindaian yang ditargetkan. | Berikut ini adalah contoh permintaan yang dapat Anda gunakan untuk melakukan pemindaian yang ditargetkan:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/deploy-real-time-coding-security-validation-by-using-an-mcp-server-with-kiro-and-other-coding-assistants.html) | Pengembang aplikasi | 
| Gunakan pemindaian keamanan dengan pembuatan kode. | Untuk menyelesaikan temuan keamanan dengan menggunakan loop pembuatan kode, gunakan langkah-langkah berikut (contoh ini menggunakan Kiro sebagai asisten pengkodean):[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/deploy-real-time-coding-security-validation-by-using-an-mcp-server-with-kiro-and-other-coding-assistants.html) | Pengembang aplikasi | 

## Pemecahan masalah
<a name="deploy-real-time-coding-security-validation-by-using-an-mcp-server-with-kiro-and-other-coding-assistants-troubleshooting"></a>


| Isu | Solusi | 
| --- | --- | 
| Masalah pengaturan lingkungan | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/deploy-real-time-coding-security-validation-by-using-an-mcp-server-with-kiro-and-other-coding-assistants.html) | 
| Masalah pemindai | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/deploy-real-time-coding-security-validation-by-using-an-mcp-server-with-kiro-and-other-coding-assistants.html) | 
| Masalah integrasi | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/deploy-real-time-coding-security-validation-by-using-an-mcp-server-with-kiro-and-other-coding-assistants.html) | 
| Dukungan Tambahan | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/deploy-real-time-coding-security-validation-by-using-an-mcp-server-with-kiro-and-other-coding-assistants.html) | 

## Sumber daya terkait
<a name="deploy-real-time-coding-security-validation-by-using-an-mcp-server-with-kiro-and-other-coding-assistants-resources"></a>

**AWS dokumentasi**
+ [Infrastruktur sebagai kode](https://docs.aws.amazon.com/whitepapers/latest/introduction-devops-aws/infrastructure-as-code.html) (AWS Whitepaper *Pengantar* on) DevOps AWS

** AWS Sumber daya lainnya**
+ [Praktik Terbaik untuk Keamanan, Identitas, & Kepatuhan](https://aws.amazon.com/architecture/security-identity-compliance/)

**Sumber daya lainnya**
+ [Dokumentasi bandit](https://aws.amazon.com/architecture/security-identity-compliance/)
+ [Dokumentasi Checkov](https://aws.amazon.com/architecture/security-identity-compliance/)
+ [Dokumentasi Model Context Protocol (MCP)](https://aws.amazon.com/architecture/security-identity-compliance/)
+ [Praktik Pengkodean Aman OWASP](https://owasp.org/www-project-secure-coding-practices-quick-reference-guide/) (situs web OWASP Foundation)
+ [Dokumentasi Semgrep](https://aws.amazon.com/architecture/security-identity-compliance/)

## Informasi tambahan
<a name="deploy-real-time-coding-security-validation-by-using-an-mcp-server-with-kiro-and-other-coding-assistants-additional"></a>

**Contoh konfigurasi MCP dengan auto disetujui diaktifkan**

Tanpa `autoApprove` dikonfigurasi, pengguna harus memberikan persetujuan untuk mengirim kode ke server keamanan MCP untuk pemindaian. Ketika `autoApprove` dikonfigurasi, asisten kode diizinkan untuk memanggil alat tanpa persetujuan pengguna. Alat-alat ini berjalan secara lokal di mesin, tidak ada data yang dikirim, dan hanya pemindaian kode yang dilakukan.

Konfigurasi berikut memungkinkan eksekusi otomatis semua fungsi pemindaian keamanan:

```
{
  "mcpServers": {
    "security-scanner": {
      "command": "uvx",
      "args": [
        "--from",
        "git+https://github.com/aws-samples/sample-mcp-security-scanner.git@main",
        "security_scanner_mcp_server"
      ],
      "env": {
        "FASTMCP_LOG_LEVEL": "ERROR"
      },
      "disabled": false,
      "autoApprove": [
        "scan_with_checkov",
        "scan_with_semgrep", 
        "scan_with_bandit",
        "get_supported_formats"
      ]
    }
  }
}
```

Untuk mengaktifkan logging debug, setel `"FASTMCP_LOG_LEVEL"` ke`"DEBUG"`.

**Format file yang didukung oleh alat pemindaian keamanan**

Setiap alat pemindaian keamanan dalam solusi ini mendukung format file berikut:

*Checkov (IAc)*
+ Terraform — .tf, .tfvars, .tfstate
+ CloudFormation — .yaml, .yml.json, .template
+ Kubernetes — .yaml, .yml
+ Dockerfile — Dockerfile
+ ARM — .json (Manajer Sumber Daya Azure)
+ Bisep — .bisep
+ Tanpa server — .yml.yaml
+ Kemudi — .yaml, .yml.tpl
+ GitHub Tindakan — .yl, .yaml
+ GitLab\$1ci — .yml, .yaml
+ Ansible — .yml, .yaml

*Semgrep (Kode sumber)*
+ Python — .py
+ JavaScript — .js
+ TypeScript — .ts
+ Jawa — .java
+ Pergi — .go
+ C — .c
+ C\$1\$1 — .cpp
+ C \$1 — .cs
+ Ruby — .rb
+ PHP — .php
+ Scala — .scala
+ Kotlin — .kt
+ Karat — .rs

*Bandit (hanya Python)*
+ Python — .py

**Demo**

Untuk pemindaian kode, coba contoh petunjuk berikut dengan asisten AI Anda:
+ “Pindai skrip saat ini dan beri tahu saya hasilnya.”
+ “Pindai garis 20-60 dan beri tahu saya hasilnya.”
+ “Pindai sumber daya tabel Amazon DynamoDB ini dan beri tahu saya hasilnya.”

Untuk informasi selengkapnya, lihat [demo pemindaian kode](https://github.com/aws-samples/sample-mcp-security-scanner/blob/main/docs/demo_code_scan.gif) ini di GitHub repositori pola ini.

Untuk menghasilkan kode aman, coba contoh petunjuk berikut:
+ “Hasilkan konfigurasi Terraform untuk membuat tabel DynamoDB dengan enkripsi diaktifkan dan pindai untuk masalah keamanan.”
+ “Buat fungsi Lambda Python yang menulis ke DynamoDB dan memindai kerentanan.”
+ “Buat CloudFormation template untuk bucket S3 dengan pengaturan keamanan yang tepat dan verifikasi itu melewati pemeriksaan keamanan.”
+ “Tulis skrip Python untuk menanyakan DynamoDB dengan pagination dan pindai praktik terbaik keamanan.”
+ “Buat manifes penerapan Kubernetes untuk layanan mikro dengan pengerasan keamanan dan validasi.”

Untuk informasi selengkapnya, lihat [pembuatan kode ini dengan demo pemindaian keamanan](https://github.com/aws-samples/sample-mcp-security-scanner/blob/main/docs/demo_code_generation.gif) di GitHub repositori pola ini.

# Kembangkan asisten berbasis obrolan AI generatif tingkat lanjut dengan menggunakan RAG dan prompt ReAct
<a name="develop-advanced-generative-ai-chat-based-assistants-by-using-rag-and-react-prompting"></a>

*Praveen Kumar Jeyarajan, Shuai Cao, Noah Hamilton, Kiowa Jackson, Jundong Qiao, dan Kara Yang, Amazon Web Services*

## Ringkasan
<a name="develop-advanced-generative-ai-chat-based-assistants-by-using-rag-and-react-prompting-summary"></a>

Sebuah perusahaan tipikal memiliki 70 persen datanya yang terperangkap dalam sistem siloed. Anda dapat menggunakan asisten berbasis obrolan berbasis AI generatif untuk membuka wawasan dan hubungan antara silo data ini melalui interaksi bahasa alami. Untuk mendapatkan hasil maksimal dari AI generatif, output harus dapat dipercaya, akurat, dan inklusif dari data perusahaan yang tersedia. Asisten berbasis obrolan yang sukses bergantung pada hal-hal berikut:
+ Model AI generatif (seperti Anthropic Claude 2)
+ Vektorisasi sumber data
+ Teknik penalaran tingkat lanjut, seperti [ReAct kerangka kerja](https://www.promptingguide.ai/techniques/react), untuk mendorong model

Pola ini menyediakan pendekatan pengambilan data dari sumber data seperti bucket Amazon Simple Storage Service (Amazon S3), AWS Glue, dan Amazon Relational Database Service (Amazon RDS). Nilai diperoleh dari data tersebut dengan menyisipkan [Retrieval Augmented Generation (RAG](https://docs.aws.amazon.com/bedrock/latest/userguide/knowledge-base.html)) dengan metode. chain-of-thought Hasilnya mendukung percakapan asisten berbasis obrolan kompleks yang memanfaatkan keseluruhan data yang disimpan perusahaan Anda.

Pola ini menggunakan SageMaker manual Amazon dan tabel data harga sebagai contoh untuk mengeksplorasi kemampuan asisten berbasis obrolan AI generatif. Anda akan membangun asisten berbasis obrolan yang membantu pelanggan mengevaluasi SageMaker layanan dengan menjawab pertanyaan tentang harga dan kemampuan layanan. Solusinya menggunakan perpustakaan Streamlit untuk membangun aplikasi frontend dan LangChain kerangka kerja untuk mengembangkan backend aplikasi yang didukung oleh model bahasa besar (LLM).

Pertanyaan ke asisten berbasis obrolan dipenuhi dengan klasifikasi maksud awal untuk merutekan ke salah satu dari tiga kemungkinan alur kerja. Alur kerja paling canggih menggabungkan panduan penasehat umum dengan analisis harga yang kompleks. Anda dapat menyesuaikan pola agar sesuai dengan kasus penggunaan perusahaan, perusahaan, dan industri.

## Prasyarat dan batasan
<a name="develop-advanced-generative-ai-chat-based-assistants-by-using-rag-and-react-prompting-prereqs"></a>

**Prasyarat**
+ [AWS Command Line Interface (AWS CLI) diinstal](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) dan dikonfigurasi
+ [AWS Cloud Development Kit (AWS CDK) Toolkit 2.114.1 atau](https://docs.aws.amazon.com/cdk/v2/guide/getting_started.html) yang lebih baru diinstal dan dikonfigurasi
+ Keakraban dasar dengan Python dan AWS CDK
+ [Git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git) diinstal
+ [Docker diinstal](https://docs.docker.com/get-docker/)
+ [Python 3.11 atau yang lebih baru](https://www.python.org/downloads/) [diinstal dan dikonfigurasi (untuk informasi lebih lanjut, lihat bagian Alat)](#develop-advanced-generative-ai-chat-based-assistants-by-using-rag-and-react-prompting-tools)
+ [Bootstrap [akun AWS aktif](https://docs.aws.amazon.com/accounts/latest/reference/manage-acct-creating.html) dengan menggunakan AWS CDK](https://docs.aws.amazon.com/cdk/v2/guide/bootstrapping.html)
+ [Akses model Amazon Titan dan Anthropic Claude diaktifkan di layanan](https://docs.aws.amazon.com/bedrock/latest/userguide/model-access.html#add-model-access) Amazon Bedrock
+ [Kredensi keamanan AWS](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-envvars.html), termasuk`AWS_ACCESS_KEY_ID`, dikonfigurasi dengan benar di lingkungan terminal Anda

**Batasan**
+ LangChain tidak mendukung setiap LLM untuk streaming. Model Anthropic Claude didukung, tetapi model dari AI21 Labs tidak.
+ Solusi ini diterapkan ke satu akun AWS.
+ Solusi ini hanya dapat digunakan di Wilayah AWS di mana Amazon Bedrock dan Amazon Kendra tersedia. Untuk informasi tentang ketersediaan, lihat dokumentasi untuk [Amazon Bedrock](https://docs.aws.amazon.com/bedrock/latest/userguide/what-is-bedrock.html#bedrock-regions) dan [Amazon Kendra](https://docs.aws.amazon.com/general/latest/gr/kendra.html).

**Versi produk**
+ Python versi 3.11 atau yang lebih baru
+ Streamlit versi 1.30.0 atau yang lebih baru
+ Streamlit-chat versi 0.1.1 atau yang lebih baru
+ LangChain versi 0.1.12 atau yang lebih baru
+ AWS CDK versi 2.132.1 atau yang lebih baru

## Arsitektur
<a name="develop-advanced-generative-ai-chat-based-assistants-by-using-rag-and-react-prompting-architecture"></a>

**Tumpukan teknologi target**
+ Amazon Athena
+ Amazon Bedrock
+ Amazon Elastic Container Service (Amazon ECS)
+ AWS Glue
+ AWS Lambda
+ Amazon S3
+ Amazon Kendra
+ Elastic Load Balancing

**Arsitektur target**

Kode AWS CDK akan menerapkan semua sumber daya yang diperlukan untuk menyiapkan aplikasi asisten berbasis obrolan di akun AWS. Aplikasi asisten berbasis obrolan yang ditunjukkan dalam diagram berikut dirancang untuk menjawab pertanyaan SageMaker terkait dari pengguna. Pengguna terhubung melalui Application Load Balancer ke VPC yang berisi cluster Amazon ECS yang menghosting aplikasi Streamlit. Fungsi Lambda orkestrasi terhubung ke aplikasi. Sumber data bucket S3 menyediakan data ke fungsi Lambda melalui Amazon Kendra dan AWS Glue. Fungsi Lambda terhubung ke Amazon Bedrock untuk menjawab pertanyaan (pertanyaan) dari asisten pengguna berbasis obrolan.

![\[Diagram arsitektur.\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/images/pattern-img/b4df6405-76ab-4493-a722-15ceca067254/images/4e5856cf-9489-41f8-a411-e3b8d8a50748.png)


1. Fungsi orkestrasi Lambda mengirimkan permintaan prompt LLM ke model Amazon Bedrock (Claude 2).

1. Amazon Bedrock mengirimkan respons LLM kembali ke fungsi Lambda orkestrasi.

**Aliran logika dalam fungsi Lambda orkestrasi**

Ketika pengguna mengajukan pertanyaan melalui aplikasi Streamlit, itu memanggil fungsi Lambda orkestrasi secara langsung. Diagram berikut menunjukkan aliran logika ketika fungsi Lambda dipanggil.

![\[Diagram arsitektur.\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/images/pattern-img/b4df6405-76ab-4493-a722-15ceca067254/images/70ae4736-06a6-4d3a-903a-edc5c10d78a0.png)

+ Langkah 1 — Masukan `query` (pertanyaan) diklasifikasikan ke dalam salah satu dari tiga maksud:
  + Pertanyaan SageMaker panduan umum
  + Pertanyaan SageMaker harga umum (pelatihan/inferensi)
  + Pertanyaan kompleks terkait dengan SageMaker dan harga
+ Langkah 2 — Input `query` memulai salah satu dari tiga layanan:
  + `RAG Retrieval service`, yang mengambil konteks yang relevan dari database vektor [Amazon](https://aws.amazon.com/kendra/) Kendra dan memanggil LLM [melalui Amazon](https://aws.amazon.com/bedrock/) Bedrock untuk meringkas konteks yang diambil sebagai respons.
  + `Database Query service`, yang menggunakan- LLM, metadata database, dan baris sampel dari tabel yang relevan untuk mengubah input `query` menjadi kueri SQL. Layanan Kueri Database menjalankan kueri SQL terhadap database SageMaker harga melalui [Amazon](https://aws.amazon.com/athena/) Athena dan merangkum hasil kueri sebagai respons.
  + `In-context ReACT Agent service`, yang memecah input `query` menjadi beberapa langkah sebelum memberikan respons. Agen menggunakan `RAG Retrieval service` dan `Database Query service` sebagai alat untuk mengambil informasi yang relevan selama proses penalaran. Setelah proses penalaran dan tindakan selesai, agen menghasilkan jawaban akhir sebagai respons.
+ Langkah 3 - Respons dari fungsi Lambda orkestrasi dikirim ke aplikasi Streamlit sebagai output.

## Alat
<a name="develop-advanced-generative-ai-chat-based-assistants-by-using-rag-and-react-prompting-tools"></a>

**Layanan AWS**
+ [Amazon Athena](https://docs.aws.amazon.com/athena/latest/ug/what-is.html) adalah layanan kueri interaktif yang membantu Anda menganalisis data secara langsung di Amazon Simple Storage Service (Amazon S3) dengan menggunakan SQL standar.
+ [Amazon Bedrock](https://docs.aws.amazon.com/bedrock/latest/userguide/what-is-bedrock.html) adalah layanan yang dikelola sepenuhnya yang membuat model foundation berkinerja tinggi (FMs) dari startup AI terkemuka dan Amazon tersedia untuk Anda gunakan melalui API terpadu.
+ [AWS Cloud Development Kit (AWS CDK)](https://docs.aws.amazon.com/cdk/latest/guide/home.html) adalah kerangka kerja pengembangan perangkat lunak yang membantu Anda menentukan dan menyediakan infrastruktur AWS Cloud dalam kode.
+ [AWS Command Line Interface (AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html)) adalah alat sumber terbuka yang membantu Anda berinteraksi dengan layanan AWS melalui perintah di shell baris perintah Anda.
+ [Amazon Elastic Container Service (Amazon ECS](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/Welcome.html)) adalah layanan manajemen kontainer yang cepat dan dapat diskalakan yang membantu Anda menjalankan, menghentikan, dan mengelola kontainer di klaster.
+ [AWS Glue](https://docs.aws.amazon.com/glue/) adalah layanan ekstrak, transformasi, dan beban (ETL) yang dikelola sepenuhnya. Ini membantu Anda mengkategorikan, membersihkan, memperkaya, dan memindahkan data dengan andal antara penyimpanan data dan aliran data. Pola ini menggunakan crawler AWS Glue dan tabel AWS Glue Data Catalog.
+ [Amazon Kendra](https://docs.aws.amazon.com/kendra/latest/dg/what-is-kendra.html) adalah layanan pencarian cerdas yang menggunakan pemrosesan bahasa alami dan algoritme pembelajaran mesin canggih untuk mengembalikan jawaban spesifik atas pertanyaan pencarian dari data Anda.
+ [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) adalah layanan komputasi yang membantu Anda menjalankan kode tanpa perlu menyediakan atau mengelola server. Ini menjalankan kode Anda hanya bila diperlukan dan skala secara otomatis, jadi Anda hanya membayar untuk waktu komputasi yang Anda gunakan.
+ [Amazon Simple Storage Service (Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html)) adalah layanan penyimpanan objek berbasis cloud yang membantu Anda menyimpan, melindungi, dan mengambil sejumlah data.
+ [Elastic Load Balancing (ELB)](https://docs.aws.amazon.com/elasticloadbalancing/latest/userguide/what-is-load-balancing.html) mendistribusikan lalu lintas aplikasi atau jaringan yang masuk ke beberapa target. Misalnya, Anda dapat mendistribusikan lalu lintas di seluruh instans, container, dan alamat IP Amazon Elastic Compute Cloud (Amazon EC2) di satu atau beberapa Availability Zone.

**Repositori kode**

Kode untuk pola ini tersedia di GitHub [genai-bedrock-chatbot](https://github.com/awslabs/genai-bedrock-chatbot)repositori.

Repositori kode berisi file dan folder berikut:
+ `assets`folder — Aset statis diagram arsitektur dan dataset publik
+ `code/lambda-container`folder - Kode Python yang dijalankan dalam fungsi Lambda
+ `code/streamlit-app`folder - Kode Python yang dijalankan sebagai gambar kontainer di Amazon ECS
+ `tests`folder — File Python yang dijalankan untuk menguji unit konstruksi AWS CDK
+ `code/code_stack.py`— AWS CDK membangun file Python yang digunakan untuk membuat sumber daya AWS
+ `app.py`— File Python tumpukan AWS CDK yang digunakan untuk menyebarkan sumber daya AWS di akun AWS target
+ `requirements.txt`— Daftar semua dependensi Python yang harus diinstal untuk AWS CDK
+ `requirements-dev.txt`— Daftar semua dependensi Python yang harus diinstal untuk AWS CDK untuk menjalankan rangkaian unit-test
+ `cdk.json`— File input untuk memberikan nilai yang diperlukan untuk memutar sumber daya


| 
| 
| Catatan: Kode AWS CDK menggunakan [konstruksi L3 (lapisan 3)](https://docs.aws.amazon.com/cdk/latest/guide/getting_started.html) dan kebijakan [AWS Identity and Access Management (IAM) yang dikelola oleh AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#aws-managed-policies) untuk menerapkan solusi. | 
| --- |

## Praktik terbaik
<a name="develop-advanced-generative-ai-chat-based-assistants-by-using-rag-and-react-prompting-best-practices"></a>
+ Contoh kode yang diberikan di sini adalah untuk demo proof-of-concept (PoC) atau pilot saja. Jika Anda ingin membawa kode ke Produksi, pastikan untuk menggunakan praktik terbaik berikut:
  + [Pencatatan akses Amazon S3 diaktifkan](https://docs.aws.amazon.com/AmazonS3/latest/userguide/enable-server-access-logging.html).
  + [VPC Flow Logs diaktifkan](https://docs.aws.amazon.com/vpc/latest/userguide/flow-logs.html).
  + [Indeks Amazon Kendra Enterprise Edition diaktifkan](https://docs.aws.amazon.com/whitepapers/latest/how-aws-pricing-works/amazon-kendra.html).
+ Siapkan pemantauan dan peringatan untuk fungsi Lambda. Untuk informasi selengkapnya, lihat [Memantau dan memecahkan masalah fungsi Lambda](https://docs.aws.amazon.com/lambda/latest/dg/lambda-monitoring.html). Untuk praktik terbaik umum saat bekerja dengan fungsi Lambda, lihat dokumentasi [AWS](https://docs.aws.amazon.com/lambda/latest/dg/best-practices.html).

## Epik
<a name="develop-advanced-generative-ai-chat-based-assistants-by-using-rag-and-react-prompting-epics"></a>

### Siapkan kredensi AWS di mesin lokal Anda
<a name="set-up-aws-credentials-on-your-local-machine"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Ekspor variabel untuk akun dan Wilayah AWS tempat tumpukan akan digunakan. | Untuk memberikan kredensi AWS untuk AWS CDK dengan menggunakan variabel lingkungan, jalankan perintah berikut.<pre>export CDK_DEFAULT_ACCOUNT=<12 Digit AWS Account Number><br />export CDK_DEFAULT_REGION=<region></pre> | DevOps insinyur, AWS DevOps | 
| Siapkan profil AWS CLI. | Untuk menyiapkan profil AWS CLI untuk akun, ikuti petunjuk dalam dokumentasi [AWS](https://docs.aws.amazon.com/toolkit-for-visual-studio/latest/user-guide/keys-profiles-credentials.html). | DevOps insinyur, AWS DevOps | 

### Siapkan lingkungan Anda
<a name="set-up-your-environment"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Kloning repo di mesin lokal Anda. | Untuk mengkloning repositori, jalankan perintah berikut di terminal Anda.<pre>git clone https://github.com/awslabs/genai-bedrock-chatbot.git</pre> | DevOps insinyur, AWS DevOps | 
| Siapkan lingkungan virtual Python dan instal dependensi yang diperlukan. | Untuk mengatur lingkungan virtual Python, jalankan perintah berikut.<pre>cd genai-bedrock-chatbot<br />python3 -m venv .venv<br />source .venv/bin/activate</pre>Untuk mengatur dependensi yang diperlukan, jalankan perintah berikut.<pre>pip3 install -r requirements.txt</pre> | DevOps insinyur, AWS DevOps | 
| Siapkan lingkungan AWS CDK dan sintesis kode AWS CDK. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/develop-advanced-generative-ai-chat-based-assistants-by-using-rag-and-react-prompting.html) | DevOps insinyur, AWS DevOps | 

### Konfigurasikan dan terapkan aplikasi asisten berbasis obrolan
<a name="configure-and-deploy-the-chat-based-assistant-application"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Penyediaan akses model Claude. | Untuk mengaktifkan akses model Anthropic Claude untuk akun AWS Anda, ikuti petunjuk dalam dokumentasi [Amazon](https://docs.aws.amazon.com/bedrock/latest/userguide/model-access.html#add-model-access) Bedrock. | AWS DevOps | 
| Menyebarkan sumber daya di akun. | Untuk menerapkan sumber daya di akun AWS dengan menggunakan AWS CDK, lakukan hal berikut:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/develop-advanced-generative-ai-chat-based-assistants-by-using-rag-and-react-prompting.html)**Setelah penerapan berhasil, Anda dapat mengakses aplikasi asisten berbasis obrolan dengan menggunakan URL yang disediakan di bagian Output. CloudFormation ** | AWS DevOps, DevOps insinyur | 
| Jalankan crawler AWS Glue dan buat tabel Katalog Data. | [Crawler AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/add-crawler.html) digunakan untuk menjaga skema data tetap dinamis. Solusi ini membuat dan memperbarui partisi di [tabel AWS Glue Data Catalog](https://docs.aws.amazon.com/athena/latest/ug/querying-glue-catalog.html) dengan menjalankan crawler sesuai permintaan. Setelah file kumpulan data CSV disalin ke bucket S3, jalankan crawler AWS Glue dan buat skema tabel Katalog Data untuk pengujian:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/develop-advanced-generative-ai-chat-based-assistants-by-using-rag-and-react-prompting.html)Kode AWS CDK mengonfigurasi crawler AWS Glue agar berjalan sesuai permintaan, tetapi Anda juga dapat [menjadwalkannya](https://docs.aws.amazon.com/glue/latest/dg/schedule-crawler.html) untuk dijalankan secara berkala. | DevOps insinyur, AWS DevOps | 
| Memulai pengindeksan dokumen. | Setelah file disalin ke bucket S3, gunakan Amazon Kendra untuk merayapi dan mengindeksnya:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/develop-advanced-generative-ai-chat-based-assistants-by-using-rag-and-react-prompting.html)[Kode AWS CDK mengonfigurasi sinkronisasi indeks Amazon Kendra agar berjalan sesuai permintaan, tetapi Anda juga dapat menjalankannya secara berkala dengan menggunakan parameter Jadwal.](https://docs.aws.amazon.com/kendra/latest/dg/data-source.html#cron) | AWS DevOps, DevOps insinyur | 

### Bersihkan semua sumber daya AWS dalam solusi
<a name="clean-up-all-aws-resources-in-the-solution"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Hapus sumber daya AWS. | Setelah Anda menguji solusinya, bersihkan sumber daya:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/develop-advanced-generative-ai-chat-based-assistants-by-using-rag-and-react-prompting.html) | DevOps insinyur, AWS DevOps | 

## Pemecahan masalah
<a name="develop-advanced-generative-ai-chat-based-assistants-by-using-rag-and-react-prompting-troubleshooting"></a>


| Isu | Solusi | 
| --- | --- | 
| AWS CDK mengembalikan kesalahan. | Untuk bantuan terkait masalah AWS CDK, lihat [Memecahkan masalah umum AWS](https://docs.aws.amazon.com/cdk/v2/guide/troubleshooting.html) CDK. | 

## Sumber daya terkait
<a name="develop-advanced-generative-ai-chat-based-assistants-by-using-rag-and-react-prompting-resources"></a>
+ Batuan Dasar Amazon:
  + [Akses model](https://docs.aws.amazon.com/bedrock/latest/userguide/model-access.html)
  + [Parameter inferensi untuk model pondasi](https://docs.aws.amazon.com/bedrock/latest/userguide/model-parameters.html)
+ [Membangun fungsi Lambda dengan Python](https://docs.aws.amazon.com/lambda/latest/dg/lambda-python.html)
+ [Memulai dengan AWS CDK](https://docs.aws.amazon.com/cdk/v2/guide/getting_started.html)
+ [Bekerja dengan AWS CDK dengan Python](https://docs.aws.amazon.com/cdk/v2/guide/work-with-cdk-python.html)
+ [Pembuat Aplikasi AI Generatif di AWS](https://docs.aws.amazon.com/solutions/latest/generative-ai-application-builder-on-aws/solution-overview.html)
+ [LangChain dokumentasi](https://python.langchain.com/docs/get_started/introduction)
+ [Dokumentasi Streamlit](https://docs.streamlit.io/)

## Informasi tambahan
<a name="develop-advanced-generative-ai-chat-based-assistants-by-using-rag-and-react-prompting-additional"></a>

**Perintah AWS CDK**

Saat bekerja dengan AWS CDK, ingatlah perintah berguna berikut ini:
+ Daftar semua tumpukan di aplikasi

  ```
  cdk ls
  ```
+ Memancarkan template AWS yang disintesis CloudFormation 

  ```
  cdk synth
  ```
+ Menerapkan tumpukan ke akun AWS default dan Wilayah

  ```
  cdk deploy
  ```
+ Membandingkan tumpukan yang diterapkan dengan status saat ini

  ```
  cdk diff
  ```
+ Membuka dokumentasi AWS CDK

  ```
  cdk docs
  ```
+ Menghapus CloudFormation tumpukan dan menghapus sumber daya yang diterapkan AWS

  ```
  cdk destroy
  ```

# Kembangkan asisten berbasis obrolan otomatis sepenuhnya dengan menggunakan agen dan basis pengetahuan Amazon Bedrock
<a name="develop-a-fully-automated-chat-based-assistant-by-using-amazon-bedrock-agents-and-knowledge-bases"></a>

*Jundong Qiao, Shuai Cao, Noah Hamilton, Kiowa Jackson, Praveen Kumar Jeyarajan, dan Kara Yang, Amazon Web Services*

## Ringkasan
<a name="develop-a-fully-automated-chat-based-assistant-by-using-amazon-bedrock-agents-and-knowledge-bases-summary"></a>

Banyak organisasi menghadapi tantangan saat membuat asisten berbasis obrolan yang mampu mengatur beragam sumber data untuk menawarkan jawaban yang komprehensif. Pola ini menyajikan solusi untuk mengembangkan asisten berbasis obrolan yang mampu menjawab pertanyaan dari dokumentasi dan database, dengan penerapan langsung.

Dimulai dengan [Amazon Bedrock](https://docs.aws.amazon.com/bedrock/latest/userguide/what-is-bedrock.html), layanan kecerdasan buatan generatif (AI) generatif yang dikelola sepenuhnya ini menyediakan beragam model pondasi canggih ()FMs. Ini memfasilitasi pembuatan aplikasi AI generatif yang efisien dengan fokus yang kuat pada privasi dan keamanan. Dalam konteks pengambilan dokumentasi, [Retrieval Augmented Generation (RAG)](https://docs.aws.amazon.com/sagemaker/latest/dg/jumpstart-foundation-models-customize-rag.html) adalah fitur penting. Ini menggunakan [basis pengetahuan](https://docs.aws.amazon.com/bedrock/latest/userguide/knowledge-base.html) untuk menambah permintaan FM dengan informasi yang relevan secara kontekstual dari sumber eksternal. Indeks [Amazon OpenSearch Tanpa Server](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/serverless-overview.html) berfungsi sebagai basis data vektor di belakang basis pengetahuan untuk Amazon Bedrock. Integrasi ini ditingkatkan melalui rekayasa cepat yang cermat untuk meminimalkan ketidakakuratan dan memastikan bahwa tanggapan tertanam dalam dokumentasi faktual. Untuk kueri database, Amazon Bedrock mengubah pertanyaan tekstual menjadi kueri SQL terstruktur, menggabungkan parameter tertentu. FMs [Hal ini memungkinkan pengambilan data yang tepat dari database yang dikelola oleh AWS Glue database.](https://docs.aws.amazon.com/glue/latest/dg/define-database.html) [Amazon Athena](https://docs.aws.amazon.com/athena/latest/ug/what-is.html) digunakan untuk pertanyaan ini.

Untuk menangani pertanyaan yang lebih rumit, mencapai jawaban yang komprehensif menuntut informasi yang bersumber dari dokumentasi dan database. [Agen untuk Amazon Bedrock](https://docs.aws.amazon.com/bedrock/latest/userguide/agents.html) adalah fitur AI generatif yang membantu Anda membangun agen otonom yang dapat memahami tugas kompleks dan memecahnya menjadi tugas yang lebih sederhana untuk orkestrasi. Kombinasi wawasan yang diambil dari tugas yang disederhanakan, difasilitasi oleh agen otonom Amazon Bedrock, meningkatkan sintesis informasi, yang mengarah ke jawaban yang lebih menyeluruh dan lengkap. Pola ini menunjukkan cara membangun asisten berbasis obrolan dengan menggunakan Amazon Bedrock dan layanan serta fitur AI generatif terkait dalam solusi otomatis.

## Prasyarat dan batasan
<a name="develop-a-fully-automated-chat-based-assistant-by-using-amazon-bedrock-agents-and-knowledge-bases-prereqs"></a>

**Prasyarat**
+ Aktif Akun AWS
+ [Docker, diinstal](https://docs.docker.com/engine/install/)
+ AWS Cloud Development Kit (AWS CDK), [diinstal](https://docs.aws.amazon.com/cdk/v2/guide/getting_started.html#getting_started_tools) dan [di-bootstrap ke](https://docs.aws.amazon.com/cdk/v2/guide/getting_started.html#getting_started_bootstrap) atau `us-east-1` `us-west-2` Wilayah AWS
+ AWS CDK [Toolkit versi 2.114.1 atau yang lebih baru, diinstal](https://docs.aws.amazon.com/cdk/v2/guide/cli.html)
+ AWS Command Line Interface (AWS CLI), [diinstal](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) dan [dikonfigurasi](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html)
+ [Python versi 3.11 atau yang lebih baru, diinstal](https://www.python.org/downloads/)
+ Di Amazon Bedrock, [aktifkan akses](https://docs.aws.amazon.com/bedrock/latest/userguide/model-access.html) ke Claude 2, Claude 2.1, Claude Instant, dan Titan Embeddings G1 — Teks

**Batasan**
+ Solusi ini diterapkan ke satu Akun AWS.
+ Solusi ini hanya dapat digunakan di Wilayah AWS tempat Amazon Bedrock dan Amazon Tanpa OpenSearch Server didukung. Untuk informasi selengkapnya, lihat dokumentasi untuk [Amazon Bedrock](https://docs.aws.amazon.com/bedrock/latest/userguide/bedrock-regions.html) dan [Amazon Tanpa OpenSearch Server](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/serverless-overview.html#serverless-regions).

**Versi produk**
+ LLAMA-index versi 0.10.6 atau yang lebih baru
+ Sqlalchemy versi 2.0.23 atau yang lebih baru
+ OpenSearch-PY versi 2.4.2 atau yang lebih baru
+ Requests\$1AWS4Auth versi 1.2.3 atau yang lebih baru
+ AWS SDK untuk Python (Boto3) versi 1.34.57 atau yang lebih baru

## Arsitektur
<a name="develop-a-fully-automated-chat-based-assistant-by-using-amazon-bedrock-agents-and-knowledge-bases-architecture"></a>

**Tumpukan teknologi target**

[AWS Cloud Development Kit (AWS CDK)](https://docs.aws.amazon.com/cdk/v2/guide/home.html)Ini adalah kerangka pengembangan perangkat lunak open source untuk mendefinisikan infrastruktur cloud dalam kode dan menyediakannya. AWS CloudFormation AWS CDK Tumpukan yang digunakan dalam pola ini menyebarkan AWS sumber daya berikut: 
+ AWS Key Management Service (AWS KMS)
+ Amazon Simple Storage Service (Amazon S3)
+ AWS Glue Data Catalog, untuk komponen AWS Glue database
+ AWS Lambda
+ AWS Identity and Access Management (IAM)
+ Amazon Tanpa OpenSearch Server
+ Amazon Elastic Container Registry (Amazon ECR) 
+ Amazon Elastic Container Service (Amazon ECS)
+ AWS Fargate
+ Amazon Virtual Private Cloud (Amazon VPC)
+ [Penyeimbang Beban Aplikasi](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/introduction.html) 

**Arsitektur target**

![\[Diagram arsitektur menggunakan basis pengetahuan dan agen Amazon Bedrock\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/images/pattern-img/15372718-3a5d-4918-9cfa-422c455f288d/images/ff19152e-0bb6-4758-a6dd-4f6140e55113.png)


Diagram menunjukkan penyiapan AWS cloud-native yang komprehensif dalam satu Wilayah AWS, menggunakan beberapa. Layanan AWS Antarmuka utama untuk asisten berbasis obrolan adalah aplikasi [Streamlit](https://docs.streamlit.io/) yang dihosting di cluster Amazon ECS. [Application Load Balancer](https://aws.amazon.com/elasticloadbalancing/application-load-balancer/) mengelola aksesibilitas. Kueri yang dibuat melalui antarmuka ini mengaktifkan fungsi `Invocation` Lambda, yang kemudian berinteraksi dengan agen untuk Amazon Bedrock. Agen ini menanggapi pertanyaan pengguna dengan berkonsultasi dengan basis pengetahuan untuk Amazon Bedrock atau dengan menjalankan fungsi Lambda. `Agent executor` Fungsi ini memicu serangkaian tindakan yang terkait dengan agen, mengikuti skema API yang telah ditentukan sebelumnya. Basis pengetahuan untuk Amazon Bedrock menggunakan indeks OpenSearch Tanpa Server sebagai fondasi basis data vektor mereka. Selain itu, `Agent executor` fungsi menghasilkan kueri SQL yang dijalankan terhadap AWS Glue database melalui Amazon Athena. 

## Alat
<a name="develop-a-fully-automated-chat-based-assistant-by-using-amazon-bedrock-agents-and-knowledge-bases-tools"></a>

**Layanan AWS**
+ [Amazon Athena](https://docs.aws.amazon.com/athena/latest/ug/what-is.html) adalah layanan kueri interaktif yang membantu Anda menganalisis data secara langsung di Amazon Simple Storage Service (Amazon S3) dengan menggunakan SQL standar.
+ [Amazon Bedrock](https://docs.aws.amazon.com/bedrock/latest/userguide/what-is-bedrock.html) adalah layanan yang dikelola sepenuhnya yang membuat model foundation berkinerja tinggi (FMs) dari startup AI terkemuka dan Amazon tersedia untuk Anda gunakan melalui API terpadu.
+ [AWS Cloud Development Kit (AWS CDK)](https://docs.aws.amazon.com/cdk/latest/guide/home.html)adalah kerangka pengembangan perangkat lunak yang membantu Anda menentukan dan menyediakan infrastruktur AWS Cloud dalam kode.
+ [AWS Command Line Interface (AWS CLI)](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html) adalah alat open source yang membantu Anda berinteraksi Layanan AWS melalui perintah di shell baris perintah Anda.
+ [Amazon Elastic Container Service (Amazon ECS](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/Welcome.html)) adalah layanan manajemen kontainer yang cepat dan dapat diskalakan yang membantu Anda menjalankan, menghentikan, dan mengelola kontainer di klaster.
+ [Elastic Load Balancing](https://docs.aws.amazon.com/elasticloadbalancing/latest/userguide/what-is-load-balancing.html) mendistribusikan lalu lintas aplikasi atau jaringan yang masuk ke beberapa target. Misalnya, Anda dapat mendistribusikan lalu lintas di seluruh instans, container, dan alamat IP Amazon Elastic Compute Cloud (Amazon EC2) di satu atau beberapa Availability Zone.
+ [AWS Glue](https://docs.aws.amazon.com/glue/)adalah layanan ekstrak, transformasi, dan beban (ETL) yang dikelola sepenuhnya. Ini membantu Anda mengkategorikan, membersihkan, memperkaya, dan memindahkan data dengan andal antara penyimpanan data dan aliran data. Pola ini menggunakan AWS Glue crawler dan AWS Glue Data Catalog tabel.
+ [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html)adalah layanan komputasi yang membantu Anda menjalankan kode tanpa perlu menyediakan atau mengelola server. Ini menjalankan kode Anda hanya bila diperlukan dan skala secara otomatis, jadi Anda hanya membayar untuk waktu komputasi yang Anda gunakan.
+ [Amazon OpenSearch Serverless](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/serverless-overview.html) adalah konfigurasi tanpa server sesuai permintaan untuk Amazon Service. OpenSearch Dalam pola ini, indeks OpenSearch Tanpa Server berfungsi sebagai database vektor untuk basis pengetahuan untuk Amazon Bedrock.
+ [Amazon Simple Storage Service (Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html)) adalah layanan penyimpanan objek berbasis cloud yang membantu Anda menyimpan, melindungi, dan mengambil sejumlah data.

**Alat-alat lainnya**
+ [Streamlit](https://docs.streamlit.io/) adalah kerangka Python open source untuk membuat aplikasi data.

**Repositori kode**

Kode untuk pola ini tersedia di GitHub [genai-bedrock-agent-chatbot](https://github.com/awslabs/genai-bedrock-agent-chatbot/)repositori. Repositori kode berisi file dan folder berikut:
+ `assets`folder — Aset statis, seperti diagram arsitektur dan dataset publik.
+ `code/lambdas/action-lambda`folder — Kode Python untuk fungsi Lambda yang bertindak sebagai tindakan untuk agen Amazon Bedrock.
+ `code/lambdas/create-index-lambda`folder — Kode Python untuk fungsi Lambda yang menciptakan indeks Tanpa Server. OpenSearch 
+ `code/lambdas/invoke-lambda`folder — Kode Python untuk fungsi Lambda yang memanggil agen Amazon Bedrock, yang dipanggil langsung dari aplikasi Streamlit.
+ `code/lambdas/update-lambda`folder — Kode Python untuk fungsi Lambda yang memperbarui atau menghapus sumber daya setelah sumber daya digunakan melalui file. AWS AWS CDK
+ `code/layers/boto3_layer`folder — AWS CDK Tumpukan yang membuat lapisan Boto3 yang dibagikan di semua fungsi Lambda.
+ `code/layers/opensearch_layer`folder — AWS CDK Tumpukan yang membuat lapisan OpenSearch Tanpa Server yang menginstal semua dependensi untuk membuat indeks.
+ `code/streamlit-app`folder - Kode Python yang dijalankan sebagai gambar kontainer di Amazon ECS.
+ `code/code_stack.py`— AWS CDK Membangun file Python yang AWS membuat sumber daya.
+ `app.py`— AWS CDK Tumpukan file Python yang menyebarkan AWS sumber daya di akun target. AWS 
+ `requirements.txt`— Daftar semua dependensi Python yang harus diinstal untuk. AWS CDK
+ `cdk.json`— File input untuk memberikan nilai-nilai yang diperlukan untuk membuat sumber daya. Juga, di `context/config` bidang, Anda dapat menyesuaikan solusi yang sesuai. Untuk informasi selengkapnya tentang penyesuaian, lihat bagian [Informasi tambahan](#develop-a-fully-automated-chat-based-assistant-by-using-amazon-bedrock-agents-and-knowledge-bases-additional).

## Praktik terbaik
<a name="develop-a-fully-automated-chat-based-assistant-by-using-amazon-bedrock-agents-and-knowledge-bases-best-practices"></a>
+ Contoh kode yang diberikan di sini adalah untuk proof-of-concept (PoC) atau tujuan percontohan saja. Jika Anda ingin membawa kode ke produksi, pastikan untuk menggunakan praktik terbaik berikut:
  + Aktifkan [pencatatan akses Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/enable-server-access-logging.html)
  + Aktifkan [Log Aliran VPC](https://docs.aws.amazon.com/vpc/latest/userguide/flow-logs.html)
+ Siapkan pemantauan dan peringatan untuk fungsi Lambda. Untuk informasi selengkapnya, lihat [Memantau dan memecahkan masalah fungsi Lambda](https://docs.aws.amazon.com/lambda/latest/dg/lambda-monitoring.html). Untuk praktik terbaik, lihat [Praktik terbaik untuk bekerja dengan AWS Lambda fungsi](https://docs.aws.amazon.com/lambda/latest/dg/best-practices.html).

## Epik
<a name="develop-a-fully-automated-chat-based-assistant-by-using-amazon-bedrock-agents-and-knowledge-bases-epics"></a>

### Siapkan AWS kredensional di workstation lokal Anda
<a name="set-up-aws-credentials-on-your-local-workstation"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Variabel ekspor untuk akun dan Wilayah. | Untuk memberikan AWS kredensi untuk variabel lingkungan AWS CDK dengan menggunakan, jalankan perintah berikut.<pre>export CDK_DEFAULT_ACCOUNT=<12-digit AWS account number><br />export CDK_DEFAULT_REGION=<Region></pre> | AWS DevOps, DevOps insinyur | 
| Siapkan profil AWS CLI bernama. | Untuk mengatur profil AWS CLI bernama untuk akun, ikuti petunjuk di [Pengaturan file konfigurasi dan kredensi](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html). | AWS DevOps, DevOps insinyur | 

### Siapkan lingkungan Anda
<a name="set-up-your-environment"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Kloning repo ke workstation lokal Anda. | Untuk mengkloning repositori, jalankan perintah berikut di terminal Anda.<pre>git clone https://github.com/awslabs/genai-bedrock-agent-chatbot.git</pre> | DevOps insinyur, AWS DevOps | 
| Siapkan lingkungan virtual Python. | Untuk mengatur lingkungan virtual Python, jalankan perintah berikut.<pre>cd genai-bedrock-agent-chatbot<br />python3 -m venv .venv<br />source .venv/bin/activate</pre>Untuk mengatur dependensi yang diperlukan, jalankan perintah berikut.<pre>pip3 install -r requirements.txt</pre> | DevOps insinyur, AWS DevOps | 
| Mengatur AWS CDK lingkungan. | Untuk mengonversi kode menjadi AWS CloudFormation templat, jalankan perintah`cdk synth`. | AWS DevOps, DevOps insinyur | 

### Konfigurasikan dan terapkan aplikasi
<a name="configure-and-deploy-the-application"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Menyebarkan sumber daya di akun. | Untuk menyebarkan sumber daya di Akun AWS dengan menggunakan AWS CDK, lakukan hal berikut:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/develop-a-fully-automated-chat-based-assistant-by-using-amazon-bedrock-agents-and-knowledge-bases.html)Setelah penerapan berhasil, Anda dapat mengakses aplikasi asisten berbasis obrolan dengan menggunakan URL yang disediakan pada tab **Output** di konsol. CloudFormation  | DevOps insinyur, AWS DevOps | 

### Bersihkan semua AWS sumber daya dalam solusi
<a name="clean-up-all-aws-resources-in-the-solution"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Hapus AWS sumber daya. | Setelah Anda menguji solusinya, untuk membersihkan sumber daya, jalankan perintah`cdk destroy`. | AWS DevOps, DevOps insinyur | 

## Sumber daya terkait
<a name="develop-a-fully-automated-chat-based-assistant-by-using-amazon-bedrock-agents-and-knowledge-bases-resources"></a>

**AWS dokumentasi**
+ Sumber daya Amazon Bedrock:
  + [Akses model](https://docs.aws.amazon.com/bedrock/latest/userguide/model-access.html)
  + [Parameter inferensi untuk model pondasi](https://docs.aws.amazon.com/bedrock/latest/userguide/model-parameters.html)
  + [Agen untuk Amazon Bedrock](https://docs.aws.amazon.com/bedrock/latest/userguide/agents.html)
  + [Basis pengetahuan untuk Amazon Bedrock](https://docs.aws.amazon.com/bedrock/latest/userguide/knowledge-base.html)
+ [Membangun fungsi Lambda dengan Python](https://docs.aws.amazon.com/lambda/latest/dg/lambda-python.html)
+ AWS CDK sumber daya:
  + [Memulai dengan AWS CDK](https://docs.aws.amazon.com/cdk/v2/guide/getting_started.html)
  + [Memecahkan masalah umum AWS CDK](https://docs.aws.amazon.com/cdk/v2/guide/troubleshooting.html)
  + [Bekerja dengan AWS CDK in Python](https://docs.aws.amazon.com/cdk/v2/guide/work-with-cdk-python.html)
+ [Pembuat Aplikasi AI Generatif di AWS](https://docs.aws.amazon.com/solutions/latest/generative-ai-application-builder-on-aws/solution-overview.html)

** AWS Sumber daya lainnya**
+ [Mesin Vektor untuk Amazon Tanpa OpenSearch Server](https://aws.amazon.com/opensearch-service/serverless-vector-engine/)

**Sumber daya lainnya**
+ [LlamaIndex dokumentasi](https://docs.llamaindex.ai/en/stable/)
+ [Dokumentasi Streamlit](https://docs.streamlit.io/)

## Informasi tambahan
<a name="develop-a-fully-automated-chat-based-assistant-by-using-amazon-bedrock-agents-and-knowledge-bases-additional"></a>

**Sesuaikan asisten berbasis obrolan dengan data Anda sendiri**

Untuk mengintegrasikan data kustom Anda untuk menerapkan solusi, ikuti panduan terstruktur ini. Langkah-langkah ini dirancang untuk memastikan proses integrasi yang mulus dan efisien, memungkinkan Anda untuk menerapkan solusi secara efektif dengan data yang dipesan lebih dahulu.

*Untuk integrasi data basis pengetahuan*

**Persiapan data**

1. Temukan `assets/knowledgebase_data_source/` direktori.

1. Tempatkan dataset Anda di dalam folder ini.

**Penyesuaian konfigurasi**

1. Buka file `cdk.json`.

1. Arahkan ke `context/configure/paths/knowledgebase_file_name` bidang, lalu perbarui sesuai dengan itu.

1. Arahkan ke `bedrock_instructions/knowledgebase_instruction` bidang, lalu perbarui untuk secara akurat mencerminkan nuansa dan konteks kumpulan data baru Anda.

*Untuk integrasi data struktural*

**Organisasi data**

1. Di dalam `assets/data_query_data_source/` direktori, buat subdirektori, seperti`tabular_data`.

1. Masukkan kumpulan data terstruktur Anda (format yang dapat diterima termasuk CSV, JSON, ORC, dan Parket) ke dalam subfolder yang baru dibuat ini.

1. Jika Anda terhubung ke database yang ada, perbarui fungsi `create_sql_engine()` `code/lambda/action-lambda/build_query_engine.py` untuk terhubung ke database Anda.

**Pembaruan konfigurasi dan kode**

1. Dalam `cdk.json` file, perbarui `context/configure/paths/athena_table_data_prefix` bidang untuk menyelaraskan dengan jalur data baru.

1. Merevisi `code/lambda/action-lambda/dynamic_examples.csv` dengan memasukkan text-to-SQL contoh baru yang sesuai dengan dataset Anda.

1. Merevisi `code/lambda/action-lambda/prompt_templates.py` untuk mencerminkan atribut kumpulan data terstruktur Anda.

1. Dalam `cdk.json` file, perbarui `context/configure/bedrock_instructions/action_group_description` bidang untuk menjelaskan tujuan dan fungsionalitas fungsi `Action group` Lambda.

1. Dalam `assets/agent_api_schema/artifacts_schema.json` file, jelaskan fungsionalitas baru fungsi `Action group` Lambda Anda.

*Pembaruan umum*

Dalam `cdk.json` file, di `context/configure/bedrock_instructions/agent_instruction` bagian ini, berikan deskripsi komprehensif tentang fungsionalitas dan tujuan desain agen Amazon Bedrock yang dimaksudkan, dengan mempertimbangkan data yang baru terintegrasi.

# Dokumentasikan pengetahuan kelembagaan dari input suara dengan menggunakan Amazon Bedrock dan Amazon Transcribe
<a name="document-institutional-knowledge-from-voice-inputs-by-using-amazon-bedrock-and-amazon-transcribe"></a>

*Praveen Kumar Jeyarajan, Jundong Qiao, Rajiv Upadhyay, dan Megan Wu, Amazon Web Services*

## Ringkasan
<a name="document-institutional-knowledge-from-voice-inputs-by-using-amazon-bedrock-and-amazon-transcribe-summary"></a>

Menangkap pengetahuan kelembagaan sangat penting untuk memastikan keberhasilan dan ketahanan organisasi. Pengetahuan kelembagaan mewakili kebijaksanaan kolektif, wawasan, dan pengalaman yang dikumpulkan oleh karyawan dari waktu ke waktu, seringkali bersifat diam-diam dan diturunkan secara informal. Kekayaan informasi ini mencakup pendekatan unik, praktik terbaik, dan solusi untuk masalah rumit yang mungkin tidak didokumentasikan di tempat lain. Dengan memformalkan dan mendokumentasikan pengetahuan ini, perusahaan dapat melestarikan memori kelembagaan, mendorong inovasi, meningkatkan proses pengambilan keputusan, dan mempercepat kurva pembelajaran bagi karyawan baru. Selain itu, mempromosikan kolaborasi, memberdayakan individu, dan menumbuhkan budaya perbaikan berkelanjutan. Pada akhirnya, memanfaatkan pengetahuan institusional membantu perusahaan menggunakan aset mereka yang paling berharga — kecerdasan kolektif tenaga kerja mereka — untuk menavigasi tantangan, mendorong pertumbuhan, dan mempertahankan keunggulan kompetitif dalam lingkungan bisnis yang dinamis.

Pola ini menjelaskan cara menangkap pengetahuan kelembagaan melalui rekaman suara dari karyawan senior. Ini menggunakan [Amazon Transcribe](https://docs.aws.amazon.com/transcribe/latest/dg/what-is.html) dan [Amazon Bedrock](https://docs.aws.amazon.com/bedrock/latest/userguide/what-is-bedrock.html) untuk dokumentasi dan verifikasi sistematis. Dengan mendokumentasikan pengetahuan informal ini, Anda dapat melestarikannya dan membagikannya dengan kelompok karyawan berikutnya. Upaya ini mendukung keunggulan operasional dan meningkatkan efektivitas program pelatihan melalui penggabungan pengetahuan praktis yang diperoleh melalui pengalaman langsung.

## Prasyarat dan batasan
<a name="document-institutional-knowledge-from-voice-inputs-by-using-amazon-bedrock-and-amazon-transcribe-prereqs"></a>

**Prasyarat**
+ Akun AWS yang aktif
+ [Docker, diinstal](https://docs.docker.com/engine/install/)
+ AWS Cloud Development Kit (AWS CDK) versi 2.114.1 atau yang lebih baru, [diinstal](https://docs.aws.amazon.com/cdk/v2/guide/getting_started.html#getting_started_tools) dan [di-bootstrap ke](https://docs.aws.amazon.com/cdk/v2/guide/getting_started.html#getting_started_bootstrap) Wilayah AWS atau AWS `us-east-1` `us-west-2`
+ [AWS CDK Toolkit versi 2.114.1 atau yang lebih baru, diinstal](https://docs.aws.amazon.com/cdk/v2/guide/cli.html)
+ [AWS Command Line Interface (AWS CLI)[,](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) diinstal dan dikonfigurasi](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html)
+ [Python versi 3.12 atau yang lebih baru, diinstal](https://www.python.org/downloads/)
+ Izin untuk membuat Amazon Transcribe, Amazon Bedrock, Amazon Simple Storage Service (Amazon S3), dan sumber daya AWS Lambda

**Batasan**
+ Solusi ini diterapkan ke satu akun AWS.
+ Solusi ini hanya dapat diterapkan di Wilayah AWS di mana Amazon Bedrock dan Amazon Transcribe tersedia. Untuk informasi tentang ketersediaan, lihat dokumentasi untuk [Amazon Bedrock dan [Amazon](https://docs.aws.amazon.com/transcribe/latest/dg/what-is.html#tsc-regions)](https://docs.aws.amazon.com/bedrock/latest/userguide/bedrock-regions.html) Transcribe.
+ File audio harus dalam format yang didukung Amazon Transcribe. Untuk daftar format yang didukung, lihat [Format media](https://docs.aws.amazon.com/transcribe/latest/dg/how-input.html#how-input-audio) dalam dokumentasi Transcribe.

**Versi produk**
+ AWS SDK untuk Python (Boto3) versi 1.34.57 atau yang lebih baru
+ LangChain versi 0.1.12 atau yang lebih baru

## Arsitektur
<a name="document-institutional-knowledge-from-voice-inputs-by-using-amazon-bedrock-and-amazon-transcribe-architecture"></a>

Arsitektur mewakili alur kerja tanpa server di AWS. [AWS Step Functions mengatur fungsi](https://docs.aws.amazon.com/step-functions/latest/dg/welcome.html) Lambda untuk pemrosesan audio, analisis teks, dan pembuatan dokumen. Diagram berikut menunjukkan alur kerja Step Functions, juga dikenal sebagai *mesin negara*.

![\[Diagram arsitektur mesin status Step Functions yang menghasilkan dokumen\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/images/pattern-img/f1e0106d-b046-4adc-9718-c299efb7b436/images/e90298ca-1b7f-4c3e-97bd-311a9d5a4997.png)


Setiap langkah dalam mesin negara ditangani oleh fungsi Lambda yang berbeda. Berikut ini adalah langkah-langkah dalam proses pembuatan dokumen:

1. Fungsi `preprocess` Lambda memvalidasi input yang diteruskan ke Step Functions dan mencantumkan semua file audio yang ada di path folder Amazon S3 URI yang disediakan. Fungsi Lambda hilir dalam alur kerja menggunakan daftar file untuk memvalidasi, meringkas, dan menghasilkan dokumen.

1. Fungsi `transcribe` Lambda menggunakan Amazon Transcribe untuk mengonversi file audio menjadi transkrip teks. Fungsi Lambda ini bertanggung jawab untuk memulai proses transkripsi dan secara akurat mengubah ucapan menjadi teks, yang kemudian disimpan untuk diproses selanjutnya.

1. Fungsi `validate` Lambda menganalisis transkrip teks, menentukan relevansi tanggapan terhadap pertanyaan awal. Dengan menggunakan model bahasa besar (LLM) melalui Amazon Bedrock, ini mengidentifikasi dan memisahkan jawaban berdasarkan topik dari tanggapan di luar topik.

1. Fungsi `summarize` Lambda menggunakan Amazon Bedrock untuk menghasilkan ringkasan jawaban pada topik yang koheren dan ringkas.

1. Fungsi `generate` Lambda merakit ringkasan menjadi dokumen yang terstruktur dengan baik. Ini dapat memformat dokumen sesuai dengan templat yang telah ditentukan dan menyertakan konten atau data tambahan yang diperlukan.

1. Jika salah satu fungsi Lambda gagal, Anda menerima pemberitahuan email melalui Amazon Simple Notification Service (Amazon SNS).

Sepanjang proses ini, AWS Step Functions memastikan bahwa setiap fungsi Lambda dimulai dalam urutan yang benar. Mesin state ini memiliki kapasitas untuk pemrosesan paralel untuk meningkatkan efisiensi. Bucket Amazon S3 bertindak sebagai repositori penyimpanan pusat, mendukung alur kerja dengan mengelola berbagai format media dan dokumen yang terlibat.

## Alat
<a name="document-institutional-knowledge-from-voice-inputs-by-using-amazon-bedrock-and-amazon-transcribe-tools"></a>

**Layanan AWS**
+ [Amazon Bedrock](https://docs.aws.amazon.com/bedrock/latest/userguide/what-is-bedrock.html) adalah layanan yang dikelola sepenuhnya yang membuat model foundation berkinerja tinggi (FMs) dari startup AI terkemuka dan Amazon tersedia untuk Anda gunakan melalui API terpadu.
+ [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) adalah layanan komputasi yang membantu Anda menjalankan kode tanpa perlu menyediakan atau mengelola server. Ini menjalankan kode Anda hanya bila diperlukan dan skala secara otomatis, jadi Anda hanya membayar untuk waktu komputasi yang Anda gunakan.
+ [Amazon Simple Notification Service (Amazon SNS](https://docs.aws.amazon.com/sns/latest/dg/welcome.html)) membantu Anda mengoordinasikan dan mengelola pertukaran pesan antara penayang dan klien, termasuk server web dan alamat email.
+ [Amazon Simple Storage Service (Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html)) adalah layanan penyimpanan objek berbasis cloud yang membantu Anda menyimpan, melindungi, dan mengambil sejumlah data.
+ [AWS Step Functions](https://docs.aws.amazon.com/step-functions/latest/dg/welcome.html) adalah layanan orkestrasi tanpa server yang membantu Anda menggabungkan fungsi AWS Lambda dan layanan AWS lainnya untuk membangun aplikasi yang penting bagi bisnis.  
+ [Amazon Transcribe](https://docs.aws.amazon.com/transcribe/latest/dg/what-is.html) adalah layanan pengenalan suara otomatis yang menggunakan model pembelajaran mesin untuk mengonversi audio menjadi teks.

**Alat lainnya**
+ [LangChain](https://python.langchain.com/docs/get_started/introduction/)adalah kerangka kerja untuk mengembangkan aplikasi yang didukung oleh model bahasa besar (LLMs).

**Repositori kode**

Kode untuk pola ini tersedia di GitHub [genai-knowledge-capture](https://github.com/aws-samples/genai-knowledge-capture)repositori.

Repositori kode berisi file dan folder berikut:
+ `assets`folder — Aset statis untuk solusi, seperti diagram arsitektur dan dataset publik
+ `code/lambdas`folder - Kode Python untuk semua fungsi Lambda
  + `code/lambdas/generate`folder - Kode Python yang menghasilkan dokumen dari data yang diringkas dalam ember S3
  + `code/lambdas/preprocess`folder - Kode Python yang memproses input untuk mesin status Step Functions
  + `code/lambdas/summarize`folder - Kode Python yang merangkum data yang ditranskripsikan dengan menggunakan layanan Amazon Bedrock
  + `code/lambdas/transcribe`folder - Kode Python yang mengubah data ucapan (file audio) menjadi teks dengan menggunakan Amazon Transcribe
  + `code/lambdas/validate`folder - Kode Python yang memvalidasi apakah semua jawaban berkaitan dengan topik yang sama
+ `code/code_stack.py`— AWS CDK membangun file Python yang digunakan untuk membuat sumber daya AWS
+ `app.py`— File Python aplikasi AWS CDK yang digunakan untuk menyebarkan sumber daya AWS di akun AWS target
+ `requirements.txt`— Daftar semua dependensi Python yang harus diinstal untuk AWS CDK
+ `cdk.json`— File input untuk memberikan nilai yang diperlukan untuk membuat sumber daya

## Praktik terbaik
<a name="document-institutional-knowledge-from-voice-inputs-by-using-amazon-bedrock-and-amazon-transcribe-best-practices"></a>

Contoh kode yang diberikan adalah untuk proof-of-concept (PoC) atau tujuan percontohan saja. Jika Anda ingin mengambil solusi untuk produksi, gunakan praktik terbaik berikut:
+ Aktifkan [pencatatan akses Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/enable-server-access-logging.html)
+ Aktifkan [Log Aliran VPC](https://docs.aws.amazon.com/vpc/latest/userguide/flow-logs.html)

## Epik
<a name="document-institutional-knowledge-from-voice-inputs-by-using-amazon-bedrock-and-amazon-transcribe-epics"></a>

### Menyiapkan kredensi AWS di workstation lokal Anda
<a name="set-up-aws-credentials-on-your-local-workstation"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Ekspor variabel untuk akun dan Wilayah AWS. | Untuk memberikan kredensi AWS untuk AWS CDK dengan menggunakan variabel lingkungan, jalankan perintah berikut.<pre>export CDK_DEFAULT_ACCOUNT=<12-digit AWS account number><br />export CDK_DEFAULT_REGION=<Region></pre> | AWS DevOps, DevOps insinyur | 
| Siapkan profil bernama AWS CLI. | Untuk mengatur profil bernama AWS CLI untuk akun, ikuti petunjuk dalam [pengaturan Konfigurasi dan file kredensyal](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html). | AWS DevOps, DevOps insinyur | 

### Siapkan lingkungan Anda
<a name="set-up-your-environment"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Kloning repo ke workstation lokal Anda. | Untuk mengkloning [genai-knowledge-capture](https://github.com/aws-samples/genai-knowledge-capture)repositori, jalankan perintah berikut di terminal Anda.<pre>git clone https://github.com/aws-samples/genai-knowledge-capture</pre> | AWS DevOps, DevOps insinyur | 
| (Opsional) Ganti file audio. | Untuk menyesuaikan aplikasi sampel untuk memasukkan data Anda sendiri, lakukan hal berikut:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/document-institutional-knowledge-from-voice-inputs-by-using-amazon-bedrock-and-amazon-transcribe.html) | AWS DevOps, DevOps insinyur | 
| Siapkan lingkungan virtual Python. | Untuk mengatur lingkungan virtual Python, jalankan perintah berikut.<pre>cd genai-knowledge-capture<br />python3 -m venv .venv<br />source .venv/bin/activate<br />pip install -r requirements.txt</pre> | AWS DevOps, DevOps insinyur | 
| Sintesis kode AWS CDK. | Untuk mengonversi kode ke konfigurasi AWS CloudFormation stack, jalankan perintah berikut.<pre>cdk synth</pre> | AWS DevOps, DevOps insinyur | 

### Konfigurasikan dan terapkan solusinya
<a name="configure-and-deploy-the-solution"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Penyediaan akses model pondasi. | Aktifkan akses ke model Anthropic Claude 3 Sonnet untuk akun AWS Anda. Untuk petunjuk, lihat [Menambahkan akses model](https://docs.aws.amazon.com/bedrock/latest/userguide/model-access.html#model-access-add) dalam dokumentasi Bedrock. | AWS DevOps | 
| Menyebarkan sumber daya di akun. | Untuk menerapkan sumber daya di akun AWS dengan menggunakan AWS CDK, lakukan hal berikut:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/document-institutional-knowledge-from-voice-inputs-by-using-amazon-bedrock-and-amazon-transcribe.html) | AWS DevOps, DevOps insinyur | 
| Langganan topik Amazon SNS. | Untuk berlangganan topik Amazon SNS untuk pemberitahuan, lakukan hal berikut:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/document-institutional-knowledge-from-voice-inputs-by-using-amazon-bedrock-and-amazon-transcribe.html) | AWS Umum | 

### Pengujian solusi
<a name="test-the-solution"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Jalankan mesin negara. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/document-institutional-knowledge-from-voice-inputs-by-using-amazon-bedrock-and-amazon-transcribe.html) | Pengembang aplikasi, AWS Umum | 

### Bersihkan semua sumber daya AWS dalam solusi
<a name="clean-up-all-aws-resources-in-the-solution"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Hapus sumber daya AWS. | Setelah Anda menguji solusinya, bersihkan sumber daya:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/document-institutional-knowledge-from-voice-inputs-by-using-amazon-bedrock-and-amazon-transcribe.html) | AWS DevOps, DevOps insinyur | 

## Sumber daya terkait
<a name="document-institutional-knowledge-from-voice-inputs-by-using-amazon-bedrock-and-amazon-transcribe-resources"></a>

**Dokumentasi AWS**
+ Sumber daya Amazon Bedrock:
  + [Akses model](https://docs.aws.amazon.com/bedrock/latest/userguide/model-access.html)
  + [Parameter inferensi untuk model pondasi](https://docs.aws.amazon.com/bedrock/latest/userguide/model-parameters.html)
+ Sumber daya AWS CDK:
  + [Memulai AWS CDK](https://docs.aws.amazon.com/cdk/v2/guide/getting_started.html)
  + [Bekerja dengan AWS CDK dengan Python](https://docs.aws.amazon.com/cdk/v2/guide/work-with-cdk-python.html)
  + [Memecahkan masalah umum AWS CDK](https://docs.aws.amazon.com/cdk/v2/guide/troubleshooting.html)
  + [Perintah Toolkit](https://docs.aws.amazon.com/cdk/v2/guide/cli.html#cli-commands)
+ Sumber daya AWS Step Functions:
  + [Memulai AWS Step Functions](https://docs.aws.amazon.com/step-functions/latest/dg/getting-started-with-sfn.html)
  + [Pemecahan Masalah](https://docs.aws.amazon.com/step-functions/latest/dg/troubleshooting.html)
+ [Membangun fungsi Lambda dengan Python](https://docs.aws.amazon.com/lambda/latest/dg/lambda-python.html)
+ [Pembuat Aplikasi AI Generatif di AWS](https://docs.aws.amazon.com/solutions/latest/generative-ai-application-builder-on-aws/solution-overview.html)

**Sumber daya lainnya**
+ [LangChain dokumentasi](https://python.langchain.com/docs/get_started/introduction)

# Buat rekomendasi yang dipersonalisasi dan diberi peringkat ulang menggunakan Amazon Personalize
<a name="generate-personalized-and-re-ranked-recommendations-using-amazon-personalize"></a>

*Mason Cahill, Matthew Chasse, dan Tayo Olajide, Amazon Web Services*

## Ringkasan
<a name="generate-personalized-and-re-ranked-recommendations-using-amazon-personalize-summary"></a>

Pola ini menunjukkan kepada Anda cara menggunakan Amazon Personalize untuk menghasilkan rekomendasi yang dipersonalisasi—termasuk rekomendasi peringkat ulang—untuk pengguna Anda berdasarkan konsumsi data interaksi pengguna real-time dari pengguna tersebut. Contoh skenario yang digunakan dalam pola ini didasarkan pada situs web adopsi hewan peliharaan yang menghasilkan rekomendasi untuk penggunanya berdasarkan interaksi mereka (misalnya, hewan peliharaan apa yang dikunjungi pengguna). Dengan mengikuti skenario contoh, Anda belajar menggunakan Amazon Kinesis Data Streams untuk menyerap data interaksi, AWS Lambda untuk menghasilkan rekomendasi dan memberi peringkat ulang rekomendasi, dan Amazon Data Firehose untuk menyimpan data dalam bucket Amazon Simple Storage Service (Amazon S3). Anda juga belajar menggunakan AWS Step Functions untuk membuat mesin status yang mengelola versi solusi (yaitu, model terlatih) yang menghasilkan rekomendasi Anda.

## Prasyarat dan batasan
<a name="generate-personalized-and-re-ranked-recommendations-using-amazon-personalize-prereqs"></a>

**Prasyarat**
+ [Akun AWS aktif dengan AWS](https://aws.amazon.com/premiumsupport/knowledge-center/create-and-activate-aws-account/) Cloud Development Kit (AWS CDK) yang [di-bootstrap](https://docs.aws.amazon.com/cdk/v2/guide/bootstrapping.html)
+ [AWS Command Line Interface (AWS CLI) dengan kredensi](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html) yang dikonfigurasi
+ [Python 3.9](https://www.python.org/downloads/release/python-390/)

**Versi produk**
+ Python 3.9
+ AWS CDK 2.23.0 atau yang lebih baru
+ AWS CLI 2.7.27 atau yang lebih baru

## Arsitektur
<a name="generate-personalized-and-re-ranked-recommendations-using-amazon-personalize-architecture"></a>

**Tumpukan teknologi**
+ Amazon Data Firehose
+ Amazon Kinesis Data Streams
+ Amazon Personalize
+ Amazon Simple Storage Service (Amazon S3)
+ AWS Cloud Development Kit (AWS CDK)
+ Antarmuka Baris Perintah AWS (AWS CLI)
+ AWS Lambda
+ AWS Step Functions

**Arsitektur target**

Diagram berikut mengilustrasikan pipeline untuk memasukkan data real-time ke Amazon Personalize. Pipeline kemudian menggunakan data tersebut untuk menghasilkan rekomendasi yang dipersonalisasi dan diberi peringkat ulang bagi pengguna.

![\[Arsitektur konsumsi data untuk Amazon Personalisasi\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/images/pattern-img/42eb193b-2347-408a-8b25-46beeb3b29ca/images/786dbd56-7d7f-41bb-90f6-d4485d73fe15.png)


Diagram menunjukkan alur kerja berikut:

1. Kinesis Data Streams menyerap data pengguna real-time (misalnya, peristiwa seperti hewan peliharaan yang dikunjungi) untuk diproses oleh Lambda dan Firehose.

1. Fungsi Lambda memproses rekaman dari Kinesis Data Streams dan membuat panggilan API untuk menambahkan interaksi pengguna dalam rekaman ke pelacak peristiwa di Amazon Personalize.

1. Aturan berbasis waktu memanggil mesin status Step Functions dan menghasilkan versi solusi baru untuk model rekomendasi dan peringkat ulang dengan menggunakan peristiwa dari pelacak peristiwa di Amazon Personalize.

1. [Kampanye](https://docs.aws.amazon.com/personalize/latest/dg/campaigns.html) Amazon Personalisasi diperbarui oleh mesin status untuk menggunakan versi [solusi](https://docs.aws.amazon.com/personalize/latest/dg/creating-a-solution-version.html) baru.

1. Lambda memberi peringkat ulang daftar item yang direkomendasikan dengan memanggil kampanye peringkat ulang Amazon Personalize.

1. Lambda mengambil daftar item yang direkomendasikan dengan memanggil kampanye rekomendasi Amazon Personalize.

1. Firehose menyimpan peristiwa ke bucket S3 di mana mereka dapat diakses sebagai data historis.

## Alat
<a name="generate-personalized-and-re-ranked-recommendations-using-amazon-personalize-tools"></a>

**Alat AWS**
+ [AWS Cloud Development Kit (AWS CDK)](https://docs.aws.amazon.com/cdk/latest/guide/home.html) adalah kerangka kerja pengembangan perangkat lunak yang membantu Anda menentukan dan menyediakan infrastruktur AWS Cloud dalam kode.
+ [AWS Command Line Interface (AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html)) adalah alat sumber terbuka yang membantu Anda berinteraksi dengan layanan AWS melalui perintah di shell baris perintah Anda.
+ [Amazon Data Firehose](https://docs.aws.amazon.com/firehose/latest/dev/what-is-this-service.html) membantu Anda mengirimkan [data streaming](https://aws.amazon.com/streaming-data/) real-time ke layanan AWS lainnya, titik akhir HTTP kustom, dan titik akhir HTTP yang dimiliki oleh penyedia layanan pihak ketiga yang didukung.
+ [Amazon Kinesis Data](https://docs.aws.amazon.com/streams/latest/dev/introduction.html) Streams membantu Anda mengumpulkan dan memproses aliran besar catatan data secara real time.
+ [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) adalah layanan komputasi yang membantu Anda menjalankan kode tanpa perlu menyediakan atau mengelola server. Ini menjalankan kode Anda hanya bila diperlukan dan skala secara otomatis, jadi Anda hanya membayar untuk waktu komputasi yang Anda gunakan.
+ [Amazon Personalize](https://docs.aws.amazon.com/personalize/latest/dg/what-is-personalize.html) adalah layanan machine learning (ML) yang dikelola sepenuhnya yang membantu Anda menghasilkan rekomendasi item untuk pengguna berdasarkan data Anda.
+ [AWS Step Functions](https://docs.aws.amazon.com/step-functions/latest/dg/welcome.html) adalah layanan orkestrasi tanpa server yang membantu Anda menggabungkan fungsi Lambda dan layanan AWS lainnya untuk membangun aplikasi yang penting bagi bisnis.

**Alat-alat lainnya**
+ [pytest](https://docs.pytest.org/en/7.2.x/index.html) adalah kerangka kerja Python untuk menulis tes kecil yang dapat dibaca.
+ [Python adalah bahasa](https://www.python.org/) pemrograman komputer tujuan umum.

**Kode**

Kode untuk pola ini tersedia di repositori GitHub [Animal Recommender](https://github.com/aws-samples/personalize-pet-recommendations). Anda dapat menggunakan CloudFormation template AWS dari repositori ini untuk menerapkan sumber daya untuk solusi contoh.

**catatan**  
Versi solusi Amazon Personalisasi, pelacak peristiwa, dan kampanye didukung oleh [sumber daya khusus](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/template-custom-resources.html) (dalam infrastruktur) yang memperluas sumber daya asli. CloudFormation 

## Epik
<a name="generate-personalized-and-re-ranked-recommendations-using-amazon-personalize-epics"></a>

### Buat infrastruktur
<a name="create-the-infrastructure"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Buat lingkungan Python yang terisolasi. | **Pengaturan Mac/Linux**[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/generate-personalized-and-re-ranked-recommendations-using-amazon-personalize.html)**Pengaturan Windows**Untuk membuat lingkungan virtual secara manual, jalankan `% .venv\Scripts\activate.bat` perintah dari terminal Anda. | DevOps insinyur | 
| Sintesis CloudFormation template. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/generate-personalized-and-re-ranked-recommendations-using-amazon-personalize.html)Pada langkah 2, `CDK_ENVIRONMENT` mengacu pada `config/{env}.yml` file. | DevOps insinyur | 
| Menyebarkan sumber daya dan membuat infrastruktur. | Untuk menyebarkan sumber daya solusi, jalankan `./deploy.sh` perintah dari terminal Anda.Perintah ini menginstal dependensi Python yang diperlukan. Skrip Python membuat bucket S3 dan kunci AWS Key Management Service (AWS KMS), lalu menambahkan data seed untuk pembuatan model awal. Akhirnya, skrip berjalan `cdk deploy` untuk membuat infrastruktur yang tersisa.Pelatihan model awal terjadi selama pembuatan tumpukan. Diperlukan waktu hingga dua jam agar tumpukan selesai dibuat. | DevOps insinyur | 

## Sumber daya terkait
<a name="generate-personalized-and-re-ranked-recommendations-using-amazon-personalize-resources"></a>
+ [Rekomendasi Hewan (](https://github.com/aws-samples/personalize-pet-recommendations)) GitHub
+ [Dokumentasi Referensi AWS CDK](https://docs.aws.amazon.com/cdk/api/v2/)
+ [Dokumentasi Boto3](https://boto3.amazonaws.com/v1/documentation/api/latest/index.html)
+ [Optimalkan rekomendasi yang dipersonalisasi untuk metrik bisnis pilihan Anda dengan Amazon Personalize](https://aws.amazon.com/blogs/machine-learning/optimize-personalized-recommendations-for-a-business-metric-of-your-choice-with-amazon-personalize/) (AWS Machine Learning Blog)

## Informasi tambahan
<a name="generate-personalized-and-re-ranked-recommendations-using-amazon-personalize-additional"></a>

**Contoh muatan dan tanggapan**

*Rekomendasi fungsi Lambda*

Untuk mengambil rekomendasi, kirimkan permintaan ke fungsi Lambda rekomendasi dengan muatan dalam format berikut:

```
{
  "userId": "3578196281679609099",
  "limit": 6
}
```

Contoh respon berikut berisi daftar kelompok hewan:

```
[{"id": "1-domestic short hair-1-1"},
{"id": "1-domestic short hair-3-3"},
{"id": "1-domestic short hair-3-2"},
{"id": "1-domestic short hair-1-2"},
{"id": "1-domestic short hair-3-1"},
{"id": "2-beagle-3-3"},
```

Jika Anda meninggalkan `userId` bidang, fungsi mengembalikan rekomendasi umum.

*Peringkat ulang fungsi Lambda*

Untuk menggunakan peringkat ulang, kirimkan permintaan ke fungsi Lambda peringkat ulang. Muatan berisi semua item `userId` IDs yang akan diberi peringkat ulang dan metadatanya. Contoh data berikut menggunakan kelas Oxford Pets untuk `animal_species_id` (1=cat, 2=dog) dan bilangan bulat 1-5 untuk dan: `animal_age_id` `animal_size_id`

```
{
   "userId":"12345",
   "itemMetadataList":[
      {
         "itemId":"1",
         "animalMetadata":{
            "animal_species_id":"2",
            "animal_primary_breed_id":"Saint_Bernard",
            "animal_size_id":"3",
            "animal_age_id":"2"
         }
      },
      {
         "itemId":"2",
         "animalMetadata":{
            "animal_species_id":"1",
            "animal_primary_breed_id":"Egyptian_Mau",
            "animal_size_id":"1",
            "animal_age_id":"1"
         }
      },
      {
         "itemId":"3",
         "animalMetadata":{
            "animal_species_id":"2",
            "animal_primary_breed_id":"Saint_Bernard",
            "animal_size_id":"3",
            "animal_age_id":"2"
         }
      }
   ]
}
```

Fungsi Lambda memberi peringkat ulang item ini, lalu mengembalikan daftar terurut yang menyertakan item IDs dan respons langsung dari Amazon Personalize. Ini adalah daftar peringkat kelompok hewan tempat item berada dan skornya. Amazon Personalize menggunakan resep Personalisasi [Pengguna dan Personalisasi](https://docs.aws.amazon.com/personalize/latest/dg/native-recipe-new-item-USER_PERSONALIZATION.html) [Peringkat](https://docs.aws.amazon.com/personalize/latest/dg/native-recipe-search.html) untuk menyertakan skor untuk setiap item dalam rekomendasi. Skor ini mewakili kepastian relatif yang dimiliki Amazon Personalize tentang item mana yang akan dipilih pengguna selanjutnya. Skor yang lebih tinggi mewakili kepastian yang lebih besar.

```
{
   "ranking":[
      "1",
      "3",
      "2"
   ],
   "personalizeResponse":{
      "ResponseMetadata":{
         "RequestId":"a2ec0417-9dcd-4986-8341-a3b3d26cd694",
         "HTTPStatusCode":200,
         "HTTPHeaders":{
            "date":"Thu, 16 Jun 2022 22:23:33 GMT",
            "content-type":"application/json",
            "content-length":"243",
            "connection":"keep-alive",
            "x-amzn-requestid":"a2ec0417-9dcd-4986-8341-a3b3d26cd694"
         },
         "RetryAttempts":0
      },
      "personalizedRanking":[
         {
            "itemId":"2-Saint_Bernard-3-2",
            "score":0.8947961
         },
         {
            "itemId":"1-Siamese-1-1",
            "score":0.105204
         }
      ],
      "recommendationId":"RID-d97c7a87-bd4e-47b5-a89b-ac1d19386aec"
   }
}
```

*Payload Amazon Kinesis*

Payload untuk dikirim ke Amazon Kinesis memiliki format berikut:

```
{
    "Partitionkey": "randomstring",
    "Data": {
        "userId": "12345",
        "sessionId": "sessionId4545454",
        "eventType": "DetailView",
        "animalMetadata": {
            "animal_species_id": "1",
            "animal_primary_breed_id": "Russian_Blue",
            "animal_size_id": "1",
            "animal_age_id": "2"
        },
        "animal_id": "98765"
        
    }
}
```

**catatan**  
`userId`Bidang dihapus untuk pengguna yang tidak diautentikasi.

# Merampingkan alur kerja pembelajaran mesin dari pengembangan lokal hingga eksperimen yang dapat diskalakan dengan menggunakan SageMaker AI dan Hydra
<a name="streamline-machine-learning-workflows-by-using-amazon-sagemaker"></a>

*David Sauerwein, Marco Geiger, dan Julian Ferdinand Grueber, Amazon Web Services*

## Ringkasan
<a name="streamline-machine-learning-workflows-by-using-amazon-sagemaker-summary"></a>

Pola ini memberikan pendekatan terpadu untuk mengonfigurasi dan menjalankan algoritma pembelajaran mesin (ML) dari pengujian lokal hingga produksi di Amazon AI. SageMaker Algoritma ML adalah fokus dari pola ini, tetapi pendekatannya meluas ke fitur rekayasa, inferensi, dan seluruh jaringan pipa ML. Pola ini menunjukkan transisi dari pengembangan skrip lokal ke pekerjaan pelatihan SageMaker AI melalui kasus penggunaan sampel.

Alur kerja MS yang khas adalah mengembangkan dan menguji solusi pada mesin lokal, menjalankan eksperimen skala besar (misalnya, dengan parameter berbeda) di cloud, dan menerapkan solusi yang disetujui di cloud. Kemudian, solusi yang diterapkan harus dipantau dan dipelihara. Tanpa pendekatan terpadu untuk alur kerja ini, pengembang sering perlu memfaktorkan ulang kode mereka di setiap tahap. Jika solusinya bergantung pada sejumlah besar parameter yang mungkin berubah pada setiap tahap alur kerja ini, akan menjadi semakin sulit untuk tetap terorganisir dan konsisten. 

Pola ini mengatasi tantangan-tantangan ini. Pertama, ini menghilangkan kebutuhan akan refactoring kode antar lingkungan dengan menyediakan alur kerja terpadu yang tetap konsisten baik berjalan di mesin lokal, dalam wadah, atau pada AI. SageMaker Kedua, menyederhanakan manajemen parameter melalui sistem konfigurasi Hydra, di mana parameter didefinisikan dalam file konfigurasi terpisah yang dapat dengan mudah dimodifikasi dan digabungkan, dengan logging otomatis dari setiap konfigurasi run. Untuk detail selengkapnya tentang cara pola ini mengatasi tantangan ini, lihat [Informasi tambahan](#streamline-machine-learning-workflows-by-using-amazon-sagemaker-additional).

## Prasyarat dan batasan
<a name="streamline-machine-learning-workflows-by-using-amazon-sagemaker-prereqs"></a>

**Prasyarat**
+ Aktif Akun AWS
+ [Peran pengguna AWS Identity and Access Management](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user.html) (IAM) untuk menerapkan dan memulai pekerjaan pelatihan SageMaker AI
+ AWS Command Line Interface (AWS CLI) versi 2.0 atau yang lebih baru [diinstal](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html) dan [dikonfigurasi](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html)
+ [Puisi](https://python-poetry.org/) versi 1.8 atau lebih baru, tetapi lebih awal dari 2.0, diinstal
+ [Docker diinstal](https://www.docker.com/)
+ [Python versi 3.10.x](https://www.python.org/downloads/release/python-31011/)

**Batasan**
+ Kode saat ini hanya menargetkan pekerjaan pelatihan SageMaker AI. Memperluasnya ke pekerjaan pemrosesan dan seluruh saluran SageMaker AI sangatlah mudah.
+ Untuk pengaturan SageMaker AI yang sepenuhnya diproduksi, detail tambahan harus ada. Contohnya bisa berupa kustom AWS Key Management Service (AWS KMS) kunci untuk komputasi dan penyimpanan, atau konfigurasi jaringan. Anda juga dapat mengonfigurasi opsi tambahan ini dengan menggunakan Hydra di subfolder khusus folder. `config`
+ Beberapa Layanan AWS tidak tersedia di semua Wilayah AWS. Untuk ketersediaan Wilayah, lihat [AWS Layanan menurut Wilayah](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/). Untuk titik akhir tertentu, lihat [Titik akhir dan kuota layanan](https://docs.aws.amazon.com/general/latest/gr/aws-service-information.html), dan pilih tautan untuk layanan.

## Arsitektur
<a name="streamline-machine-learning-workflows-by-using-amazon-sagemaker-architecture"></a>

Diagram berikut menggambarkan arsitektur solusi.

![\[Alur kerja untuk membuat dan menjalankan pelatihan SageMaker AI atau pekerjaan HPO.\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/images/pattern-img/1db57484-f85c-49a6-b870-471dade02b26/images/d80e7474-a975-4d92-8f66-2d34e33053fd.png)


Diagram menunjukkan alur kerja berikut:

1. Ilmuwan data dapat mengulangi algoritma dalam skala kecil di lingkungan lokal, menyesuaikan parameter, dan menguji skrip pelatihan dengan cepat tanpa perlu Docker atau SageMaker AI. (Untuk detail selengkapnya, lihat tugas “Jalankan secara lokal untuk pengujian cepat” di [Epik](#streamline-machine-learning-workflows-by-using-amazon-sagemaker-epics).)

1. Setelah puas dengan algoritme, ilmuwan data membangun dan mendorong image Docker ke repositori Amazon Elastic Container Registry (Amazon ECR) bernama. `hydra-sm-artifact` (Untuk detail selengkapnya, lihat “Jalankan alur kerja pada SageMaker AI” di [Epics](#streamline-machine-learning-workflows-by-using-amazon-sagemaker-epics).)

1. Ilmuwan data memulai pekerjaan pelatihan SageMaker AI atau pekerjaan optimasi hyperparameter (HPO) dengan menggunakan skrip Python. Untuk pekerjaan pelatihan reguler, konfigurasi yang disesuaikan ditulis ke bucket Amazon Simple Storage Service (Amazon S3) bernama. `hydra-sample-config` Untuk pekerjaan HPO, set konfigurasi default yang terletak di `config` folder diterapkan.

1. Pekerjaan pelatihan SageMaker AI menarik image Docker, membaca data input dari bucket Amazon S3, dan mengambil konfigurasi dari `hydra-sample-data` bucket Amazon S3 atau menggunakan konfigurasi default`hydra-sample-config`. Setelah pelatihan, pekerjaan menyimpan data output ke bucket Amazon S3. `hydra-sample-data`

**Otomatisasi dan skala**
+ [Untuk pelatihan otomatis, pelatihan ulang, atau inferensi, Anda dapat mengintegrasikan AWS CLI kode dengan layanan seperti [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html), [AWS CodePipeline](https://docs.aws.amazon.com/codepipeline/latest/userguide/welcome.html), atau Amazon. EventBridge](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-what-is.html)
+ Penskalaan dapat dicapai dengan mengubah konfigurasi untuk ukuran instance atau dengan menambahkan konfigurasi untuk pelatihan terdistribusi.

## Alat
<a name="streamline-machine-learning-workflows-by-using-amazon-sagemaker-tools"></a>

**Layanan AWS**
+ [AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html)membantu Anda menyiapkan AWS sumber daya, menyediakannya dengan cepat dan konsisten, dan mengelolanya sepanjang siklus hidupnya di seluruh Akun AWS dan. Wilayah AWS
+ [AWS Command Line Interface (AWS CLI)](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html) adalah alat open source yang membantu Anda berinteraksi Layanan AWS melalui perintah di shell baris perintah Anda. Untuk pola ini, AWS CLI berguna untuk konfigurasi sumber daya awal dan pengujian.
+ [Amazon Elastic Container Registry (Amazon ECR](https://docs.aws.amazon.com/AmazonECR/latest/userguide/what-is-ecr.html)) adalah layanan registri gambar kontainer terkelola yang aman, terukur, dan andal.
+ [Amazon SageMaker AI](https://docs.aws.amazon.com/sagemaker/?id=docs_gateway) adalah layanan pembelajaran mesin terkelola (ML) yang membantu Anda membangun dan melatih model ML, lalu menerapkannya ke lingkungan host yang siap produksi. SageMaker Pelatihan AI adalah layanan ML yang dikelola sepenuhnya dalam SageMaker AI yang memungkinkan pelatihan model ML dalam skala besar. Alat ini dapat menangani tuntutan komputasi model pelatihan secara efisien, memanfaatkan skalabilitas bawaan dan integrasi dengan yang lain. Layanan AWS SageMaker Pelatihan AI juga mendukung algoritme dan wadah khusus, membuatnya fleksibel untuk berbagai alur kerja ML.
+ [Amazon Simple Storage Service (Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html)) adalah layanan penyimpanan objek berbasis cloud yang membantu Anda menyimpan, melindungi, dan mengambil sejumlah data.

**Alat-alat lainnya**
+ [Docker](https://www.docker.com/) adalah seperangkat produk platform as a service (PaaS) yang menggunakan virtualisasi pada tingkat sistem operasi untuk mengirimkan perangkat lunak dalam wadah. Ini digunakan dalam pola ini untuk memastikan lingkungan yang konsisten di berbagai tahap, mulai dari pengembangan hingga penerapan, dan untuk mengemas dependensi dan kode dengan andal. Kontainerisasi Docker memungkinkan penskalaan dan kontrol versi yang mudah di seluruh alur kerja.
+ [Hydra adalah](https://hydra.cc/) alat manajemen konfigurasi yang memberikan fleksibilitas untuk menangani beberapa konfigurasi dan manajemen sumber daya dinamis. Ini berperan penting dalam mengelola konfigurasi lingkungan, memungkinkan penyebaran yang mulus di berbagai lingkungan. Untuk detail selengkapnya tentang Hydra, lihat [Informasi tambahan](#streamline-machine-learning-workflows-by-using-amazon-sagemaker-additional).
+ [Python adalah bahasa](https://www.python.org/) pemrograman komputer tujuan umum. Python digunakan untuk menulis kode ML dan alur kerja penerapan.
+ [Puisi](https://python-poetry.org/) adalah alat untuk manajemen ketergantungan dan pengemasan dengan Python.

**Repositori kode**

Kode untuk pola ini tersedia di repositori GitHub [configuring-sagemaker-training-jobs-with-hydra](https://github.com/aws-samples/configuring-sagemaker-training-jobs-with-hydra).

## Praktik terbaik
<a name="streamline-machine-learning-workflows-by-using-amazon-sagemaker-best-practices"></a>
+ Pilih peran IAM untuk menerapkan dan memulai pekerjaan pelatihan SageMaker AI yang mengikuti prinsip hak istimewa paling sedikit dan berikan izin minimum yang diperlukan untuk melakukan tugas. Untuk informasi selengkapnya, lihat [Berikan hak istimewa terkecil](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#grant-least-priv) dan [praktik terbaik Keamanan](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html) dalam dokumentasi IAM.
+ Gunakan kredensi sementara untuk mengakses peran IAM di terminal.

## Epik
<a name="streamline-machine-learning-workflows-by-using-amazon-sagemaker-epics"></a>

### Mengatur lingkungan
<a name="set-up-the-environment"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Buat dan aktifkan lingkungan virtual. | Untuk membuat dan mengaktifkan lingkungan virtual, jalankan perintah berikut di root repositori:<pre>poetry install <br />poetry shell</pre> | AWS Umum | 
| Menyebarkan infrastruktur.  | Untuk menyebarkan infrastruktur menggunakan CloudFormation, jalankan perintah berikut:<pre>aws cloudformation deploy --template-file infra/hydra-sagemaker-setup.yaml --stack-name hydra-sagemaker-setup  --capabilities CAPABILITY_NAMED_IAM</pre> | AWS Umum, DevOps insinyur | 
| Unduh data sampel.  | Untuk men-download data input dari [openmlke](https://www.openml.org/) mesin lokal Anda, jalankan perintah berikut:<pre>python scripts/download_data.py</pre> | AWS Umum | 
| Jalankan secara lokal untuk pengujian cepat. | Untuk menjalankan kode pelatihan secara lokal untuk pengujian, jalankan perintah berikut:<pre>python mypackage/train.py data.train_data_path=data/train.csv evaluation.base_dir_path=data</pre>Log dari semua eksekusi disimpan oleh waktu eksekusi dalam folder bernama`outputs`. Untuk informasi lebih lanjut, lihat bagian “Output” di [GitHub repositori](https://github.com/aws-samples/configuring-sagemaker-training-jobs-with-hydra).Anda juga dapat melakukan beberapa pelatihan secara paralel, dengan parameter yang berbeda, dengan menggunakan `--multirun` fungsionalitas. Untuk detail selengkapnya, lihat [dokumentasi Hydra](https://hydra.cc/docs/tutorials/basic/running_your_app/multi-run/). | Ilmuwan data | 

### Jalankan alur kerja di AI SageMaker
<a name="run-workflows-on-sm"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Mengatur variabel lingkungan. | Untuk menjalankan pekerjaan Anda di SageMaker AI, atur variabel lingkungan berikut, berikan Akun AWS ID Anda Wilayah AWS dan Anda:<pre>export ECR_REPO_NAME=hydra-sm-artifact<br />export image_tag=latest<br />export AWS_REGION="<your_aws_region>" # for instance, us-east-1<br />export ACCOUNT_ID="<your_account_id>"<br />export BUCKET_NAME_DATA=hydra-sample-data-$ACCOUNT_ID<br />export BUCKET_NAME_CONFIG=hydra-sample-config-$ACCOUNT_ID<br />export AWS_DEFAULT_REGION=$AWS_REGION<br />export ROLE_ARN=arn:aws:iam::${ACCOUNT_ID}:role/hydra-sample-sagemaker<br />export INPUT_DATA_S3_PATH=s3://$BUCKET_NAME_DATA/hydra-on-sm/input/<br />export OUTPUT_DATA_S3_PATH=s3://$BUCKET_NAME_DATA/hydra-on-sm/output/</pre> | AWS Umum | 
| Buat dan dorong gambar Docker. | Untuk membuat image Docker dan mendorongnya ke repositori Amazon ECR, jalankan perintah berikut:<pre>chmod +x scripts/create_and_push_image.sh<br />scripts/create_and_push_image.sh $ECR_REPO_NAME $image_tag $AWS_REGION $ACCOUNT_ID</pre>Tugas ini mengasumsikan bahwa Anda memiliki kredensi yang valid di lingkungan Anda. Gambar Docker didorong ke repositori Amazon ECR yang ditentukan dalam variabel lingkungan di tugas sebelumnya dan digunakan untuk mengaktifkan wadah SageMaker AI tempat pekerjaan pelatihan akan berjalan. | Insinyur ML, AWS Umum | 
| Salin data input ke Amazon S3. | Pekerjaan pelatihan SageMaker AI perlu mengambil data input. Untuk menyalin data input ke bucket Amazon S3 untuk data, jalankan perintah berikut: <pre>aws s3 cp data/train.csv "${INPUT_DATA_S3_PATH}train.csv" </pre> | Insinyur data, AWS Umum | 
| Kirimkan pekerjaan pelatihan SageMaker AI. | Untuk menyederhanakan eksekusi skrip Anda, tentukan parameter konfigurasi default dalam file. `default.yaml` Selain memastikan konsistensi di seluruh proses, pendekatan ini juga menawarkan fleksibilitas untuk dengan mudah mengganti pengaturan default sesuai kebutuhan. Lihat contoh berikut ini:<pre>python scripts/start_sagemaker_training_job.py sagemaker.role_arn=$ROLE_ARN sagemaker.config_s3_bucket=$BUCKET_NAME_CONFIG sagemaker.input_data_s3_path=$INPUT_DATA_S3_PATH sagemaker.output_data_s3_path=$OUTPUT_DATA_S3_PATH</pre> | AWS Umum, insinyur ML, Ilmuwan data | 
| Jalankan tuning hyperparameter SageMaker AI. | Menjalankan tuning hyperparameter SageMaker AI mirip dengan mengirimkan pekerjaan pelatihan AII. SageMaker Namun, skrip eksekusi berbeda dalam beberapa hal penting seperti yang Anda lihat di file [start\$1sagemaker\$1hpo\$1job.py](https://github.com/aws-samples/configuring-sagemaker-training-jobs-with-hydra/blob/main/scripts/start_sagemaker_hpo_job.py). Hyperparameter yang akan disetel harus melewati muatan boto3, bukan saluran ke pekerjaan pelatihan.Untuk memulai pekerjaan optimasi hyperparameter (HPO), jalankan perintah berikut:<pre>python scripts/start_sagemaker_hpo_job.py sagemaker.role_arn=$ROLE_ARN sagemaker.config_s3_bucket=$BUCKET_NAME_CONFIG sagemaker.input_data_s3_path=$INPUT_DATA_S3_PATH sagemaker.output_data_s3_path=$OUTPUT_DATA_S3_PATH</pre> | Ilmuwan data | 

## Pemecahan masalah
<a name="streamline-machine-learning-workflows-by-using-amazon-sagemaker-troubleshooting"></a>


| Isu | Solusi | 
| --- | --- | 
| Token kadaluwarsa | Ekspor AWS kredensi baru. | 
| Kurangnya izin IAM | Pastikan Anda mengekspor kredensional peran IAM yang memiliki semua izin IAM yang diperlukan untuk menerapkan CloudFormation template dan untuk memulai pekerjaan pelatihan AI. SageMaker  | 

## Sumber daya terkait
<a name="streamline-machine-learning-workflows-by-using-amazon-sagemaker-resources"></a>
+ [Latih model dengan Amazon SageMaker AI](https://docs.aws.amazon.com/sagemaker/latest/dg/how-it-works-training.html) (AWS dokumentasi)
+ [Apa itu Tuning Hyperparameter?](https://aws.amazon.com/what-is/hyperparameter-tuning/#:~:text=Hyperparameter%20tuning%20allows%20data%20scientists,the%20model%20as%20a%20hyperparameter.)

## Informasi tambahan
<a name="streamline-machine-learning-workflows-by-using-amazon-sagemaker-additional"></a>

Pola ini membahas tantangan berikut:

**Konsistensi dari pengembangan lokal hingga penerapan skala besar** — Dengan pola ini, pengembang dapat menggunakan alur kerja yang sama, terlepas dari apakah mereka menggunakan skrip Python lokal, menjalankan kontainer Docker lokal, melakukan eksperimen besar pada AI, atau menerapkan dalam produksi pada SageMaker AI. SageMaker Konsistensi ini penting karena alasan berikut:
+ **Iterasi lebih** cepat — Ini memungkinkan eksperimen lokal yang cepat tanpa perlu penyesuaian besar saat meningkatkan skala.
+ **Tidak ada refactoring** - Transisi ke eksperimen yang lebih besar pada SageMaker AI mulus, tidak memerlukan perombakan pengaturan yang ada.
+ **Peningkatan berkelanjutan** - Mengembangkan fitur baru dan terus meningkatkan algoritme sangatlah mudah karena kodenya tetap sama di seluruh lingkungan.

**Manajemen konfigurasi** — Pola ini menggunakan [Hydra](https://hydra.cc/), alat manajemen konfigurasi, untuk memberikan manfaat berikut:
+ Parameter didefinisikan dalam file konfigurasi, terpisah dari kode.
+ Set parameter yang berbeda dapat ditukar atau digabungkan dengan mudah.
+ Pelacakan eksperimen disederhanakan karena setiap konfigurasi run dicatat secara otomatis.
+ Eksperimen cloud dapat menggunakan struktur konfigurasi yang sama dengan proses lokal, memastikan konsistensi.

Dengan Hydra, Anda dapat mengelola konfigurasi secara efektif, mengaktifkan fitur-fitur berikut:
+ **Membagi konfigurasi** - Pecahkan konfigurasi proyek Anda menjadi potongan-potongan yang lebih kecil dan dapat dikelola yang dapat dimodifikasi secara independen. Pendekatan ini membuatnya lebih mudah untuk menangani proyek yang kompleks.
+ **Sesuaikan default dengan mudah** — Ubah konfigurasi dasar Anda dengan cepat, sehingga lebih mudah untuk menguji ide-ide baru.
+ **Sejajarkan input CLI dan file konfigurasi - Gabungkan input** baris perintah dengan file konfigurasi Anda dengan lancar. Pendekatan ini mengurangi kekacauan dan kebingungan, membuat proyek Anda lebih mudah dikelola dari waktu ke waktu.

 

# Terjemahkan bahasa alami ke dalam kueri DSL untuk OpenSearch dan kueri Elasticsearch
<a name="translate-natural-language-query-dsl-opensearch-elasticsearch"></a>

*Tabby Ward, Nicholas Switzer, dan Breanne Warner, Amazon Web Services*

## Ringkasan
<a name="translate-natural-language-query-dsl-opensearch-elasticsearch-summary"></a>

Pola ini menunjukkan cara menggunakan model bahasa besar (LLMs) untuk mengubah kueri bahasa alami menjadi bahasa khusus domain kueri (query DSL), yang memudahkan pengguna untuk berinteraksi dengan layanan pencarian seperti OpenSearch dan Elasticsearch tanpa pengetahuan luas tentang bahasa kueri. Sumber daya ini sangat berharga bagi pengembang dan ilmuwan data yang ingin meningkatkan aplikasi berbasis pencarian dengan kemampuan kueri bahasa alami, yang pada akhirnya meningkatkan pengalaman pengguna dan fungsionalitas pencarian.

Pola ini menggambarkan teknik untuk rekayasa yang cepat, penyempurnaan berulang, dan penggabungan pengetahuan khusus, yang semuanya sangat penting dalam pembuatan data sintetis. Meskipun pendekatan ini berfokus terutama pada konversi kueri, pendekatan ini secara implisit menunjukkan potensi augmentasi data dan produksi data sintetis yang dapat diskalakan. Fondasi ini dapat diperluas ke tugas pembuatan data sintetis yang lebih komprehensif, untuk menyoroti kekuatan LLMs dalam menjembatani input bahasa alami yang tidak terstruktur dengan output khusus aplikasi yang terstruktur.

Solusi ini tidak melibatkan alat migrasi atau penerapan dalam pengertian tradisional. Sebaliknya, ini berfokus pada mendemonstrasikan bukti konsep (PoC) untuk mengonversi kueri bahasa alami menjadi kueri DSL dengan menggunakan. LLMs
+ Pola menggunakan notebook Jupyter sebagai step-by-step panduan untuk mengatur lingkungan dan mengimplementasikan konversi. text-to-query
+ Ini menggunakan Amazon Bedrock untuk mengakses LLMs, yang sangat penting untuk menafsirkan bahasa alami dan menghasilkan kueri yang sesuai.
+ Solusinya dirancang untuk bekerja dengan Amazon OpenSearch Service. Anda dapat mengikuti proses serupa untuk Elasticsearch, dan kueri yang dihasilkan berpotensi diadaptasi untuk mesin pencari serupa.

[Query DSL](https://opensearch.org/docs/latest/query-dsl/) adalah bahasa penelusuran berbasis JSON yang fleksibel yang digunakan untuk membangun kueri kompleks di Elasticsearch dan. OpenSearch Ini memungkinkan Anda untuk menentukan kueri dalam parameter kueri operasi pencarian, dan mendukung berbagai jenis kueri. Kueri DSL mencakup kueri daun dan kueri majemuk. Kueri daun mencari nilai tertentu di bidang tertentu dan mencakup teks lengkap, tingkat istilah, geografis, penggabungan, rentang, dan kueri khusus. Kueri majemuk bertindak sebagai pembungkus untuk beberapa klausa daun atau majemuk, dan menggabungkan hasilnya atau memodifikasi perilakunya. Query DSL mendukung pembuatan pencarian canggih, mulai dari kueri sederhana yang cocok untuk semua kueri kompleks dan multi-klausa yang menghasilkan hasil yang sangat spesifik. Query DSL sangat berharga untuk proyek yang membutuhkan kemampuan pencarian lanjutan, konstruksi kueri fleksibel, dan struktur kueri berbasis JSON.

Pola ini menggunakan teknik seperti prompt beberapa tembakan, prompt sistem, output terstruktur, rantai prompt, penyediaan konteks, dan petunjuk khusus tugas untuk konversi DSL. text-to-query Untuk definisi dan contoh teknik ini, lihat bagian [Informasi tambahan](#translate-natural-language-query-dsl-opensearch-elasticsearch-additional).

## Prasyarat dan batasan
<a name="translate-natural-language-query-dsl-opensearch-elasticsearch-prereqs"></a>

**Prasyarat**

Untuk menggunakan notebook Jupyter secara efektif untuk mengonversi kueri bahasa alami menjadi kueri DSL kueri, Anda memerlukan:
+ **Keakraban dengan notebook Jupyter**. Pemahaman dasar tentang cara menavigasi dan menjalankan kode di lingkungan notebook Jupyter.
+ **Lingkungan Python**. Lingkungan Python yang berfungsi, lebih disukai Python 3.x, dengan pustaka yang diperlukan diinstal.
+ **Elasticsearch atau OpenSearch pengetahuan**. Pengetahuan dasar tentang Elasticsearch atau OpenSearch, termasuk arsitekturnya dan cara melakukan kueri.
+ **Akun AWS**. Aktif Akun AWS untuk mengakses Amazon Bedrock dan layanan terkait lainnya.
+ **Perpustakaan dan dependensi**. Pemasangan pustaka tertentu yang disebutkan dalam buku catatan, seperti `boto3` untuk AWS interaksi, dan dependensi lain yang diperlukan untuk integrasi LLM.
+ **Akses model dalam Amazon Bedrock**. Pola ini menggunakan tiga Claude LLMs dari Anthropic. Buka [konsol Amazon Bedrock](https://console.aws.amazon.com/bedrock/) dan pilih **Akses model**. Pada layar berikutnya, pilih **Aktifkan model tertentu** dan pilih ketiga model ini:
  + Claude 3 Soneta
  + Claude 3.5 Soneta
  + Claude 3 Haiku
+ **Kebijakan IAM yang tepat dan peran IAM**. Untuk menjalankan buku catatan di Akun AWS, peran AWS Identity and Access Management (IAM) Anda memerlukan `SagemakerFullAccess` kebijakan serta kebijakan yang disediakan di bagian [Informasi tambahan](#translate-natural-language-query-dsl-opensearch-elasticsearch-additional), yang dapat Anda beri nama`APGtext2querydslpolicy`. Kebijakan ini termasuk berlangganan tiga model Claude yang terdaftar.

Memiliki prasyarat ini memastikan pengalaman yang lancar saat Anda bekerja dengan notebook dan mengimplementasikan fungsionalitasnya. text-to-query

**Batasan**
+ **Bukti status konsep**. Proyek ini terutama dimaksudkan sebagai bukti konsep (PoC). Ini menunjukkan potensi penggunaan LLMs untuk mengubah kueri bahasa alami menjadi kueri DSL, tetapi mungkin tidak sepenuhnya dioptimalkan atau siap produksi.
+ **Keterbatasan model**:

  **Kendala jendela konteks***.* Saat menggunakan LLMs yang tersedia di Amazon Bedrock, perhatikan batasan jendela konteks:

  Model Claude (per September 2024):
  + Claude 3 Opus: 200.000 token
  + Claude 3 Soneta: 200.000 token
  + Claude 3 Haiku: 200.000 token

  Model lain di Amazon Bedrock mungkin memiliki ukuran jendela konteks yang berbeda. Selalu periksa dokumentasi terbaru untuk informasi terbaru.

  **Ketersediaan model***.*Ketersediaan model tertentu di Amazon Bedrock dapat bervariasi. Pastikan bahwa Anda memiliki akses ke model yang diperlukan sebelum Anda menerapkan solusi ini.
+ **Keterbatasan tambahan**
  + **Kompleksitas kueri**. Efektivitas bahasa alami untuk kueri konversi DSL dapat bervariasi tergantung pada kompleksitas kueri input.
  + **Kompatibilitas versi**. Kueri DSL yang dihasilkan mungkin memerlukan penyesuaian berdasarkan versi Elasticsearch tertentu atau OpenSearch yang Anda gunakan.
  + **Kinerja**. Pola ini menyediakan implementasi PoC, sehingga kecepatan dan akurasi pembuatan kueri mungkin tidak optimal untuk penggunaan produksi skala besar.
  + **Biaya**. Menggunakan LLMs di Amazon Bedrock menimbulkan biaya. Waspadai struktur harga untuk model yang Anda pilih. Untuk informasi selengkapnya, lihat [harga Amazon Bedrock](https://docs.aws.amazon.com/bedrock/latest/userguide/bedrock-pricing.html).
  + **Pemeliharaan**. Pembaruan rutin untuk petunjuk dan pemilihan model mungkin diperlukan untuk mengikuti kemajuan teknologi LLM dan perubahan sintaks DSL kueri.

**Versi produk**

Solusi ini diuji di Amazon OpenSearch Service. Jika Anda ingin menggunakan Elasticsearch, Anda mungkin harus membuat beberapa perubahan untuk mereplikasi fungsionalitas yang tepat dari pola ini.
+ **OpenSearch kompatibilitas versi**. **OpenSearch **mempertahankan kompatibilitas mundur dalam versi utama. Contoh:
  + OpenSearch Klien 1.x umumnya kompatibel dengan cluster OpenSearch 1.x.
  + OpenSearch Klien 2.x umumnya kompatibel dengan cluster OpenSearch 2.x.

  Namun, selalu yang terbaik adalah menggunakan versi minor yang sama untuk klien dan cluster jika memungkinkan.
+ **OpenSearch Kompatibilitas API**. **OpenSearch **mempertahankan kompatibilitas API dengan Elasticsearch OSS 7.10.2 untuk sebagian besar operasi. Namun, ada beberapa perbedaan, terutama di versi yang lebih baru.
+ **OpenSearch Pertimbangan upgrade**:
  + Penurunan versi langsung tidak didukung. Gunakan snapshot untuk rollback jika diperlukan.
  + Saat Anda memutakhirkan, periksa [matriks kompatibilitas dan catatan rilis](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/supported-operations.html) untuk setiap perubahan yang melanggar.

**Pertimbangan Elasticsearch**
+ **Versi Elasticsearch**. Versi utama Elasticsearch yang Anda gunakan sangat penting, karena sintaks kueri dan fitur dapat berubah di antara versi utama. Saat ini, versi stabil terbaru adalah Elasticsearch 8.x. Pastikan kueri Anda kompatibel dengan versi Elasticsearch spesifik Anda.
+ Versi perpustakaan **DSL kueri Elasticsearch**. Jika Anda menggunakan pustaka DSL Python kueri Elasticsearch, pastikan versinya cocok dengan versi Elasticsearch Anda. Contoh:
  + Untuk Elasticsearch 8.x, gunakan `elasticsearch-dsl` versi yang lebih besar atau sama dengan 8.0.0 tetapi lebih kecil dari 9.0.0.
  + Untuk Elasticsearch 7.x, gunakan `elasticsearch-dsl` versi yang lebih besar atau sama dengan 7.0.0 tetapi lebih kecil dari 8.0.0.
+ **Versi pustaka klien**. Baik Anda menggunakan klien Elasticsearch resmi atau klien khusus bahasa, pastikan bahwa itu kompatibel dengan versi Elasticsearch Anda.
+ **Versi kueri DSL**. Query DSL berkembang dengan versi Elasticsearch. Beberapa jenis kueri atau parameter mungkin tidak digunakan lagi atau diperkenalkan dalam versi yang berbeda.
+ **Versi pemetaan**. Cara Anda mendefinisikan pemetaan untuk indeks Anda dan mengubah antar versi. Selalu periksa dokumentasi pemetaan untuk versi Elasticsearch spesifik Anda.
+ **Versi alat analisis**. Jika Anda menggunakan penganalisis, tokenizer, atau alat analisis teks lainnya, perilaku atau ketersediaannya mungkin berubah antar versi.

## Arsitektur
<a name="translate-natural-language-query-dsl-opensearch-elasticsearch-architecture"></a>

**Arsitektur target**

Diagram berikut menggambarkan arsitektur untuk pola ini.

![\[Arsitektur untuk menerjemahkan bahasa alami ke kueri DSL di Amazon Bedrock.\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/images/pattern-img/75296405-2893-4328-9551-9bcc6ec7fd3e/images/ffb1b893-d23c-4e1c-b679-8063b4f85a8a.png)


di mana:

1. Input pengguna dan prompt sistem dengan beberapa contoh yang diminta. Prosesnya dimulai dengan pengguna yang menyediakan kueri bahasa alami atau permintaan untuk pembuatan skema.

1. Batuan Dasar Amazon. Input dikirim ke Amazon Bedrock, yang berfungsi sebagai antarmuka untuk mengakses Claude LLM.

1. Claude 3 Soneta LLM. Amazon Bedrock menggunakan Claude 3 Soneta dari keluarga Claude 3 untuk memproses input. LLMs Ini menafsirkan dan menghasilkan Elasticsearch atau OpenSearch query DSL yang sesuai. Untuk permintaan skema, ini menghasilkan Elasticsearch sintetis atau pemetaan. OpenSearch 

1. Generasi kueri DSL. Untuk kueri bahasa alami, aplikasi mengambil output LLM dan memformatnya menjadi DSL kueri Elasticsearch atau OpenSearch Service yang valid.

1. Pembuatan data sintetis. Aplikasi ini juga mengambil skema untuk membuat Elasticsearch sintetis atau OpenSearch data yang akan dimuat ke dalam koleksi Tanpa OpenSearch Server untuk pengujian.

1. OpenSearch atau Elasticsearch. Kueri DSL yang dihasilkan ditanyakan terhadap koleksi OpenSearch Tanpa Server di semua indeks. Output JSON berisi data yang relevan dan jumlah *klik* dari data yang berada dalam koleksi Tanpa OpenSearch Server.

**Otomatisasi dan skala**

Kode yang disediakan dengan pola ini dibangun secara ketat untuk tujuan PoC. Daftar berikut memberikan beberapa saran untuk mengotomatisasi dan menskalakan solusi lebih lanjut dan memindahkan kode ke produksi. Peningkatan ini berada di luar cakupan pola ini.
+ Kontainerisasi:
  + Dockerize aplikasi untuk memastikan konsistensi di berbagai lingkungan.
  + Gunakan platform orkestrasi kontainer seperti Amazon Elastic Container Service (Amazon ECS) atau Kubernetes untuk penerapan yang dapat diskalakan.
+ Arsitektur tanpa server:
  + Ubah fungsionalitas inti menjadi AWS Lambda fungsi.
  + Gunakan Amazon API Gateway untuk membuat RESTful titik akhir untuk input kueri bahasa alami.
+ Pemrosesan asinkron:
  + Menerapkan Amazon Simple Queue Service (Amazon SQS) untuk mengantri kueri yang masuk.
  + Gunakan AWS Step Functions untuk mengatur alur kerja kueri pemrosesan dan menghasilkan kueri DSL.
+ Caching:
  + Menerapkan mekanisme untuk men-cache petunjuknya.
+ Pemantauan dan pencatatan:
  + Gunakan Amazon CloudWatch untuk pemantauan dan peringatan.
  + Menerapkan logging terpusat dengan Amazon CloudWatch Logs atau Amazon OpenSearch Service untuk analisis log.
+ Peningkatan keamanan:
  + Menerapkan peran IAM untuk kontrol akses berbutir halus.
  + Gunakan AWS Secrets Manager untuk menyimpan dan mengelola kunci API dan kredensyal dengan aman.
+ Penyebaran Multi-Wilayah:
  + Pertimbangkan untuk menerapkan solusi di beberapa Wilayah AWS untuk meningkatkan latensi dan pemulihan bencana.
  + Gunakan Amazon Route 53 untuk perutean permintaan cerdas.

Dengan menerapkan saran ini, Anda dapat mengubah PoC ini menjadi solusi yang kuat, terukur, dan siap produksi. Kami menyarankan Anda menguji secara menyeluruh setiap komponen dan seluruh sistem sebelum penerapan penuh.

## Alat
<a name="translate-natural-language-query-dsl-opensearch-elasticsearch-tools"></a>

**Alat**
+ Notebook [Amazon SageMaker AI adalah notebook](https://aws.amazon.com/sagemaker/notebooks/) Jupyter yang dikelola sepenuhnya untuk pengembangan pembelajaran mesin. Pola ini menggunakan notebook sebagai lingkungan interaktif untuk eksplorasi data, pengembangan model, dan eksperimen di Amazon AI. SageMaker Notebook menyediakan integrasi tanpa batas dengan fitur SageMaker AI lainnya dan. Layanan AWS
+ [Python adalah bahasa](https://www.python.org/) pemrograman komputer tujuan umum. Pola ini menggunakan Python sebagai bahasa inti untuk mengimplementasikan solusinya.
+ [Amazon Bedrock](https://aws.amazon.com/bedrock/) adalah layanan yang dikelola sepenuhnya yang membuat model foundation berkinerja tinggi (FMs) dari startup AI terkemuka dan Amazon tersedia untuk Anda gunakan melalui API terpadu. Amazon Bedrock menyediakan akses LLMs untuk pemrosesan bahasa alami. Pola ini menggunakan model Anthropic Claude 3.
+ [AWS SDK untuk Python (Boto3)](https://boto3.amazonaws.com/v1/documentation/api/latest/index.html)adalah kit pengembangan perangkat lunak yang membantu Anda mengintegrasikan aplikasi, perpustakaan, atau skrip Python Anda, termasuk Amazon Layanan AWS Bedrock.
+ [Amazon OpenSearch Service adalah layanan](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/what-is.html) terkelola yang membantu Anda menerapkan, mengoperasikan, dan menskalakan kluster OpenSearch Layanan di AWS Cloud. Pola ini menggunakan OpenSearch Service sebagai sistem target untuk menghasilkan kueri DSL.

**Repositori kode**

Kode untuk pola ini tersedia di repositori GitHub [Prompt Engineering Text-to-QueryDSL Using Claude 3 Models](https://github.com/aws-samples/text-to-queryDSL/blob/main/text2ES_prompting_guide.ipynb). Contohnya menggunakan aplikasi media sosial kesehatan yang membuat posting untuk pengguna dan profil pengguna yang terkait dengan aplikasi kesehatan.

## Praktik terbaik
<a name="translate-natural-language-query-dsl-opensearch-elasticsearch-best-practices"></a>

Saat bekerja dengan solusi ini, pertimbangkan hal berikut:
+ Kebutuhan akan AWS kredensyal dan izin yang tepat untuk mengakses Amazon Bedrock
+ Potensi biaya yang terkait dengan penggunaan Layanan AWS dan LLMs
+ Pentingnya memahami kueri DSL untuk memvalidasi dan berpotensi memodifikasi kueri yang dihasilkan

## Epik
<a name="translate-natural-language-query-dsl-opensearch-elasticsearch-epics"></a>

### Mengatur lingkungan dan menyiapkan data
<a name="set-up-the-environment-and-prepare-data"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Menyiapkan lingkungan pengembangan. | [Untuk instruksi dan kode terperinci untuk ini dan langkah-langkah lain dalam pola ini, lihat panduan komprehensif di repositori. GitHub ](https://github.com/aws-samples/text-to-queryDSL/blob/main/text2ES_prompting_guide.ipynb)[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/translate-natural-language-query-dsl-opensearch-elasticsearch.html) | Python, pip, AWS SDK | 
| Mengatur AWS akses. | Siapkan klien Amazon Bedrock dan sesi SageMaker AI. Ambil Amazon Resource Name (ARN) untuk SageMaker peran eksekusi AI untuk digunakan nanti dalam membuat OpenSearch koleksi Tanpa Server. | IAM, AWS CLI, Batuan Dasar Amazon, Amazon SageMaker | 
| Muat skema aplikasi kesehatan. | Membaca dan mengurai skema JSON untuk posting kesehatan dan profil pengguna dari file yang telah ditentukan. Ubah skema menjadi string untuk digunakan nanti dalam prompt. | DevOps insinyur, AWS Umum, Python, JSON | 

### Menghasilkan data sintetis
<a name="generate-synthetic-data"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Buat generator data berbasis LLM. | Menerapkan fungsi **generate\$1data ()** untuk memanggil Amazon Bedrock Converse API dengan model Claude 3. Siapkan model IDs untuk Soneta, Soneta 3.5, dan Haiku:<pre>model_id_sonnet3_5 = "anthropic.claude-3-5-sonnet-20240620-v1:0" <br />model_id_sonnet = "anthropic.claude-3-sonnet-20240229-v1:0" <br />model_id_haiku = "anthropic.claude-3-haiku-20240307-v1:0"</pre> | Python, Amazon Bedrock API, LLM meminta | 
| Buat posting kesehatan sintetis. | Gunakan fungsi **generate\$1data ()** dengan prompt pesan tertentu untuk membuat entri pos kesehatan sintetis berdasarkan skema yang disediakan. Panggilan fungsi terlihat seperti ini: <pre>health_post_data = generate_data(bedrock_rt, model_id_sonnet, system_prompt, message_healthpost, inference_config)</pre> | Python, JSON | 
| Buat profil pengguna sintetis. | Gunakan fungsi **generate\$1data ()** dengan prompt pesan tertentu untuk membuat entri profil pengguna sintetis berdasarkan skema yang disediakan. Ini mirip dengan pembuatan pos kesehatan, tetapi menggunakan prompt yang berbeda. | Python, JSON | 

### Mengatur OpenSearch dan menelan data
<a name="set-up-opensearch-and-ingest-data"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Siapkan koleksi OpenSearch Tanpa Server. | Gunakan Boto3 untuk membuat koleksi OpenSearch Tanpa Server dengan enkripsi, jaringan, dan kebijakan akses yang sesuai. Pembuatan koleksi terlihat seperti ini: <pre>collection = aoss_client.create_collection(name=es_name, type='SEARCH')</pre> [Untuk informasi selengkapnya tentang OpenSearch Tanpa Server, lihat dokumentasi.AWS](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/serverless.html) | OpenSearch Tanpa Server, IAM | 
| Tentukan OpenSearch indeks. | Buat indiexes untuk posting kesehatan dan profil pengguna dengan menggunakan OpenSearch klien, berdasarkan pemetaan skema yang telah ditentukan. Pembuatan indeks terlihat seperti ini:<pre>response_health = oss_client.indices.create(healthpost_index, body=healthpost_body)</pre> | OpenSearch, JSON | 
| Muat data ke dalam OpenSearch. | Jalankan fungsi **ingest\$1data ()** untuk menyisipkan postingan kesehatan sintetis dan profil pengguna secara massal ke dalam indeks masing-masing. OpenSearch Fungsi ini menggunakan pembantu massal dari`opensearch-py`:<pre>success, failed = bulk(oss_client, actions)</pre> | Python, OpenSearch API, operasi data massal | 

### Menghasilkan dan menjalankan kueri
<a name="generate-and-run-queries"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Desain beberapa contoh cepat. | Hasilkan contoh kueri dan pertanyaan bahasa alami yang sesuai dengan menggunakan model Claude 3 untuk dijadikan beberapa contoh untuk pembuatan kueri. Prompt sistem mencakup contoh-contoh ini:<pre>system_prompt_query_generation = [{"text": f"""You are an expert query dsl generator. ... Examples: {example_prompt} ..."""}]</pre> | LLM meminta, kueri DSL | 
| Buat konverter text-to-query DSL. | Terapkan prompt sistem, yang mencakup skema, data, dan beberapa contoh tembakan, untuk pembuatan kueri. Gunakan prompt sistem untuk mengonversi kueri bahasa alami ke kueri DSL. Panggilan fungsi terlihat seperti ini:<pre>query_response = generate_data(bedrock_rt, model_id, system_prompt_query_generation, query, inference_config)</pre> | Python, Amazon Bedrock API, LLM meminta | 
| Kueri uji DSL aktif. OpenSearch | Jalankan fungsi **query\$1oss ()** untuk menjalankan kueri DSL yang dihasilkan terhadap koleksi Tanpa OpenSearch Server dan mengembalikan hasil. Fungsi ini menggunakan metode pencarian OpenSearch klien:<pre>response = oss_client.search(index="_all", body=temp)</pre> | Python, OpenSearch API, kueri DSL | 

### Uji dan evaluasi
<a name="test-and-evaluate"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Buat set kueri uji. | Gunakan Claude 3 untuk menghasilkan beragam pertanyaan tes berdasarkan data dan skema sintetis:<pre>test_queries = generate_data(bedrock_rt, model_id_sonnet, query_system_prompt, query_prompt, inference_config)</pre> | LLM mendorong | 
| Nilai keakuratan konversi DSL kueri. | Uji kueri DSL yang dihasilkan dengan menjalankan kueri terhadap OpenSearch dan menganalisis hasil yang dikembalikan untuk relevansi dan akurasi. Ini melibatkan menjalankan kueri dan memeriksa klik:<pre>output = query_oss(response1) print("Response after running query against Opensearch") print(output)</pre> | Python, analisis data, kueri DSL | 
| Benchmark Claude 3 model.  | Bandingkan kinerja model Claude 3 yang berbeda (Haiku, Soneta, Soneta 3.5) untuk pembuatan kueri dalam hal akurasi dan latensi. Untuk membandingkan, ubah `model_id` saat Anda memanggil **generate\$1data ()** dan ukur waktu eksekusi. | Python, pembandingan kinerja | 

### Membersihkan dan mendokumentasikan
<a name="clean-up-and-document"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Kembangkan proses pembersihan. | Hapus semua indeks dari koleksi OpenSearch Tanpa Server setelah digunakan. | Python, AWS SDK, API OpenSearch  | 

## Sumber daya terkait
<a name="translate-natural-language-query-dsl-opensearch-elasticsearch-resources"></a>
+ [Kueri DSL](https://opensearch.org/docs/latest/query-dsl/) (OpenSearch dokumentasi)
+ [Dokumentasi OpenSearch Layanan Amazon](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/what-is.html)
+ [OpenSearch Koleksi tanpa server](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/serverless-manage.html)
+ [Dokumentasi Amazon Bedrock](https://docs.aws.amazon.com/bedrock/latest/userguide/what-is-bedrock.html)
+ [Dokumentasi Amazon SageMaker AI](https://docs.aws.amazon.com/sagemaker/latest/dg/whatis.html)
+ [AWS SDK untuk Python (Boto3) dokumentasi](https://boto3.amazonaws.com/v1/documentation/api/latest/index.html)

## Informasi tambahan
<a name="translate-natural-language-query-dsl-opensearch-elasticsearch-additional"></a>

**Kebijakan IAM**

Berikut `APGtext2querydslpolicy` kebijakan untuk peran IAM yang digunakan dalam pola ini:

```
{
  "Version": "2012-10-17",		 	 	  
  "Statement": [
    { "Effect": "Allow", 
      "Action": [ 
        "bedrock:InvokeModel", 
        "bedrock:InvokeModelWithResponseStream"
      ], 
      "Resource": "*" 
    }, 
    { "Effect": "Allow", 
      "Action": [ 
        "s3:GetObject", 
        "s3:PutObject", 
        "s3:ListBucket"
      ], 
      "Resource": [
        "arn:aws:s3:::sagemaker-*", 
        "arn:aws:s3:::sagemaker-*/*" 
      ] 
    }, 
    { "Effect": "Allow", 
      "Action": [ 
        "logs:CreateLogGroup", 
        "logs:CreateLogStream", 
        "logs:PutLogEvents" 
      ], 
      "Resource": "arn:aws:logs:*:*:log-group:/aws/sagemaker/*" 
    }, 
    { "Effect": "Allow", 
      "Action": [
        "ec2:CreateNetworkInterface", 
        "ec2:DescribeNetworkInterfaces", 
        "ec2:DeleteNetworkInterface" 
      ], 
      "Resource": "*" 
    }, 
    { "Effect": "Allow", 
      "Action": [
        "aoss:*" 
      ], 
      "Resource": "*" 
    }, 
    { "Effect": "Allow", 
      "Action": [ 
        "iam:PassRole", 
        "sagemaker:*" 
      ], 
      "Resource": [ 
        "arn:aws:iam::*:role/*", "*" 
      ], 
      "Condition": { 
        "StringEquals": { 
          "iam:PassedToService": "sagemaker.amazonaws.com" 
          } 
      } 
    }, 
    { "Effect": "Allow", 
      "Action": [ 
        "codecommit:GetBranch", 
        "codecommit:GetCommit", 
        "codecommit:GetRepository", 
        "codecommit:ListBranches", 
        "codecommit:ListRepositories" 
      ], 
      "Resource": "*" 
    }, 
    { "Effect": "Allow", 
      "Action": [ 
        "aws-marketplace:Subscribe" 
      ], 
      "Resource": "*", 
      "Condition": {
        "ForAnyValue:StringEquals": { 
          "aws-marketplace:ProductId": [ 
            "prod-6dw3qvchef7zy", 
            "prod-m5ilt4siql27k", 
            "prod-ozonys2hmmpeu" 
          ]
        } 
      } 
    }, 
    { "Effect": "Allow", 
      "Action": [ 
        "aws-marketplace:Unsubscribe", 
        "aws-marketplace:ViewSubscriptions" 
      ], 
      "Resource": "*" 
    }, 
    { "Effect": "Allow", 
      "Action": "iam:*", 
      "Resource": "*" 
    } 
  ] 
}
```

**Teknik cepat dengan model Anthropic Claude 3**

Pola ini menunjukkan teknik prompt berikut untuk konversi text-to-query DSL menggunakan model Claude 3.
+ **Permintaan beberapa tembakan:** Few-shot prompt adalah teknik yang ampuh untuk meningkatkan kinerja model Claude 3 di Amazon Bedrock. Pendekatan ini melibatkan penyediaan model dengan sejumlah kecil contoh yang menunjukkan input/output perilaku yang diinginkan sebelum memintanya untuk melakukan tugas serupa. Saat Anda menggunakan model Claude 3 di Amazon Bedrock, beberapa bidikan yang diminta bisa sangat efektif untuk tugas yang memerlukan pemformatan, pola penalaran, atau pengetahuan domain tertentu. Untuk menerapkan teknik ini, Anda biasanya menyusun prompt Anda dengan dua komponen utama: bagian contoh dan kueri yang sebenarnya. Bagian contoh berisi satu atau beberapa input/output pasangan yang menggambarkan tugas, dan bagian kueri menyajikan input baru yang Anda inginkan respons. Metode ini membantu Claude 3 memahami konteks dan format keluaran yang diharapkan, dan seringkali menghasilkan respons yang lebih akurat dan konsisten.

  Contoh:

  ```
  "query": {
    "bool": {
      "must": [
        {"match": {"post_type": "recipe"}},
        {"range": {"likes_count": {"gte": 100}}},
        {"exists": {"field": "media_urls"}}
      ]
    }
  }
  Question: Find all recipe posts that have at least 100 likes and include media URLs.
  ```
+ **Permintaan sistem:** Selain beberapa bidikan yang diminta, model Claude 3 di Amazon Bedrock juga mendukung penggunaan prompt sistem. Prompt sistem adalah cara untuk memberikan konteks, instruksi, atau pedoman keseluruhan untuk model sebelum menyajikannya dengan input pengguna tertentu. Mereka sangat berguna untuk mengatur nada, mendefinisikan peran model, atau menetapkan kendala untuk seluruh percakapan. Untuk menggunakan prompt sistem dengan Claude 3 di Amazon Bedrock, Anda memasukkannya ke dalam `system` parameter permintaan API Anda. Ini terpisah dari pesan pengguna dan berlaku untuk seluruh interaksi. Permintaan sistem terperinci digunakan untuk mengatur konteks dan memberikan pedoman untuk model.

  Contoh:

  ```
  You are an expert query dsl generator. Your task is to take an input question and generate a query dsl to answer the question. Use the schemas and data below to generate the query.
  
  Schemas: [schema details]
  Data: [sample data]
  Guidelines: 
  - Ensure the generated query adheres to DSL query syntax
  - Do not create new mappings or other items that aren't included in the provided schemas.
  ```
+ **Output terstruktur**: Anda dapat menginstruksikan model untuk memberikan output dalam format tertentu, seperti JSON atau dalam tag XHTML.

  Contoh:

  ```
  Put the query in json tags
  ```
+ **Prompt chaining**: Notebook menggunakan output dari satu panggilan LLM sebagai input untuk yang lain, seperti menggunakan data sintetis yang dihasilkan untuk membuat contoh pertanyaan.
+ **Ketentuan konteks**: Konteks yang relevan, termasuk skema dan data sampel, disediakan dalam petunjuk.

  Contoh:

  ```
  Schemas: [schema details]
  Data: [sample data]
  ```
+ **Permintaan khusus tugas**: Permintaan yang berbeda dibuat untuk tugas tertentu, seperti menghasilkan data sintetis, membuat contoh pertanyaan, dan mengonversi kueri bahasa alami menjadi kueri DSL.

  Contoh untuk menghasilkan pertanyaan tes:

  ```
  Your task is to generate 5 example questions users can ask the health app based on provided schemas and data. Only include the questions generated in the response.
  ```

# Gunakan Amazon Q Developer sebagai asisten pengkodean untuk meningkatkan produktivitas Anda
<a name="use-q-developer-as-coding-assistant-to-increase-productivity"></a>

*Ram Kandaswamy, Amazon Web Services*

## Ringkasan
<a name="use-q-developer-as-coding-assistant-to-increase-productivity-summary"></a>

Pola ini menggunakan tic-tac-toe game untuk menunjukkan bagaimana Anda dapat menerapkan Amazon Q Developer di berbagai tugas pengembangan. Ini menghasilkan kode untuk tic-tac-toe game sebagai aplikasi satu halaman (SPA), meningkatkan UI, dan membuat skrip untuk menyebarkan aplikasi. AWS

Amazon Q Developer berfungsi sebagai asisten pengkodean untuk membantu mempercepat alur kerja pengembangan perangkat lunak dan meningkatkan produktivitas bagi pengembang dan non-pengembang. Terlepas dari keahlian teknis Anda, ini membantu Anda membuat arsitektur dan solusi desain untuk masalah bisnis, bootstrap lingkungan kerja Anda, membantu Anda menerapkan fitur baru, dan menghasilkan kasus uji untuk validasi. Ini menggunakan instruksi bahasa alami dan kemampuan AI untuk memastikan kode yang konsisten dan berkualitas tinggi dan untuk mengurangi tantangan pengkodean terlepas dari keterampilan pemrograman Anda.

Keuntungan utama Amazon Q Developer adalah kemampuannya untuk membebaskan Anda dari tugas pengkodean berulang. Saat Anda menggunakan `@workspace` anotasi, Amazon Q Developer menyerap dan mengindeks semua file kode, konfigurasi, dan struktur proyek di lingkungan pengembangan terintegrasi (IDE) Anda, dan memberikan respons yang disesuaikan untuk membantu Anda fokus pada pemecahan masalah secara kreatif. Anda dapat mendedikasikan lebih banyak waktu untuk merancang solusi inovatif dan meningkatkan pengalaman pengguna. Jika Anda tidak teknis, Anda dapat menggunakan Amazon Q Developer untuk merampingkan alur kerja dan berkolaborasi secara lebih efektif dengan tim pengembangan. Fitur **kode Amazon Q Developer Explain** menawarkan instruksi dan ringkasan terperinci, sehingga Anda dapat menavigasi basis kode yang kompleks.

Selain itu, Amazon Q Developer menyediakan pendekatan agnostik bahasa yang membantu pengembang tingkat junior dan menengah memperluas keahlian mereka. Anda dapat berkonsentrasi pada konsep inti dan logika bisnis alih-alih sintaks khusus bahasa. Ini mengurangi kurva belajar saat Anda beralih teknologi.

## Prasyarat dan batasan
<a name="use-q-developer-as-coding-assistant-to-increase-productivity-prereqs"></a>

**Prasyarat**
+ IDE (misalnya, WebStorm atau Visual Studio Code) dengan plugin Amazon Q Developer diinstal. Untuk petunjuk, lihat [Menginstal ekstensi atau plugin Amazon Q Developer di IDE Anda](https://docs.aws.amazon.com/amazonq/latest/qdeveloper-ug/q-in-IDE-setup.html) di dokumentasi Amazon Q Developer.
+  Akun AWS Pengaturan aktif dengan Pengembang Amazon Q. Untuk petunjuknya, lihat [Memulai](https://docs.aws.amazon.com/amazonq/latest/qdeveloper-ug/getting-started-q-dev.html) dalam dokumentasi Pengembang Amazon Q.
+ **npm** diinstal. Untuk petunjuk, lihat [dokumentasi npm](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm). Pola ini diuji dengan npm versi 10.8.
+ AWS Command Line Interface (AWS CLI) diinstal. Untuk instruksi, lihat [AWS CLI dokumentasi](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html).

**Batasan**
+ Amazon Q Developer hanya dapat melakukan satu tugas pengembangan pada satu waktu.
+ Beberapa Layanan AWS tidak tersedia di semua Wilayah AWS. Untuk ketersediaan Wilayah, lihat [Layanan AWS berdasarkan Wilayah](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/). Untuk titik akhir tertentu, lihat halaman [titik akhir dan kuota Layanan](https://docs.aws.amazon.com/general/latest/gr/aws-service-information.html), dan pilih tautan untuk layanan.

## Alat
<a name="use-q-developer-as-coding-assistant-to-increase-productivity-tools"></a>
+ Pola ini membutuhkan IDE seperti Visual Studio Code atau WebStorm. Untuk daftar yang didukung IDEs, lihat [dokumentasi Pengembang Amazon Q](https://docs.aws.amazon.com/amazonq/latest/qdeveloper-ug/q-in-IDE.html#supported-ides-features).
+ [AWS Command Line Interface (AWS CLI)](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html) adalah alat open source yang membantu Anda berinteraksi Layanan AWS melalui perintah di shell baris perintah Anda.

## Praktik terbaik
<a name="use-q-developer-as-coding-assistant-to-increase-productivity-best-practices"></a>

Lihat [Praktik pengkodean terbaik dengan Pengembang Amazon Q](https://docs.aws.amazon.com/prescriptive-guidance/latest/best-practices-code-generation/best-practices-coding.html) di Panduan AWS Preskriptif. Selain itu:
+ Saat Anda memberikan petunjuk kepada Amazon Q Developer, pastikan instruksi Anda jelas dan tidak ambigu. Tambahkan cuplikan kode dan anotasi seperti `@workspace` ke prompt untuk memberikan lebih banyak konteks untuk permintaan Anda.
+ Sertakan pustaka yang relevan dan impor untuk menghindari konflik atau tebakan yang salah oleh sistem.
+ Jika kode yang dihasilkan tidak akurat atau seperti yang diharapkan, gunakan opsi **Berikan umpan balik & regenerasi**. Coba pecahkan petunjuk menjadi instruksi yang lebih kecil.

## Epik
<a name="use-q-developer-as-coding-assistant-to-increase-productivity-epics"></a>

### Mengatur lingkungan kerja
<a name="set-up-the-working-environment"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Buat proyek baru. | Untuk membuat proyek baru di lingkungan kerja Anda, jalankan perintah berikut dan terima pengaturan default untuk semua pertanyaan:<pre>npx create-next-app@latest</pre> | Pengembang aplikasi, Pemrogram, Pengembang perangkat lunak | 
| Uji aplikasi dasar. | Jalankan perintah berikut dan konfirmasikan bahwa aplikasi dasar berhasil dimuat di browser:<pre>npm run dev </pre> | Pengembang aplikasi, Pemrogram, Pengembang perangkat lunak | 
| Bersihkan kode dasar. | Arahkan ke `page.tsx` file di `src/app` folder dan hapus konten default untuk mendapatkan halaman kosong. Setelah penghapusan, file akan terlihat seperti ini:<pre>export default function Home() {<br />  return (<div></div><br />      );<br />}</pre> | Pengembang aplikasi, Pemrogram, Pengembang perangkat lunak | 

### Gunakan Amazon Q Developer untuk merancang proyek tic-tac-toe game
<a name="use-qdevlong-to-design-a-tic-tac-toe-game-project"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Dapatkan ikhtisar langkah-langkah. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/use-q-developer-as-coding-assistant-to-increase-productivity.html) | Pengembang aplikasi, Pemrogram, Pengembang perangkat lunak | 
| Hasilkan kode untuk tic-tac-toe. | Di panel obrolan, mulailah tugas pengembangan dengan menggunakan `/dev` perintah diikuti dengan deskripsi tugas. Contoh:<pre>/dev Create a React-based single-page application  written in TypeScript for a tic-tac-toe game with the following specifications:<br />1. Design an aesthetically pleasing interface with the game grid centered vertically and <br />horizontally on the page. <br />2. Include a heading and clear instructions on how to play the game.<br />3. Implement color-coding for X and O marks to distinguish them easily. </pre>Pengembang Amazon Q menghasilkan kode berdasarkan instruksi Anda. | Pengembang aplikasi, Pemrogram, Pengembang perangkat lunak | 
| Periksa dan terima kode yang dihasilkan. | Periksa kode secara visual, dan pilih **Terima kode** untuk mengganti `page.tsx` file secara otomatis.Jika Anda mengalami masalah, pilih **Berikan umpan balik & buat ulang** dan jelaskan masalah yang Anda temui. | Pengembang aplikasi, Pemrogram, Pengembang perangkat lunak | 
| Perbaiki kesalahan serat. | Contoh tic-tac-toe permainan termasuk grid. Kode yang dihasilkan Amazon Q Developer mungkin menggunakan tipe default`any`. Anda dapat menambahkan keamanan tipe dengan meminta Pengembang Amazon Q sebagai berikut:<pre>/dev Ensure proper TypeScript typing for the onSquare Click event handler <br />to resolve any 'any' type issues.</pre> | Pengembang aplikasi, Pemrogram, Pengembang perangkat lunak | 
| Tambahkan daya tarik visual. | Anda dapat memecah persyaratan asli menjadi fragmen yang lebih kecil. Misalnya, Anda dapat meningkatkan UI game dengan petunjuk berikut dalam tugas dev. Prompt ini meningkatkan gaya Cascading Style Sheets (CSS) dan mengekspor aplikasi untuk penerapan.<pre>/dev Debug and fix any CSS issues to correctly display the game grid and overall layout. <br /><br />Simplify the code by removing game history functionality and related components. <br /><br />Implement static file export to an 'out' directory for easy deployment. The solution <br />should be fully functional, visually appealing, and free of typing errors or layout issues. </pre> | Pengembang aplikasi, Pemrogram, Pengembang perangkat lunak | 
| Uji lagi. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/use-q-developer-as-coding-assistant-to-increase-productivity.html) | Pengembang aplikasi, Pemrogram, Pengembang perangkat lunak | 

### Menyebarkan aplikasi ke AWS Cloud
<a name="deploy-the-application-to-the-aws-cloud"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Buat folder dan file untuk penyebaran. | Dalam proyek di lingkungan kerja Anda, buat folder penyebaran dan dua file di dalamnya: `pushtos3.sh` dan`cloudformation.yml`:<pre>mkdir deployment && cd deployment<br />touch pushtos3.sh && chmod +x pushtos3.sh<br />touch cloudformation.yml</pre> | Pengembang aplikasi, Pemrogram, Pengembang perangkat lunak | 
| Hasilkan kode otomatisasi. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/use-q-developer-as-coding-assistant-to-increase-productivity.html) | Administrator AWS, AWS DevOps, Pengembang aplikasi | 
| Hasilkan konten skrip. | Untuk membuat skrip penyebaran, gunakan prompt berikut:<pre>/dev Modify the pushtos3 shell script so that it can use AWS CLI commands to create a <br />CloudFormation stack named tictactoe-stack if it does not exist already, and use <br />cloudformation.yml as the source template. Wait for the stack to complete and sync the <br />contents from the out folder to the S3 bucket. Perform invalidation of the CloudFront <br />origin.</pre> | Pengembang aplikasi, Pemrogram, Pengembang perangkat lunak | 
| Menyebarkan aplikasi ke. AWS Cloud | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/use-q-developer-as-coding-assistant-to-increase-productivity.html) | Administrator AWS, AWS DevOps, arsitek Cloud, Pengembang aplikasi | 

## Pemecahan masalah
<a name="use-q-developer-as-coding-assistant-to-increase-productivity-troubleshooting"></a>


| Isu | Solusi | 
| --- | --- | 
| Build tidak membuat aplikasi satu halaman atau mengekspornya ke folder keluaran. | Lihatlah isi `next.config.mjs` file.Jika kode memiliki konfigurasi default berikut:<pre>const nextConfig = {};</pre>memodifikasinya sebagai berikut:<pre>const nextConfig = {<br />  output: 'export',<br />  distDir: 'out',<br />};</pre> | 

## Sumber daya terkait
<a name="use-q-developer-as-coding-assistant-to-increase-productivity-resources"></a>
+ [Membuat proyek React baru](https://react.dev/learn/start-a-new-react-project) (dokumentasi React)
+ [Ikhtisar Pengembang Amazon Q](https://docs.aws.amazon.com/amazonq/latest/qdeveloper-ug/what-is.html) (AWS dokumentasi)
+ [Praktik terbaik Pengembang Amazon Q](https://docs.aws.amazon.com/prescriptive-guidance/latest/best-practices-code-generation/introduction.html) (Panduan AWS Preskriptif)
+ [Menginstal, mengonfigurasi, dan menggunakan Amazon Q Developer dengan JetBrains IDEs](https://www.youtube.com/watch?v=-iQfIhTA4J0&pp=ygUSYW1hem9uIHEgZGV2ZWxvcGVy) (YouTube video)
+ [Menginstal Amazon Q untuk baris perintah](https://docs.aws.amazon.com/amazonq/latest/qdeveloper-ug/command-line-getting-started-installing.html) (AWS dokumentasi)

# Gunakan SageMaker Processing untuk rekayasa fitur terdistribusi dari kumpulan data ML skala terabyte
<a name="use-sagemaker-processing-for-distributed-feature-engineering-of-terabyte-scale-ml-datasets"></a>

*Chris Boomhower, Amazon Web Services*

## Ringkasan
<a name="use-sagemaker-processing-for-distributed-feature-engineering-of-terabyte-scale-ml-datasets-summary"></a>

Banyak kumpulan data skala terabyte atau lebih besar sering terdiri dari struktur folder hierarkis, dan file dalam kumpulan data terkadang berbagi saling ketergantungan. Untuk alasan ini, insinyur pembelajaran mesin (ML) dan ilmuwan data harus membuat keputusan desain yang bijaksana untuk menyiapkan data tersebut untuk pelatihan model dan inferensi. Pola ini menunjukkan bagaimana Anda dapat menggunakan teknik macrosharding dan microsharding manual dalam kombinasi dengan Amazon SageMaker Processing dan paralelisasi CPU virtual (vCPU) untuk menskalakan proses rekayasa fitur secara efisien untuk kumpulan data BIG data MLyang rumit. 

Pola ini mendefinisikan *macrosharding* sebagai pemisahan direktori data di beberapa mesin untuk diproses, dan *microsharding* sebagai pemisahan data pada setiap mesin di beberapa thread pemrosesan. [Pola menunjukkan teknik ini dengan menggunakan Amazon SageMaker dengan contoh catatan bentuk gelombang deret waktu dari kumpulan data MIMIC-III. PhysioNet ](https://physionet.org/content/mimic3wdb/1.0/) Dengan menerapkan teknik dalam pola ini, Anda dapat meminimalkan waktu pemrosesan dan biaya untuk rekayasa fitur sambil memaksimalkan pemanfaatan sumber daya dan efisiensi throughput. Pengoptimalan ini bergantung pada SageMaker Pemrosesan terdistribusi pada instans Amazon Elastic Compute Cloud (Amazon EC2) dan v CPUs untuk kumpulan data besar yang serupa, terlepas dari tipe datanya.

## Prasyarat dan batasan
<a name="use-sagemaker-processing-for-distributed-feature-engineering-of-terabyte-scale-ml-datasets-prereqs"></a>

**Prasyarat**
+ Akses ke instance SageMaker notebook atau SageMaker Studio, jika Anda ingin menerapkan pola ini untuk kumpulan data Anda sendiri. Jika Anda menggunakan Amazon SageMaker untuk pertama kalinya, lihat [Memulai Amazon SageMaker](https://docs.aws.amazon.com/sagemaker/latest/dg/gs.html) di dokumentasi AWS.
+ SageMaker Studio, jika Anda ingin menerapkan pola ini dengan data sampel [PhysioNet MIMIC-III](https://physionet.org/content/mimic3wdb/1.0/). 
+ Pola menggunakan SageMaker Processing, tetapi tidak memerlukan pengalaman menjalankan pekerjaan SageMaker Processing.

**Batasan**
+ Pola ini sangat cocok untuk kumpulan data ML yang menyertakan file yang saling bergantung. Interdependensi ini paling diuntungkan dari macrosharding manual dan menjalankan beberapa pekerjaan Pemrosesan instance SageMaker tunggal secara paralel. Untuk kumpulan data di mana saling ketergantungan seperti itu tidak ada, `ShardedByS3Key` fitur dalam SageMaker Processing mungkin merupakan alternatif yang lebih baik untuk macrosharding, karena mengirimkan data sharded ke beberapa instance yang dikelola oleh pekerjaan Pemrosesan yang sama. Namun, Anda dapat menerapkan strategi microsharding pola ini di kedua skenario untuk memanfaatkan instance v. CPUs

**Versi produk**
+ Amazon SageMaker Python SDK versi 2

## Arsitektur
<a name="use-sagemaker-processing-for-distributed-feature-engineering-of-terabyte-scale-ml-datasets-architecture"></a>

**Tumpukan teknologi target**
+ Amazon Simple Storage Service (Amazon S3)
+ Amazon SageMaker

**Arsitektur target**

*Macrosharding dan instance terdistribusi EC2 *

10 proses paralel yang diwakili dalam arsitektur ini mencerminkan struktur dataset MIMIC-III. (Proses diwakili oleh elips untuk penyederhanaan diagram.) Arsitektur serupa berlaku untuk kumpulan data apa pun saat Anda menggunakan macrosharding manual. Dalam kasus MIMIC-III, Anda dapat menggunakan struktur mentah kumpulan data untuk keuntungan Anda dengan memproses setiap folder grup pasien secara terpisah, dengan sedikit usaha. Dalam diagram berikut, blok grup rekaman muncul di sebelah kiri (1). Mengingat sifat data yang terdistribusi, masuk akal untuk membelah oleh kelompok pasien.

![\[Arsitektur untuk microsharding dan instance terdistribusi EC2\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/images/pattern-img/e7a90b31-de8f-41fd-bb3f-c7c6100fc306/images/c19a8f87-ac59-458e-89cb-50be17ca4a0c.png)


Namun, sharding secara manual oleh kelompok pasien berarti bahwa pekerjaan Pemrosesan terpisah diperlukan untuk setiap folder grup pasien, seperti yang Anda lihat di bagian tengah diagram (2), alih-alih satu pekerjaan Pemrosesan dengan beberapa EC2 instance. Karena data MIMIC-III mencakup file bentuk gelombang biner dan file header berbasis teks yang cocok, dan ada ketergantungan yang diperlukan pada [pustaka wfdb](https://wfdb.readthedocs.io/en/latest/) untuk ekstraksi data biner, semua catatan untuk pasien tertentu harus tersedia pada contoh yang sama. Satu-satunya cara untuk memastikan bahwa setiap file header terkait bentuk gelombang biner juga ada adalah dengan menerapkan sharding manual untuk menjalankan setiap pecahan dalam pekerjaan Processing-nya sendiri, dan untuk menentukan `s3_data_distribution_type='FullyReplicated'` kapan Anda menentukan input pekerjaan Pemrosesan. Atau, jika semua data tersedia dalam satu direktori dan tidak ada dependensi di antara file, opsi yang lebih cocok mungkin meluncurkan pekerjaan Pemrosesan tunggal dengan beberapa EC2 instance dan ditentukan. `s3_data_distribution_type='ShardedByS3Key'` Menentukan `ShardedByS3Key ` sebagai tipe distribusi data Amazon S3 SageMaker mengarahkan untuk mengelola pembagian data secara otomatis di seluruh instance. 

Meluncurkan pekerjaan Pemrosesan untuk setiap folder adalah cara hemat biaya untuk memproses data sebelumnya, karena menjalankan beberapa instance secara bersamaan menghemat waktu. Untuk penghematan biaya dan waktu tambahan, Anda dapat menggunakan microsharding dalam setiap pekerjaan Pemrosesan. 

*Microsharding dan parallel v CPUs*

Dalam setiap pekerjaan Pemrosesan, data yang dikelompokkan dibagi lagi untuk memaksimalkan penggunaan semua v yang tersedia CPUs pada EC2 instance yang dikelola SageMaker sepenuhnya. Blok di bagian tengah diagram (2) menggambarkan apa yang terjadi dalam setiap pekerjaan Pemrosesan utama. Isi folder catatan pasien diratakan dan dibagi rata berdasarkan jumlah v yang tersedia CPUs pada instance. Setelah isi folder dibagi, kumpulan file berukuran merata didistribusikan di semua v CPUs untuk diproses. Saat pemrosesan selesai, hasil dari setiap vCPU digabungkan menjadi satu file data untuk setiap pekerjaan Pemrosesan. 

Dalam kode terlampir, konsep-konsep ini diwakili di bagian `src/feature-engineering-pass1/preprocessing.py` file berikut.

```
def chunks(lst, n):
    """
    Yield successive n-sized chunks from lst.
    
    :param lst: list of elements to be divided
    :param n: number of elements per chunk
    :type lst: list
    :type n: int
    :return: generator comprising evenly sized chunks
    :rtype: class 'generator'
    """
    for i in range(0, len(lst), n):
        yield lst[i:i + n]
 
 
# Generate list of data files on machine
data_dir = input_dir
d_subs = next(os.walk(os.path.join(data_dir, '.')))[1]
file_list = []
for ds in d_subs:
    file_list.extend(os.listdir(os.path.join(data_dir, ds, '.')))
dat_list = [os.path.join(re.split('_|\.', f)[0].replace('n', ''), f[:-4]) for f in file_list if f[-4:] == '.dat']
 
# Split list of files into sub-lists
cpu_count = multiprocessing.cpu_count()
splits = int(len(dat_list) / cpu_count)
if splits == 0: splits = 1
dat_chunks = list(chunks(dat_list, splits))
 
# Parallelize processing of sub-lists across CPUs
ws_df_list = Parallel(n_jobs=-1, verbose=0)(delayed(run_process)(dc) for dc in dat_chunks)
 
# Compile and pickle patient group dataframe
ws_df_group = pd.concat(ws_df_list)
ws_df_group = ws_df_group.reset_index().rename(columns={'index': 'signal'})
ws_df_group.to_json(os.path.join(output_dir, group_data_out))
```

Sebuah fungsi`chunks`, pertama kali didefinisikan untuk mengkonsumsi daftar yang diberikan dengan membaginya menjadi potongan-potongan panjang yang berukuran sama `n ` dan dengan mengembalikan hasil ini sebagai generator. Selanjutnya, data diratakan di seluruh folder pasien dengan menyusun daftar semua file bentuk gelombang biner yang ada. Setelah ini selesai, jumlah v CPUs yang tersedia pada EC2 instance diperoleh. [Daftar file bentuk gelombang biner dibagi secara merata di v ini CPUs dengan memanggil`chunks`, dan kemudian setiap sublis bentuk gelombang diproses pada vCPU-nya sendiri dengan menggunakan kelas Paralel joblib.](https://joblib.readthedocs.io/en/latest/generated/joblib.Parallel.html) Hasil secara otomatis digabungkan ke dalam satu daftar kerangka data oleh pekerjaan Pemrosesan, yang SageMaker kemudian diproses lebih lanjut sebelum menuliskannya ke Amazon S3 setelah pekerjaan selesai. Dalam contoh ini, ada 10 file yang ditulis ke Amazon S3 oleh pekerjaan Processing (satu untuk setiap pekerjaan).

Ketika semua pekerjaan Pemrosesan awal selesai, pekerjaan Pemrosesan sekunder, yang ditampilkan di blok di sebelah kanan diagram (3) menggabungkan file output yang dihasilkan oleh setiap pekerjaan Pemrosesan utama dan menulis output gabungan ke Amazon S3 (4).

## Alat
<a name="use-sagemaker-processing-for-distributed-feature-engineering-of-terabyte-scale-ml-datasets-tools"></a>

**Alat**
+ [Python](https://www.python.org/) - Contoh kode yang digunakan untuk pola ini adalah Python (versi 3).
+ [SageMaker Studio](https://docs.aws.amazon.com/sagemaker/latest/dg/studio.html) — Amazon SageMaker Studio adalah lingkungan pengembangan terintegrasi (IDE) berbasis web untuk pembelajaran mesin yang memungkinkan Anda membuat, melatih, men-debug, menerapkan, dan memantau model pembelajaran mesin Anda. Anda menjalankan pekerjaan SageMaker Pemrosesan dengan menggunakan notebook Jupyter di dalam Studio. SageMaker 
+ [SageMaker Pemrosesan](https://docs.aws.amazon.com/sagemaker/latest/dg/processing-job.html) - Amazon SageMaker Processing menyediakan cara yang disederhanakan untuk menjalankan beban kerja pemrosesan data Anda. Dalam pola ini, kode rekayasa fitur diimplementasikan dalam skala besar dengan menggunakan pekerjaan SageMaker Pemrosesan.

**Kode**

File zip terlampir menyediakan kode lengkap untuk pola ini. Bagian berikut menjelaskan langkah-langkah untuk membangun arsitektur untuk pola ini. Setiap langkah diilustrasikan dengan kode sampel dari lampiran.

## Epik
<a name="use-sagemaker-processing-for-distributed-feature-engineering-of-terabyte-scale-ml-datasets-epics"></a>

### Siapkan lingkungan SageMaker Studio Anda
<a name="set-up-your-sagemaker-studio-environment"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Akses Amazon SageMaker Studio. | Onboard ke SageMaker Studio di akun AWS Anda dengan mengikuti petunjuk yang disediakan dalam [ SageMaker dokumentasi Amazon](https://docs.aws.amazon.com/sagemaker/latest/dg/onboard-quick-start.html). | Ilmuwan data, insinyur ML | 
| Instal utilitas wget. | Instal *wget* jika Anda onboard dengan konfigurasi SageMaker Studio baru atau jika Anda belum pernah menggunakan utilitas ini di SageMaker Studio sebelumnya. Untuk menginstal, buka jendela terminal di konsol SageMaker Studio dan jalankan perintah berikut:<pre>sudo yum install wget</pre> | Ilmuwan data, insinyur ML | 
| Unduh dan unzip kode sampel. | Unduh `attachments.zip` file di bagian *Lampiran.* Di jendela terminal, arahkan ke folder tempat Anda mengunduh file dan ekstrak isinya:<pre>unzip attachment.zip</pre>Arahkan ke folder tempat Anda mengekstrak file.zip, dan ekstrak konten file. `Scaled-Processing.zip`<pre>unzip Scaled-Processing.zip</pre> | Ilmuwan data, insinyur ML | 
| Unduh kumpulan data sampel dari physionet.org dan unggah ke Amazon S3. | Jalankan `get_data.ipynb` notebook Jupyter di dalam folder yang berisi file. `Scaled-Processing` Notebook ini mengunduh contoh kumpulan data MIMIC-III dari [physionet.org](https://physionet.org) dan mengunggahnya ke bucket sesi Studio Anda di Amazon S3. SageMaker  | Ilmuwan data, insinyur ML | 

### Konfigurasikan skrip preprocessing pertama
<a name="configure-the-first-preprocessing-script"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Ratakan hierarki file di semua subdirektori. | Dalam kumpulan data besar seperti MIMIC-III, file sering didistribusikan di beberapa subdirektori bahkan dalam kelompok induk logis. Skrip Anda harus dikonfigurasi untuk meratakan semua file grup di semua subdirektori, seperti yang ditunjukkan oleh kode berikut.<pre># Generate list of .dat files on machine<br />data_dir = input_dir<br />d_subs = next(os.walk(os.path.join(data_dir, '.')))[1]<br />file_list = []<br />for ds in d_subs:<br />    file_list.extend(os.listdir(os.path.join(data_dir, ds, '.')))<br />dat_list = [os.path.join(re.split('_|\.', f)[0].replace('n', ''), f[:-4]) for f in file_list if f[-4:] == '.dat']</pre>    Contoh cuplikan kode dalam epik ini berasal dari `src/feature-engineering-pass1/preprocessing.py` file, yang disediakan dalam lampiran. | Ilmuwan data, insinyur ML | 
| Bagilah file menjadi subkelompok berdasarkan jumlah vCPU. | File harus dibagi menjadi subkelompok berukuran merata, atau potongan, tergantung pada jumlah v yang CPUs ada pada instance yang menjalankan skrip. Untuk langkah ini, Anda dapat menerapkan kode yang mirip dengan berikut ini.<pre># Split list of files into sub-lists<br />cpu_count = multiprocessing.cpu_count()<br />splits = int(len(dat_list) / cpu_count)<br />if splits == 0: splits = 1<br />dat_chunks = list(chunks(dat_list, splits))</pre> | Ilmuwan data, insinyur ML | 
| Paralelisasi pemrosesan subkelompok di seluruh v. CPUs | Logika skrip harus dikonfigurasi untuk memproses semua subkelompok secara paralel. Untuk melakukan ini, gunakan `Parallel ` kelas dan `delayed ` metode perpustakaan Joblib sebagai berikut. <pre># Parallelize processing of sub-lists across CPUs<br />ws_df_list = Parallel(n_jobs=-1, verbose=0)(delayed(run_process)(dc) for dc in dat_chunks)</pre> | Ilmuwan data, insinyur ML | 
| Simpan output grup file tunggal ke Amazon S3. | Ketika pemrosesan vCPU paralel selesai, hasil dari setiap vCPU harus digabungkan dan diunggah ke jalur bucket S3 grup file. Untuk langkah ini, Anda dapat menggunakan kode yang mirip dengan berikut ini.<pre># Compile and pickle patient group dataframe<br />ws_df_group = pd.concat(ws_df_list)<br />ws_df_group = ws_df_group.reset_index().rename(columns={'index': 'signal'})<br />ws_df_group.to_json(os.path.join(output_dir, group_data_out))</pre> | Ilmuwan data, insinyur ML | 

### Konfigurasikan skrip preprocessing kedua
<a name="configure-the-second-preprocessing-script"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Gabungkan file data yang dihasilkan di semua pekerjaan Pemrosesan yang menjalankan skrip pertama. | Script sebelumnya mengeluarkan satu file untuk setiap pekerjaan SageMaker Processing yang memproses sekelompok file dari dataset.  Selanjutnya, Anda perlu menggabungkan file output ini menjadi satu objek dan menulis satu set data output ke Amazon S3. Ini ditunjukkan dalam `src/feature-engineering-pass1p5/preprocessing.py` file, yang disediakan dalam lampiran, sebagai berikut.<pre>def write_parquet(wavs_df, path):<br />    """<br />    Write waveform summary dataframe to S3 in parquet format.<br />    <br />    :param wavs_df: waveform summary dataframe<br />    :param path: S3 directory prefix<br />    :type wavs_df: pandas dataframe<br />    :type path: str<br />    :return: None<br />    """<br />    extra_args = {"ServerSideEncryption": "aws:kms"}<br />    wr.s3.to_parquet(<br />        df=wavs_df,<br />        path=path,<br />        compression='snappy',<br />        s3_additional_kwargs=extra_args)<br /> <br /> <br />def combine_data():<br />    """<br />    Get combined data and write to parquet.<br />    <br />    :return: waveform summary dataframe<br />    :rtype: pandas dataframe<br />    """<br />    wavs_df = get_data()<br />    wavs_df = normalize_signal_names(wavs_df)<br />    write_parquet(wavs_df, "s3://{}/{}/{}".format(bucket_xform, dataset_prefix, pass1p5out_data))<br /> <br />    return wavs_df<br /> <br /> <br />wavs_df = combine_data()</pre> | Ilmuwan data, insinyur ML | 

### Jalankan pekerjaan Processing
<a name="run-processing-jobs"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Jalankan pekerjaan Processing pertama. | Untuk melakukan macrosharding, jalankan pekerjaan Pemrosesan terpisah untuk setiap grup file. Microsharding dilakukan di dalam setiap pekerjaan Pemrosesan, karena setiap pekerjaan menjalankan skrip pertama Anda. Kode berikut menunjukkan cara meluncurkan pekerjaan Processing untuk setiap direktori grup file dalam cuplikan berikut (termasuk dalam). `notebooks/FeatExtract_Pass1.ipynb`<pre>pat_groups = list(range(30,40))<br />ts = str(int(time.time()))<br /> <br />for group in pat_groups:<br />    sklearn_processor = SKLearnProcessor(framework_version='0.20.0',<br />                                     role=role,<br />                                     instance_type='ml.m5.4xlarge',<br />                                     instance_count=1,<br />                                     volume_size_in_gb=5)<br />    sklearn_processor.run(<br />        code='../src/feature-engineering-pass1/preprocessing.py',<br />        job_name='-'.join(['scaled-processing-p1', str(group), ts]),<br />        arguments=[<br />            "input_path", "/opt/ml/processing/input",<br />            "output_path", "/opt/ml/processing/output",<br />            "group_data_out", "ws_df_group.json"<br />        ],<br />        inputs=<br />        [<br />            ProcessingInput(<br />                source=f's3://{sess.default_bucket()}/data_inputs/{group}',<br />                destination='/opt/ml/processing/input',<br />                s3_data_distribution_type='FullyReplicated'<br />            )<br />        ],<br />        outputs=<br />        [<br />            ProcessingOutput(<br />                source='/opt/ml/processing/output',<br />                destination=f's3://{sess.default_bucket()}/data_outputs/{group}'<br />            )<br />        ],<br />        wait=False<br />    )</pre> | Ilmuwan data, insinyur ML | 
| Jalankan pekerjaan Pemrosesan kedua. | Untuk menggabungkan output yang dihasilkan oleh set pertama pekerjaan pemrosesan dan melakukan perhitungan tambahan untuk preprocessing, Anda menjalankan skrip kedua Anda dengan menggunakan satu pekerjaan Processing. SageMaker Kode berikut menunjukkan ini (termasuk dalam`notebooks/FeatExtract_Pass1p5.ipynb`).<pre>ts = str(int(time.time()))<br />bucket = sess.default_bucket()<br />     <br />sklearn_processor = SKLearnProcessor(framework_version='0.20.0',<br />                                 role=role,<br />                                 instance_type='ml.t3.2xlarge',<br />                                 instance_count=1,<br />                                 volume_size_in_gb=5)<br />sklearn_processor.run(<br />    code='../src/feature-engineering-pass1p5/preprocessing.py',<br />    job_name='-'.join(['scaled-processing', 'p1p5', ts]),<br />    arguments=['bucket', bucket,<br />               'pass1out_prefix', 'data_outputs',<br />               'pass1out_data', 'ws_df_group.json',<br />               'pass1p5out_data', 'waveform_summary.parquet',<br />               'statsdata_name', 'signal_stats.csv'],<br />    wait=True<br />)</pre> | Ilmuwan data, insinyur ML | 

## Sumber daya terkait
<a name="use-sagemaker-processing-for-distributed-feature-engineering-of-terabyte-scale-ml-datasets-resources"></a>
+ [Onboard ke Amazon SageMaker Studio Menggunakan Mulai Cepat](https://docs.aws.amazon.com/sagemaker/latest/dg/onboard-quick-start.html) (SageMaker dokumentasi)
+ [Data Proses](https://docs.aws.amazon.com/sagemaker/latest/dg/processing-job.html) (SageMaker dokumentasi) 
+ [Pemrosesan Data dengan scikit-learn](https://docs.aws.amazon.com/sagemaker/latest/dg/use-scikit-learn-processing-container.html) (dokumentasi) SageMaker  
+ [Dokumentasi joblib.parallel](https://joblib.readthedocs.io/en/latest/generated/joblib.Parallel.html)
+ Moody, B., Moody, G., Villarroel, M., Clifford, GD, & Silva, I. (2020). [Database Bentuk Gelombang MIMIC-III (](https://doi.org/10.13026/c2607m)versi 1.0). *PhysioNet*.
+ Johnson, A.E. W., Pollard, TJ, Shen, L., Lehman, LH, Feng, M., Ghassemi, M., Moody, B., Szolovits, P., Celi, LA, & Mark, RG (2016). [MIMIC-III, database perawatan kritis yang dapat diakses secara bebas](https://dx.doi.org/10.1038/sdata.2016.35). Data Ilmiah, 3, 160035.
+ [Lisensi Database Bentuk Gelombang MIMIC-III](https://physionet.org/content/mimic3wdb/1.0/LICENSE.txt)

## Lampiran
<a name="attachments-e7a90b31-de8f-41fd-bb3f-c7c6100fc306"></a>

[Untuk mengakses konten tambahan yang terkait dengan dokumen ini, unzip file berikut: attachment.zip](samples/p-attach/e7a90b31-de8f-41fd-bb3f-c7c6100fc306/attachments/attachment.zip)

# Visualisasikan hasil AI/ML model menggunakan Flask dan AWS Elastic Beanstalk
<a name="visualize-ai-ml-model-results-using-flask-and-aws-elastic-beanstalk"></a>

*Chris Caudill dan Durga Sury, Amazon Web Services*

## Ringkasan
<a name="visualize-ai-ml-model-results-using-flask-and-aws-elastic-beanstalk-summary"></a>

Memvisualisasikan output dari layanan kecerdasan buatan dan pembelajaran mesin (AI/ML) seringkali membutuhkan panggilan API kompleks yang harus disesuaikan oleh pengembang dan teknisi Anda. Ini bisa menjadi kelemahan jika analis Anda ingin menjelajahi kumpulan data baru dengan cepat.

Anda dapat meningkatkan aksesibilitas layanan Anda dan memberikan bentuk analisis data yang lebih interaktif dengan menggunakan antarmuka pengguna berbasis web (UI) yang memungkinkan pengguna untuk mengunggah data mereka sendiri dan memvisualisasikan hasil model di dasbor.

Pola ini menggunakan [Flask](https://flask.palletsprojects.com/en/2.0.x/) dan [Plotly](https://plotly.com/) untuk mengintegrasikan Amazon Comprehend dengan aplikasi web khusus dan memvisualisasikan sentimen dan entitas dari data yang disediakan pengguna. Pola ini juga menyediakan langkah-langkah untuk menerapkan aplikasi dengan menggunakan AWS Elastic Beanstalk. Anda dapat menyesuaikan aplikasi dengan menggunakan layanan [AI Amazon Web Services (AWS)](https://aws.amazon.com/machine-learning/ai-services/) atau dengan model terlatih khusus yang dihosting di titik akhir (misalnya, [ SageMaker titik akhir Amazon](https://docs.aws.amazon.com/sagemaker/latest/dg/deploy-model.html)).

## Prasyarat dan batasan
<a name="visualize-ai-ml-model-results-using-flask-and-aws-elastic-beanstalk-prereqs"></a>

**Prasyarat**
+ Akun AWS yang aktif. 
+ AWS Command Line Interface (AWS CLI), diinstal dan dikonfigurasi pada mesin lokal Anda. Untuk informasi selengkapnya tentang ini, lihat [Dasar-dasar konfigurasi](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-quickstart.html) dalam dokumentasi AWS CLI. Anda juga dapat menggunakan lingkungan pengembangan terintegrasi AWS Cloud9 (IDE); untuk informasi selengkapnya tentang ini, lihat [tutorial Python untuk AWS Cloud9 dan Mempratinjau aplikasi yang sedang berjalan di AWS Cloud9](https://docs.aws.amazon.com/cloud9/latest/user-guide/sample-python.html) [IDE dalam dokumentasi AWS Cloud9](https://docs.aws.amazon.com/cloud9/latest/user-guide/app-preview.html).

  **Pemberitahuan**: AWS Cloud9 tidak lagi tersedia untuk pelanggan baru. Pelanggan yang sudah ada AWS Cloud9 dapat terus menggunakan layanan seperti biasa. [Pelajari selengkapnya](https://aws.amazon.com/blogs/devops/how-to-migrate-from-aws-cloud9-to-aws-ide-toolkits-or-aws-cloudshell/)
+ Pemahaman tentang kerangka aplikasi web Flask. Untuk informasi selengkapnya tentang Flask, lihat [Quickstart dalam dokumentasi](https://flask.palletsprojects.com/en/1.1.x/quickstart) Flask.
+ Python versi 3.6 atau yang lebih baru, diinstal dan dikonfigurasi. Anda dapat menginstal Python dengan mengikuti petunjuk dari [Menyiapkan lingkungan pengembangan Python](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/python-development-environment.html) Anda di dokumentasi AWS Elastic Beanstalk.
+ Elastic Beanstalk Command Line Interface (EB CLI), diinstal dan dikonfigurasi. Untuk informasi selengkapnya tentang ini, lihat [Menginstal CLI EB dan Mengonfigurasi CLI](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/eb-cli3-install.html) [EB dari dokumentasi AWS Elastic Beanstalk](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/eb-cli3-configuration.html).

**Batasan**
+ Aplikasi Flask pola ini dirancang untuk bekerja dengan file.csv yang menggunakan kolom teks tunggal dan dibatasi hingga 200 baris. Kode aplikasi dapat disesuaikan untuk menangani jenis file dan volume data lainnya.
+ Aplikasi tidak mempertimbangkan retensi data dan terus mengumpulkan file pengguna yang diunggah hingga dihapus secara manual. Anda dapat mengintegrasikan aplikasi dengan Amazon Simple Storage Service (Amazon S3) Simple Storage S3) untuk penyimpanan objek persisten atau menggunakan database seperti Amazon DynamoDB untuk penyimpanan nilai kunci tanpa server.
+ Aplikasi hanya mempertimbangkan dokumen dalam bahasa Inggris. Namun, Anda dapat menggunakan Amazon Comprehend untuk mendeteksi bahasa utama dokumen. Untuk informasi selengkapnya tentang bahasa yang didukung untuk setiap tindakan, lihat [referensi API](https://docs.aws.amazon.com/comprehend/latest/dg/API_Reference.html) di dokumentasi Amazon Comprehend.
+ Daftar pemecahan masalah yang berisi kesalahan umum dan solusinya tersedia di bagian *Informasi tambahan*.

## Arsitektur
<a name="visualize-ai-ml-model-results-using-flask-and-aws-elastic-beanstalk-architecture"></a>

**Arsitektur aplikasi labu**

Flask adalah kerangka kerja ringan untuk mengembangkan aplikasi web dengan Python. Ini dirancang untuk menggabungkan pemrosesan data Python yang kuat dengan UI web yang kaya. Aplikasi Flask pola menunjukkan kepada Anda cara membuat aplikasi web yang memungkinkan pengguna mengunggah data, mengirim data ke Amazon Comprehend untuk inferensi, dan kemudian memvisualisasikan hasilnya.   Aplikasi ini memiliki struktur sebagai berikut:
+ `static`— Berisi semua file statis yang mendukung UI web (misalnya JavaScript, CSS, dan gambar)
+ `templates`- Berisi semua halaman HTML aplikasi
+ `userData`— Menyimpan data pengguna yang diunggah
+ `application.py`— File aplikasi Flask
+ `comprehend_helper.py`— Fungsi untuk melakukan panggilan API ke Amazon Comprehend
+ `config.py`— File konfigurasi aplikasi
+ `requirements.txt`- Dependensi Python yang dibutuhkan oleh aplikasi

`application.py`Script berisi fungsionalitas inti aplikasi web, yang terdiri dari empat rute Flask. Diagram berikut menunjukkan rute Flask ini.

![\[Empat rute Flask yang membentuk fungsionalitas inti aplikasi web.\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/images/pattern-img/03d80cf1-ec97-43f7-adb5-2746a9ec70e6/images/9ca6bad1-26e2-4262-98d0-d54c172336bf.png)


 
+ `/`adalah root aplikasi dan mengarahkan pengguna ke `upload.html` halaman (disimpan dalam `templates` direktori).
+ `/saveFile`adalah rute yang dipanggil setelah pengguna mengunggah file. Rute ini menerima `POST` permintaan melalui formulir HTML, yang berisi file yang diunggah oleh pengguna. File disimpan di `userData` direktori dan rute mengarahkan pengguna ke rute. `/dashboard`
+ `/dashboard`mengirim pengguna ke `dashboard.html` halaman. Dalam HTML halaman ini, ia menjalankan JavaScript kode `static/js/core.js` yang membaca data dari `/data` rute dan kemudian membangun visualisasi untuk halaman tersebut.
+ `/data`adalah JSON API yang menyajikan data untuk divisualisasikan di dasbor. Rute ini membaca data yang disediakan pengguna dan menggunakan fungsi `comprehend_helper.py` untuk mengirim data pengguna ke Amazon Comprehend untuk analisis sentimen dan pengenalan entitas bernama (NER). Respons Amazon Comprehend diformat dan dikembalikan sebagai objek JSON.

**Arsitektur penyebaran**

![\[Diagram arsitektur untuk menggunakan Flask dan Elastic AI/ML Beanstalk untuk memvisualisasikan hasil model.\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/images/pattern-img/03d80cf1-ec97-43f7-adb5-2746a9ec70e6/images/d691bfd2-e2ec-4830-8bff-ffa1e3a95c4a.png)


[Pertimbangan desain](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/concepts.concepts.design.html)

 Untuk informasi selengkapnya tentang pertimbangan desain untuk aplikasi yang digunakan menggunakan Elastic Beanstalk di AWS Cloud, lihat di dokumentasi AWS Elastic Beanstalk.

**Tumpukan teknologi**
+ Amazon Comprehend 
+ Elastic Beanstalk 
+ Flask 

**Otomatisasi dan skala**

Penerapan Elastic Beanstalk secara otomatis diatur dengan penyeimbang beban dan grup penskalaan otomatis. Untuk opsi konfigurasi lainnya, lihat [Mengonfigurasi lingkungan Elastic Beanstalk dalam dokumentasi AWS Elastic](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/customize-containers.html) Beanstalk.

## Alat
<a name="visualize-ai-ml-model-results-using-flask-and-aws-elastic-beanstalk-tools"></a>
+ [AWS Command Line Interface (AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html)) adalah alat terpadu yang menyediakan antarmuka yang konsisten untuk berinteraksi dengan semua bagian AWS.
+ [Amazon Comprehend](https://docs.aws.amazon.com/comprehend/latest/dg/comprehend-general.html) menggunakan natural language processing (NLP) untuk mengekstrak wawasan tentang isi dokumen tanpa memerlukan preprocessing khusus.
+ [AWS Elastic](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/Welcome.html) Beanstalk membantu Anda menerapkan dan mengelola aplikasi dengan cepat di AWS Cloud tanpa harus mempelajari infrastruktur yang menjalankan aplikasi tersebut.
+ [Elastic Beanstalk CLI (EB CLI) adalah antarmuka baris perintah untuk AWS Elastic](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/eb-cli3.html) Beanstalk yang menyediakan perintah interaktif untuk menyederhanakan pembuatan, pembaruan, dan pemantauan lingkungan dari repositori lokal.
+ [Framework Flask](https://flask.palletsprojects.com/en/2.0.x/) melakukan pemrosesan data dan panggilan API menggunakan Python dan menawarkan visualisasi web interaktif dengan Plotly.

**Kode**

Kode untuk pola ini tersedia dalam [hasil AI/ML model GitHub Visualize menggunakan repositori Flask dan AWS Elastic Beanstalk](https://github.com/aws-samples/aws-comprehend-elasticbeanstalk-for-flask).

## Epik
<a name="visualize-ai-ml-model-results-using-flask-and-aws-elastic-beanstalk-epics"></a>

### Siapkan aplikasi Flask
<a name="set-up-the-flask-application"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Kloning GitHub repositori. | Tarik kode aplikasi dari [hasil AI/ML model GitHub Visualize menggunakan repositori Flask dan AWS Elastic Beanstalk](https://github.com/aws-samples/aws-comprehend-elasticbeanstalk-for-flask) dengan menjalankan perintah berikut:`git clone git@github.com:aws-samples/aws-comprehend-elasticbeanstalk-for-flask.git`Pastikan Anda mengonfigurasi kunci SSH Anda dengan GitHub. | Developer | 
| Instal modul Python. | Setelah Anda mengkloning repositori, `aws-comprehend-elasticbeanstalk-for-flask` direktori lokal baru dibuat. Dalam direktori itu, `requirements.txt` file berisi modul Python dan versi yang menjalankan aplikasi. Gunakan perintah berikut untuk menginstal modul:`cd aws-comprehend-elasticbeanstalk-for-flask``pip install -r requirements.txt` | Pengembang Python | 
| Uji aplikasi secara lokal. | Mulai server Flask dengan menjalankan perintah berikut:`python application.py`Ini mengembalikan informasi tentang server yang sedang berjalan. Anda harus dapat mengakses aplikasi dengan membuka browser dan mengunjungi http://localhost:5000Jika Anda menjalankan aplikasi di AWS Cloud9 IDE, Anda perlu mengganti `application.run()` perintah dalam file dengan baris `application.py` berikut:`application.run(host=os.getenv('IP', '0.0.0.0'),port=int(os.getenv('PORT', 8080)))`Anda harus mengembalikan perubahan ini sebelum penerapan. | Pengembang Python | 

### Menyebarkan aplikasi ke Elastic Beanstalk
<a name="deploy-the-application-to-elastic-beanstalk"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Luncurkan aplikasi Elastic Beanstalk. | Untuk meluncurkan proyek Anda sebagai aplikasi Elastic Beanstalk, jalankan perintah berikut dari direktori root aplikasi Anda:`eb init -p python-3.6 comprehend_flask --region us-east-1`[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/visualize-ai-ml-model-results-using-flask-and-aws-elastic-beanstalk.html)Jalankan `eb init -i` perintah untuk opsi konfigurasi penerapan lainnya. | Arsitek, Pengembang | 
| Menyebarkan lingkungan Elastic Beanstalk. | Jalankan perintah berikut dari direktori root aplikasi:`eb create comprehend-flask-env``comprehend-flask-env`adalah nama lingkungan Elastic Beanstalk dan dapat diubah sesuai dengan kebutuhan Anda. Nama hanya dapat berisi huruf, angka, dan tanda hubung. | Arsitek, Pengembang | 
| Otorisasi penerapan Anda untuk menggunakan Amazon Comprehend. | Meskipun aplikasi Anda mungkin berhasil di-deploy, Anda juga harus menyediakan penerapan Anda dengan akses ke Amazon Comprehend. `ComprehendFullAccess`adalah kebijakan terkelola AWS yang menyediakan aplikasi yang diterapkan dengan izin untuk melakukan panggilan API ke Amazon Comprehend.Lampirkan `ComprehendFullAccess` kebijakan ke `aws-elasticbeanstalk-ec2-role` (peran ini dibuat secara otomatis untuk instance Amazon Elastic Compute Cloud (Amazon EC2) penerapan Anda) dengan menjalankan perintah berikut:`aws iam attach-role-policy --policy-arn arn:aws:iam::aws:policy/ComprehendFullAccess --role-name aws-elasticbeanstalk-ec2-role``aws-elasticbeanstalk-ec2-role`dibuat saat aplikasi Anda di-deploy. Anda harus menyelesaikan proses penerapan sebelum dapat melampirkan kebijakan AWS Identity and Access Management (IAM). | Pengembang, Arsitek keamanan | 
| Kunjungi aplikasi yang Anda gunakan. | Setelah aplikasi Anda berhasil menyebarkan, Anda dapat mengunjunginya dengan menjalankan `eb open` perintah.Anda juga dapat menjalankan `eb status` perintah untuk menerima detail tentang penerapan Anda. URL penyebaran tercantum di bawah`CNAME`. | Arsitek, Pengembang | 

### (Opsional) Sesuaikan aplikasi ke model ML Anda
<a name="optional-customize-the-application-to-your-ml-model"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Otorisasi Elastic Beanstalk untuk mengakses model baru. | Pastikan Elastic Beanstalk memiliki izin akses yang diperlukan untuk titik akhir model baru Anda. Misalnya, jika Anda menggunakan SageMaker titik akhir Amazon, penerapan Anda harus memiliki izin untuk memanggil titik akhir. Untuk informasi selengkapnya tentang ini, lihat [InvokeEndpoint](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_runtime_InvokeEndpoint.html)di SageMaker dokumentasi Amazon. | Pengembang, Arsitek keamanan | 
| Kirim data pengguna ke model baru. | Untuk mengubah model HTML yang mendasari dalam aplikasi ini, Anda harus mengubah file berikut:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/visualize-ai-ml-model-results-using-flask-and-aws-elastic-beanstalk.html) | Ilmuwan data | 
| Perbarui visualisasi dasbor. | Biasanya, menggabungkan model ML baru berarti visualisasi harus diperbarui untuk mencerminkan hasil baru. Perubahan ini dibuat dalam file-file berikut:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/visualize-ai-ml-model-results-using-flask-and-aws-elastic-beanstalk.html) | Pengembang web | 

### (Opsional) Menyebarkan aplikasi yang diperbarui
<a name="optional-deploy-the-updated-application"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Perbarui file persyaratan aplikasi Anda. | Sebelum mengirim perubahan ke Elastic Beanstalk, `requirements.txt` perbarui file untuk mencerminkan modul Python baru dengan menjalankan perintah berikut di direktori root aplikasi Anda:`pip freeze > requirements.txt` | Pengembang Python | 
| Pasang kembali lingkungan Elastic Beanstalk. | Untuk memastikan bahwa perubahan aplikasi Anda tercermin dalam penyebaran Elastic Beanstalk Anda, navigasikan ke direktori root aplikasi Anda dan jalankan perintah berikut:`eb deploy`Ini mengirimkan versi terbaru dari kode aplikasi ke penyebaran Elastic Beanstalk Anda yang ada. | Administrator sistem, Arsitek | 

## Sumber daya terkait
<a name="visualize-ai-ml-model-results-using-flask-and-aws-elastic-beanstalk-resources"></a>
+ [Panggil titik akhir SageMaker model Amazon menggunakan Amazon API Gateway dan AWS Lambda](https://aws.amazon.com/blogs/machine-learning/call-an-amazon-sagemaker-model-endpoint-using-amazon-api-gateway-and-aws-lambda/)
+ [Menyebarkan aplikasi Flask ke Elastic Beanstalk](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/create-deploy-python-flask.html)
+ [Referensi perintah EB CLI](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/eb3-cmd-commands.html)
+ [Menyiapkan lingkungan pengembangan Python Anda](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/python-development-environment.html)

## Informasi tambahan
<a name="visualize-ai-ml-model-results-using-flask-and-aws-elastic-beanstalk-additional"></a>

**Daftar pemecahan masalah**

Berikut ini adalah enam kesalahan umum dan solusinya.

***Kesalahan 1***

```
Unable to assume role "arn:aws:iam::xxxxxxxxxx:role/aws-elasticbeanstalk-ec2-role". Verify that the role exists and is configured correctly.
```

**Solusi**: Jika kesalahan ini terjadi saat Anda menjalankan`eb create`, buat contoh aplikasi di konsol Elastic Beanstalk untuk membuat profil instance default. Untuk informasi selengkapnya tentang ini, lihat [Membuat lingkungan Elastic Beanstalk di dokumentasi AWS Elastic](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/using-features.environments.html) Beanstalk.

***Kesalahan 2***

```
Your WSGIPath refers to a file that does not exist.
```

**Solusi:** Kesalahan ini terjadi di log penerapan karena Elastic Beanstalk mengharapkan kode Flask diberi nama. `application.py` Jika Anda memilih nama yang berbeda, jalankan `eb config` dan edit WSGIPath seperti yang ditunjukkan pada contoh kode berikut:

```
aws:elasticbeanstalk:container:python:
     NumProcesses: '1'
     NumThreads: '15'
     StaticFiles: /static/=static/
     WSGIPath: application.py
```

Pastikan Anda mengganti `application.py` dengan nama file Anda.

Anda juga dapat memanfaatkan Gunicorn dan Procfile. Untuk informasi selengkapnya tentang pendekatan ini, lihat [Mengonfigurasi server WSGI dengan Procfile](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/python-configuration-procfile.html) dalam dokumentasi AWS Elastic Beanstalk.

***Kesalahan 3***

```
Target WSGI script '/opt/python/current/app/application.py' does not contain WSGI application 'application'.
```

**Solusi:** Elastic Beanstalk mengharapkan variabel yang mewakili aplikasi Flask Anda diberi nama. `application` Pastikan bahwa `application.py` file menggunakan `application` sebagai nama variabel:

```
application = Flask(__name__)
```

***Kesalahan 4***

```
The EB CLI cannot find your SSH key file for keyname
```

**Solusi:** Gunakan EB CLI untuk menentukan key pair mana yang akan digunakan atau untuk membuat key pair untuk instance EC2 deployment Anda. Untuk mengatasi kesalahan, jalankan `eb init -i` dan salah satu opsi akan bertanya:

```
Do you want to set up SSH for your instances?
```

Tanggapi dengan `Y` membuat key pair atau menentukan key pair yang ada.

***Kesalahan 5***

*Saya telah memperbarui kode saya dan menerapkan kembali tetapi penerapan saya tidak mencerminkan perubahan saya.*

**Solusi**: Jika Anda menggunakan repositori Git dengan penerapan Anda, pastikan Anda menambahkan dan mengkomit perubahan Anda sebelum menerapkan ulang.

***Kesalahan 6***

*Anda melihat pratinjau aplikasi Flask dari AWS Cloud9 IDE dan mengalami kesalahan.*

**Solusi:** Untuk informasi selengkapnya tentang hal ini, lihat [Mempratinjau aplikasi yang sedang berjalan di AWS Cloud9 IDE dalam dokumentasi AWS](https://docs.aws.amazon.com/cloud9/latest/user-guide/app-preview.html) Cloud9.

 

 

**Pemrosesan bahasa alami menggunakan Amazon Comprehend**

Dengan memilih untuk menggunakan Amazon Comprehend, Anda dapat mendeteksi entitas kustom dalam dokumen teks individual dengan menjalankan analisis real-time atau pekerjaan batch asinkron. Amazon Comprehend juga memungkinkan Anda untuk melatih pengenalan entitas kustom dan model klasifikasi teks yang dapat digunakan secara real time dengan membuat titik akhir.

Pola ini menggunakan pekerjaan batch asinkron untuk mendeteksi sentimen dan entitas dari file input yang berisi beberapa dokumen. Contoh aplikasi yang disediakan oleh pola ini dirancang bagi pengguna untuk mengunggah file.csv yang berisi satu kolom dengan satu dokumen teks per baris. `comprehend_helper.py`File dalam [hasil AI/ML model GitHub Visualize menggunakan repositori Flask dan AWS Elastic Beanstalk](https://github.com/aws-samples/aws-comprehend-elasticbeanstalk-for-flask) membaca file input dan mengirimkan input ke Amazon Comprehend untuk diproses.

*BatchDetectEntities*

Amazon Comprehend memeriksa teks kumpulan dokumen untuk entitas bernama dan mengembalikan entitas yang terdeteksi, [lokasi, jenis](https://docs.aws.amazon.com/comprehend/latest/dg/how-entities.html) entitas, dan skor yang menunjukkan tingkat kepercayaan Amazon Comprehend. Maksimal 25 dokumen dapat dikirim dalam satu panggilan API, dengan setiap dokumen berukuran lebih kecil dari 5.000 byte. Anda dapat memfilter hasil untuk hanya menampilkan entitas tertentu berdasarkan kasus penggunaan. Misalnya, Anda dapat melewati tipe `‘quantity’` entitas dan menetapkan skor ambang batas untuk entitas yang terdeteksi (misalnya, 0,75). Kami menyarankan Anda menjelajahi hasil untuk kasus penggunaan spesifik Anda sebelum memilih nilai ambang batas. Untuk informasi selengkapnya tentang ini, lihat [BatchDetectEntities](https://docs.aws.amazon.com/comprehend/latest/dg/API_BatchDetectEntities.html)di dokumentasi Amazon Comprehend.

*BatchDetectSentiment*

Amazon Comprehend memeriksa sekumpulan dokumen yang masuk dan mengembalikan sentimen yang berlaku untuk setiap dokumen (,,, atau). `POSITIVE` `NEUTRAL` `MIXED` `NEGATIVE` Maksimal 25 dokumen dapat dikirim dalam satu panggilan API, dengan setiap dokumen berukuran lebih kecil dari 5.000 byte. Menganalisis sentimen sangat mudah dan Anda memilih sentimen dengan skor tertinggi untuk ditampilkan dalam hasil akhir. Untuk informasi selengkapnya tentang ini, lihat [BatchDetectSentiment](https://docs.aws.amazon.com/comprehend/latest/dg/API_BatchDetectSentiment.html)di dokumentasi Amazon Comprehend.

 

 

**Penanganan konfigurasi labu**

Server Flask menggunakan serangkaian [variabel konfigurasi](https://flask.palletsprojects.com/en/1.1.x/config/) untuk mengontrol bagaimana server berjalan. Variabel ini dapat berisi output debug, token sesi, atau pengaturan aplikasi lainnya. Anda juga dapat menentukan variabel kustom yang dapat diakses saat aplikasi sedang berjalan. Ada beberapa pendekatan untuk mengatur variabel konfigurasi.

Dalam pola ini, konfigurasi didefinisikan `config.py` dan diwariskan di dalam`application.py`.
+ 
**catatan**  
`config.py`berisi variabel konfigurasi yang diatur pada startup aplikasi. Dalam aplikasi ini, `DEBUG` variabel didefinisikan untuk memberitahu aplikasi untuk menjalankan server dalam [modus debug](https://flask.palletsprojects.com/en/1.1.x/config/#DEBUG). : Mode debug tidak boleh digunakan saat menjalankan aplikasi di lingkungan produksi. `UPLOAD_FOLDER`adalah variabel kustom yang didefinisikan untuk direferensikan nanti dalam aplikasi dan menginformasikannya di mana data pengguna yang diunggah harus disimpan.
+ `application.py`memulai aplikasi Flask dan mewarisi pengaturan konfigurasi didefinisikan dalam. `config.py` Ini dilakukan oleh kode berikut:

```
application = Flask(__name__)
application.config.from_pyfile('config.py')
```

# Lebih banyak pola
<a name="machinelearning-more-patterns-pattern-list"></a>

**Topics**
+ [Percepat MLOps dengan Backstage dan template Amazon SageMaker AI swalayan](accelerate-mlops-with-backstage-and-sagemaker-templates.md)
+ [Mengotomatiskan operasi AWS infrastruktur dengan menggunakan Amazon Bedrock](automate-aws-infrastructure-operations-by-using-amazon-bedrock.md)
+ [Terapkan sistem agen di Amazon Bedrock dengan framework CreWai dengan menggunakan Terraform](deploy-agentic-systems-on-amazon-bedrock-with-the-crewai-framework.md)
+ [Terapkan ChatOps solusi untuk mengelola hasil pemindaian SAST dengan menggunakan Amazon Q Developer dalam tindakan kustom aplikasi obrolan dan CloudFormation](deploy-chatops-solution-to-manage-sast-scan-results.md)
+ [Hasilkan wawasan data dengan menggunakan AWS Mainframe Modernization dan Amazon Q di Quick Sight](generate-data-insights-by-using-aws-mainframe-modernization-and-amazon-q-in-quicksight.md)
+ [Hasilkan wawasan z/OS data Db2 dengan menggunakan dan AWS Mainframe Modernization Amazon Q di Quick Sight](generate-db2-zos-data-insights-aws-mainframe-modernization-amazon-q-in-quicksight.md)
+ [Berikan instans SageMaker notebook akses sementara ke CodeCommit repositori di akun AWS lain](give-sagemaker-notebook-instances-temporary-access-to-a-codecommit-repository-in-another-aws-account.md)
+ [Mengelola AWS Organizations kebijakan sebagai kode dengan menggunakan AWS CodePipeline dan Amazon Bedrock](manage-organizations-policies-as-code.md)
+ [Modernisasi aplikasi CardDemo mainframe dengan menggunakan AWS Transform](modernize-carddemo-mainframe-app.md)
+ [Memodernisasi dan menyebarkan aplikasi mainframe menggunakan dan Terraform AWS Transform](modernize-mainframe-app-transform-terraform.md)
+ [Lakukan analitik lanjutan menggunakan Amazon Redshift ML](perform-advanced-analytics-using-amazon-redshift-ml.md)
+ [Merampingkan manajemen EC2 kepatuhan Amazon dengan agen Amazon Bedrock dan AWS Config](streamline-amazon-ec2-compliance-management-with-amazon-bedrock-agents-and-aws-config.md)
+ [Merampingkan pengembangan dan penerapan bot Amazon Lex dengan menggunakan alur kerja otomatis](streamline-amazon-lex-bot-development-and-deployment-using-an-automated-workflow.md)
+ [Memecahkan masalah status AWS Step Functions dengan menggunakan Amazon Bedrock](troubleshooting-states-in-aws-step-functions.md)