はじめに
OCI Generative AI を使用する場合、API キーとその関連情報の設定が必要です。この記事では、Dify に必要な認証情報を効率的に生成する方法を説明します。
1. 必要な情報の準備
OCI Generative AI を使用する前に、以下の情報が必要です。
- ユーザー OCID: OCI アカウントのユーザー ID
- フィンガープリント: OCI API キーのフィンガープリント
- テナント OCID: OCI アカウントのテナント ID
- PEM ファイルのパス: OCI API キーの PEM ファイルのパス
- リージョン: 使用する OCI リージョン
- コンパートメント OCID: 使用するコンパートメントの OCID
2. OCI設定ファイルを活用した効率的な認証情報生成
既存のOCI設定ファイルを活用することで、より効率的に認証情報を生成できます。dify-on-oci-guideプロジェクトで提供されているスクリプトを使用すると、必要な情報を自動的に読み取ることができます。
2.1. スクリプトの入手と実行
curl -O https://raw.githubusercontent.com/engchina/dify-on-oci-guide/main/tools/oci-dify-credentials-generator.sh
chmod +x oci-dify-credentials-generator.sh
./oci-dify-credentials-generator.sh <profile> <compartment_ocid>
例:
./oci-dify-credentials-generator.sh DEFAULT ocid1.compartment.oc1..aaaaaaaa
2.2. スクリプトの機能
このスクリプトは以下の処理を行います:
- 指定されたプロファイル名とコンパートメントOCIDを受け取ります
-
~/.oci/configファイルから指定されたプロファイルの設定情報を読み取ります - 必要な設定項目(ユーザーOCID、フィンガープリント、テナントOCID、リージョン、PEMファイルパス)が存在するか検証します
- 設定情報とPEMファイルの内容をBase64エンコードし、Difyで使用できる形式で出力します
2.3. 出力例
Reading [DEFAULT] configuration from config file...
Configuration loaded:
User OCID: ocid1.user.oc1..aaaaaaaa
Fingerprint: 11:22:33:44:55:66:77:88:99:00:aa:bb:cc:dd:ee:ff
Tenancy OCID: ocid1.tenancy.oc1..aaaaaaaa
Region: ap-osaka-1
PEM file path: /home/opc/.oci/oci_api_key.pem
Compartment OCID: ocid1.compartment.oc1..aaaaaaaa
[Dify: oci api key config file's content]
b2NpZDEudXNlci5vYzEuLmFhYWFhYWFhLzExOjIyOjMzOjQ0OjU1OjY2Ojc3Ojg4Ojk5OjAwOmFhOmJiOmNjOmRkOmVlOmZmL29jaWQxLnRlbmFuY3kub2MxLi5hYWFhYWFhYS9hcC10b2t5by0xL29jaWQxLmNvbXBhcnRtZW50Lm9jMS4uYWFhYWFhYWE=
[Dify: oci api key file's content]
LS0tLS1CRUdJTiBQUklWQVRFIEtFWS0tLS0tCk1JSUVwQUlCQUFLQ0FRRUEwZmR5M0ZRVkFtRXRzOVZmSGtNOEFtWk9XbVhUMmNWZU5SdTZPYzZQVEFPU3ZYaXoKLy4uLgotLS0tLUVORCBQUklWQVRFIEtFWS0tLS0tCg==
2.4. メリット
- 手動で情報を入力する必要がなく、ミスを減らせます
- 既存のOCI設定を再利用できるため、効率的です
- 複数の環境やプロファイルで簡単に切り替えられます
3. 手動での認証情報生成(代替方法)
既存のOCI設定ファイルがない場合や、手動で認証情報を生成したい場合は、以下の方法を使用できます。
3.1. シェルスクリプトの作成
以下のシェルスクリプトを作成します:
vi genai-credentials.sh
---
#!/bin/bash
# 以下を自分の情報に置き換える
user="ユーザー OCID"
fingerprint="フィンガープリント"
tenancy="テナント OCID"
pem_file_path="PEM ファイルのパス"
# 以下は変更しない
compartment_ocid="コンパートメント OCID"
region="ap-osaka-1" # 使用するリージョンを指定
# 複合文字列の作成
combined_string="$user/$fingerprint/$tenancy/$region/$compartment_ocid"
# 複合文字列を Base64 結合
encoded_combined_string=$(echo -n "$combined_string" | base64 --wrap=0)
# 結果を表示
echo "[Dify: oci api key config file's content]"
echo "$encoded_combined_string"
# PEM ファイルの存在チェック
if [ ! -f "$pem_file_path" ]; then
echo "PEM ファイルが見つかりません: $pem_file_path"
exit 1
fi
# PEM ファイルを Base64 結合
encoded_pem_content=$(base64 --wrap=0 "$pem_file_path")
# 結果を表示
echo
echo "[Dify: oci api key file's content]"
echo "$encoded_pem_content"
---
3.2. シェルスクリプトの説明
3.2.1. 変数の設定
-
user: OCI アカウントのユーザー OCID を指定します。 -
fingerprint: OCI API キーのフィンガープリントを指定します。 -
tenancy: OCI アカウントのテナント OCID を指定します。 -
pem_file_path: OCI API キーの PEM ファイルのパスを指定します。 -
compartment_ocid: 使用するコンパートメントの OCID を指定します。 -
region: 使用する OCI リージョンを指定します。
3.2.2. 複合文字列の作成
combined_string="$user/$fingerprint/$tenancy/$region/$compartment_ocid"
この行では、ユーザー OCID、フィンガープリント、テナント OCID、リージョン、コンパートメント OCID を / で区切った文字列を作成します。
3.2.3. Base64 結合
encoded_combined_string=$(echo -n "$combined_string" | base64 --wrap=0)
この行では、作成した複合文字列を Base64 結合します。Dify に必要な設定ファイルの内容として使用します。
3.2.4. PEM ファイルの処理
if [ ! -f "$pem_file_path" ]; then
echo "PEM ファイルが見つかりません: $pem_file_path"
exit 1
fi
encoded_pem_content=$(base64 --wrap=0 "$pem_file_path")
この行では、PEM ファイルの存在を確認し、存在する場合に PEM ファイルの内容を Base64 結合します。
4. 結果の確認
どちらの方法でも、スクリプトを実行すると、以下のような出力が表示されます。
[Dify: oci api key config file's content]
<Base64 結合された複合文字列>
[Dify: oci api key file's content]
<Base64 結合された PEM ファイルの内容>
これらの出力を Dify に必要な設定ファイルとして使用します。
5. 注意事項
- セキュリティ: API キーと PEM ファイルは非常に重要な情報です。これらの情報を第三者に漏洩しないように注意してください。
- ファイルの保管: 作成した設定ファイルも同様に重要な情報です。安全な場所に保管してください。
- リージョン: 使用するリージョンを正しく指定してください。指定したリージョンに存在しないリソースを使用するとエラーが発生します。
6. 終わりに
この記事では、OCI Generative AI を使用するための Dify 認証情報を生成する方法を説明しました。既存のOCI設定を活用する効率的な方法と、手動で認証情報を生成する代替方法の両方を紹介しました。OCI と Dify を使用する際には、セキュリティに十分注意してください。