Этот проект представляет собой замену REST API для Vertex AI ( PaLM 2, Codey, Gemini ), совместимую со спецификациями OpenAI API.
Примеры:
Общайтесь с Близнецами в пользовательском интерфейсе чат-бота | Получите помощь от Gemini в VSCode |
---|---|
Этот проект вдохновлен идеей LocalAI, но направлен на то, чтобы сделать облачную платформу Google Cloud Platform Vertex AI PaLM более доступной для всех.
Установлен сервис Google Cloud Run, который преобразует вызовы API OpenAI в Vertex AI (PaLM 2, Codey, Gemini).
Поддерживаемые API-сервисы OpenAI:
ОпенАИ | API | Поддерживается |
---|---|---|
Список моделей | /v1/models | ✅ |
Завершения чата | /v1/chat/completions | ✅ |
Завершения (Устаревшие) | /v1/completions | |
Вложения | /v1/embeddings |
Программное обеспечение разработано на Python и основано на FastAPI и LangChain.
Все спроектировано очень просто, поэтому вы можете легко настроить исходный код под свои индивидуальные нужды.
Подготовлен блокнот Jupyter Vertex_AI_Chat.ipynb
с пошаговыми инструкциями. Это поможет вам развернуть серверную часть API и интерфейс пользовательского интерфейса чат-бота в качестве службы Google Cloud Run.
Требования:
Ваш пользователь (тот, который используется для развертывания) должен иметь соответствующие разрешения в проекте. Для быстрого и беспроблемного развертывания рекомендуется роль «Владелец».
Кроме того, учетная запись службы вычислений по умолчанию ( [PROJECT_NR][email protected]
) должна иметь роль «Роль пользователя Vertex AI» ( roles/aiplatform.user
).
Аутентификация:
gcloud auth login
Установить проект по умолчанию:
gcloud config set project [PROJECT_ID]
Запустите следующий скрипт, чтобы создать образ контейнера и развернуть этот контейнер в качестве общедоступного API (который разрешает вызовы без аутентификации) в Google Cloud Run:
bash deploy.sh
Примечание. Вы можете изменить сгенерированный поддельный ключ OpenAI API и регион Google Cloud с помощью переменных среды:
export OPENAI_API_KEY= " sk-XYZ " export GOOGLE_CLOUD_LOCATION= " europe-west1 " bash deploy.sh
Программное обеспечение было протестировано на GNU/Linux и macOS с Python 3.11 и 3.12.3 (3.12.4 в настоящее время не работает). Если вы хотите использовать программное обеспечение под Windows, вы должны установить переменные среды с помощью set
вместо export
.
Вам также следует создать виртуальную среду с той версией Python, которую вы хотите использовать, и активировать ее, прежде чем продолжить.
Вам также понадобится Google Cloud CLI. Google Cloud CLI включает инструмент командной строки gcloud
.
Запустите виртуальную среду Python и установите требования:
python3 -m venv .venv &&
source .venv/bin/activate &&
pip install -r requirements.txt
Аутентификация:
gcloud auth application-default login
Установить проект по умолчанию:
gcloud auth application-default set-quota-project [PROJECT_ID]
Запустить с моделью по умолчанию:
export DEBUG= " True "
export OPENAI_API_KEY= " sk-XYZ "
uvicorn vertex:app --reload
Пример для Windows:
set DEBUG = True
set OPENAI_API_KEY = sk - XYZ
uvicorn vertex:app -- reload
Запустите модель Gemini gemini-pro
:
export DEBUG= " True "
export OPENAI_API_KEY= " sk-XYZ "
export MODEL_NAME= " gemini-pro "
uvicorn vertex:app --reload
Запустите модель Codey codechat-bison-32k
:
export DEBUG= " True "
export OPENAI_API_KEY= " sk-XYZ "
export MODEL_NAME= " codechat-bison-32k "
export MAX_OUTPUT_TOKENS= " 16000 "
uvicorn vertex:app --reload
Теперь приложение будет запущено на вашем локальном компьютере. Вы можете получить к нему доступ, открыв веб-браузер и перейдя по следующему адресу:
http://localhost:8000/
Форматы HTTP-запросов и ответов соответствуют API OpenAI.
Например, чтобы сгенерировать завершение чата, вы можете отправить POST-запрос в конечную точку /v1/chat/completions
с инструкцией в качестве тела запроса:
curl --location ' http://[ENDPOINT]/v1/chat/completions '
--header ' Content-Type: application/json '
--header ' Authorization: Bearer [API-KEY] '
--data ' {
"model": "gpt-3.5-turbo",
"messages": [
{
"role": "user",
"content": "Say this is a test!"
}
]
} '
Ответ:
{
"id" : " cmpl-efccdeb3d2a6cfe144fdde11 " ,
"created" : 1691577522 ,
"object" : " chat.completion " ,
"model" : " gpt-3.5-turbo " ,
"usage" : {
"prompt_tokens" : 0 ,
"completion_tokens" : 0 ,
"total_tokens" : 0
},
"choices" : [
{
"message" : {
"role" : " assistant " ,
"content" : " Sure, this is a test. "
},
"finish_reason" : " stop " ,
"index" : 0
}
]
}
Загрузите экспорт для API-клиента Bruno: bruno-export.json
Конфигурацию программного обеспечения можно выполнить с помощью переменных среды.
Существуют следующие переменные со значениями по умолчанию:
Переменная | По умолчанию | Описание |
---|---|---|
ОТЛАЖИВАТЬ | ЛОЖЬ | Показывать отладочные сообщения, которые помогают во время разработки. |
GOOGLE_CLOUD_LOCATION | США-Центральный1 | Регион Google Cloud Platform для вызовов API. |
GOOGLE_CLOUD_PROJECT_ID | [DEFAULT_AUTH_PROJECT] | Идентификатор вашего проекта. Если не указано, используется проект аутентификации. |
ХОЗЯИН | 0.0.0.0 | Привяжите сокет к этому хосту. |
MAX_OUTPUT_TOKENS | 512 | Предел токена определяет максимальный объем текстового вывода из одного приглашения. Может быть переопределен конечным пользователем в соответствии со спецификацией OpenAI API. |
МОДЕЛЬ_ИМЯ | чат-бизон | Одна из базовых моделей, доступных в Vertex AI. |
OPENAI_API_KEY | ск-[RANDOM_HEX] | Самогенерируемый поддельный ключ API OpenAI, используемый для аутентификации в приложении. |
ПОРТ | 8000 | Привяжите сокет к этому порту. |
ТЕМПЕРАТУРА | 0,2 | Температура выборки контролирует степень случайности при выборе токенов. Может быть переопределен конечным пользователем в соответствии со спецификацией OpenAI API. |
ТОП_К | 40 | Как модель выбирает токены для вывода, из них выбирается следующий токен. |
ТОП_П | 0,8 | Токены выбираются от наиболее вероятного к наименьшему, вплоть до их суммы. Может быть переопределен конечным пользователем в соответствии со спецификацией OpenAI API. |
Если ваше приложение использует клиентские библиотеки, предоставленные OpenAI, вам нужно всего лишь изменить переменную среды OPENAI_API_BASE
, чтобы она соответствовала URL-адресу конечной точки Google Cloud Run:
export OPENAI_API_BASE= " https://openai-api-vertex-XYZ.a.run.app/v1 "
python your_openai_app.py
При развертывании приложения пользовательского интерфейса Chatbot необходимо установить следующие переменные среды:
Переменная | Ценить |
---|---|
OPENAI_API_KEY | Ключ API, созданный во время развертывания |
OPENAI_API_HOST | URL-адрес Google Cloud Run |
Запустите следующий скрипт, чтобы создать образ контейнера из исходного кода GitHub и развернуть этот контейнер как общедоступный веб-сайт (который разрешает вызовы без аутентификации) в Google Cloud Run:
export OPENAI_API_KEY= " sk-XYZ "
export OPENAI_API_HOST= " https://openai-api-vertex-XYZ.a.run.app "
bash chatbot-ui.sh
Установите следующие настройки чата:
Параметр | Ценить |
---|---|
Поставщик ИИ | API OpenAI |
API-ключ OpenAI | Ключ API, созданный во время развертывания |
API-хост | URL-адрес Google Cloud Run |
Расширение VSCode-OpenAI — это мощный и универсальный инструмент, предназначенный для простой интеграции функций OpenAI в ваш редактор кода.
Чтобы активировать настройку, у вас есть два варианта:
Выберите openai.com
и введите URL-адрес Google Cloud Run с параметром /v1
во время установки.
При развертывании приложения Discord Bot необходимо установить следующие переменные среды:
Переменная | Ценить |
---|---|
OPENAI_API_KEY | Ключ API, созданный во время развертывания |
ОПЕНАЙ_API_BASE | URL-адрес Google Cloud Run с /v1 |
При развертывании ChatGPT в приложении Slack необходимо установить следующие переменные среды:
Переменная | Ценить |
---|---|
OPENAI_API_KEY | Ключ API, созданный во время развертывания |
ОПЕНАЙ_API_BASE | URL-адрес Google Cloud Run с /v1 |
При развертывании приложения ChatGPT Telegram Bot необходимо установить следующие переменные среды:
Переменная | Ценить |
---|---|
OPENAI_API_KEY | Ключ API, созданный во время развертывания |
ОПЕНАЙ_API_BASE | URL-адрес Google Cloud Run с /v1 |
У вас есть патч, который принесет пользу этому проекту? Потрясающий! Выполните следующие действия, чтобы его принять.
Все файлы в этом репозитории находятся под лицензией Apache версии 2.0, если не указано иное.