中文
Amazon 기반암을위한 Openai 호환 편안한 API
소스 코드는 Bedrock에 의해 새로운 Converse API와 함께 리팩토링되며, 이는 도구 통화와 함께 기본 지원을 제공합니다.
문제에 직면하고 있다면 문제를 제기하십시오.
Amazon Bedrock은 광범위한 기초 모델 (Claude 3 Opus/Sonnet/Haiku, Llama 2/3, Mistral/Mixtral 등)과 생성 AI 애플리케이션을 구축 할 수있는 광범위한 기능 세트를 제공합니다. 추가 정보는 Amazon Bedrock 방문 페이지를 확인하십시오.
때로는 OpenAI API 또는 SDK를 사용하여 응용 프로그램이 개발되었을 수 있으며 코드베이스를 수정하지 않고 Amazon Bedrock을 실험하려고합니다. 또는 Autogen 등과 같은 도구에서 이러한 기초 모델의 기능을 평가할 수 있습니다. 글쎄,이 저장소를 사용하면 OpenAI API 및 SDK를 통해 Amazon Bedrock 모델에 완벽하게 액세스 할 수 있으므로 코드 변경없이 이러한 모델을 테스트 할 수 있습니다.
이 github 저장소에 유용하다고 생각되면 프로젝트에 대한 감사와 지원을 보여줄 무료 스타를 제공하는 것이 좋습니다.
특징:
새 API 사용 방법에 대한 자세한 내용은 사용 안내서를 확인하십시오.
참고 : 레거시 텍스트 완료 API가 지원되지 않으므로 채팅 완료 API를 사용하도록 변경해야합니다.
지원되는 Amazon Bedrock Models 제품군 :
models
API를 호출하여 지원되는 모델 ID 목록을 얻을 수 있습니다.
참고 : 기본 모델은
anthropic.claude-3-sonnet-20240229-v1:0
으로 설정되어 Lambda 환경 변수 (DEFAULT_MODEL
)를 통해 변경할 수 있습니다.
아래 전제 조건을 충족했는지 확인하십시오.
모델 액세스를 요청하는 방법에 대한 자세한 내용은 Amazon Bedrock 사용자 안내서 (설정> 모델 액세스)를 참조하십시오.
다음 다이어그램은 참조 아키텍처를 보여줍니다. 또한 응용 부하 밸런서 (ALB)에 대해서만 두 개의 공개 서브넷이있는 새로운 VPC 도 포함되어 있습니다.
또한 AWS Lambda 대신 Alb 뒤에 AWS Fargate를 사용할 수도 있습니다. 주요 차이점은 스트리밍 응답을위한 첫 바이트의 대기 시간입니다 (Fargate는 낮습니다).
또는 Lambda Function URL을 사용하여 ALB를 대체 할 수 있습니다. 예제를 참조하십시오.
Bedrock Proxy API를 AWS 계정에 배치하려면 아래 단계를 따라 가십시오. Amazon Bedrock을 사용할 수있는 지역 만 지원합니다 (예 : us-west-2
). 배포는 약 3-5 분이 소요됩니다.
1 단계 : 자신의 사용자 정의 API 키 생성 (선택 사항)
참고 : 이 단계는 나중에 프록시 API에 액세스하는 데 사용되는 사용자 정의 API 키 (자격 증명)를 작성하려는 문자열을 사용하는 것입니다. 이 키는 실제 OpenAI 키와 일치 할 필요가 없으며 OpenAI API 키가 필요하지 않습니다. 이 단계를 수행하고 키를 안전하고 개인적으로 유지하는 것이 좋습니다.
2 단계 : CloudFormation 스택을 배포합니다
alb + lambda
Alb + Fargate
BedrockProxyAPIKey
)를 저장하는 데 사용한 매개 변수 이름을 입력하십시오. API 키를 설정하지 않은 경우이 필드를 비워 두십시오. "다음 다음"을 클릭합니다. 그게 다야! ? 배포되면 CloudFormation 스택을 클릭하고 출력 탭으로 이동하면 APIBaseUrl
에서 API Base URL을 찾을 수 있습니다. 값은 http://xxxx.xxx.elb.amazonaws.com/api/v1
처럼 보일 것입니다.
API 키와 API 기본 URL 만 있으면됩니다. 자신의 키를 설정하지 않으면 기본 API 키 ( bedrock
)가 사용됩니다.
이제 프록시 API를 시험해 볼 수 있습니다. Claude 3 Sonnet Model (모델 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 지역에서 호스팅 된 모델을 호출 할 수 있습니다. 주요 장점 :
기반암 교차 지역 추론을 확인하십시오
제한 : 현재 Bedrock Access Gateway는 다음 모델의 크로스 지역 추론 만 지원합니다.
전제 조건 :
예제 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에서 모델을 설정하는 이미지입니다.
Openai 대신 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)를 지원하지 않는다는 것입니다.
이 솔루션은 현재와 같이 Amazon Bedrock을 사용할 수있는 지역 만 지원합니다.
일반적으로 Amazon Bedrock이 지원하는 모든 지역도 지원되지 않으면 Github에서 문제를 제기하십시오.
해당 지역에서 모든 모델을 사용할 수있는 것은 아닙니다.
예, 저장소 src/Dockerfile
복제하고 컨테이너 이미지를 직접 구축 한 다음 ECR Repo로 밀어 넣을 수 있습니다. scripts/push-to-ecr.sh
사용할 수 있습니다
배포하기 전에 CloudFormation 템플릿의 Repo URL을 교체하십시오.
예,이를 로컬로 실행할 수 있습니다.
API 기본 URL은 http://localhost:8000/api/v1
처럼 보일 것입니다.
AWS SDK 호출과 비교하여 참조 된 아키텍처는 추가 대기 시간을 응답 할 수 있으므로 자신의 것을 테스트하고 테스트 할 수 있습니다.
또한 Lambda Web Adapter + Function URL (예제)을 사용하여 Alb 또는 AWS Fargate를 교체하여 Lambda를 대체하여 스트리밍 응답에 대한 성능을 향상시킬 수 있습니다.
현재 Sagemaker 모델을 지원할 계획은 없습니다. 고객의 수요가 발생하면 변경 될 수 있습니다.
프로비저닝 처리량이있는 미세 조정 모델 및 모델은 현재 지원되지 않습니다. 필요한 경우 저장소를 복제하고 사용자 정의 할 수 있습니다.
최신 기능을 사용하려면 CloudFormation 스택을 재배치 할 필요가 없습니다. 최신 이미지를 가져와야합니다.
그렇게하려면 배포 한 버전에 따라 다릅니다.
Deploy new image
버튼을 찾아 클릭하고 저장을 클릭하십시오.Tasks
탭으로 이동하고 실행중인 유일한 작업을 선택하고 Stop selected
클릭합니다. 최신 이미지가있는 새로운 작업이 자동으로 시작됩니다. 자세한 내용은 기여를 참조하십시오.
이 라이브러리는 MIT-0 라이센스에 따라 라이센스가 부여됩니다. 라이센스 파일을 참조하십시오.