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 支援 | 套件下載次數 | 最新套件 |
---|---|---|---|---|---|---|
ChatBedrock | langchain-aws | ❌ | beta | ✅ |
模型功能
工具呼叫 | 結構化輸出 | 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...
)
調用
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.",
}
)
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)
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="|")
|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