跳到主要內容
Open In ColabOpen on GitHub

ChatBedrock

本文檔將幫助您開始使用 AWS Bedrock 聊天模型。Amazon Bedrock 是一項完全託管的服務,透過單一 API 提供來自領先 AI 公司(如 AI21 Labs、Anthropic、Cohere、Meta、Stability AI 和 Amazon)的多種高效能基礎模型 (FM),以及您建構生成式 AI 應用程式所需的一系列廣泛功能,並兼顧安全性、隱私權和負責任的 AI。使用 Amazon Bedrock,您可以輕鬆地針對您的用例試驗和評估頂級 FM,使用微調和檢索增強生成 (RAG) 等技術,使用您的資料私下自訂它們,並建構使用您的企業系統和資料來源執行任務的代理程式。由於 Amazon Bedrock 是無伺服器架構,您無需管理任何基礎設施,並且可以使用您已熟悉的 AWS 服務,安全地將生成式 AI 功能整合和部署到您的應用程式中。

如需關於哪些模型可透過 Bedrock 存取的更多資訊,請前往 AWS 文件

如需所有 ChatBedrock 功能和配置的詳細文件,請參閱 API 參考文件

概觀

整合細節

類別套件本地可序列化JS 支援套件下載次數最新套件
ChatBedrocklangchain-awsbetaPyPI - DownloadsPyPI - Version

模型功能

工具呼叫結構化輸出JSON 模式圖像輸入音訊輸入視訊輸入Token 層級串流原生非同步Token 使用量Logprobs

設定

若要存取 Bedrock 模型,您需要建立一個 AWS 帳戶、設定 Bedrock API 服務、取得存取金鑰 ID 和私密金鑰,並安裝 langchain-aws 整合套件。

憑證

請前往 AWS 文件 註冊 AWS 並設定您的憑證。您還需要為您的帳戶開啟模型存取權,您可以按照這些指示進行操作。

如果您想要取得模型呼叫的自動追蹤,您也可以透過取消註解下方內容來設定您的 LangSmith API 金鑰

# os.environ["LANGSMITH_API_KEY"] = getpass.getpass("Enter your LangSmith API key: ")
# os.environ["LANGSMITH_TRACING"] = "true"

安裝

LangChain Bedrock 整合位於 langchain-aws 套件中

%pip install -qU langchain-aws

實例化

現在我們可以實例化我們的模型物件並產生聊天完成結果

from langchain_aws import ChatBedrock

llm = ChatBedrock(
model_id="anthropic.claude-3-sonnet-20240229-v1:0",
model_kwargs=dict(temperature=0),
# other params...
)
API 參考文件:ChatBedrock

調用

messages = [
(
"system",
"You are a helpful assistant that translates English to French. Translate the user sentence.",
),
("human", "I love programming."),
]
ai_msg = llm.invoke(messages)
ai_msg
AIMessage(content="Voici la traduction en français :\n\nJ'aime la programmation.", additional_kwargs={'usage': {'prompt_tokens': 29, 'completion_tokens': 21, 'total_tokens': 50}, 'stop_reason': 'end_turn', 'model_id': 'anthropic.claude-3-sonnet-20240229-v1:0'}, response_metadata={'usage': {'prompt_tokens': 29, 'completion_tokens': 21, 'total_tokens': 50}, 'stop_reason': 'end_turn', 'model_id': 'anthropic.claude-3-sonnet-20240229-v1:0'}, id='run-fdb07dc3-ff72-430d-b22b-e7824b15c766-0', usage_metadata={'input_tokens': 29, 'output_tokens': 21, 'total_tokens': 50})
print(ai_msg.content)
Voici la traduction en français :

J'aime la programmation.

鏈結

我們可以像這樣使用提示範本鏈結我們的模型

from langchain_core.prompts import ChatPromptTemplate

prompt = ChatPromptTemplate.from_messages(
[
(
"system",
"You are a helpful assistant that translates {input_language} to {output_language}.",
),
("human", "{input}"),
]
)

chain = prompt | llm
chain.invoke(
{
"input_language": "English",
"output_language": "German",
"input": "I love programming.",
}
)
API 參考文件:ChatPromptTemplate
AIMessage(content='Ich liebe Programmieren.', additional_kwargs={'usage': {'prompt_tokens': 23, 'completion_tokens': 11, 'total_tokens': 34}, 'stop_reason': 'end_turn', 'model_id': 'anthropic.claude-3-sonnet-20240229-v1:0'}, response_metadata={'usage': {'prompt_tokens': 23, 'completion_tokens': 11, 'total_tokens': 34}, 'stop_reason': 'end_turn', 'model_id': 'anthropic.claude-3-sonnet-20240229-v1:0'}, id='run-5ad005ce-9f31-4670-baa0-9373d418698a-0', usage_metadata={'input_tokens': 23, 'output_tokens': 11, 'total_tokens': 34})

Bedrock Converse API

AWS 最近發布了 Bedrock Converse API,它為 Bedrock 模型提供了一個統一的對話式介面。此 API 尚不支援自訂模型。您可以在此處查看所有支援模型的列表。為了提高可靠性,ChatBedrock 整合將在 Bedrock Converse API 與現有的 Bedrock API 具有功能對等性時,切換為使用 Bedrock Converse API。在此之前,已發布了單獨的 ChatBedrockConverse 整合。

我們建議不需要使用自訂模型的使用者使用 ChatBedrockConverse

您可以像這樣使用它

from langchain_aws import ChatBedrockConverse

llm = ChatBedrockConverse(
model="anthropic.claude-3-sonnet-20240229-v1:0",
temperature=0,
max_tokens=None,
# other params...
)

llm.invoke(messages)
API 參考文件:ChatBedrockConverse
AIMessage(content="Voici la traduction en français :\n\nJ'aime la programmation.", response_metadata={'ResponseMetadata': {'RequestId': '4fcbfbe9-f916-4df2-b0bd-ea1147b550aa', 'HTTPStatusCode': 200, 'HTTPHeaders': {'date': 'Wed, 21 Aug 2024 17:23:49 GMT', 'content-type': 'application/json', 'content-length': '243', 'connection': 'keep-alive', 'x-amzn-requestid': '4fcbfbe9-f916-4df2-b0bd-ea1147b550aa'}, 'RetryAttempts': 0}, 'stopReason': 'end_turn', 'metrics': {'latencyMs': 672}}, id='run-77ee9810-e32b-45dc-9ccb-6692253b1f45-0', usage_metadata={'input_tokens': 29, 'output_tokens': 21, 'total_tokens': 50})

串流

請注意,ChatBedrockConverse 在串流時會發出內容區塊

for chunk in llm.stream(messages):
print(chunk)
content=[] id='run-2c92c5af-d771-4cc2-98d9-c11bbd30a1d8'
content=[{'type': 'text', 'text': 'Vo', 'index': 0}] id='run-2c92c5af-d771-4cc2-98d9-c11bbd30a1d8'
content=[{'type': 'text', 'text': 'ici', 'index': 0}] id='run-2c92c5af-d771-4cc2-98d9-c11bbd30a1d8'
content=[{'type': 'text', 'text': ' la', 'index': 0}] id='run-2c92c5af-d771-4cc2-98d9-c11bbd30a1d8'
content=[{'type': 'text', 'text': ' tra', 'index': 0}] id='run-2c92c5af-d771-4cc2-98d9-c11bbd30a1d8'
content=[{'type': 'text', 'text': 'duction', 'index': 0}] id='run-2c92c5af-d771-4cc2-98d9-c11bbd30a1d8'
content=[{'type': 'text', 'text': ' en', 'index': 0}] id='run-2c92c5af-d771-4cc2-98d9-c11bbd30a1d8'
content=[{'type': 'text', 'text': ' français', 'index': 0}] id='run-2c92c5af-d771-4cc2-98d9-c11bbd30a1d8'
content=[{'type': 'text', 'text': ' :', 'index': 0}] id='run-2c92c5af-d771-4cc2-98d9-c11bbd30a1d8'
content=[{'type': 'text', 'text': '\n\nJ', 'index': 0}] id='run-2c92c5af-d771-4cc2-98d9-c11bbd30a1d8'
content=[{'type': 'text', 'text': "'", 'index': 0}] id='run-2c92c5af-d771-4cc2-98d9-c11bbd30a1d8'
content=[{'type': 'text', 'text': 'a', 'index': 0}] id='run-2c92c5af-d771-4cc2-98d9-c11bbd30a1d8'
content=[{'type': 'text', 'text': 'ime', 'index': 0}] id='run-2c92c5af-d771-4cc2-98d9-c11bbd30a1d8'
content=[{'type': 'text', 'text': ' la', 'index': 0}] id='run-2c92c5af-d771-4cc2-98d9-c11bbd30a1d8'
content=[{'type': 'text', 'text': ' programm', 'index': 0}] id='run-2c92c5af-d771-4cc2-98d9-c11bbd30a1d8'
content=[{'type': 'text', 'text': 'ation', 'index': 0}] id='run-2c92c5af-d771-4cc2-98d9-c11bbd30a1d8'
content=[{'type': 'text', 'text': '.', 'index': 0}] id='run-2c92c5af-d771-4cc2-98d9-c11bbd30a1d8'
content=[{'index': 0}] id='run-2c92c5af-d771-4cc2-98d9-c11bbd30a1d8'
content=[] response_metadata={'stopReason': 'end_turn'} id='run-2c92c5af-d771-4cc2-98d9-c11bbd30a1d8'
content=[] response_metadata={'metrics': {'latencyMs': 713}} id='run-2c92c5af-d771-4cc2-98d9-c11bbd30a1d8' usage_metadata={'input_tokens': 29, 'output_tokens': 21, 'total_tokens': 50}

如果需要,可以使用輸出解析器來篩選文字

from langchain_core.output_parsers import StrOutputParser

chain = llm | StrOutputParser()

for chunk in chain.stream(messages):
print(chunk, end="|")
API 參考文件:StrOutputParser
|Vo|ici| la| tra|duction| en| français| :|

J|'|a|ime| la| programm|ation|.||||

API 參考文件

如需所有 ChatBedrock 功能和配置的詳細文件,請參閱 API 參考文件:https://langchain-python.dev.org.tw/api_reference/aws/chat_models/langchain_aws.chat_models.bedrock.ChatBedrock.html

如需所有 ChatBedrockConverse 功能和配置的詳細文件,請參閱 API 參考文件:https://langchain-python.dev.org.tw/api_reference/aws/chat_models/langchain_aws.chat_models.bedrock_converse.ChatBedrockConverse.html


此頁面是否有幫助?