質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
React Native

React Nativeは、ネイティブモバイルアプリ(iOS/Android)を作成できるJavaScriptフレームワークです。Reactと同じ設計のため、宣言的なコンポーネントでリッチなUIを開発することが可能です。

terminal

Terminalは、Apple社のmacOSに標準で付属しているUNIX端末エミュレータ。UNIXコマンドによってMacの操作および設定を行うことができます。

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

Q&A

解決済

1回答

475閲覧

Open AI から発行されらAPI_Keyを環境変数としてmacOSに設定する方法と削除する方法を教えてください

echizeyayota

総合スコア104

React Native

React Nativeは、ネイティブモバイルアプリ(iOS/Android)を作成できるJavaScriptフレームワークです。Reactと同じ設計のため、宣言的なコンポーネントでリッチなUIを開発することが可能です。

terminal

Terminalは、Apple社のmacOSに標準で付属しているUNIX端末エミュレータ。UNIXコマンドによってMacの操作および設定を行うことができます。

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

0グッド

0クリップ

投稿2023/12/13 13:28

編集2023/12/14 00:46

下記の質問についてご存知の方がいらっしゃいましたらご教示を願います。

【質問の主旨】

現在、Open AIのDALLE 3を使って画像生成アプリを作成しています。
DALLE 3にアクセスするためにはあらかじめOpen AI から発行されらAPI_Keyを環境変数としてmacOSに設定しておくことが必要です。

環境変数を設定する方法とその環境変数を削除するための方法を具体的なコマンド手順を交えて教えてください。

【質問の補足】

1.設定したい環境変数の値

設定したい環境変数はOPENAI_API_KEY=sk-〇〇〇〇〇〇〇〇 です。

2. MacのShell確認

自分が使っているMacのShellはbashです。

$ echo $SHELL /bin/bash

3. macOSにおける環境変数の設定

macOSで環境変数を設定するためにこちらの記事を読んでみました。

ただこの記事を繰り返し読んでも、OPENAI_API_KEY=sk-〇〇〇〇〇〇〇〇を環境変数として設定するためには具体的にどのようなコマンドを実行すれば良いのか分かりません。

例えばまず`ホームディレクトリから1. $ open ~/.bash_profileを実行し、2. export PATH=通したいパス:$PATHと記述し、最後に3. source ~/.bash_profileとして更新すれば良いと思いますが、2の手順でPATH=通したいパスとは何を指しているのかよく分かりません。

また1から3の手順の間のどこでOPENAI_API_KEY=sk-〇〇〇〇〇〇〇〇を記述するのかもよく分かりません。2の手順の意味がよく分からないので、どのように書いて試すのか分からない状態です。

4. 環境変数の自動読み取り機能

Zennstackoverflowによるとnpmのopenaiで4.12.1以上のバージョンは環境変数をプロジェクト毎に設定しなくとも、Open AIが自動で環境変数に記述されているAPI_keyを読み取ってくれるそうです。

Open AI の公式ドキュメントでCreate imageのリクエスト例を読んでも、API_keyをheaderに仕込むための記述はありません。

そのopenaiパッケージを使っている、自分が記述したserver.jsの内容は以下の通りです。

server.js

const PORT = 8000; const OpenAI = require('openai'); const express = require("express"); const cors = require("cors"); // If you set environment variable process.env.OPENAI_API_KEY, // the env variable will be automatically picked. const openai = new OpenAI(); const app = express(); app.use(cors()); app.use(express.json()); require("dotenv").config(); app.get("/", (req, res) => { res.status(200).json({ message: "Testing whether the API works" }); }); app.post("/images", async (req, res) => { try { const image = await openai.images.generate({ model: "dall-e-3", prompt: "A cute baby sea otter" }); console.log(response.data.data); res.send(response.data.data); } catch(error) { console.error(error); } }); app.listen(PORT, () => console.log("Your server is running on PORT " + PORT));

なお、このserver.jsを含むプロジェクト全体のコードはGitHubのリポジトリにまとめています。

5. 環境変数の削除方法について

Open AIのAPI_Keyは今後変更するかもしれません。その時のために環境変数の削除方法についても教えてください。

6. macOSのバージョン

自分が使用しているmacOSはmacOS Big Surでバージョン11.7.10です。

以上、ご確認よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

echizeyayota

2023/12/13 13:46

【質問の補足】3において、環境変数を設定するために自分がわかるコマンドまで記述しました。
hoshi-takanori

2023/12/14 01:13

API key はプロジェクトごとに異なる可能性がありますし、プロジェクトの外部で不用意に使用されるべきではないので、シェルの環境変数にするのはお勧めしません。 server.js では dotenv をお使いのようですが、dotenv というのはそのプロジェクトの .env という隠しファイルに記述した内容を環境変数として取り込むためのものなので、それを活用するのが良いかと。具体的にはまず .env というファイルに OPENAI_API_KEY=sk-〇〇〇〇〇〇〇〇 と書いて、server.js では環境変数を使用する前に dotenv で読み込む、つまり require("dotenv").config(); // .env から環境変数を取り込む const openai = new OpenAI(); // ここで環境変数が使われる という順番にすると良いでしょう。 ちなみに、open コマンドは単にファイルを開くためのコマンドで、Finder でそのファイルをダブルクリックするのと同等です。で、open ~/.bash_profile というのは ~ (ホームディレクトリ) にある .bash_profile という bash 初期設定スクリプトを開くコマンドで、多分テキストエディットで開かれると思います。その先は、自分でこのファイルを適切に編集して保存する必要があります。
echizeyayota

2023/12/14 07:05 編集

hoshi-takanori さん。 いつもコメントありがとうございます。 いただいたコメントと下記のページを参考することで、API_Keyを環境変数として設定することなく、プロジェクト単位でAPI_Keyを設定できるようになりました。詳細は回答の内容でまとめています。 今後ともどうぞよろしくお願いします。 https://pipedream.com/community/t/how-to-resolve-openai-api-key-error-when-setting-up-speech-to-text-to-notion-using-openai-chat/8433/8
guest

回答1

0

自己解決

server.jsを以下のように記述することで、プロジェクト内でAPI_Keyを読み取れるようになりました。

new OpenAIの引数としてオブジェクトのapiKeyを入力しています。このapi_key のオブジェクト値を require("dotenv").config();で..envファイルに実際に記述したsk-〇〇〇〇〇〇〇〇 を読み取るようにしています。

const PORT = 8000; require("dotenv").config(); const OpenAI = require('openai'); const express = require("express"); const cors = require("cors"); const openai = new OpenAI({ apiKey: process.env.OPENAI_API_KEY }); const app = express(); app.use(cors()); app.use(express.json()); app.get("/", (req, res) => { res.status(200).json({ message: "Testing whether the API works" }); }); app.post("/images", async (req, res) => { try { const response = await openai.images.generate({ model: "dall-e-3", prompt: "A cute baby sea otter" }); console.log(response.data); res.send(response.data); } catch(error) { console.error(error); } }); app.listen(PORT, () => console.log("Your server is running on PORT " + PORT));

投稿2023/12/14 07:01

編集2023/12/15 00:31
echizeyayota

総合スコア104

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

otn

2023/12/14 14:03

> 環境変数を設定するのではなく、 いいえ。dotenv は、環境変数をセットする方法の一つなので、 .envファイルに書いて、require("dotenv").config() とする方法で環境変数を設定したと言うことです。 「環境変数を設定することなく」というのは、例えば、 const openai = ~~~ の部分を、 const openai = new OpenAI({ apiKey: 'sk-〇〇〇〇〇〇〇〇'}); のように文字列で値を書くことです。プログラム中に直接キーを書くのを避けるのであれば、自分で独自にキーを書くファイルを作って、プログラムではそこから読み取ってもいいです。
echizeyayota

2023/12/15 00:32

otn さん。 コメントありがとうございます。アドバイスを参考にして、回答の内容を一部修正しました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問