![見出し画像](https://assets.st-note.com/production/uploads/images/105317584/rectangle_large_type_2_3d139207e1d8a904395073a3d9a32f05.png?width=1200)
チャレンジGPT_7.TerminalでPythonでAPIでgpt-3.5-turbo
前回までに、HelloWorldをクリアした私。
GPT君がいれば、ウェブページは簡単に作れることはわかったので、
今回は、PythonでchatGPTを呼び出したいと思います。
で、紆余曲折あって、出来たコードがこちら!
出来上がったコード
import openai
# APIキーを設定してください。例: 'your-api-key'
api_key = "ここにAPIをコピペする"
openai.api_key = api_key
def generate_text(prompt, role, conversation_history):
# ユーザーの質問を会話履歴に追加
conversation_history.append({"role": "user", "content": prompt})
# GPT-3.5モデルを使用してテキストを生成
response = openai.ChatCompletion.create(
model="gpt-3.5-turbo",
messages=[{"role": "system", "content": f"You are a {role}."}] + conversation_history,
max_tokens=2000,
n=1,
temperature=0.8,
)
message = response.choices[0].message['content'].strip()
# アシスタントの回答を会話履歴に追加
conversation_history.append({"role": "assistant", "content": message})
return message
if __name__ == "__main__":
# ロールプレイのモデルをユーザーに入力してもらう
role = input("ロールプレイのモデルを指定してください。日本語でも大丈夫です(例: 偉い科学者): ")
# 会話履歴を格納するためのリストを初期化
conversation_history = []
while True:
# ユーザーに質問を入力してもら
input_prompt = input("=====================質問を入力してください。日本語でも大丈夫ですが、改行すると変になるので、改行しないほうがよさそうです(終了するには'q'を入力)===========================: ")
# 入力を受け付けたことを表示
print("====================================入力を受け付けました====================================")
# 終了条件の確認
if input_prompt.lower() == 'q':
break
# GPT-3.5からの回答を生成
generated_text = generate_text(input_prompt, role, conversation_history)
# 回答を表示
print("===========================GPT-3.5からの回答===========================:", generated_text)
これをターミナルでPythonすると動く。
動かし方
テキストエディタ Visual Studio Codeを開く
まだダウンロードしてない方はコチラ↓
いい感じのフォルダに新規ファイルを作成して、いい感じの名前をつける
例:「app.py」などと言う名前にする
![](https://assets.st-note.com/img/1683802619747-TTi5bK8liB.png)
でも、何回もテストで作ってると、何でもかんでもapp.pyになるので、ちゃんと考えてつけないといけない。
作成したファイルに、出来上がったコードを貼る
コピペ。
![](https://assets.st-note.com/img/1683802739374-Xtsrzzq0bh.png?width=1200)
コピペだけの人生ですよ。
「ここにAPIをコピペする」のところに、APIキーをコピペして、上書き保存する
APIキーは、以下から取得しておく
ここはお金が絡むので、「Hard limit」の設定だけは、確実に。
Google翻訳の拡張機能がないと、詰むる。
人類の叡智大集合。
アカウントを新規で作成する(GPT4がつかえる月額の有料契約とは別)
作成しただけで、無料で18ドル分の課金枠が付与されてるはず
個人利用だと、この無料枠だけで結構なテストができる
ちなみに、これだけ「あーでもないこーでもない」している今時点でも↓くらい。無料枠も使い切ってない。
![](https://assets.st-note.com/img/1683978027756-EH0WsYQGE7.png?width=1200)
アカウントが用意できたら、Open AIにログイン
Open AIにログインしたら、右上のユーザーアイコンをクリック
「View API keys」をクリック
![](https://assets.st-note.com/img/1683978227889-3djKD21EW9.png)
「Create new secret key」ボタンをクリックして、API keyを新規で作る
![](https://assets.st-note.com/img/1683978377127-7YoNEgh3SZ.png?width=1200)
作成されたAPIキーの画面
![](https://assets.st-note.com/img/1683978540177-LipWtf2qd5.png)
コピーし忘れたら、削除して再作成すべし。
「従量課金(使ったら使った分だけお金がかかるの)」なので、左のメニューから「Usage limits」を選択して、Hard limit(これに達すると使用できなくなる)と、「Soft limit」(これに達すると通知メールが来る)を設定する
![](https://assets.st-note.com/img/1683978767483-9qPdffyoXY.png?width=1200)
ちなみに、私は英語がからっきしなので、全部Google翻訳に任せてる
![](https://assets.st-note.com/img/1683979008854-GpZbRGqxwT.png?width=1200)
「ターミナル」から、「New Terminal」を開く
「Visual Studio Code」を選択した状態で、モニタ画面の一番上を見るとある。
![](https://assets.st-note.com/img/1683803008824-l1I0satHOn.png)
これがなかなか見つけられなくてググった。
なんでもかんでも上に情報を集約するの止めてほしい。
アプリの中に分かりやすく表示しておいてほしい。
「Python」と「半角スペース」と「いい感じにつけた名前」を打つ
例:
Python app.py
これを打っても動かないときは、大抵、ファイルの保管場所(フォルダのディレクトリ)が違うとこにある。
これを文字で指定しなきゃいけないのが、Windows世代の我々には辛いところ。
アイコンが表示されてて、それをダブルクリックして階層に辿り着きたい。
そんな面倒なことやらなくても、「Visual Studio Code」だったら、右クリックで起動できる
動かしたいファイルを右クリックで「ターミナルでPythonファイルを実行する」
今回の場合は、「app.py」を右クリック
![](https://assets.st-note.com/img/1683803644414-Sia1pcjWqR.png)
右クリックがなかった頃のMacユーザーって、ホントに全部ショートカットキーでやってたの?
覚えるの大変
「ロールプレイのモデルを指定してください。日本語でも大丈夫です(例: 偉い科学者):」とターミナルに表示されたら成功
表示されなかったら、エラーメッセージをGPT4に入れて解決方法を聞く
ここまでは、APIキー入れてなくても動く
いつものように文章(プロンプト)を入れると、回答してくれるはずです
■わたし >>
CO2が大変だと 伝え聞いています。残りの人生、どのように過ごせば、偉い科学者になれるか教えて下さい
■gpt-3.5-turbo >>>
CO2の問題は現在世界中で大きな問題となっており、解決に向けた研究や技術開発には多くの科学者が必要とされています。偉い科学者になるためには、以下のようなことが重要です。
1. 勉強すること:科学者になるためには、専門的な知識が必要です。学校や大学で科学を学ぶことが重要です。
2. 研究を行うこと:研究経験は科学者になるために必要不可欠です。研究室での経験やインターンシップなどを通じて、研究の技術や知識を身につけましょう。
3. 発表すること:研究結果を発表することは、科学者にとって非常に重要なスキルです。論文や学会発表など、さまざまな形で自分の研究成果を発表することが大切です。
4. 多様な経験を積むこと:科学者には多様な知識やスキルが必要です。例えば、コミュニケーション能力やチームワーク能力など。異なる分野の研究や海外での研究経験など、多様な経験を積むことが重要です。
5. 持続可能な社会を目指すこと:CO2問題を解決するためには、持続可能な社会を目指すことが必要です。科学者として、環境問題に対して貢献する研究や技術開発を行い、持続可能な社会の実現に向けて努力しましょう。
これらのことを実践し、科学者としてのスキルや知識を磨くことで、偉い科学者になることができます。
![](https://assets.st-note.com/img/1683803904921-NPIgsLMnoq.png?width=1200)
工夫したところ
単に GPTにコードを書いてもらうと、トークン数を少なく見積もられると思うので、一回あたりに使うトークン数を増やしとく
↓ここ
max_tokens=2000
2000トークンに変更してある。
たくさんトークン使った方がいい感じに会話してくれる気がする。
ユーザーの質問を会話履歴に追加
これはあまり推奨されないかもしれないけど、やり取りの内容を覚えて欲しいので、履歴も保管する
その分トークン量は増えると思うので、お金がかかるけど、つっても、2円とか、そう言うレベル
自分で使うだけなら1,000円も使わないと思う。
ロールプレイのモデルをユーザーに入力させる
「あなたは誰です」のプロンプトの部分を、半強制的に指定させることで、アウトプットの精度を保つ
なくても全然うごく。
入力を受け付けたことを表示
これがないと、プロンプトを打ったあとの沈黙の時間が耐えられない。
送信後、 GPTが回答するまで、少し待つ時間があるので
「あれ?送信されてる?エンターおしたらいいんだよね?え?シフト+エンターだった?あれ?コマンド?」
ってなるから、ちゃんとプロンプトが送られたよってことを表示してもらう。
まとめ
今回は、ターミナルでPythonを動かして、chat GPTの APIを使って実際にプロンプトを送って回答をもらうところまで、ローカルの環境でやることができました。
もう、これでよいのでは?
俺専用chatGPTができたってことで、よいのでは?
もう勉強終わりでいい?
ダメ?
だめだよね?
うん
次回は、HelloWorldのウェブページと、このPythonのチャット GPTとの連携(ウェブページで入力したプロンプトを元に、チャット GPTから答えを返す)をやってみたいと思います。
一歩一歩進んでる!
快感、、、、
※※※※注意※※※※
一連のnoteは私の業務環境であるMacを基本として書かれています。
生まれてから40年、Windowsしか触ったことのなかった私が(といっても初めてパソコン触ったのは中学生くらいだけど)初めてMacで仕事していることですら脅威なのに、そこからもう一歩進もうとしていることを称賛くださいため、温かい目で見守っていただくとともに、Windowsユーザーの方にはあまり参考にならない部分があるかと思いますので、予めご理解ご了承の上、ご意見ご要望もあるかと存じますが、皆々様のご健勝をお祈りするとともに、今後とも、ご指導ご鞭撻のほど、何卒よろしくお願い申し上げます。