最近ベータ版が出たAssistants APIに含まれる機能にretrievalとcode_interpreterがあります。これらの機能が使用するassistant fileは、purpose="assistants"でFilesにアップロードされているファイルのfile_idをassistant fileにアタッチするという仕様のようです。
Create assistant file
https://platform.openai.com/docs/api-reference/assistants/createAssistantFile
ファイルのアップロードができれば十分なので、あまり手の込んだ実装はしていません。
Downloadをクリックするとエラーが発生しました。エラー・メッセージを確認すると、そもそもpurposeがassistantsのファイルはダウンロード不可のようです。purposeがfine-tuneであればダウンロードできるのかもしれません。
body: { "error": { "message": "Not allowed to download files of purpose: assistants", "type": "invalid_request_error", "param": null, "code": null } }
今回作成したAPEXアプリケーションのエクスポートを以下に置きました。
https://github.com/ujnak/apexapps/blob/master/exports/openai-files-sample.zip
アップロードしたファイルは、OpenAIの画面からも確認できます。
ファイルのアップロードは、ファイルを選択するページ・アイテムP1_FILE(タイプはファイルのアップロード)とボタンUPLOADで実装しています。ストレージのタイプとして表APEX_APPLICATION_TEMP_FILESを選択します。
ボタンUPLOADをクリックしたときに実行されるプロセスには、以下のコードを記述しています。
ターゲットの設定ではページはページ1、つまり同じページに遷移させています。file_idをページ・アイテムのP1_IDに渡しています。リクエストの値は、ダウンロードの場合はDOWNLOAD、削除の場合はDELETEを渡し、レンダリング前に作成しているプロセスを呼び出す条件に使用します。
ファイルをダウンロードするプロセスは、レンダリング前のヘッダー前に作成しています。実行するコードとして、以下を記述します。
サーバー側の条件のタイプにリクエスト = 値を選択し、値としてDOWNLOADを設定します。
削除もほぼ同じ実装です。削除を行なうプロセスのコードとして、以下を記述します。
サーバー側の条件のタイプにリクエスト = 値を選択し、値としてDELETEを設定します。
OpenAIのFilesにアップロードされているファイルの一覧は、以下のURLを呼び出すことで取得できます。
https://api.openai.com/v1/files
最低1つでもファイルがアップロード済みであれば、RESTデータ・ソースの作成時にレスポンスを自動的に認識してくれます。
OpenAIのFiles APIを使ったAPEXアプリケーションの説明は以上です。
Oracle APEXのアプリケーション作成の参考になれば幸いです。
完