

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 為醫療保健開發和協調生成式 AI 解決方案
<a name="development"></a>

若要建置本指南中的解決方案，您必須建置使用微調 LLMs RAG 架構，以提供增強型病患資料、臨床和診斷洞察，以及預測病患結果給醫療保健供應商。這需要整合多個 AWS 服務 和 工具，才能建立有凝聚力且高效率的工作流程。本節討論下列項目：
+ [Amazon Q Developer](#development-amazon-q) – 使用 Amazon Q Developer 在開發過程中解決工程問題和程式碼錯誤。
+ [多擷取器 RAG 設計](#development-multi-retriever-rag) – 設計和實作使用多個擷取器來擷取使用者問題的正確醫療內容的 RAG 解決方案。
+ [ReAct 代理程式](#development-react-agents) – 實作結合推理與動態動作的代理程式。

## Amazon Q Developer
<a name="development-amazon-q"></a>

建置生成式 AI 解決方案時，可能很難建立 AI 代理器和連線金鑰服務。不過，[Amazon Q Developer](https://aws.amazon.com/q/developer/) 透過提供進階生成式 AI 助理的存取權，協助資料科學家和 AI 工程師。Amazon Q 可以快速準確地解決使用者問題和程式碼錯誤，這可協助您最佳化 LLM 開發程序。Amazon Q 為建立使用 Amazon Bedrock 基礎模型的應用程式的開發人員提供了顯著的優勢。它可以簡化工作流程並增強程式碼品質。它可自動產生 Python 指令碼和基礎設施做為程式碼 (IaC) 組態，大幅減少開發時間和工作量。透過進階重構功能，Amazon Q 可以改善程式碼效能、識別安全漏洞，並確保開發人員遵守最佳實務。此外，它透過提供內容感知建議和說明來促進初學者的學習和採用，使複雜的編碼任務更容易存取和提高效率。

## 多擷取器 RAG 設計
<a name="development-multi-retriever-rag"></a>

在生成式 AI 應用程式中，多擷取器 RAG 管道可以有效地從多個資料來源擷取資訊，以協助醫療保健供應商和臨床醫生回答醫療問題。此管道使用不同類型的擷取器，從不同的知識庫提取相關資料。每個擷取器都專門從醫學研究和學術文字中擷取特定類型的資訊，例如患者歷史記錄、診斷見解、臨床備註或內容。

使用資料的性質和特定應用程式需求，來判斷適合您使用案例的正確後端知識庫。Amazon OpenSearch Service 向量資料庫非常適合大量非結構化或半結構化醫療資料，包括影像診斷評估摘要、放電摘要、臨床報告、醫學研究和學術文字內容。另一方面，圖形資料庫服務，例如 Amazon Neptune，非常適合需要深入探索實體之間時間關係的醫療保健使用案例，例如患者、患者歷程記錄、醫療保健供應商、藥物、症狀和治療。

此管道的關鍵元件是*使用者查詢意圖預測*。這可確保系統會將查詢路由到正確的擷取器鏈。例如，如果臨床醫生詢問患者治療史、症狀、與醫院的互動、重新入院的可能性或潛在的患者結果，則查詢意圖預測模組會識別此意圖。它會將請求導向至擷取器鏈，該鏈可從醫學知識圖表擷取病患記錄或時間處理資料。或者，如果問題是關於疾病探索、特定診斷評估，或學術教科書中特定臨床程序的詳細資訊，則查詢會路由至可從 OpenSearch Service 向量資料庫擷取此資訊的擷取器鏈。您可以使用 [的工具呼叫](https://python.langchain.com/docs/concepts/tool_calling/)功能LangChain，將自訂工具繫結至可將使用者問題分類為預先定義意圖的 Amazon Bedrock LLM。

此多擷取器 RAG 系統包含專為管理特定知識庫存取權而設計的LangChain代理程式。您可以使用 LangChain 協調 Amazon Bedrock LLM、不同擷取器和工具之間的互動。 LangChain包含工具呼叫類別，可協助您建立自訂工具，例如意圖分類器、Neptune 的擷取器、OpenSearch Service 的擷取器，或任何其他可以開發的工具，以結構化格式分類使用者意圖和從特定知識庫存取資料。然後，將這些工具提供給 類別，以建立理由和動作 (ReAct) 代理程式。ReAct 代理程式會處理使用者問題、規劃循序步驟來回答問題，然後反覆執行可用的工具，並處理工具回應以最終回答使用者查詢。

下圖顯示多擷取器 RAG 系統如何有效擷取知識和智慧型查詢解決方案。LangChain ReAct 代理程式會分析使用者的意圖、制定執行的結構化計劃，並選取最相關的擷取工具。系統會查詢先前的問題快取，並根據關鍵屬性檢查類似查詢，例如患者 ID、醫療情況和就診日期。如果找到高度相似的問題，則會直接擷取對應的答案。否則，代理程式會執行適當的擷取器。對於擷取以患者為中心的資訊，例如治療歷史記錄、症狀、醫院互動或重新入院可能性，系統使用圖形擷取器。對於診斷評估、臨床程序和結構化醫療問題清單，代理程式會採用向量資料庫擷取器。在需要結合來自兩個資料存放區的關聯式知識的情況下，為了產生全面的回應，系統會使用混合式擷取策略來整合知識圖表和向量資料庫的結果。

![使用多個LangChain擷取器來執行擷取增強生成的架構。](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/rag-healthcare-use-cases/images/multi-retriever-rag.png)


## ReAct 代理程式
<a name="development-react-agents"></a>

推理和動作 (ReAct) 代理程式專為多面向 RAG 應用程式而設計。這些代理程式提供推理和動態動作的強大組合，尤其是涉及step-by-step邏輯資訊擷取工作流程的複雜應用程式。如需詳細資訊，請參閱 [ReAct： Synergizing Reasoning and Acting in Language Models](https://react-lm.github.io/)。

在醫療和醫療保健環境中，臨床醫生或醫生的查詢通常是多面向的。例如，臨床醫生可能會詢問「為類似的有高血壓和第 2 型糖尿病的患者提供了哪些治療？」 識別使用者意圖後，也就是擷取高血壓和第 2 類糖尿病的處理方式，AI 代理器需要將此查詢分割為子任務，然後選擇最有效的擷取策略。在此情況下，AI 代理器應識別最相關的節點 （例如病患年齡、性別、條件、處理方式和藥物），然後查詢這些實體及其屬性和關係的圖表。ReAct 代理程式非常有用，因為它們結合了 LLM 的推理 （邏輯推論） 功能與 動作 （查詢或與外部資源或知識庫互動）。

若要回答使用者查詢「針對具有高血壓和 2 類糖尿病的類似患者提供了哪些處理方式？」，下列範例說明 ReAct 代理程式的運作方式：

1. **客服人員推理** – ReAct 客服人員推斷問題涉及擷取有關條件 （糖尿病和高血壓） 的資訊。它會考慮患者年齡、治療、藥物和要分析的期間。

1. **客服人員動作** – 客服人員使用 openCypher 來查詢知識圖表，了解第 2 類糖尿病和高血壓特有的處理方式。它也會擷取所管理的藥品、醫院就診日期、藥物的副作用、已知的患者結果，以及類似患者 （例如性別和年齡相同的患者） 的交叉參考資料。

1. **客服人員觀察** – 從知識圖表中，客服人員會擷取最近六個月的表格式資料，這些資料是關於提供給同時有高血壓和第 2 型糖尿病的患者。

1. **代理程式推理** – 若要從擷取的記錄對結果進行排名，代理程式會識別重要屬性，例如延遲、藥物的副作用或已知的患者結果。

1. **代理程式動作** – 代理程式會根據已識別的屬性和透過系統提示提供的預先定義邏輯來重新排序記錄。

1. **回應產生** – Amazon Bedrock 中的 LLM 會根據 ReAct 代理程式準備的內容產生回應。