探索Amazon Bedrock:构建可靠的生成式AI应用

114 阅读2分钟

引言

随着生成式AI的崛起,越来越多的开发者和企业开始寻求高效、安全的AI解决方案。Amazon Bedrock是一个全托管服务,旨在通过整合领先AI公司的高性能基础模型(FMs),为开发者提供便捷的平台。本文旨在介绍Amazon Bedrock的基本功能和使用方式,帮助您更好地构建生成式AI应用。

主要内容

什么是Amazon Bedrock?

Amazon Bedrock是一个集成多家顶级AI模型的平台,通过单一API提供多种功能,支持从实验到生产级应用的整个过程。由于它是无服务器的,您无需管理基础设施,可以利用AWS的服务将生成式AI功能安全地嵌入到您的应用中。

如何使用Amazon Bedrock的语言模型?

使用Amazon Bedrock,您可以通过简单的API调用访问各种预训练模型和自定义模型。下面是一个基本的用例,展示如何使用langchain_aws库调用一个基础的语言模型。

设置和调用模型

首先,确保您已经安装了langchain_aws库:

%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"
)

自定义模型调用

假如您需要使用来自Cohere的自定义模型:

# 使用API代理服务提高访问稳定性
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,
)

# 调用模型
custom_llm.invoke(input="What is the recipe of mayonnaise?")

Guardrails设置

为了保证使用的安全性和符合特定策略,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 = BedrockLLM(
    credentials_profile_name="bedrock-admin",
    model_id="<Model_ID>",
    model_kwargs={},
    guardrails={"id": "<Guardrail_ID>", "version": "<Version>", "trace": True},
    callbacks=[BedrockAsyncCallbackHandler()],
)

常见问题和解决方案

  • 网络访问问题:在某些地区可能会遇到API访问问题,建议使用API代理服务。
  • 模型配置错误:确保模型的ARN和配置参数正确无误。

总结和进一步学习资源

Amazon Bedrock提供了一种无缝整合生成式AI的解决方案,适合想要快速构建和部署AI应用的开发者。更多信息请参阅官方文档和相关学习指南。

参考资料

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

---END---