3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【完走賞ゲット-25】OpenAI の ChatGPT の API を公式ライブラリの Python版 を venv による仮想環境で試す(使い方を ChatGPT に聞いてみたりも)

Posted at

はじめに

こちらは、完走賞ゲットのため小ネタを毎日投稿しようとチャレンジする Advent Calendar 2022 の 25日目の記事です(ついに、一人アドベントカレンダーも最後の記事!)。

内容は、昨日書いた以下の記事の別バージョン(Node.js ⇒ Python にしたもの)です。

●【完走賞ゲット-24】OpenAI の ChatGPT の API を公式ライブラリの JavaScript版 を試す(使い方を ChatGPT に聞いてみたりも) - Qiita
 https://qiita.com/youtoy/items/84384ad7a742ea1ce8f5

また、今回のお試しの中では venv を使って進めていきます。

ChatGPT を API 経由で利用する

OpenAI の API を利用するためのシークレットキー

OpenAI の API を利用するためにはシークレットキーが必要です。
その取得方法は、上で掲載していた昨日の記事「OpenAI の API を利用するためのシークレットキー」の部分をご覧ください。

公式情報をもとに Python で API を使う

次に、Python で試してみます。
公式ライブラリの情報をはこちら⇒ https://beta.openai.com/docs/libraries/libraries から確認できます。

これ以降の内容を進める前提として、pipコマンドが使える状態を想定しています。

ChatGPT に聞いてみる(Python版)

この後、実装などを行っていく前に、JavaScript の話の記事を書いた時の思いつきと、同じことをやってみます。具体的には、ChatGPT に API の使い方を聞いてみるという内容です。

以下が「Chat GPT の API を Python で使うためのプログラムを教えて。プログラムはひとまとめにして書いてください。」という内容に対して返ってきた答えです。

回答1
回答2

pip を使ったインストールや、ソースコードの部分は、以下のとおりでした。

pip install openai
import openai

# API キーを設定する
openai.api_key = "YOUR_API_KEY"

# Chat GPT API にリクエストを送信し、生成されたテキストを取得する
response = openai.Completion.create(
    engine="text-davinci-002",
    prompt="What is the weather like today?",
    max_tokens=1024,
    n=1,
    stop=None,
    temperature=0.5,
)

# 生成されたテキストを表示する
print(response["choices"][0]["text"])

ぱっと見では、構文などは問題なさそうな結果のようですが、以下の公式のサンプルとは差異があるものが出てきました...

import os
import openai

# Load your API key from an environment variable or secret management service
openai.api_key = os.getenv("OPENAI_API_KEY")

response = openai.Completion.create(model="text-davinci-003", prompt="Say this is a test", temperature=0, max_tokens=7)

ChatGPT が出してきたものは気になりますが、今回は、そちらは深追いしないことにします。

公式情報をもとに Python で API を使う(venv を利用)

それでは、公式ドキュメントの情報を使って、Python での API のお試しをやっていきます。

venv を使った環境の準備

今回、API のお試しは venv を使った仮想環境で行うことにます。

venv は、Python の 3.3 から標準でついてくる、仮想環境を扱える仕組みです。
詳細は以下の公式ドキュメントをご参照ください。

●venv --- 仮想環境の作成 — Python 3.11.0b5 ドキュメント
 https://docs.python.org/ja/3/library/venv.html

前提条件

これ以降の内容を実行する環境として、Mac を使っています。

venv で仮想環境を作成

それでは、venv で仮想環境を作っていきます。

まずは、以下のコマンドを実行します。以下の myenv という部分は、別の名称でも大丈夫です。

% python -m venv ./myenv

これで、コマンドを実行した場所の直下に myenv という名前で仮想環境が作られました。
この

% . ./myenv/bin/activate

※ 上記について、最初は % ./myenv/bin/activate というコマンドを実行して試そうとしたのですが、そのコマンドの場合は zsh: permission denied: ./.venv/bin/activate という権限絡みで実行をはじかれるメッセージが出てきました

仮想環境の終了

上記の手順を進めた結果、ターミナルの行の先頭に (myenv) という表示が出ていれば、仮想環境を利用できる状態になっています。
これを終了させる場合は、以下のコマンドを利用します。

% deactivate

プログラムの内容や処理の実行

それでは、仮想環境を使って ChatGPT の API を試していきます。

ターミナルの行の先頭に (myenv) という表示が出ている状態で、pip によるインストールを行いましょう。

% pip install openai

上で掲載している公式サンプルに少し手を加えたものを使います。

import os
import openai

openai.api_key = os.getenv("OPENAI_API_KEY")

response = openai.Completion.create(model="text-davinci-003", prompt="Chat GPTについて教えて。", temperature=0, max_tokens=100)
print(response.choices[0].text)

上記のプログラムでは、シークレットキーの指定に環境変数が使われています。
今回は、とりあえずのお試しということで、一時的に環境変数にシークレットキーを設定する形で試します。 export OPENAI_API_KEY=【OpenAI のシークレットキー】 を実行してから、上記のプログラムを pythonコマンドで実行してください。

そして、上記のプログラムを実行した結果、以下のように ChatGPT からのレスポンスを取得・出力できました。
出力結果

ちなみに、 max_tokens: 100 というパラメータ指定をしていた部分の影響で出力は途中で途切れていますが、うまく結果は取得できています。

上記のパラメータを 100 から 400 に変更して、再度、プログラムを実行してみます。
そうすると、以下のように途中で途切れていない文章が取得できました。

GPT(Generative Pre-trained Transformer)は、自然言語処理(NLP)タスクを実行するためのオープンソースの自然言語処理モデルです。GPTは、大規模なテキストコーパスを使用して事前訓練されたTransformerモデルです。GPTは、自然言語処理タスクのための複雑なモデルを構築するための有用なツールとして使用できます。GPTは、文章の生成、文章の解釈、文章の評価、文章の自動生成などのタスクを実行するために使用できます。

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?