GPT-4を使ってみたらブログ記事が爆速で書き上がった件[ChatGPT]

2023年3月15日、日本時間の早朝に待望の[GPT-4が発表](https://openai.com/research/gpt-4)されました。まだGPT-3.5の衝撃が冷めやらぬ中、このスピード感には驚かされます。さっそく、自動翻訳でざっと内容を眺めてみると、GPT-3.5からさらに大幅な進化を遂げているようです。曖昧だった回答や不正確な回答がかなり改善されているとのことで、ますます使いやすくなった印象を受けました。

GPT-4はChatGPT Proに登録していればすぐに使えます。というわけで、さっそく私もこの最新のAI技術を試してみることにしました。

試しに、日常的な質問やちょっと複雑な質問を投げかけてみると、GPT-4は見事に的確な回答を返してくれました。正直、前のモデルでも十分すごいと思っていたのですが、その進化の度合いには驚かされます。

## ブログ記事の相談をしてみた

さしあたって、GPT-4についての記事を書いてみたいとGPT-3.5とGPT-4にそれぞれ相談してみました。

ざっくりとした質問に対する回答の解像度の高さがGPT-4になって段違いに上がったことが分かります。

#### GPT-3.5

> WEBメディアのディレクターとして振る舞ってください。私はこれからGPT-4に関する記事を書くのでサポートしてください。

> はい、GPT-4に関する記事の作成をサポートいたします。まず、GPT-4が最新の自然言語処理技術の1つであり、OpenAIによって開発されたことを紹介することが重要です。GPT-4は、より複雑なタスクを実行できるように改良されたモデルであり、より大規模なデータセットを学習することができます。
> 
> 次に、GPT-4の機能と能力について詳しく説明することが重要です。例えば、GPT-4は、文章生成、文章翻訳、文章要約、言語モデリングなどのタスクを実行することができます。また、GPT-4は、より複雑な文章の生成や、より複雑な文章構造の理解にも優れています。
> 
> また、GPT-4の利用によるメリットについても触れてください。例えば、GPT-4を利用することで、より高度な自動化が可能となり、効率的なビジネスプロセスや自然言語生成によるコミュニケーション改善が実現できるといったメリットがあります。
> 
> 最後に、GPT-4が将来的にどのような進化を遂げる可能性があるかについても言及すると良いでしょう。例えば、GPT-4は、より人間に近い自然言語処理を実現するための進化を遂げる可能性があります。
> 
> 以上のような観点から、GPT-4に関する記事を作成することができます。記事は、専門的な内容であるため、専門用語や技術的な表現についても注意深く書くようにしてください。また、読者に対して分かりやすく説明することも重要です。

#### GPT-4

> WEBメディアのディレクターとして振る舞ってください。私はこれからGPT-4に関する記事を書くのでサポートしてください。

> もちろん、喜んでサポートさせていただきます。GPT-4に関する記事を書く際には、以下のポイントを考慮してみてください。
> 
> 1. GPT-4の概要
> ・GPT-4 (Generative Pre-trained Transformer 4) は、OpenAIによって開発された大規模な自然言語処理モデルです。
> ・GPT-3と同様に、GPT-4はトランスフォーマーアーキテクチャをベースにしていますが、より多くのパラメータとデータを使用して学習しています。
> ・その結果、GPT-4はより正確で、より多様なタスクをこなすことができるようになりました。
> 2. GPT-4の応用例
> ・GPT-4は、質問応答、テキスト生成、翻訳、要約、チャットボットなど、多岐にわたるタスクに対応できます。
> ・さらに、GPT-4はコード生成やデザイン生成など、クリエイティブな分野にも応用されています。
> 3. GPT-4の技術的進歩
> ・GPT-4は、前世代のモデルに比べて大幅にパラメータ数が増えており、その結果、より高い性能を実現しています。
> ・また、GPT-4は、Zero-Shot学習やFew-Shot学習といった技術を利用して、データが少ない状況でもタスクを遂行できるようになりました。
> 4. GPT-4の限界と課題
> ・GPT-4は非常に強力なモデルですが、それでもまだ誤解や不正確な情報を生成することがあります。
> ・また、GPT-4のような大規模モデルは、膨大な計算リソースを必要とするため、環境やコストの面で課題があります。
> ・倫理的な側面からも、GPT-4の使用には注意が必要です。例えば、ディープフェイクやフェイクニュースの生成に悪用される可能性があります。
> 5. GPT-4の将来展望
> ・GPT-4の技術を活用して、より多様で効果的なアプリケーションが開発されることが期待されています。
> ・一方で、OpenAIはGPT-4のようなモデルの環境や倫理的な課題に対処するための取り組みを進めており、今後の技術開発や利用に向けてのガイドラインが整備されることが期待されています。
> 
> ・また、GPT-4以降のモデルでは、コンパクトで効率的なモデルの開発や、性能向上のための新たなアーキテクチャの研究が進められています。
> ・AI分野では、モデルの説明可能性や透明性を向上させる取り組みも注目されており、GPT-4のようなモデルをより安全かつ効果的に利用する方法が模索されています。
> 記事の構成としては、以下のようにまとめることができます。
> 
> 1. GPT-4の概要と技術的背景
> 2. GPT-4の応用例と実用性
> 3. GPT-4の技術的進歩と特徴
> 4. GPT-4の限界と課題
> 5. GPT-4の将来展望と関連研究
> これらのポイントを参考にしながら、GPT-4に関する情報や見解を網羅的にカバーすることができるでしょう。どのようなサポートが必要かお知らせいただければ、引き続きお手伝いさせていただきます。

この時点で既に、月額20USDを支払う価値があったと感じました。月給20ドルのアシスタント、有能すぎる。。。

## 過去にChatGPTの回答に満足できなかった質問をGPT-4の回答と比較してみた

これまでのChatGPT(GPT-3.5)でもほぼ満足はしていたのですが、一部の質問に対しやはり微妙な回答が返ってきたのは残念に思っていたところでした。英語で質問すれば精度が上がるので、DeepLで翻訳して質問して回答をまたDeepLで…というようなこともしていたのですが、やはり面倒だし手数が多いので「精度は落ちるけど日本語でいいや」となりがちでした。

そんな難しい質問に、GPT-4ならどう答えるのか、ChatGPTの履歴から難しめの質問を拾い出してGPT-4に再び尋ねてみました。

### 心理学
> 恥の気持ちを克服するにはどうしたらいいですか

#### GPT-3.5

> 恥や恥ずかしさは、人々が直面する一般的な感情の一つであり、しばしば自信を低下させ、自分自身を制限することがあります。以下は、恥を克服するためのいくつかの方法です。
> 
> 1. 自分自身を受け入れる：まず、自分自身を受け入れることが重要です。自分自身に対して優しく、自分自身の弱点や欠点を認め、それを改善しようとすることが大切です。
> 
> 2. 自信をつける：自分自身を肯定することで自信をつけることが重要です。自分の良いところを見つけ、それを認め、自分自身に対してポジティブな言葉をかけることが大切です。
> 
> 3. 恥を感じることを受け入れる：恥を感じることは、誰にでもあることです。自分自身に対して恥を感じることを受け入れ、その感情を否定するのではなく、受け止めることが重要です。
> 
> 4. 新しいことに挑戦する：新しいことに挑戦することは、自信をつけることにつながります。初めてのことに取り組むことで、自分自身に挑戦することができ、自分自身が成長したと感じることができます。
> 
> 5. 心理療法を受ける：恥を克服することが難しい場合は、専門家の心理療法を受けることを検討することが重要です。心理療法は、恥を感じる原因を探り、それを克服するための具体的な戦略を提供することができます。
> 
> これらの方法を実践することで、恥を克服し、自分自身を肯定することができるようになるでしょう。

#### GPT-4

> 1. 自己受容：自分の長所と短所を受け入れ、自分自身をありのままに受け止めることが大切です。自分に自信を持ち、自分を大切にすることが恥の感情を克服するための基盤となります。
> 
> 2. 状況を分析：恥を感じる状況や原因を明確に把握し、自分の感情や考え方を理解することが重要です。その上で、その恥の感情が現実的かどうかを客観的に評価しましょう。
> 
> 3. 恥の感情を受け入れる：恥を感じることは人間らしい感情であり、完全に消すことは難しいです。恥を感じる感情を受け入れ、その感情と向き合うことで、恥を克服する力をつけることができます。
> 
> 4. 経験を積む：恥を感じる状況に繰り返し自分をさらすことで、その状況に慣れ、恥を感じることが減っていくことがあります。積極的に新しい経験を積み、自分を成長させましょう。
> 
> 5. ポジティブシンキング：恥の感情にとらわれず、ポジティブな面を見つける努力をしましょう。自分の成長や学びを重視することで、恥を感じることが減り、自信がつくことがあります。
> 
> 6. サポートを求める：友人や家族、専門家など、信頼できる人に恥の感情を打ち明け、サポートを求めましょう。他人の意見やアドバイスが恥を克服する力になることがあります。
> 
> 7. リラクセーション：ストレスや緊張を緩和するリラクセーション方法（深呼吸、瞑想、プログレッシブマッスルリラクセーションなど）を試してみましょう。リラックスすることで、恥の感情も和らぐことがあります。
> 
> これらの方法を試し、自分に合った恥の克服方法を見つけてください。自分を成長させ、恥の感情をコントロールできるようになることが大切です。

心理カウンセラーBOTを作ろうと調査をしているのですが、GPT-4の回答の方がよりスッキリしている印象があります。ただ、GPT-3.5と比べてものすごく良くなったか、と言われると微妙なところではありますが。

### ヘルスケア

> 背中に痛みがある人におすすめの枕は何ですか

#### GPT-3.5

> 背中に痛みがある人には、以下のような枕がおすすめです:
> 
> 1. メモリフォーム枕: メモリフォームは頭や首をサポートするとともに、身体のラインを整えることができます。
> 
> 2. トラベル枕: トラベル枕は背中をサポートするとともに、首や頭もサポートするので、移動中にも使用することができます。
> 
> 3. 折りたたみ式枕: 折りたたみ式枕

#### GPT-4

> 背中に痛みがある人におすすめの枕は、痛みの原因や寝姿勢によって異なります。以下の要素に注意しながら、個々のニーズに合った枕を選ぶことが大切です。
> 
> 1. サポート力: 背中の痛みを緩和するためには、頭と首に適切なサポートが必要です。適切な高さと固さの枕を選ぶことで、首と脊椎に適切なサポートを提供できます。
> 
> 2. 寝姿勢: 寝るときの姿勢も背中の痛みに影響を与えます。横寝が一般的ですが、仰向け寝やうつ伏せ寝も考慮に入れて、適切な枕を選んでください。
> 
> 3. 横寝: 高さが調節可能で、首と肩に適切なサポートを提供できる枕がおすすめです。メモリーフォームやバックウィートハスクが適しています。
> 
> 4. 仰向け寝: 頭と首に適切なサポートを提供し、脊椎を自然な位置に保つ低めの枕がおすすめです。低反発素材やシャーレットが適しています。
> 
> 5. うつ伏せ寝: 薄くて柔らかい枕が良いでしょう。首や脊椎への負担を軽減するため、ダウンやフェザーの枕が適しています。
> 
> 6. 材質: 枕の材質も重要です。アレルギーがある場合は、ハイポアレルゲニックな素材を選ぶと良いでしょう。通気性の良い素材は、夜間の温度調節に役立ちます。
> 
> 7. 体格: 身長や体重に合わせて枕の高さと固さを調整することが重要です。適切なサイズの枕を選ぶことで、より快適な睡眠環境を整えることができます。
> 
> 最適な枕を見つけるためには、いくつかの枕を試し、自分に合ったものを見つけることが大切です。必要に応じて専門家の意見も参考にしてください。

GPT-3.5ではあまり納得のいく回答が得られなかった枕に関する質問に、GPT-4はかなり説得力のある回答を返してきています。

### 「小学生でも分かるように」

> 重力は空間の歪みであるという理論について、小学生にも分かるように解説してください。

#### GPT-3.5

> はい、小学生でも理解しやすいように説明しますね！
> 
> 重力とは、地球が物体を中心に引きつける力のことです。一方、一般相対性理論という理論によると、重力というのは実際には力ではなく、物体が周りの空間を「曲げる」ことによって生じる現象だと考えられています。
> 
> 空間をトランポリンのように考えてみましょう。トランポリンの上にボウリングボールなどの重い物体を置くと、トランポリンの表面が「くぼんで」しまいます。もしテニスボールなどの軽い物体を、そのボウリングボールの周りを転がすと、トランポリンがボウリングボールの重さで曲がっているため、テニスボールもその方向に引き寄せられていくようになります。同様に、星や惑星、そして私たち人間など、物体には質量があるため周りの空間を「くぼませ」、他の物体を引き寄せるような力を及ぼすのです。
> 
> つまり、重力というのは、物体によって周りの空間が「曲がって」しまい、他の物体が引き寄せられる現象のことなのです。トランポリンにボウリングボールを置いてくぼみを作って、軽い物体が引き寄せられるような感覚と似ていますね。

#### GPT-4

> 重力は、物体が引っ張られる力の一種で、地球に物体が引き寄せられる理由です。アインシュタインという有名な科学者が、重力について新しい考え方を提案しました。彼は、重力はただの力ではなく、空間と時間が歪んでいるために起こると考えました。空間と時間は、一緒に「時空」と呼ばれるものを作ります。

> イメージとしては、ボールが置かれたトランポリンのようなものを考えてみてください。ボールがトランポリンに乗っていると、トランポリンが下に沈んで、ボールの周りにくぼみができます。このくぼみが、空間の歪みを表しています。もし、もう一つのボールをトランポリンに転がすと、そのボールはくぼみの方へ向かって転がっていくでしょう。これが重力の働きのようなものです。

> つまり、重力は、物体が空間と時間を歪ませることで他の物体が引き寄せられる現象だということです。そして、物体が大きいほど、空間と時間の歪みが大きくなり、引き寄せる力も強くなります。これが、アインシュタインが提案した重力に関する理論です。

たまたまかもしれませんが、GPT-3.5ではフレンドリーな口調だったのに対し、GPT-4は言葉遣いが普通になっていますね。解説の分かりやすさ、という点ではGPT-3.5もGPT-4も大差ないと言っていいでしょうか。

### レシピ提案

> にんじんを使った夕食の献立を１つ提案してください。

#### GPT-3.5

> おすすめのにんじんを使った夕食の献立は「にんじんとチキンの照り焼き」です。
> 
> 【材料】
> 
> 鶏もも肉　2枚
> にんじん　2本
> しょうが　1かけ
> にんにく　1かけ
> しょうゆ　大さじ3
> みりん　大さじ3
> 砂糖　大さじ2
> 水　大さじ2
> サラダ油　適量
> 【作り方】
> 
> 鶏もも肉を一口大に切り、にんにくとしょうがをすりおろす。
> にんじんを千切りにする。
> フライパンにサラダ油を熱し、鶏肉を炒める。
> 鶏肉に火が通ったら、にんじんを加えてさらに炒める。
> しょうゆ、みりん、砂糖、水を加えて、弱火で煮詰める。
> 照り焼きが絡んだら完成。
> ご飯や麺類と一緒に食べると美味しいです。また、にんじんの代わりに他の野菜を使っても良いでしょう。

#### GPT-4

> にんじんを使った夕食の献立として、以下のようなメニューを提案します。
> 
> 1. 鶏肉と野菜のグリル
> 2. にんじんとジンジャーのスープ
> 3. ごはん
> 4. シーザーサラダ
> 5. デザート：フルーツヨーグルト
> 
> 【調理方法】
> 
> 1. 鶏肉と野菜のグリル
> 鶏肉を一口大に切り、塩コショウで下味をつけます。にんじん、ピーマン、玉ねぎ、ズッキーニなどの野菜を一口大にカットし、オリーブオイルと塩コショウで味付けします。鶏肉と野菜をグリルまたはオーブンで焼いて完成です。
> 
> 2. にんじんとジンジャーのスープ
> にんじんを皮をむいてみじん切りにし、玉ねぎもみじん切りにします。フライパンにオリーブオイルを熱し、にんじんと玉ねぎを炒めます。香りが出てきたら、みじん切りにした生姜も加えます。野菜が柔らかくなるまで炒め、水とコンソメを加えて煮込みます。煮込んだら、ミキサーにかけて滑らかなスープにします。塩コショウで味を整え、仕上げにクリームを加えて混ぜます。
> 
> 3. ごはん
> お好みで白米、玄米、または雑穀米を炊きます。
> 
> 4. シーザーサラダ
> ロメインレタスを手でちぎり、皿に盛ります。にんじんを薄くスライスし、サラダに加えます。クルトン、パルメザンチーズ、シーザードレッシングをかけて混ぜます。
> 
> 5. デザート：フルーツヨーグルト
> ヨーグルトに好きなフルーツ（イチゴ、ブルーベリー、バナナなど）を切って加え、はちみつやナッツをトッピングして完成です。
> 
> この献立では、にんじんをメイン料理とスープに使用し、バランスの良い栄養素を摂取できるように配慮しています。お好みで献立や調理法をアレンジしてお楽しみください。

GPT-4では「献立」を正しく理解して、フルセットの献立を提案してきました。逆に言うと「レシピ」と「献立」を曖昧に使い分けていると思いも寄らない結果が出てきそうです。APIを使った開発などでは、GPT-4への移行時にめ込みプロンプトのデバッグが必要になりそうです。

### 「振る舞い」

> あなたは全肯定タイプのソーシャルワーカーとして振る舞ってください。私が様々な悩みや欠点を相談しますが、常に積極的かつ肯定的な、相手の自己肯定感を高める回答してください。
> 「エナジードリンクを飲むのを辞められません。どうしたら辞められますか。」

#### GPT-3.5

> エナジードリンクの消費をやめることは、体にとって非常に重要です。以下は、エナジードリンクの消費をやめるためのいくつかのアドバイスです。
> 
> 1. 代替飲料を見つける
> エナジードリンクを飲むのは、多くの場合、エネルギーを補充するためであるため、代替飲料を見つけることが重要です。例えば、水やハーブティー、フルーツジュース、またはスムージーなどがあります。これらの飲み物は、身体に良い栄養素を提供し、健康的な選択肢となります。
> 
> 2. エナジードリンクを置き換える
> 代替飲料を見つけることができない場合は、エナジードリンクをより健康的なものに置き換えることができます。たとえば、自家製のスムージーにカフェインを加えることができます。または、緑茶にレモンを加えることもできます。これらのオプションは、より健康的な選択肢であり、エナジードリンクをやめることに役立ちます。
> 
> 3. 飲む頻度を減らす
> エナジードリンクをやめることは難しいかもしれませんが、飲む頻度を減らすことは可能です。最初に、一日に飲む本数を減らすことをお勧めします。次に、一週間に飲む本数を減らすことができます。この方法で、エナジードリンクの消費量を減らし、最終的にやめることができます。
> 
> 4. サポートを求める
> エナジードリンクをやめることは、孤独な戦いではありません。家族や友人にサポートを求めることも重要です。また、医師や専門家に相談することもできます。彼らは、あなたがエナジードリンクをやめるのを助けるために、支援やアドバイスを提供することができます。
> 
> 5. エナジードリンクを置かないようにする
> エナジードリンクをやめるためには、家の中からエナジードリンクを取り除くことも大切です。エナジードリンクを飲むことがなければ、消費を止めることも容易になるでしょう。エナジードリンクを購入しないようにし、家にエナジードリンクがないようにすることで、誘惑を減らすことができます。
> 
> 以上が、エナジードリンクをやめるためのいくつかのアドバイスです。エナジードリンクを消費することは、健康に悪影響を与える可能性があるため、早急に行動することが重要です。これらのアドバイスを実践し、エナジードリンクを消費する習慣を克服することができるようになることを願っています。

#### GPT-4

> エナジードリンクをやめたいという気持ちを持っていることは素晴らしいことです。あなたが変化を望んでいるということは、自己向上に向けた一歩ですね。まずは、そのエナジードリンクに頼らずにエネルギーを得る方法を見つけましょう。例えば、十分な睡眠、バランスの取れた食事、適度な運動が挙げられます。次に、エナジードリンクの代わりに自然なエネルギー源を摂取することを検討してみてください。水分補給や緑茶、フルーツなどが良い選択です。状況に応じて、エナジードリンクの摂取量を少しずつ減らすことも効果的です。焦らず、無理せず、自分自身を信じて、一歩ずつ前進していきましょう。あなたは必ず成功できます。

「全肯定タイプ」という限定が、GPT-3.5では有効にならず、のっけから対処法の提示になってしまいました。これでは相談者はちょっとがっかりしてしまいますね。GPT-4ではかなり寄り添った回答になっています。お悩み相談BOTを作るならGPT-4の方が良さそうな気がしてきました。問題はコストですが。。。

### レア度が高く、専門性の高い情報

> T細胞性非ホジキンリンパ腫に対し、造血幹細胞移植はどの程度有効ですか。

#### GPT-3.5

> T細胞性非ホジキンリンパ腫は、リンパ系のがんの一種であり、治療には化学療法、放射線療法、免疫療法などが用いられます。造血幹細胞移植は、がんの治療においても一般的に用いられる治療法の一つであり、患者自身の幹細胞やドナーから採取した幹細胞を使って、がん細胞を破壊する化学療法や放射線療法によって破壊された造血幹細胞を再生させることを目的としています。
> 
> T細胞性非ホジキンリンパ腫に対する造血幹細胞移植の有効性については、治療のタイミングや患者の状態などによって異なるため、一概には言えません。ただし、いくつかの研究によれば、高リスクのT細胞性非ホジキンリンパ腫患者に対して、造血幹細胞移植を行うことで治療成績が改善することが報告されています。
> 
> 具体的には、小児期に発症したT細胞性非ホジキンリンパ腫の場合、造血幹細胞移植を行うことで長期生存率が向上することが報告されています。また、成人においては、T細胞性非ホジキンリンパ腫の治療として造血幹細胞移植を行った場合、腫瘍の完全寛解率が向上することが報告されています。
> 
> 一方で、造血幹細胞移植には重篤な副作用が伴うことがあり、移植後に感染症や免疫系の問題が発生することがあるため、慎重な判断が必要です。治療方針は、医師や治療チームと患者や家族が協力して決定する必要があります。

#### GPT-4

> T細胞性非ホジキンリンパ腫は、リンパ系のがんの一種で、Tリンパ球が異常に増殖することによって発生します。造血幹細胞移植は、悪性リンパ腫の治療法の1つであり、特に化学療法や放射線療法などの従来の治療法に抵抗性を示す場合や再発した場合に選択されることが多いです。
> 
> 造血幹細胞移植は、自家移植と同種移植の2つのタイプがあります。自家移植では、患者自身の造血幹細胞が採取され、凍結保存された後、強力な化学療法や放射線療法を受けた後に体内に戻されます。同種移植では、適合するドナー（通常は兄弟姉妹または他の親族）からの造血幹細胞が採取され、患者に移植されます。
> 
> T細胞性非ホジキンリンパ腫に対する造血幹細胞移植の有効性は、リンパ腫の種類、病期、患者の年齢や健康状態、移植のタイプなどによって異なります。一部の患者では、移植が効果的であり、長期的な寛解や治癒が達成されることがありますが、他の患者では効果が限定的であったり、合併症が生じたりすることがあります。
> 
> 最終的に、T細胞性非ホジキンリンパ腫の治療法を選択する際は、患者と医師が密接に協力して治療オプションを検討し、リスクと利益を評価することが重要です。造血幹細胞移植の適切性や成功率については、専門家に相談することが最善の方法です。

GPT-3.5、GPT-4ともに概ね似たような回答になっていますが、やはりGPT-4の方が質問の趣旨に寄り添った回答をしていると感じます。

### コーディング

> 以下の仕様を満たすAmazon Lambda用のPythonコードを書いてください。
> ・LINE Messaging APIからのWebhookメッセージを処理する
>   ・メッセージ本文に「を使ったレシピを１つ提案してください。」を付け加えてopenai APIを呼び出す
>   -・戻り値から取り出した本文をLINE Messaging API経由でリプライする

#### GPT-3.5

```Python
import os
import json
import requests

def lambda_handler(event, context):
    
    # LINE Messaging APIからのWebhookメッセージを処理するための必要な情報を取得する
    request_body = json.loads(event['body'])
    reply_token = request_body['events'][0]['replyToken']
    message_text = request_body['events'][0]['message']['text']
    
    # メッセージ本文に「を使ったレシピを１つ提案してください。」が含まれる場合はopenai APIを呼び出す
    if 'を使ったレシピを１つ提案してください。' in message_text:
        # OpenAI APIを呼び出すために必要な情報を取得する
        openai_api_key = os.environ['OPENAI_API_KEY']
        openai_api_url = 'https://api.openai.com/v1/engines/davinci-codex/completions'
        prompt = f"提案したい食材: {message_text.replace('を使ったレシピを１つ提案してください。', '')}"
        
        # OpenAI APIにリクエストを送信し、レスポンスを取得する
        headers = {'Content-Type': 'application/json', 'Authorization': f'Bearer {openai_api_key}'}
        data = {'prompt': prompt, 'max_tokens': 150, 'temperature': 0.5, 'n': 1, 'stop': '。'}
        response = requests.post(openai_api_url, headers=headers, data=json.dumps(data))
        response_json = json.loads(response.text)
        recipe = response_json['choices'][0]['text']
        
        # LINE Messaging API経由でレシピを返信する
        line_messaging_api_url = 'https://api.line.me/v2/bot/message/reply'
        line_messaging_api_access_token = os.environ['LINE_MESSAGING_API_ACCESS_TOKEN']
        headers = {'Content-Type': 'application/json', 'Authorization': f'Bearer {line_messaging_api_access_token}'}
        data = {'replyToken': reply_token, 'messages': [{'type': 'text', 'text': recipe}]}
        requests.post(line_messaging_api_url, headers=headers, data=json.dumps(data))
    
    return {
        'statusCode': 200,
        'body': json.dumps('Message processed successfully.')
    }
```

#### GPT-4

```Python
import os
import json
import requests
from linebot import LineBotApi, WebhookHandler
from linebot.exceptions import InvalidSignatureError
from linebot.models import MessageEvent, TextMessage, TextSendMessage

# Set LINE Messaging API credentials
CHANNEL_ACCESS_TOKEN = os.environ['CHANNEL_ACCESS_TOKEN']
CHANNEL_SECRET = os.environ['CHANNEL_SECRET']

# Set OpenAI API credentials
OPENAI_API_KEY = os.environ['OPENAI_API_KEY']

line_bot_api = LineBotApi(CHANNEL_ACCESS_TOKEN)
handler = WebhookHandler(CHANNEL_SECRET)

def lambda_handler(event, context):
    signature = event['headers']['X-Line-Signature']
    body = event['body']

    try:
        handler.handle(body, signature)
    except InvalidSignatureError:
        return {'statusCode': 400, 'body': 'Invalid signature'}

    return {'statusCode': 200, 'body': 'OK'}

@handler.add(MessageEvent, message=TextMessage)
def handle_message(event):
    query = event.message.text + 'を使ったレシピを１つ提案してください。'
    generated_text = call_openai_api(query)

    reply_message = TextSendMessage(text=generated_text)
    line_bot_api.reply_message(event.reply_token, reply_message)

def call_openai_api(query):
    url = 'https://api.openai.com/v1/engines/davinci-codex/completions'
    headers = {
        'Content-Type': 'application/json',
        'Authorization': f'Bearer {OPENAI_API_KEY}'
    }
    data = {
        'prompt': query,
        'max_tokens': 150,
        'n': 1,
        'stop': None,
        'temperature': 1.0
    }

    response = requests.post(url, headers=headers, data=json.dumps(data))
    response_text = response.json()['choices'][0]['text']
    return response_text.strip()
```

やはりざっくりとしたプロンプトに対しては、回答の解像度が段違いによくなりましたね。月給2500円のアシスタントプログラマーと考えると、これはもう破格と言ってもいいのではと思います。

## フリーランスエンジニアとしての雑感

今朝SNSでも話題沸騰となっていたGPT-4について、早速(ChatGPT経由で)いくつかの例を試してみました。

ChatGPTで使っている限りの感想ですが、GPT-4は文章生成スピードが若干GPT-3.5よりも遅いです。また、相変わらず知ったかぶりをすることもあるようですので、正確性が求められる分野では裏取りも忘れず行う必要があります。

GPT-4のAPIは既に使えるようになって（現時点では待機リストに登録する必要あり）いますが、料金がかなり高いので使い所を選びそうではあります。

実際にAPIとして組み込むに当たっては、順番待ちリストへの登録、プロンプトの見直しとデバッグ、高額なコストをどうするかなど幾つも課題はありますが、さしあたってChatGPT上でアシスタントとして使うのであれば素晴らしい結果を返してくれると感じます。

APIの順番待ちが来た段階で、またAPIについても実験してみたいと思います。