中文
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許可證的許可。請參閱許可證文件。