中文
OpenAI-совместимые API RESTFUL для Amazon Bedrock
Исходный код рефактируется новым API Converse API By Bedrock, которая обеспечивает собственную поддержку с помощью инструментов.
Если вы сталкиваетесь с какими -либо проблемами, поднимите проблему.
Amazon Bedrock предлагает широкий спектр моделей фундамента (такие как Claude 3 Opus/Sonnet/Haiku, Llama 2/3, Mistral/Mixtral и т. Д.), И широкий набор возможностей для создания генеративных применений ИИ. Проверьте целевую страницу Amazon Bedrock для получения дополнительной информации.
Иногда у вас могут быть приложения, разработанные с использованием API или SDK OpenAI, и вы хотите экспериментировать с Amazon Bendrock, не изменяя кодовую базу. Или вы можете просто захотеть оценить возможности этих моделей фундамента в таких инструментах, как Autogen и т. Д. Что ж, этот репозиторий позволяет вам беспрепятственно получить доступ к моделям Amazon Bendrock через API и SDK Openai, что позволяет вам протестировать эти модели без изменений кода.
Если вы найдете этот репозиторий GitHub полезным, пожалуйста, рассмотрите возможность предоставить ему бесплатную звезду, чтобы показать свою признательность и поддержку проекту.
Функции:
Пожалуйста, проверьте руководство по использованию для получения более подробной информации о том, как использовать новые API.
Примечание. API завершения устаревшего текста не поддерживается, вам следует изменить, чтобы использовать API завершения чата.
Поддержал Amazon Bedrock Models Family:
Вы можете позвонить в API models
, чтобы получить полный список поддерживаемых идентификаторов моделей.
ПРИМЕЧАНИЕ. Модель по умолчанию установлена на
anthropic.claude-3-sonnet-20240229-v1:0
, который можно изменить с помощью переменных среды Lambda (DEFAULT_MODEL
).
Пожалуйста, убедитесь, что вы встретили ниже предварительные условия:
Для получения дополнительной информации о том, как запросить доступ к модели, пожалуйста, обратитесь к Руководству пользователя Amazon Bedrock (Setule> Model Access)
Следующая диаграмма иллюстрирует эталонную архитектуру. Обратите внимание, что он также включает в себя новый VPC с двумя публичными подсетизаторами только для балансировщика нагрузки приложения (ALB).
Вы также можете использовать AWS Fargate за ALB вместо AWS Lambda, основным отличием является задержка первого байта для потокового отклика (FARGATE ниже).
В качестве альтернативы, вы можете использовать URL Function Function для замены ALB, см. Пример
Пожалуйста, следуйте приведенным ниже шагам, чтобы развернуть APIS Proxy Proxy Proxy API в своей учетной записи AWS. Только поддерживает регионы, где доступен Amazon Bedrock (например us-west-2
). Развертывание займет около 3-5 минут .
Шаг 1: Создайте свой собственный ключ API (необязательно)
Примечание. Этот шаг состоит в том, чтобы использовать любую строку (без пробелов), которые вы хотите создать для создания пользовательского ключа API (учетных данных), который будет использоваться для доступа к прокси -API позже. Этот ключ не должен соответствовать вашему фактическому клавишу Openai, и вам не нужно иметь ключ API OpenAI. Рекомендуется сделать этот шаг и убедиться, что вы сохраняете ключ безопасным и частным.
Шаг 2: развернуть стек CloudFormation
Альб + Ламбда
Альб + Фаргейт
BedrockProxyAPIKey
). Если вы не настроили ключ API, оставьте это поле пустым. Нажмите «Далее». Вот и все! ? После развертывания щелкните стек CloudFormation и перейдите на вкладку «Выходные» , вы можете найти URL -адрес базы API от APIBaseUrl
, значение должно выглядеть как http://xxxx.xxx.elb.amazonaws.com/api/v1
.
Все, что вам нужно, это ключ API и URL -адрес базы API. Если вы не настроили свой собственный ключ, то будет использоваться ключ API по умолчанию ( bedrock
).
Теперь вы можете попробовать прокси -API. Допустим, вы хотите проверить модель Claude 3 Sonnet (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 Embedding API, мультимодальный API и инструмент.
Межрегистрирование вывода поддерживает доступ к моделям фундамента в разных регионах, что позволяет пользователям вызывать модели, размещенные в различных регионах AWS для вывода. Основные преимущества:
Пожалуйста, проверьте поперечный вывод Bedrock Cross Region
Ограничение: В настоящее время шлюз доступа коренной породы поддерживает перекрестный вывод только для следующих моделей:
Предварительные условия:
Пример использования 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 Gateway не поддерживает события Server-Sent (SSE) для потокового ответа.
Это решение поддерживает только регионы, где доступен Amazon Bedrock, так как на данный момент ниже приведены список.
Вообще говоря, все регионы, которые поддерживает Amazon Bedrock, также будут поддерживать, если нет, пожалуйста, поднимите проблему в GitHub.
Обратите внимание, что не все модели доступны в этих регионах.
Да, вы можете клонировать репо и самостоятельно построить изображение контейнера ( src/Dockerfile
), а затем подтолкнуть к своему репо. Вы можете использовать scripts/push-to-ecr.sh
Замените URL -адрес в шаблоне CloudFormation, прежде чем развернуть.
Да, вы можете запустить это на местном уровне.
URL -адрес базы API должен выглядеть как http://localhost:8000/api/v1
.
Сравнивая с вызовом AWS SDK, ссылочная архитектура принесет дополнительную задержку в ответе, вы можете попробовать проверить это на собственном.
Кроме того, вы можете использовать URL -файл Lambda Web Adapter + функции (см. Пример), чтобы заменить ALB или AWS Fargate, чтобы заменить Lambda, чтобы повысить производительность при потоковой реакции.
В настоящее время нет плана поддержки моделей SageMaker. Это может измениться при условии, что от клиентов есть спрос.
Тонко настроенные модели и модели с предоставленной пропускной способностью в настоящее время не поддерживаются. Вы можете клонировать репо и сделать настройку, если это необходимо.
Чтобы использовать новейшие функции, вам не нужно перераспределить стек CloudFormation. Вам просто нужно вытащить последнее изображение.
Для этого зависит от того, какая версия вы развернули:
Deploy new image
и нажмите «Сохранить».Tasks
», выберите единственную задачу, которая работает, и просто нажмите Stop selected
меню». Новая задача с последним изображением начнется автоматически. Смотрите Anploying для получения дополнительной информации.
Эта библиотека лицензирована по лицензии MIT-0. Смотрите файл лицензии.