中文
Amazon Bedrock的OpenAI兼容的RESTFUL API
源代码是通过基岩的新匡威API重构的,该API通过工具调用提供本机支持。
如果您面临任何问题,请提出问题。
亚马逊Bedrock提供了广泛的基础模型(例如Claude 3 Opus/Sonnet/Haiku,Llama 2/3,Mistral/Mixtral等),并为您提供了构建生成AI应用程序的广泛功能。查看亚马逊基岩着陆页以获取更多信息。
有时,您可能会使用OpenAI API或SDK开发应用程序,并且您想在不修改代码库的情况下尝试Amazon Bedrock。或者,您可能只想在Autogen等工具等工具中评估这些基础模型的功能。好吧,此存储库使您可以通过OpenAI API和SDK无缝访问Amazon Bedrock模型,从而使您能够在没有代码更改的情况下测试这些模型。
如果您觉得这个GitHub存储库有用,请考虑给它一个免费的星星,以表示您对该项目的赞赏和支持。
特征:
请查看使用指南,以获取有关如何使用新API的更多详细信息。
注意:不支持旧文本完成API,您应该更改以使用聊天完成API。
支持亚马逊基岩模型家庭:
您可以调用models API以获取支持的模型ID列表。
注意:默认模型设置为
anthropic.claude-3-sonnet-20240229-v1:0该模型可以通过Lambda环境变量(DEFAULT_MODEL)更改。
请确保您在先决条件下面见面:
有关如何请求模型访问的更多信息,请参阅《亚马逊基础用户指南》(设置>模型访问)
下图说明了参考体系结构。请注意,它还包括一个新的VPC ,其中包含两个公共子网,仅用于应用程序负载平衡器(ALB)。
您还可以选择使用AWS Fargate在Alb而不是AWS Lambda后面使用,主要区别是第一个用于流响应的字节的延迟(Fargate较低)。
另外,您可以使用lambda功能URL替换ALB,请参见示例
请按照以下步骤将基础代理API部署到您的AWS帐户中。仅支持可用亚马逊底石的区域(例如us-west-2 )。部署大约需要3-5分钟。
步骤1:创建自己的自定义API键(可选)
注意:此步骤是使用您想创建一个自定义API密钥(凭据)的任何字符串(无空格),该键将用于稍后访问代理API。此密钥不必匹配您的实际OpenAI键,也不需要拥有OpenAI API键。建议您采取此步骤并确保保持关键安全和私密。
步骤2:部署云形式堆栈
Alb + Lambda

Alb + Fargate

BedrockProxyAPIKey )。如果您没有设置API键,请将此字段留空。单击“下一步”。就是这样! ?部署后,单击CloudFormation堆栈并转到输出选项卡,您可以从APIBaseUrl找到API碱基URL,该值应看起来像http://xxxx.xxx.elb.amazonaws.com/api/v1 。
您需要的只是API键和API碱基URL。如果您没有设置自己的密钥,则将使用默认的API键( bedrock )。
现在,您可以尝试代理API。假设您要测试Claude 3十四行诗模型(型号ID: anthropic.claude-3-sonnet-20240229-v1:0 )...
示例API用法
export OPENAI_API_KEY= < API key >
export OPENAI_BASE_URL= < API base url >
# For older versions
# https://github.com/openai/openai-python/issues/624
export OPENAI_API_BASE= < API base url > curl $OPENAI_BASE_URL /chat/completions
-H " Content-Type: application/json "
-H " Authorization: Bearer $OPENAI_API_KEY "
-d ' {
"model": "anthropic.claude-3-sonnet-20240229-v1:0",
"messages": [
{
"role": "user",
"content": "Hello!"
}
]
} '示例SDK用法
from openai import OpenAI
client = OpenAI ()
completion = client . chat . completions . create (
model = "anthropic.claude-3-sonnet-20240229-v1:0" ,
messages = [{ "role" : "user" , "content" : "Hello!" }],
)
print ( completion . choices [ 0 ]. message . content )请查看使用指南,以获取有关如何使用嵌入API,多模式API和工具调用的更多详细信息。
跨区域推理支持跨区域访问基础模型,从而使用户可以调用在不同AWS区域中托管的模型进行推理。主要优势:
请检查基岩跨区域的推理
限制:目前,基岩访问网关仅支持以下模型的跨区域推断:
先决条件:
示例API用法:
us.anthropic.claude-3-5-sonnet-20240620-v1:0 ,您可以在运行模型推理时包含推理配置文件curl $OPENAI_BASE_URL /chat/completions
-H " Content-Type: application/json "
-H " Authorization: Bearer $OPENAI_API_KEY "
-d ' {
"model": "us.anthropic.claude-3-5-sonnet-20240620-v1:0",
"max_tokens": 2048,
"messages": [
{
"role": "user",
"content": "Hello!"
}
]
} ' 下面是在Autogen Studio中设置模型的图像。

确保使用ChatOpenAI(...)而不是OpenAI(...)
# pip install langchain-openai
import os
from langchain . chains import LLMChain
from langchain . prompts import PromptTemplate
from langchain_openai import ChatOpenAI
chat = ChatOpenAI (
model = "anthropic.claude-3-sonnet-20240229-v1:0" ,
temperature = 0 ,
openai_api_key = os . environ [ 'OPENAI_API_KEY' ],
openai_api_base = os . environ [ 'OPENAI_BASE_URL' ],
)
template = """Question: {question}
Answer: Let's think step by step."""
prompt = PromptTemplate . from_template ( template )
llm_chain = LLMChain ( prompt = prompt , llm = chat )
question = "What NFL team won the Super Bowl in the year Justin Beiber was born?"
response = llm_chain . invoke ( question )
print ( response )此应用程序不会收集您的任何数据。此外,默认情况下,它不会记录任何请求或响应。
简短的答案是,API网关不支持服务器范围事件(SSE)进行流响应。
该解决方案仅支持可用的亚马逊基岩的区域,如下所示,在下面是列表。
一般而言,亚马逊基岩支撑的所有地区也将得到支持,如果不是,请在Github提出问题。
请注意,并非所有模型都在这些区域中可用。
是的,您可以克隆回购并自己构建容器图像( src/Dockerfile ),然后推到ECR回购。您可以使用scripts/push-to-ecr.sh
部署之前,请在云形式模板中替换回购URL。
是的,您可以在本地运行。
API基础URL应该看起来像http://localhost:8000/api/v1 。
与AWS SDK调用相比,引用的体系结构将带来额外的响应延迟,您可以尝试自己测试。
另外,您可以使用lambda Web适配器 +功能URL(请参阅示例)替换ALB或AWS Fargate来替换Lambda,以在流响应上获得更好的性能。
当前,尚无计划支持sagemaker模型。如果客户有需求,这可能会发生变化。
当前不支持具有配置吞吐量的微调模型和模型。您可以克隆回购并在需要时进行自定义。
要使用最新功能,您无需重新部署CloudFormation堆栈。您只需要拉出最新图像即可。
为此,取决于您部署的版本:
Deploy new image按钮,然后单击“保存”。Tasks选项卡,选择正在运行的唯一任务,然后单击Stop selected菜单。具有最新图像的新任务将自动启动。 有关更多信息,请参见贡献。
该图书馆已获得MIT-0许可证的许可。请参阅许可证文件。