このプロジェクトは、OpenAI API 仕様と互換性のある Vertex AI ( PaLM 2、Codey、Gemini ) のドロップイン置換 REST API です。
例:
チャットボット UI で Gemini とチャットする | VSCode で Gemini のサポートを受ける |
---|---|
このプロジェクトは LocalAI のアイデアからインスピレーションを得たものですが、Google Cloud Platform Vertex AI PaLM を誰でも簡単に利用できるようにすることに重点を置いています。
OpenAI API 呼び出しを Vertex AI (PaLM 2、Codey、Gemini) に変換する Google Cloud Run サービスがインストールされています。
サポートされている OpenAI API サービス:
OpenAI | 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]
次のスクリプトを実行してコンテナ イメージを作成し、そのコンテナをパブリック 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 でソフトウェアを使用する場合は、 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
これで、アプリケーションがローカル コンピュータで実行されます。 Web ブラウザを開いて次のアドレスに移動すると、アクセスできます。
http://localhost:8000/
HTTP リクエストとレスポンスの形式は OpenAI API と一致しています。
たとえば、チャット完了を生成するには、リクエスト本文として命令を使用して 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
}
]
}
Bruno API クライアントのエクスポートをダウンロード: bruno-export.json
ソフトウェアの設定は環境変数を使用して行うことができます。
デフォルト値を持つ次の変数が存在します。
変数 | デフォルト | 説明 |
---|---|---|
デバッグ | 間違い | 開発中に役立つデバッグ メッセージを表示します。 |
GOOGLE_CLOUD_LOCATION | 米国中央1 | API 呼び出し用の Google Cloud Platform リージョン。 |
GOOGLE_CLOUD_PROJECT_ID | [DEFAULT_AUTH_PROJECT] | プロジェクトの識別子。指定しない場合は、認証のプロジェクトが使用されます。 |
ホスト | 0.0.0.0 | ソケットをこのホストにバインドします。 |
MAX_OUTPUT_TOKENS | 512 | トークン制限により、1 つのプロンプトから出力されるテキストの最大量が決まります。 OpenAI API 仕様の要求に応じて、エンド ユーザーがオーバーライドできます。 |
MODEL_NAME | チャットバイソン | Vertex AI で利用できる基盤モデルの 1 つ。 |
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
次のチャットボックス設定を設定します。
設定 | 価値 |
---|---|
AIプロバイダー | OpenAI API |
OpenAI APIキー | デプロイ時に生成される API キー |
APIホスト | Google Cloud Run URL |
VSCode-OpenAI 拡張機能は、OpenAI 機能をコード エディターにシームレスに統合するように設計された強力で多用途のツールです。
セットアップを有効にするには、次の 2 つのオプションがあります。
openai.com
選択し、セットアップ中に/v1
を使用して Google Cloud Run URL を入力します。
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 の下にあります。