ChatBedrock
本文档将帮助您开始使用 AWS Bedrock 聊天模型。Amazon Bedrock 是一项完全托管的服务,通过单个 API 提供来自 AI21 Labs、Anthropic、Cohere、Meta、Stability AI 和 Amazon 等领先 AI 公司的高性能基础模型 (FM) 选择,以及构建具有安全性、隐私性和负责任的 AI 的生成式 AI 应用程序所需的广泛功能。使用 Amazon Bedrock,您可以轻松试验和评估您的使用案例的顶级 FM,使用微调和检索增强生成 (RAG) 等技术通过您的数据私下自定义它们,并构建使用企业系统和数据源执行任务的代理。由于 Amazon Bedrock 是无服务器的,因此您不必管理任何基础设施,并且可以使用您已经熟悉的 AWS 服务安全地将生成式 AI 功能集成并部署到您的应用程序中。
AWS Bedrock 维护着一个 Converse API,该 API 为 Bedrock 模型提供统一的对话界面。此 API 尚不支持自定义模型。您可以在此处查看支持的所有模型的列表。
我们建议不需要使用自定义模型的用户使用 Converse API。可以使用 ChatBedrockConverse 访问它。
有关所有 Bedrock 功能和配置的详细文档,请前往 API 参考。
概述
集成详细信息
| 类 | 包 | 本地化 | 序列 化 | JS 支持 | 软件包下载 | 最新包装 |
|---|---|---|---|---|---|---|
| ChatBedrock | langchain-aws | ❌ | beta | ✅ | ||
| ChatBedrockConverse | langchain-aws | ❌ | beta | ✅ |
模型特点
以下内容适用于两者ChatBedrock和ChatBedrockConverse.
| 工具调用 | 结构化输出 | JSON 模式 | 图像输入 | 音频输入 | 视频输入 | 令牌级流式处理 | 本机异步 | Token 使用情况 | 日志 |
|---|---|---|---|---|---|---|---|---|---|
| ✅ | ✅ | ❌ | ✅ | ❌ | ❌ | ✅ | ❌ | ✅ | ❌ |
设置
要访问 Bedrock 模型,您需要创建一个 AWS 账户,设置 Bedrock API 服务,获取访问密钥 ID 和私有密钥,并安装langchain-aws集成包。
凭据
前往 AWS 文档注册 AWS 并设置您的凭证。您还需要为您的账户开启 Model Access,您可以按照这些说明进行作。
要启用模型调用的自动跟踪,请设置您的 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
实例
现在我们可以实例化我们的 Model 对象并生成聊天补全:
from langchain_aws import ChatBedrockConverse
llm = ChatBedrockConverse(
model_id="anthropic.claude-3-5-sonnet-20240620-v1:0",
# temperature=...,
# max_tokens=...,
# 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="J'adore la programmation.", additional_kwargs={}, response_metadata={'ResponseMetadata': {'RequestId': 'b07d1630-06f2-44b1-82bf-e82538dd2215', 'HTTPStatusCode': 200, 'HTTPHeaders': {'date': 'Wed, 16 Apr 2025 19:35:34 GMT', 'content-type': 'application/json', 'content-length': '206', 'connection': 'keep-alive', 'x-amzn-requestid': 'b07d1630-06f2-44b1-82bf-e82538dd2215'}, 'RetryAttempts': 0}, 'stopReason': 'end_turn', 'metrics': {'latencyMs': [488]}, 'model_name': 'anthropic.claude-3-5-sonnet-20240620-v1:0'}, id='run-d09ed928-146a-4336-b1fd-b63c9e623494-0', usage_metadata={'input_tokens': 29, 'output_tokens': 11, 'total_tokens': 40, 'input_token_details': {'cache_creation': 0, 'cache_read': 0}})
print(ai_msg.content)
J'adore la programmation.
流
请注意,ChatBedrockConverse在流式传输时发出内容块:
for chunk in llm.stream(messages):
print(chunk)
content=[] additional_kwargs={} response_metadata={} id='run-d0e0836e-7146-4c3d-97c7-ad23dac6febd'
content=[{'type': 'text', 'text': 'J', 'index': 0}] additional_kwargs={} response_metadata={} id='run-d0e0836e-7146-4c3d-97c7-ad23dac6febd'
content=[{'type': 'text', 'text': "'adore la", 'index': 0}] additional_kwargs={} response_metadata={} id='run-d0e0836e-7146-4c3d-97c7-ad23dac6febd'
content=[{'type': 'text', 'text': ' programmation.', 'index': 0}] additional_kwargs={} response_metadata={} id='run-d0e0836e-7146-4c3d-97c7-ad23dac6febd'
content=[{'index': 0}] additional_kwargs={} response_metadata={} id='run-d0e0836e-7146-4c3d-97c7-ad23dac6febd'
content=[] additional_kwargs={} response_metadata={'stopReason': 'end_turn'} id='run-d0e0836e-7146-4c3d-97c7-ad23dac6febd'
content=[] additional_kwargs={} response_metadata={'metrics': {'latencyMs': 600}, 'model_name': 'anthropic.claude-3-5-sonnet-20240620-v1:0'} id='run-d0e0836e-7146-4c3d-97c7-ad23dac6febd' usage_metadata={'input_tokens': 29, 'output_tokens': 11, 'total_tokens': 40, 'input_token_details': {'cache_creation': 0, 'cache_read': 0}}
您可以在输出上使用 .text() 方法过滤文本:
for chunk in llm.stream(messages):
print(chunk.text(), end="|")
|J|'adore la| programmation.||||
提示缓存
Bedrock 支持缓存提示的元素,包括消息和工具。这允许您重复使用大型文档、说明、小样本文档和其他数据,以减少延迟和成本。
并非所有模型都支持提示缓存。在此处查看支持的型号。
要在提示的元素上启用缓存,请使用cachePoint钥匙。请参阅下面的示例:
import requests
from langchain_aws import ChatBedrockConverse
llm = ChatBedrockConverse(model="us.anthropic.claude-3-7-sonnet-20250219-v1:0")
# Pull LangChain readme
get_response = requests.get(
"https://raw.githubusercontent.com/langchain-ai/langchain/master/README.md"
)
readme = get_response.text
messages = [
{
"role": "user",
"content": [
{
"type": "text",
"text": "What's LangChain, according to its README?",
},
{
"type": "text",
"text": f"{readme}",
},
{
"cachePoint": {"type": "default"},
},
],
},
]
response_1 = llm.invoke(messages)
response_2 = llm.invoke(messages)
usage_1 = response_1.usage_metadata["input_token_details"]
usage_2 = response_2.usage_metadata["input_token_details"]
print(f"First invocation:\n{usage_1}")
print(f"\nSecond:\n{usage_2}")
First invocation:
{'cache_creation': 1528, 'cache_read': 0}
Second:
{'cache_creation': 0, 'cache_read': 1528}
链接
我们可以用 prompt 模板链接我们的模型,如下所示:
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="Here's the German translation:\n\nIch liebe das Programmieren.", additional_kwargs={}, response_metadata={'ResponseMetadata': {'RequestId': '1de3d7c0-8062-4f7e-bb8a-8f725b97a8b0', 'HTTPStatusCode': 200, 'HTTPHeaders': {'date': 'Wed, 16 Apr 2025 19:32:51 GMT', 'content-type': 'application/json', 'content-length': '243', 'connection': 'keep-alive', 'x-amzn-requestid': '1de3d7c0-8062-4f7e-bb8a-8f725b97a8b0'}, 'RetryAttempts': 0}, 'stopReason': 'end_turn', 'metrics': {'latencyMs': [719]}, 'model_name': 'anthropic.claude-3-5-sonnet-20240620-v1:0'}, id='run-7021fcd7-704e-496b-a92e-210139614402-0', usage_metadata={'input_tokens': 23, 'output_tokens': 19, 'total_tokens': 42, 'input_token_details': {'cache_creation': 0, 'cache_read': 0}})
API 参考
有关所有 ChatBedrock 功能和配置的详细文档,请访问 API 参考:https://python.langchain.com/api_reference/aws/chat_models/langchain_aws.chat_models.bedrock.ChatBedrock.html
有关所有 ChatBedrockConverse 功能和配置的详细文档,请前往 API 参考:https://python.langchain.com/api_reference/aws/chat_models/langchain_aws.chat_models.bedrock_converse.ChatBedrockConverse.html