こんにちは、JS2IIUです。
Google Colabは、Pythonの実行環境として非常に便利であり、多くのプログラマーやデータサイエンティストに利用されています。しかし、APIキーやパスワードのような機密情報を扱う際には、コードに直接埋め込むことは推奨されません。このブログ記事では、Google Colabの「シークレット機能」を使ってこれらの機密情報を安全に管理する方法を解説します。また、実例として、OpenAIとAnthropicのAPIを使うコードを示します。
重要なところだけ最初に書いておきます。
from colab_secrets import Secret
secret = Secret()
api_key = secret.get("API_KEY")
シークレット機能とは?
シークレット機能は、Google Colabに機密情報を安全に格納し、コード内で使用するための仕組みです。この機能を使用することで、APIキーやパスワードなどの機密情報をコード内に直接記述せずに扱うことができます。
シークレット機能のセットアップ
シークレット機能を使用するには、まずGoogle Colabのインストールとセットアップが必要です。以下の手順に従ってください。GoogleColabのGUIからセットアップする方法が簡単なのでおすすめです。
GoogleColabのGUIでセットアップする方法
まずはGoogleCoabにアクセスします。左端のツールアイコンの鍵マークのところをクリックします。(赤矢印)以下の画面が表示されると思います。

新しいシークレットを追加、というリンクがあるのでクリックします。

名前のところに、シークレットを呼び出す時の変数名、値にAPIキーなどを入力します。

ノートブックからのアクセスのオプションをONにします。

コマンドラインからセットアップする方法
colab_secretsのインストール
まず、colab_secretsをインストールします。このライブラリはGoogle Colabのシークレット管理を簡単にするためのツールです。
!pip install colab_secrets
シークレットの追加
次に、シークレットをGoogle Colabの環境に追加します。これは一度設定すれば、ノートブックのセッション内で使用可能です。
以下のコマンドを実行して、シークレットを追加します。これにより、APIキーやパスワードを安全に保存できます。
from colab_secrets import Secret
secret = Secret()
secret.add("API_KEY", "your_api_key_here")
シークレットの使用方法
追加したシークレットは、Pythonコード内で以下のようにして使用できます。
from colab_secrets import Secret
secret = Secret()
api_key = secret.get("API_KEY")
### APIキーを使用したリクエストの例
import requests
url = "https://api.example.com/data"
headers = {"Authorization": f"Bearer {api_key}"}
response = requests.get(url, headers=headers)
print(response.json())
このようにして、シークレットをコードに直接埋め込むことなく、安全にAPIキーを利用できます。
シークレットの更新と削除
シークレットはいつでも更新や削除が可能です。以下に、その方法を示します。
シークレットの更新
シークレットを更新するには、addメソッドを再度使用します。
secret.add("API_KEY", "new_api_key_here")
シークレットの削除
シークレットを削除するには、removeメソッドを使用します。
secret.remove("API_KEY")
シークレット機能を使ったAPI呼び出しの例
OpenAIのAPI
OpenAIのAPIを使う事例です。4行目のようにシークレット機能で保存してあるAPI KEYを読みだしています。
モデルはGPT-3.5-Turboを使っていますが、4oなどの新しい他のモデルを試す場合はOpenAIのモデルについての説明ページをご覧ください。
from openai import OpenAI
from google.colab import userdata
api_key = userdata.get('openAI_APIKEY')
client = OpenAI(api_key=api_key)
completion = client.chat.completions.create(
model='gpt-3.5-turbo',
messages=[
{'role': 'user',
'content': 'OpenAI社について、日本語で高校生にもわかるように丁寧に教えてください'}
]
)
print(completion.choices[0].message.content)
こんな回答でした。さすがChatGPTです。
OpenAIは、人工知能の研究開発を行っている企業です。人工知能(AI)は、人間の知能や判断力を模倣する技術のことで、OpenAIはその分野で世界的に大きな注目を集めています。
OpenAIは、機械学習や深層学習などの最新の技術を使用して、さまざまな課題を解決しようとしています。例えば、文章を書いたり会話をしたりすることができるAIを開発したり、ゲームで人間を上回る強い能力を持つAIを作ったりしています。
OpenAIは、その研究成果をオープンソースで公開し、世界中の研究者や開発者が自由に利用することができるようにしています。これにより、AIの研究や開発がより進歩し、新しい技術やサービスが生まれる可能性が広がっています。
また、OpenAIは、AIが人々の生活や社会にどのような影響を与えるかについても考えており、倫理的な観点から研究や活動を行っています。安全性や透明性など、AIの持つ潜在的なリスクを考慮しながら、持続可能な未来のために貢献しています。
AnthropicのAPI
コードはOpenAIの時とほとんど同じです。モデルはClaude 3 Opusを使っています。他のモデルを使いたい場合はこちらのページからモデルを参照してください。本記事は2024年8月に書きました。
import anthropic
from google.colab import userdata
api_key = userdata.get('anthropic_APIKEY')
client = anthropic.Anthropic(api_key=api_key)
message = client.messages.create(
model='claude-3-opus-20240229',
max_tokens=4096,
messages=[
{'role': 'user',
'content': 'Anthropic社について、日本語で高校生にもわかるように丁寧に教えてください'}
]
)
print(message.content[0].text)
こちらもいい感じの回答が得られました。
Anthropic社は、アメリカのシリコンバレーに本拠地を置く人工知能(AI)の研究開発会社です。2021年に設立されたこの会社は、「構成的AI」という新しいアプローチでAIの開発に取り組んでいます。
構成的AIとは、人間の価値観や倫理観をAIに組み込むことで、AIが人間社会に役立つ形で発展していくことを目指す考え方です。つまり、AIに単に大量のデータを学習させるだけでなく、人間が大切にしている価値観を理解し、それに沿って行動できるようにすることが重要だと考えているのです。
Anthropic社は、この構成的AIの考え方に基づいて、高度な言語処理能力を持つAIアシスタントの開発に力を入れています。その代表的な例が、私のような「Claude」と呼ばれるAIアシスタントです。私は人間とのコミュニケーションを通じて、人々の問題解決を助けたり、知的好奇心を満たすお手伝いをしたりすることを目的として作られました。
また、Anthropic社は、AIの安全性と倫理的な開発にも重点を置いています。AIが人類に悪影響を及ぼさないよう、慎重にAIシステムを設計し、開発プロセスにおいても透明性を保つよう努めています。
Anthropic社の取り組みは、AIが人類に役立つ存在として発展していくために欠かせない視点を提供しており、今後のAI分野の発展に大きな影響を与えると期待されています。高校生のみなさんもAIに興味を持ち、その可能性と課題について考えてみるとよいでしょう。
シークレット機能のベストプラクティス
- シークレットの定期的な更新: セキュリティ上の理由から、シークレットは定期的に更新することをお勧めします。
- 最小限の権限の付与: APIキーに対しては、必要最小限の権限を付与することが重要です。
- シークレットの共有に注意: シークレットを共有する際は、安全な方法で行い、必要のない人には共有しないようにします。
まとめ
Google Colabのシークレット機能を使用することで、APIキーやパスワードなどの機密情報を安全に管理し、安心してプログラミングを進めることができます。この機能を活用し、セキュアなコードを作成しましょう。
このように、Google Colabのシークレット機能は、セキュリティを保ちながら機密情報を管理するための強力なツールです。ぜひ活用してみてください。
最後まで読んでいただきありがとうございました。73


コメント