View a markdown version of this page

Panduan integrasi - Pembuat Aplikasi AI Generatif di AWS

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

Panduan integrasi

Seluruh solusi dirancang agar mudah diperluas. Lapisan orkestrasi dari solusi ini dibangun menggunakan. LangChain Anda dapat menambahkan penyedia model, basis pengetahuan, atau jenis memori percakapan apa pun yang didukung oleh LangChain (atau pihak ketiga yang menyediakan LangChain konektor untuk komponen ini) ke solusi ini.

Memperluas didukung LLMs

Untuk menambahkan penyedia model lain, seperti penyedia LLM khusus, Anda harus memperbarui tiga komponen solusi berikut:

  1. Buat tumpukan TextUseCase CDK baru, yang menyebarkan aplikasi obrolan yang dikonfigurasi dengan penyedia LLM kustom Anda:

    1. Kloning GitHub repositori solusi ini, dan siapkan lingkungan build Anda dengan mengikuti instruksi yang diberikan dalam file README.md.

    2. Salin (atau buat baru) source/infrastructure/lib/bedrock-chat-stack.ts file, tempel ke direktori yang sama, dan ganti namanya menjadicustom-chat-stack.ts.

    3. Ganti nama kelas dalam file menjadi yang sesuai, sepertiCustomLLMChat.

    4. Anda dapat memilih untuk menambahkan rahasia Secrets Manager ke tumpukan ini, yang menyimpan kredensi Anda untuk LLM kustom Anda. Anda dapat mengambil kredensi ini selama pemanggilan model di lapisan Lambda obrolan yang dibahas di paragraf berikutnya.

  2. Bangun dan lampirkan layer Lambda yang berisi pustaka Python dari penyedia model yang akan ditambahkan. Untuk aplikasi obrolan kasus penggunaan Amazon Bedrock, pustaka langchain-aws Python berisi konektor khusus di atas paket untuk terhubung ke penyedia LangChain model AWS (Amazon Bedrock SageMaker dan AI), basis pengetahuan (Amazon Kendra dan Amazon Bedrock Knowledge Bases), dan jenis memori (seperti DynamoDB). Demikian pula, penyedia model lain memiliki konektor sendiri. Lapisan ini membantu Anda melampirkan pustaka Python penyedia model ini sehingga Anda dapat menggunakan konektor ini di lapisan Lambda obrolan, yang memanggil LLM (langkah 3). Dalam solusi ini, bundler aset khusus digunakan untuk membangun lapisan Lambda, yang dilampirkan menggunakan aspek CDK. Untuk membuat layer baru untuk pustaka penyedia model kustom:

    1. Arahkan ke LambdaAspects kelas dalam source/infrastructure/lib/utils/lambda-aspects.ts file.

    2. Ikuti petunjuk tentang cara memperluas fungsionalitas kelas aspek Lambda yang disediakan dalam file (seperti menambahkan getOrCreateLangchainLayer metode). Untuk menggunakan metode baru ini (misalnya,getOrCreateCustomLLMLayer), perbarui juga LLM_LIBRARY_LAYER_TYPES enum dalam source/infrastructure/lib/utils/constants.ts file.

  3. Perluas fungsi chat Lambda untuk mengimplementasikan pembangun, klien, dan penangan untuk penyedia baru.

    source/lambda/chatBerisi LangChain koneksi untuk berbeda LLMs bersama dengan kelas pendukung untuk membangun ini LLMs. Kelas pendukung ini mengikuti pola desain Builder dan Object Oriented untuk membuat LLM.

    Setiap handler (misalnya,bedrock_handler.py) pertama membuat klien, memeriksa lingkungan untuk variabel lingkungan yang diperlukan, dan kemudian memanggil get_model metode untuk mendapatkan kelas LangChain LLM. Metode generate kemudian dipanggil untuk memanggil LLM dan mendapatkan responsnya. LangChain saat ini mendukung fungsionalitas streaming untuk Amazon Bedrock, tetapi tidak SageMaker AI. Berdasarkan fungsionalitas streaming atau non-streaming, WebSocket handler yang sesuai (WebsocketStreamingCallbackHandleratauWebsocketHandler) dipanggil untuk mengirim respons kembali ke WebSocket koneksi menggunakan metode inipost_to_connection.

    clients/builderFolder berisi kelas yang membantu membangun LLM Builder menggunakan pola Builder. Pertama, a use_case_config diambil dari toko konfigurasi DynamoDB, yang menyimpan detail tentang jenis basis pengetahuan, memori percakapan, dan model apa yang akan dibangun. Ini juga berisi detail model yang relevan seperti parameter model dan petunjuk. Builder kemudian membantu mengikuti langkah-langkah untuk membuat basis pengetahuan, membuat memori percakapan untuk mempertahankan konteks percakapan untuk LLM, mengatur LangChain panggilan balik yang sesuai untuk kasus streaming dan non-streaming, dan membuat model LLM berdasarkan konfigurasi model yang disediakan. Konfigurasi DynamoDB disimpan pada saat pembuatan kasus penggunaan saat Anda menerapkan kasus penggunaan dari dasbor Deployment (atau saat disediakan oleh pengguna dalam penerapan tumpukan kasus penggunaan mandiri tanpa dasbor Deployment).

    clients/factoriesSubfolder membantu mengatur memori percakapan dan kelas basis pengetahuan yang sesuai, berdasarkan konfigurasi LLM. Ini memungkinkan ekstensi mudah ke basis pengetahuan atau jenis memori lain yang Anda ingin implementasi Anda dukung.

    sharedSubfolder berisi implementasi spesifik dari basis pengetahuan dan memori percakapan yang dipakai di dalam pabrik oleh pembangun. Ini juga berisi Amazon Kendra dan Amazon Bedrock Knowledge Base retriever yang dipanggil dalam LangChain untuk mengambil dokumen untuk kasus penggunaan RAG, bersama dengan callback, yang digunakan oleh model LLM. LangChain

    LangChain Implementasi menggunakan LangChain Expression Language (LCEL) untuk menyusun rantai percakapan bersama-sama. RunnableWithMessageHistoryclass digunakan untuk memelihara riwayat percakapan dengan rantai LCEL khusus, memungkinkan fungsionalitas seperti mengembalikan dokumen sumber dan menggunakan pertanyaan yang diulang (atau disambiguasi) yang dikirim ke basis pengetahuan untuk juga dikirim ke LLM.

    Untuk membuat implementasi sendiri dari penyedia kustom, Anda dapat:

    1. Salin bedrock_handler.py file dan buat handler kustom Anda (misalnya,custom_handler.py), yang membuat klien kustom Anda (misalnya,CustomProviderClient) (ditentukan dalam langkah berikut.)

    2. bedrock_client.pySalin di folder klien. Ubah nama menjadi custom_provider_client.py (atau nama penyedia model spesifik Anda, sepertiCustomProvider). Beri nama kelas di dalamnya dengan tepat, seperti CustomProviderClient yang mewarisiLLMChatClient.

      Anda dapat menggunakan metode yang disediakan oleh LLMChatClient atau menulis implementasi Anda sendiri untuk mengganti ini.

      get_modelMetode ini membangun CustomProviderBuilder (lihat langkah berikut), dan memanggil construct_chat_model metode yang membangun model obrolan menggunakan langkah-langkah pembangun. Metode ini bertindak sebagai Direktur dalam pola pembangun.

    3. Salin clients/builders/bedrock_builder.py dan ganti namanya menjadi custom_provider_builder.py dan kelas di dalamnya menjadi CustomProviderBuilder yang mewarisi LLMBuilder ()llm_builder.py. Anda dapat menggunakan metode yang disediakan oleh LLMBuilder atau menulis implementasi Anda sendiri untuk mengganti ini. Langkah-langkah pembangun dipanggil secara berurutan di dalam construct_chat_model metode klien, sepertiset_model_defaults,set_knowledge_base, danset_conversation_memory.

      set_llm_modelMetode ini akan membuat model LLM aktual menggunakan semua nilai yang ditetapkan menggunakan metode yang dipanggil sebelumnya. Secara khusus, Anda dapat membuat LLM RAG (CustomProviderRetrievalLLM) atau non-RAG (CustomProviderLLM), berdasarkan rag_enabled variable yang diambil dari konfigurasi LLM di DynamoDB.

      Konfigurasi ini diambil dalam retrieve_use_case_config metode di LLMChatClient kelas.

    4. Terapkan CustomProviderRetrievalLLM implementasi CustomProviderLLM atau implementasi Anda di llm_models subfolder berdasarkan apakah Anda memerlukan kasus penggunaan RAG atau non-RAG. Sebagian besar fungsionalitas untuk mengimplementasikan model ini disediakan di RetrievalLLM kelasnya masing-masing, untuk kasus penggunaan non-RAG dan RAG. BaseLangChainModel

      Anda dapat menyalin llm_models/bedrock.py file dan membuat perubahan yang diperlukan untuk memanggil LangChain model yang merujuk ke penyedia khusus Anda. Misalnya, Amazon Bedrock menggunakan ChatBedrock kelas untuk membuat model obrolan menggunakan LangChain.

      Metode generate menghasilkan respons LLM menggunakan rantai LangChain LCEL.

      Anda juga dapat menggunakan get_clean_model_params metode ini untuk membersihkan parameter model per LangChain atau persyaratan model Anda.

Memperluas alat Strands yang didukung

Solusi ini memungkinkan Anda untuk membangun dan menyebarkan server MCP, agen AI, dan alur kerja multi-agen. Dalam pengalaman Agen Builder, Anda dapat melampirkan server MCP untuk memberi agen Anda kemampuan tambahan. Selain server MCP, Anda dapat memanfaatkan alat bawaan yang disediakan oleh Strands (kerangka kerja dasar yang digunakan oleh solusi).

Di luar kotak, solusinya sudah dikonfigurasi sebelumnya dengan alat Strands berikut:

  • Waktu Saat Ini (diaktifkan secara default)

  • Kalkulator (diaktifkan secara default)

  • Lingkungan

Pemilihan MCP Server dan Tools di wizard Agent Builder yang menampilkan alat Strands bawaan

alat untaian bawaan

Untuk memperluas agen Anda dengan alat Strands tambahan, ikuti proses empat langkah yang diuraikan di bagian ini.

Langkah 1: Temukan alat Strands

Jelajahi alat Strands yang tersedia untuk mengidentifikasi alat yang ingin Anda gunakan. Setiap alat memiliki kemampuan dan persyaratan konfigurasi khusus.

Misalnya, untuk menambahkan kemampuan pengambilan Amazon Bedrock Knowledge Base, Anda akan menggunakan alat pengambilan.

Langkah 2: Perbarui parameter SSM

Agar alat tersedia di UI penerapan Agent Builder, perbarui parameter AWS Systems Manager Parameter Store yang menentukan alat Strands mana yang didukung.

  1. Arahkan ke AWS Systems Manager Parameter Store di akun AWS Anda.

  2. Temukan parameternya: /gaab/<stack-name>/strands-tools

  3. Tambahkan konfigurasi alat Anda ke akhir daftar yang ada menggunakan struktur JSON berikut:

    { "name": "Bedrock KB Retrieve", "description": "Retrieve information from Bedrock Knowledge Base", "value": "retrieve", "category": "AI", "isDefault": false }
    Bidang Deskripsi

    name

    Nama tampilan yang ditampilkan di UI Agent Builder

    deskripsi

    Deskripsi singkat tentang fungsionalitas alat

    nilai

    Nama alat yang tepat seperti yang didefinisikan dalam paket alat Strands

    kategori

    Kategori organisasi untuk mengelompokkan alat di UI

    isDefault

    Apakah alat harus diaktifkan secara default untuk agen baru

Langkah 3: Konfigurasikan variabel lingkungan

Banyak alat Strands memerlukan variabel lingkungan untuk konfigurasi. Anda dapat mengatur variabel-variabel ini dengan dua cara:

Opsi 1: Konfigurasi langsung pada AgentCore Runtime

Perbarui agen yang diterapkan secara langsung di Amazon Bedrock AgentCore Runtime dengan variabel lingkungan yang diperlukan.

Opsi 2: Parameter Model di wizard penerapan

Tambahkan variabel lingkungan selama langkah pemilihan Model di wizard Agent Builder menggunakan bagian Parameter Model. Variabel lingkungan yang mengikuti konvensi penamaan ENV_<ALL_CAPS_TOOL_NAME>_<env_variable_name> akan secara otomatis dimuat saat runtime ke lingkungan eksekusi agen sebagai<env_variable_name>.

Contoh:

  • ENV_RETRIEVE_KNOWLEDGE_BASE_ID menjadi KNOWLEDGE_BASE_ID

  • ENV_RETRIEVE_MIN_SCORE menjadi MIN_SCORE

Bagian parameter model lanjutan yang menunjukkan konfigurasi ENV_RETRIEVE_KNOWLEDGE_BASE_ID

parameter model env vars

Lihat dokumentasi atau kode sumber alat khusus untuk mengidentifikasi variabel lingkungan yang diperlukan. Untuk alat pengambilan, Anda dapat menemukan opsi konfigurasi di kode sumber.

Langkah 4: Tambahkan izin IAM

Tambahkan izin IAM yang diperlukan secara manual ke peran eksekusi AgentCore Runtime Anda untuk memungkinkan agen menggunakan alat ini.

Misalnya, untuk menggunakan alat pengambilan dengan Pangkalan Pengetahuan Amazon Bedrock:

  1. Arahkan ke konsol IAM di akun AWS Anda.

  2. Temukan peran eksekusi AgentCore Runtime untuk agen Anda.

  3. Tambahkan izin berikut:

    { "Effect": "Allow", "Action": "bedrock:Retrieve", "Resource": "arn:aws:bedrock:region:account-id:knowledge-base/knowledge-base-id" }

Konsol IAM yang menampilkan StrandsRetrieveTool KBAccess kebijakan yang dilampirkan pada peran eksekusi AgentCore Runtime

pembaruan peran eksekusi agen IAM

Izin khusus yang diperlukan akan bervariasi berdasarkan alat. Lihat dokumentasi alat dan dokumentasi layanan AWS untuk menentukan izin IAM yang sesuai.

Langkah 5: Uji agen

Setelah menyelesaikan langkah-langkah konfigurasi, uji agen Anda untuk memverifikasi alat berfungsi dengan benar. Anda akan melihat pemanggilan alat di log eksekusi dan tanggapan agen.

Agen berhasil menggunakan alat pengambilan untuk menjawab pertanyaan tentang taman skate

untaian mengambil contoh alat
catatan

Untuk daftar lengkap alat Strands yang tersedia dan kemampuannya, lihat dokumentasi Strands Community Tools.

Memperluas basis pengetahuan yang didukung dan jenis memori percakapan

Untuk menambahkan implementasi memori percakapan atau basis pengetahuan Anda, tambahkan implementasi yang diperlukan di shared folder dan kemudian edit pabrik dan pencacahan yang sesuai untuk membuat instance kelas ini.

Saat Anda menyediakan konfigurasi LLM, yang disimpan di dalam penyimpanan parameter, memori percakapan dan basis pengetahuan yang sesuai akan dibuat untuk LLM Anda. Misalnya, ketika ConversationMemoryType ditentukan sebagai DynamoDB, sebuah instance DynamoDBChatMessageHistory dari (tersedia shared_components/memory/ddb_enhanced_message_history.py di dalam) dibuat. Ketika KnowledgeBaseType ditentukan sebagai Amazon Kendra, instance KendraKnowledgeBase (tersedia di dalamshared_components/knowledge/kendra_knowledge_base.py) dibuat.

Membangun dan menerapkan perubahan kode

Bangun program dengan npm run build perintah. Setelah kesalahan diselesaikan, jalankan cdk synth untuk menghasilkan file template dan semua aset Lambda.

  1. Anda dapat menggunakan –0—/stage-assets.sh skrip untuk secara manual mementaskan aset apa pun yang dihasilkan ke bucket staging di akun Anda.

  2. Gunakan perintah berikut untuk menyebarkan atau memperbarui platform:

    cdk deploy DeploymentPlatformStack --parameters AdminUserEmail='admin-email@amazon.com'

    CloudFormation Parameter AWS tambahan apa pun juga harus disertakan bersama dengan AdminUserEmailparameternya.