create-llamaでAzure OpenAI ServiceのWebフロントエンドを爆速で作成する
はじめに
create-llamaはLlamaIndexベースのWebアプリを開発するためのCLIツールです。create-llamaを使うとLlamaIndexを使ったembeddingモデルを利用したカスタムAIエージェントのフロントエンドを爆速で開発することが可能です。
llama-createはOpenAI APIを利用する前提になっていますが、基盤となっているLlamaIndexTSのコードをのぞいてみるとAzure OpenAI Serviceに対応してるっぽいコードがあるのでAzure OpenAI ServiceのAPIでもいけるんじゃね?と思いました。
なのでこの記事ではAzure OpenAI ServiceのAPIを使ったフロントエンドを爆速で作成してみようと思います。
やってみた
まず最初にAzure Portal等でAzure OpenAI Seriveを立ち上げ、以下の情報を得ておきます。
-
キーとエンドポイント
からエンドポイント
とキー
(APIキー)を控えておきます -
モデル デプロイ
からAzure OpenAI Studioに移動して新しいデプロイを作成し、デプロイ名を控えておきます。今回はgpt-35-turbo 0613
をデプロイしました。
次にターミナルで以下を実行しcreate-llamaのプロジェクトを生成します
npx create-llama
対話形式で以下のように選択します
✔ What is your project named? … azure_openai_ui
✔ Which template would you like to use? › Chat with streaming
✔ Which framework would you like to use? › NextJS
✔ Which UI would you like to use? › Just HTML
✔ Which model would you like to use? › gpt-3.5-turbo
✔ Which chat engine would you like to use? › SimpleChatEngine (no data, just chat)
✔ Please provide your OpenAI API key (leave blank to skip): …
✔ Would you like to use ESLint? … No / Yes
Which chat engine would you like to use?
以外はすべてデフォルトです。後述しますがここをデフォルトのContextChatEngine
を選択してしまうとエラーで動きません。Please provide your OpenAI API key (leave blank to skip)
はブランクのままエンターします。
プロジェクト作成が終了したあと、プロジェクトのディレクトリに入って.env
ファイルを編集します。
cd azure_openai_ui
vi .env
.env
デフォルトで空になっています。ここに上記で控えたAzure OpenAI Service APIの各情報を以下のように記載します。
AZURE_OPENAI_KEY=[APIキー]
AZURE_OPENAI_ENDPOINT=[エンドポイント]
AZURE_OPENAI_DEPLOYMENT=[デプロイ名]
.env
を保存したあと、以下を実行してWebアプリケーションを起動します。
npm run dev
http://localhost:3000/
にアクセスすると以下のUIが表示され、Azure OpenAIのモデルと対話できます。とても簡単ですね。
現時点ではembeddingは利用できないかも
上述でWhich chat engine would you like to use?
でContextChatEngine
を選択するとエラーが出ると書きました。実際にContextChatEngine
でアプリケーションを生成するとUIは立ち上がりますがメッセージ送信時に以下のようなエラーが発生します。
[cause]: BadRequestError: 400 The embeddings operation does not work with the specified model, gpt-35-turbo. Please choose different model and try again. You can learn more about which models can be used with each operation here: https://go.microsoft.com/fwlink/?linkid=2197993.
at APIError.generate (/Users/user/src/openai/create-llma-js/azure_openai_ui/node_modules/openai/error.js:44:20)
at AzureOpenAI.makeStatusError (/Users/user/src/openai/create-llma-js/azure_openai_ui/node_modules/openai/core.js:251:33)
at AzureOpenAI.makeRequest (/Users/user/src/openai/create-llma-js/azure_openai_ui/node_modules/openai/core.js:290:30)
at process.processTicksAndRejections (node:internal/process/task_queues:95:5) {
status: 400,
headers: {
'apim-request-id': '0d1fda65-57ac-4723-97ef-d705e93fa881',
'content-length': '303',
'content-type': 'application/json',
date: 'Sun, 24 Dec 2023 04:52:48 GMT',
'strict-transport-security': 'max-age=31536000; includeSubDomains; preload',
'x-content-type-options': 'nosniff',
'x-ms-region': 'Japan East',
'x-ratelimit-remaining-requests': '119',
'x-ratelimit-remaining-tokens': '119998'
},
error: {
code: 'OperationNotSupported',
message: 'The embeddings operation does not work with the specified model, gpt-35-turbo. Please choose different model and try again. You can learn more about which models can be used with each operation here: https://go.microsoft.com/fwlink/?linkid=2197993.'
},
code: 'OperationNotSupported',
param: undefined,
type: undefined
}
}
詳細な検証はしていませんが、エラーの内容から現行のモデルではembeddingの処理はできないようです。一応現在デプロイできるすべてのモデルgpt-35-turbo
、gpt-35-turbo-16k
、text-embedding-ada-002
で試してみましたがすべてだめでした。将来的にcreate-llamaで何らかの対応があるかもしれませんが、とりあえず現行はSimpleChatEngine
が使えると覚えておいたほうが良さそうです。
おわりに
create-llamaを使うとOpenAIのAPIをベースにembeddingしたカスタムエージェントのUIを簡単に作ることができますが、Azure OpenAI APIでもいけるようです。ただ現時点でそのままではLlamaIndexの真骨頂であるembeddingを使うことができないようです。
ただ、カスタムエージェントを作りたい場合は、SimpleChatEngine
でもAzure OpenAI Studio側でチューニングしたモデルをデプロイしてAZURE_OPENAI_DEPLOYMENT=[デプロイ名]
に設定するという手も考えられます。いずれにせよ爆速でAIエージェントのWebアプリを作成できるのでcreate-llamaはプロトタイピング等にとても役立ちそうです。
Discussion