이 프로젝트는 OpenAI API 사양과 호환되는 Vertex AI( PaLM 2, Codey, Gemini )용 드롭인 대체 REST API입니다.
예:
Chatbot UI에서 Gemini와 채팅 | VSCode에서 Gemini의 도움 받기 |
---|---|
이 프로젝트는 LocalAI의 아이디어에서 영감을 얻었지만 Google Cloud Platform Vertex AI PaLM을 누구나 쉽게 이용할 수 있도록 만드는 데 중점을 두고 있습니다.
OpenAI API 호출을 Vertex AI(PaLM 2, Codey, Gemini)로 변환하는 Google Cloud Run 서비스가 설치됩니다.
지원되는 OpenAI API 서비스:
오픈AI | API | 지원됨 |
---|---|---|
모델 나열 | /v1/models | ✅ |
채팅 완료 | /v1/chat/completions | ✅ |
완료(레거시) | /v1/completions | |
임베딩 | /v1/embeddings |
이 소프트웨어는 Python으로 개발되었으며 FastAPI 및 LangChain을 기반으로 합니다.
모든 것이 매우 간단하게 설계되었으므로 개별 요구에 맞게 소스 코드를 쉽게 조정할 수 있습니다.
단계별 지침이 포함된 Jupyter 노트북 Vertex_AI_Chat.ipynb
가 준비되었습니다. API 백엔드와 Chatbot UI 프런트엔드를 Google Cloud Run 서비스로 배포하는 데 도움이 됩니다.
요구사항:
사용자(배포에 사용되는 사용자)는 프로젝트에 대한 적절한 권한이 있어야 합니다. 빠르고 번거롭지 않은 배포를 위해서는 "소유자" 역할이 권장됩니다.
또한 기본 컴퓨팅 서비스 계정( [PROJECT_NR][email protected]
)에는 "Vertex AI 사용자 역할"( roles/aiplatform.user
) 역할이 있어야 합니다.
인증:
gcloud auth login
기본 프로젝트 설정:
gcloud config set project [PROJECT_ID]
다음 스크립트를 실행하여 컨테이너 이미지를 만들고 해당 컨테이너를 Google Cloud Run에서 공개 API(인증되지 않은 호출 허용)로 배포합니다.
bash deploy.sh
참고: 환경 변수를 사용하여 생성된 가짜 OpenAI API 키와 Google Cloud 리전을 변경할 수 있습니다.
export OPENAI_API_KEY= " sk-XYZ " export GOOGLE_CLOUD_LOCATION= " europe-west1 " bash deploy.sh
소프트웨어는 Python 3.11 및 3.12.3(현재 3.12.4는 작동하지 않음)을 사용하여 GNU/Linux 및 macOS에서 테스트되었습니다. Windows에서 소프트웨어를 사용하려면 export
대신 set
사용하여 환경 변수를 설정해야 합니다.
또한 사용하려는 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 요청 및 응답 형식은 OpenAI API와 일치합니다.
예를 들어, 채팅 완료를 생성하려면 명령을 요청 본문으로 사용하여 /v1/chat/completions
엔드포인트에 POST 요청을 보낼 수 있습니다.
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
}
]
}
Bruno API 클라이언트용 내보내기 다운로드: bruno-export.json
소프트웨어 구성은 환경 변수를 사용하여 수행할 수 있습니다.
기본값이 있는 다음 변수가 존재합니다.
변하기 쉬운 | 기본 | 설명 |
---|---|---|
디버그 | 거짓 | 개발 중에 도움이 되는 디버그 메시지를 표시합니다. |
GOOGLE_CLOUD_LOCATION | us-central1 | API 호출을 위한 Google Cloud Platform 지역입니다. |
GOOGLE_CLOUD_PROJECT_ID | [DEFAULT_AUTH_PROJECT] | 프로젝트의 식별자입니다. 지정하지 않으면 인증 프로젝트가 사용됩니다. |
주인 | 0.0.0.0 | 소켓을 이 호스트에 바인딩합니다. |
MAX_OUTPUT_TOKENS | 512 | 토큰 제한은 하나의 프롬프트에서 출력되는 최대 텍스트 양을 결정합니다. OpenAI API 사양에 따라 최종 사용자가 재정의할 수 있습니다. |
MODEL_NAME | 채팅 들소 | Vertex AI에서 사용할 수 있는 기초 모델 중 하나입니다. |
OPENAI_API_KEY | sk-[RANDOM_HEX] | 애플리케이션에 대한 인증에 사용되는 자체 생성된 가짜 OpenAI API 키입니다. |
포트 | 8000 | 이 포트에 소켓을 바인딩합니다. |
온도 | 0.2 | 샘플링 온도는 토큰 선택의 무작위성 정도를 제어합니다. OpenAI API 사양에 따라 최종 사용자가 재정의할 수 있습니다. |
TOP_K | 40 | 모델이 출력할 토큰을 선택하는 방법에 따라 다음 토큰이 선택됩니다. |
TOP_P | 0.8 | 토큰은 그 합이 나올 때까지 가장 가능성이 높은 것부터 가장 작은 것까지 선택됩니다. OpenAI API 사양에 따라 최종 사용자가 재정의할 수 있습니다. |
애플리케이션이 OpenAI에서 제공하는 클라이언트 라이브러리를 사용하는 경우 Google Cloud Run 엔드포인트 URL과 일치하도록 OPENAI_API_BASE
환경 변수만 수정하면 됩니다.
export OPENAI_API_BASE= " https://openai-api-vertex-XYZ.a.run.app/v1 "
python your_openai_app.py
Chatbot UI 애플리케이션을 배포할 때 다음 환경 변수를 설정해야 합니다.
변하기 쉬운 | 값 |
---|---|
OPENAI_API_KEY | 배포 중에 생성된 API 키 |
OPENAI_API_HOST | Google Cloud Run URL |
다음 스크립트를 실행하여 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
다음 Chatbox 설정을 지정합니다.
환경 | 값 |
---|---|
AI 제공업체 | 오픈AI API |
OpenAI API 키 | 배포 중에 생성된 API 키 |
API 호스트 | Google Cloud Run URL |
VSCode-OpenAI 확장은 OpenAI 기능을 코드 편집기에 원활하게 통합하도록 설계된 강력하고 다양한 도구입니다.
설정을 활성화하려면 다음 두 가지 옵션이 있습니다.
openai.com
선택하고 설정 중에 Google Cloud Run URL에 /v1
을 입력합니다.
Discord Bot 애플리케이션을 배포할 때 다음 환경 변수를 설정해야 합니다.
변하기 쉬운 | 값 |
---|---|
OPENAI_API_KEY | 배포 중에 생성된 API 키 |
OPENAI_API_BASE | /v1 이 포함된 Google Cloud Run URL |
Slack 애플리케이션에 ChatGPT를 배포할 때 다음 환경 변수를 설정해야 합니다.
변하기 쉬운 | 값 |
---|---|
OPENAI_API_KEY | 배포 중에 생성된 API 키 |
OPENAI_API_BASE | /v1 이 포함된 Google Cloud Run URL |
ChatGPT Telegram Bot 애플리케이션을 배포할 때 다음 환경 변수를 설정해야 합니다.
변하기 쉬운 | 값 |
---|---|
OPENAI_API_KEY | 배포 중에 생성된 API 키 |
OPENAI_API_BASE | /v1 이 포함된 Google Cloud Run URL |
이 프로젝트에 도움이 될 패치가 있습니까? 엄청난! 승인을 받으려면 다음 단계를 따르세요.
이 저장소의 모든 파일은 달리 명시되지 않는 한 Apache 라이센스 버전 2.0을 따릅니다.