ターミナル開いて、PythonプロンプトからChatGPTを使うことはできた。
次はファイルから呼び出すことをします。
プロジェクトフォルダを作成して、「sample.py」ファイルを新規作成
・OpenAI APIの新しいバージョンでは、レスポンスの内容が choices[0].message.content に格納されるようになっているので、古いAPI用の書き方をしている人(私)は注意。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
import openai # openai のインストールに失敗しているとここでエラーが出る # openAIへAPIリクエストを投げて、レスポンスを返却するクラス def getOpenAIResponse(question): openai.api_key="sk-<YOUR API KEY>"# 取得したAPIキーを入力 print(question) # debug response=openai.chat.completions.create( model="gpt-3.5-turbo", messages=[ {"role":"user", "content":question} ], max_tokens=1000, ) responsetext=response.choices[0].message.content.replace('\n', '') print(responsetext) # debug returnresponsetext #(確認用)追加コード question = "これはテストです。何か文書を作って返してください。" response = getOpenAIResponse(question) print("--- 以下、Debug出力 ---") print(response) |
ファイルを実行
上記のコードを書いたら、ターミナルで次のように実行。
※注意:以下のコードはファイルがある場所で実行すること(VSCodeなどでターミナル開いたら、自動的にファイルのある場所で開いてくれるので便利)
1 |
python3 sample.py |
タグを指定して、返却されたコンテンツを囲う
1 2 3 4 5 |
#(確認用)追加コード question = "これはテストです。何か文書を作って返してください。" response = getOpenAIResponse(question) print("--- 以下、Debug出力 ---") print(response) |
上記のコードの箇所に変更を加えていく。
1 2 3 4 5 6 7 8 9 10 11 |
#(確認用)追加コード # 引数で受け取ったHTMLタグで引数contentsを囲う def getFormatContents(tag, contents): returnf"<{tag}>{contents}</{tag}>" question = "面白そうなブログタイトルを考えてください" response = getOpenAIResponse(question) title = getFormatContents("h2", response) print("--- 以下、Debug出力 ---") print(title) |
これで、返ってきたコンテンツを指定したタグで囲うことができた。
しかしこのままでは複数のタイトルが囲われてしまうので、ここはまだ改善が必要。
⇩実際の出力結果例
1 2 3 |
面白そうなブログタイトルを考えてください --- 以下、Debug出力 --- <h2>1. "世界一周バックパッカーの冒険記"2. "料理初心者が挑戦!おうちで作れる美味しいレシピ"3. "パートナーとの究極の旅行記"4. "ビジネスマインドを磨く成功者の日記"5. "ぼっち旅行者が贈る、独自の観光スポットガイド"6. "本気で痩せる!健康オタクのダイエット日記"7. "DIY好きが独自の工作術を伝授"8. "読書好きが語る、感動の一冊レビュー"9. "引き寄せて叶える!マインドフルネスな生き方"10. "毎日が楽しくなるポジティブ思考のコツ"</h2> |
参考サイト
Python ChatGPTを活用してブログを完全自動化:【記事自動作成、自動投稿】②|Yuu's Memo
この記事は、ChatGPTのAPIをPythonから利用し、「ブログ記事を自動で生成させ、更にWordpressへ自動投稿してしまおう!」というブログの運営者にとって、夢の様なチュートリアルの第二回目です!!