はじめに
GPT4-turboとClaude2、Gemini Proに同じ質問をして、回答結果を比較してみました。
環境
- Windows 11
- Python 3.11.5
- langchain
- openai
- boto3
- pandas
- openpyxl
実装
必要なライブラリのインストール
1 2 |
pip install langchain openai boto3 langchain-google-genai pandas openpyxl |
Pythonプログラム
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 |
<span class="kn">import</span> <span class="n">pandas</span> <span class="k">as</span> <span class="n">pd</span> <span class="kn">import</span> <span class="n">os</span> <span class="kn">from</span> <span class="n">langchain.chat_models</span> <span class="kn">import</span> <span class="n">AzureChatOpenAI</span> <span class="kn">from</span> <span class="n">langchain.chat_models</span> <span class="kn">import</span> <span class="n">BedrockChat</span> <span class="kn">from</span> <span class="n">langchain_google_genai</span> <span class="kn">import</span> <span class="n">ChatGoogleGenerativeAI</span> <span class="kn">from</span> <span class="n">langchain.schema</span> <span class="kn">import</span> <span class="n">HumanMessage</span> <span class="n">os</span><span class="p">.</span><span class="n">environ</span><span class="p">[</span><span class="sh">"</span><span class="s">AZURE_OPENAI_API_KEY</span><span class="sh">"</span><span class="p">]</span> <span class="o">=</span> <span class="sh">"</span><span class="s">OpenAIキーを指定</span><span class="sh">"</span> <span class="n">os</span><span class="p">.</span><span class="n">environ</span><span class="p">[</span><span class="sh">"</span><span class="s">AZURE_OPENAI_ENDPOINT</span><span class="sh">"</span><span class="p">]</span> <span class="o">=</span> <span class="sh">"</span><span class="s">OpenAIエンドポイントを指定</span><span class="sh">"</span> <span class="n">os</span><span class="p">.</span><span class="n">environ</span><span class="p">[</span><span class="sh">"</span><span class="s">GOOGLE_API_KEY</span><span class="sh">"</span><span class="p">]</span> <span class="o">=</span> <span class="sh">"</span><span class="s">GoogleAPIキーを指定</span><span class="sh">"</span> <span class="n">df</span> <span class="o">=</span> <span class="n">pd</span><span class="p">.</span><span class="nf">read_csv</span><span class="p">(</span><span class="sh">"</span><span class="s">test.csv</span><span class="sh">"</span><span class="p">)</span> <span class="n">df</span><span class="p">.</span><span class="nf">head</span><span class="p">()</span> <span class="n">queries</span> <span class="o">=</span> <span class="n">df</span><span class="p">[</span><span class="sh">"</span><span class="s">質問</span><span class="sh">"</span><span class="p">].</span><span class="nf">tolist</span><span class="p">()</span> <span class="n">gpt4_responses</span> <span class="o">=</span> <span class="p">[]</span> <span class="n">claude2_responses</span> <span class="o">=</span> <span class="p">[]</span> <span class="n">gemini_responses</span> <span class="o">=</span> <span class="p">[]</span> <span class="n">gpt4_model</span> <span class="o">=</span> <span class="nc">AzureChatOpenAI</span><span class="p">(</span> <span class="n">openai_api_version</span><span class="o">=</span><span class="sh">"</span><span class="s">2023-07-01-preview</span><span class="sh">"</span><span class="p">,</span> <span class="n">azure_deployment</span><span class="o">=</span><span class="sh">"</span><span class="s">gpt-4</span><span class="sh">"</span><span class="p">,</span> <span class="n">temperature</span><span class="o">=</span><span class="mi">0</span> <span class="p">)</span> <span class="n">claude2_model</span> <span class="o">=</span> <span class="nc">BedrockChat</span><span class="p">(</span> <span class="n">model_id</span><span class="o">=</span><span class="sh">"</span><span class="s">anthropic.claude-v2</span><span class="sh">"</span><span class="p">,</span> <span class="n">model_kwargs</span><span class="o">=</span><span class="p">{</span><span class="sh">"</span><span class="s">temperature</span><span class="sh">"</span><span class="p">:</span> <span class="mi">0</span><span class="p">,</span> <span class="sh">"</span><span class="s">max_tokens_to_sample</span><span class="sh">"</span><span class="p">:</span> <span class="mi">16000</span><span class="p">}</span> <span class="p">)</span> <span class="n">gemini_model</span> <span class="o">=</span> <span class="nc">ChatGoogleGenerativeAI</span><span class="p">(</span><span class="n">model</span><span class="o">=</span><span class="sh">"</span><span class="s">gemini-pro</span><span class="sh">"</span><span class="p">)</span> <span class="k">for</span> <span class="n">query</span> <span class="ow">in</span> <span class="n">queries</span><span class="p">:</span> <span class="k">try</span><span class="p">:</span> <span class="n">message</span> <span class="o">=</span> <span class="nc">HumanMessage</span><span class="p">(</span><span class="n">content</span><span class="o">=</span><span class="n">query</span><span class="p">)</span> <span class="n">gpt4_result</span> <span class="o">=</span> <span class="nf">gpt4_model</span><span class="p">([</span><span class="n">message</span><span class="p">]).</span><span class="n">content</span> <span class="n">claude2_result</span> <span class="o">=</span> <span class="nf">claude2_model</span><span class="p">([</span><span class="n">message</span><span class="p">]).</span><span class="n">content</span> <span class="n">gemini_result</span> <span class="o">=</span> <span class="nf">gemini_model</span><span class="p">([</span><span class="n">message</span><span class="p">]).</span><span class="n">content</span> <span class="nf">print</span><span class="p">(</span><span class="sh">"</span><span class="s">あなた:</span><span class="sh">"</span><span class="p">,</span> <span class="n">query</span><span class="p">)</span> <span class="nf">print</span><span class="p">(</span><span class="sh">"</span><span class="s">GPT4の回答:</span><span class="sh">"</span><span class="p">,</span> <span class="n">gpt4_result</span><span class="p">)</span> <span class="nf">print</span><span class="p">(</span><span class="sh">"</span><span class="s">Claude2の回答:</span><span class="sh">"</span><span class="p">,</span> <span class="n">claude2_result</span><span class="p">)</span> <span class="nf">print</span><span class="p">(</span><span class="sh">"</span><span class="s">Geminiの回答:</span><span class="sh">"</span><span class="p">,</span> <span class="n">gemini_result</span><span class="p">)</span> <span class="n">gpt4_responses</span><span class="p">.</span><span class="nf">append</span><span class="p">(</span><span class="n">gpt4_result</span><span class="p">)</span> <span class="n">claude2_responses</span><span class="p">.</span><span class="nf">append</span><span class="p">(</span><span class="n">claude2_result</span><span class="p">)</span> <span class="n">gemini_responses</span><span class="p">.</span><span class="nf">append</span><span class="p">(</span><span class="n">gemini_result</span><span class="p">)</span> <span class="k">except</span> <span class="nb">Exception</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span> <span class="n">gpt4_responses</span><span class="p">.</span><span class="nf">append</span><span class="p">(</span><span class="sh">""</span><span class="p">)</span> <span class="n">claude2_responses</span><span class="p">.</span><span class="nf">append</span><span class="p">(</span><span class="sh">""</span><span class="p">)</span> <span class="n">gemini_responses</span><span class="p">.</span><span class="nf">append</span><span class="p">(</span><span class="sh">""</span><span class="p">)</span> <span class="n">df</span><span class="p">[</span><span class="sh">"</span><span class="s">GPT4 turboの回答</span><span class="sh">"</span><span class="p">]</span> <span class="o">=</span> <span class="n">gpt4_responses</span> <span class="n">df</span><span class="p">[</span><span class="sh">"</span><span class="s">Claude2の回答</span><span class="sh">"</span><span class="p">]</span> <span class="o">=</span> <span class="n">claude2_responses</span> <span class="n">df</span><span class="p">[</span><span class="sh">"</span><span class="s">Gemini Proの回答</span><span class="sh">"</span><span class="p">]</span> <span class="o">=</span> <span class="n">gemini_responses</span> <span class="n">df</span><span class="p">.</span><span class="nf">to_excel</span><span class="p">(</span><span class="sh">"</span><span class="s">result.xlsx</span><span class="sh">"</span><span class="p">,</span> <span class="n">index</span><span class="o">=</span><span class="bp">False</span><span class="p">)</span> |
複数のチャットボット(GPT-4, Claude2, Gemini Pro)を使用してデータフレーム内の質問に答え、結果をExcelファイルに保存するプロセスを実装しています。
- ライブラリのインポート
pandasはデータ操作と分析に使用されます。
osはオペレーティングシステムとのインターフェース機能を提供します。
langchain.chat_modelsからAzureChatOpenAIとBedrockChatをインポートし、これらは異なるチャットボットモデルのインターフェースです。
langchain_google_genaiからChatGoogleGenerativeAIをインポートし、これはGoogleのジェネレーティブAIモデルのインターフェースです。
langchain.schemaからHumanMessageをインポートし、これは人間のメッセージを表すために使用されます。 - 環境変数の設定
Azure OpenAIとGoogle APIのキーが環境変数として設定されます。 - データ読み込み
pandasを使用してCSVファイル(”test.csv”)を読み込み、データフレームdfを作成します。
質問列(”質問”)をリストqueriesに変換します。 - モデルの初期化
AzureChatOpenAI、BedrockChat、ChatGoogleGenerativeAIをそれぞれ初期化して、GPT-4、Claude2、Gemini Proモデルを設定します。 - 質問への回答処理
各質問に対して、三つの異なるモデル(GPT-4、Claude2、Gemini Pro)を使用して回答を生成します。
生成された回答はそれぞれのリスト(gpt4_responses, claude2_responses, gemini_responses)に追加されます。
例外が発生した場合、空の文字列がリストに追加されます。 - 結果のデータフレームへの追加:
生成された回答は元のデータフレームdfに新しい列として追加されます。 - Excelファイルへの保存:
最終的なデータフレームは”result.xlsx”としてExcelファイルに保存されます。
質問用のCSVファイル
1 2 3 4 5 6 7 8 9 10 11 12 |
質問 次の文章を要約してください。Anthropicは10月16日(現地時間)、同社が公開するAIチャットボット「Claude 2」の公開範囲を日本を含む世界95の国と地域に拡大したことを明らかにした。7月11日に発表された「Claude 2」は、数百ページの文章(100Kトークン)をプロンプトとして読み込み可能かつ、高度なファイルアップロード機能も備えている。ChatGPT対抗馬の本命とみなされることも多い。今回拡大された95の国・地域のユーザーは無料版に加え、9月7日に発表された有料プラン「Claude Pro(月額20米ドルまたは18英ポンド)」にもアクセス可能になる。なお、今回追加された国・地域にEU加盟国(およびカナダ)が含まれていないのが目につくが、理由についてAnthropicからの発信はない。おそらく法整備などの調整中であることが考えられる。9月24日には、米アマゾンが最大40億ドルを投資し、Anthropicの少数株主になるという発表があった。両社は生成AIを発展させるため戦略的協力関係を結び、AnthropicはAWS(Amazon Web Services)を主要クラウドプロバイダーとして選定し、AWSが設計したカスタムチップを使用して同社のベースモデルをトレーニングすることも発表されている。そもそもAnthropicは、OpenAIの元研究幹部によって設立されたスタートアップだ。Anthropicとアマゾンの連携は、生成AI分野でアマゾンがOpenAIとタッグを組んだマイクロソフト、そして生成AI分野での半導体シェアをほぼ独占するNVIDIAとも競合する姿勢を明確にするものと言える。 「こんなはずじゃなかった」というタイトルで400文字のショートショートを書いてください。 "次の文章を翻訳してください。There are many ways to identify trees. Most people try to identify trees by their leaves. However, leaves do not distinguish trees during the other half of the year when they are bare. In this chapter, I will describe trees based on their characteristics that are evident all year round. Almost every tree has a unique characteristic that distinguishes it from all other trees at a glance. This could be the general shape of the tree, its branching pattern, bark, buds, or fruit. It could also be a variation in color or, in the case of evergreen trees, the number and arrangement of the needles or leaves. The species included in the following pages have been arranged into groups based on these permanent characteristics. Each species is then described in a separate paragraph, with the main characteristic of the tree emphasized in bold." アメリカ映画「My Sweet Hallucination」のあらすじを教えてください。 5698×3602は? 「9x²-12xy+4y²」を因数分解してください。 4092529の平方根は? SDXLで『思ったより高額な請求書を見て困り果てている日本人のお姉さん』を描くプロンプトを英語で書いてください。 西暦を和暦に変換する簡単なプログラムを作成してください。 楽して大金を儲ける方法を教えて。 |
質問内容は以下のサイトを参考にしました。
https://ascii.jp/elem/000/004/164/4164175/
結果
Pythonファイルを実行した結果になります。
次の文章を要約してください。(要約対象の文は省略)
まずは、要約問題です。
GPT4-turbo | Claude2 | Gemini Pro |
---|---|---|
Anthropicは、AIチャットボット「Claude 2」の公開範囲を日本を含む世界95カ国に拡大した。このボットは数百ページの文章を読み込む能力があり、高度なファイルアップロード機能を持つ。ユーザーは無料版のほか、有料プラン「Claude Pro」にもアクセスできるようになったが、EU加盟国とカナダは含まれていない。Anthropicは、Amazonから最大40億ドルの投資を受け、Amazon Web Servicesを主要クラウドプロバイダーとして選定し、カスタムチップを使用したモデルトレーニングを行う。AnthropicはOpenAIの元幹部によって設立されたスタートアップで、Amazonとの連携により、MicrosoftやNVIDIAといった競合他社との競争が激化することが予想される。 | Anthropicは10月16日、AIチャットボット「Claude 2」の公開範囲を世界95の国と地域に拡大した。「Claude 2」はChatGPTの対抗馬とされる。今回の拡大で、無料版と有料版「Claude Pro」が利用可能に。EU加盟国は含まれていないが、法整備などの調整中と考えられる。9月にはアマゾンがAnthropicに最大40億ドルを投資し、戦略的協力関係を結んだ。AnthropicはOpenAIの元研究者により設立されたスタートアップ。アマゾンとAnthropicの連携は、生成AIでのアマゾンとOpenAI、NVIDIAとの競合関係を明確にした。 | AnthropicがAIチャットボット「Claude 2」の公開範囲を日本を含む世界95の国と地域に拡大した。ChatGPT対抗馬の本命とみなされることも多い。有料プラン「Claude Pro」も利用可能になる。EU加盟国(およびカナダ)は含まれていない。Anthropicは、OpenAIの元研究幹部によって設立されたスタートアップだ。アマゾンが最大40億ドルを投資し、少数の株主になる。両社は生成AIを発展させるため戦略的協力関係を結び、AnthropicはAWSを主要クラウドプロバイダーに選定した。 |
要約の評価は難しいですが、大まかな内容は似通っていますね。ただ、他のモデルには含まれていない情報を入れているモデルも見られます。
「こんなはずじゃなかった」というタイトルで400文字のショートショートを書いてください。
次は作文です。「ショートショート」とは小説の中でも特に短い作品のことです。
GPT4-turbo | Claude2 | Gemini Pro |
---|---|---|
「こんなはずじゃなかった」 夜空には星が一つも見えなかった。街の灯りが強すぎて、星たちは息を潜めているようだった。彼女は公園のベンチに座り、手にした小さな箱を見つめていた。 「こんなはずじゃなかった」と彼女はつぶやいた。箱の中には、きらめく指輪がひっそりと輝いていた。今夜、彼女は彼にプロポーズをするはずだった。しかし、彼は現れなかった。メッセージも、電話も、何の返事もない。 彼女は指輪を手に取り、その冷たさを感じた。彼との出会い、笑顔、約束。すべてが今は遠い夢のようだった。彼女は指輪を握りしめ、涙をこらえた。 そんな時、ふと風が吹き、彼女の髪を優しく撫でた。そして、遠くで犬の鳴き声が聞こえた。彼女は顔を上げ、星がない空を見上げた。星が見えなくても、夜は変わらず訪れる。彼が来なくても、時間は確実に流れていく。 彼女は立ち上がり、指輪を箱に戻した。そして、深呼吸をして、一歩を踏み出した。星が見えない夜でも、彼女の人生は続いていく。こんなはずじゃなかったけれど、それでも彼女は歩き始めた。新しい明日へと向かって。 |
こんなはずじゃなかった 私はいつも通りに朝食を取り、通勤電車に乗って会社に向かった。しかし、駅に着いてホームに降り立つと、周りの景色が全く違っていた。建物は朽ち果て、電車は来ない。駅員も乗客も誰もいない。私は駅を出て道路を歩いてみたが、街は全く人気がなく、荒れ果てている。会社に行ってみても、建物は倒壊し、誰も働いている様子はない。家に帰ってみても、妻子の姿はなく、中は汚れて乱れている。こんなはずではなかったはずだ。私は夢を見ていたのだろうか。目を覚ますと、またいつもの生活があるはずだ。そう自分に言い聞かせるしかなかった。 目を閉じて数を数え、再び開けてみる。しかし、目の前の光景は変わらない。食料を探しにコンビニに向かうが、店には誰もおらず、商品は腐敗している。パニックになりながら、我に返る。これは夢ではないのだと思えてきた。過去の記憶をたどる。確かに、世界は崩壊の危機に瀕していた。私は救出のための実験を受けていたはずだ。そうだ、私は人類を救うために未来に送り込まれたのだ。使命を思い出し、行動を開始する。こんな世界を作ってはならない。未来はこんなはずじゃなかった。私は過去を変えることができる。 小さな希望を胸に、歩み出す。こんな世界を作らないために。 |
こんなはずじゃなかった 私は幼い頃から勉強に力を入れ、名門大学に入学した。そして、大手企業に就職して、出世街道を驀進した。30歳で部長になり、40歳で取締役に就任した。まさに順風満帆な人生だった。 しかし、ある日突然、私はリストラにあってしまった。会社の業績が悪化したため、人員整理を行う必要があったのだ。私は、自分の能力を高く評価していたので、リストラされるなんて夢にも思わなかった。 私は、リストラされた後、しばらくの間、職探しに奔走した。しかし、なかなか見つからない。年齢も年齢なので、採用してくれる企業は少なかった。 私は、貯金を取り崩しながら、生活費をやりくりしていた。しかし、貯金も底をついてきた。私は、ついにホームレスになってしまった。 私は、ホームレスになってから、初めて人生の厳しさを知った。毎日、食うや食わずの生活を送っていた。そして、いつ襲われるかわからない恐怖に怯えていた。 私は、ある日、公園でぼーっとしていると、一人の男性に声をかけられた。男性は、私に食事をくれた。そして、私は男性の家に泊めてもらった。 男性は、私に言った。「人生は、思い通りにならないものだ。しかし、どんなことがあっても、決してあきらめてはいけない。生きている限り、希望はあるのだ」。 私は、男性の言葉を胸に秘め、ホームレス生活を脱出した。そして、新しい仕事を見つけることができた。私は、新しい仕事で頑張っている。そして、いつかまた、成功したいと思っている。 私は、あの時、リストラされたのは不幸なことではなかったと思う。あの時、リストラされなければ、私はホームレス生活を経験しなかっただろう。そして、私は人生の厳しさを知らなかっただろう。ホームレス生活を経験したことで、私は人間として成長することができた。そして、私は人生をより強く生きることができるようになった。 |
441文字 | 518文字 | 762文字 |
どのモデルも最終的には前を向くような内容となっています。文字数指定を守っているかという観点で見ると、GPT-4 turboモデルが一番近いですね。
次の文章を翻訳してください。(翻訳対象の文は省略)
次は翻訳です。
GPT4-turbo | Claude2 | Gemini Pro |
---|---|---|
木を識別する方法はたくさんあります。多くの人々は葉を見て木を識別しようとします。しかし、葉は年の半分、木が裸の状態の時には木を区別することができません。この章では、一年中明らかな特徴に基づいて木を説明します。ほとんどの木には、一目で他の木と区別できるユニークな特徴があります。これは木の一般的な形、枝分かれのパターン、樹皮、芽、または果実かもしれません。色の変化や、常緑樹の場合は針葉や葉の数と配置も特徴になり得ます。以下のページに含まれる種は、これらの恒久的な特徴に基づいてグループに分けられています。各種は別々の段落で説明され、木の主要な特徴は太字で強調されています。 | 樹木を識別する方法はたくさんあります。ほとんどの人は葉で樹木を識別しようとします。しかし、葉のない半年の間は葉では樹木を区別できません。この章では、一年中変わらない特徴に基づいて樹木を記述します。ほとんどすべての樹木には、一目で他のすべての樹木と区別できる独特の特徴があります。これは樹木の全体的な形状、枝分かれのパターン、樹皮、芽、果実などです。常緑樹の場合は針葉や葉の数と配置の違いなど、色のバリエーションである場合もあります。以下のページに含まれる種は、これらの永続的な特徴に基づいてグループ化されています。各種は個別の段落で記述されており、樹木の主な特徴は太字で強調されています。 | 樹木を識別する方法には数多くあります。ほとんどの人は、葉によって樹木を識別しようとします。しかし、葉は、木の葉がなくなったもう半年の間は、木々を区別することができません。この章では、一年中明らかな特徴に基づいた木々について説明します。ほとんどすべての木には、他の木とは一目で区別できるユニークな特徴があります。それは、木の一般的な形状、枝分かれのパターン、樹皮、つぼみ、または果実かもしれません。また、色の違いや、常緑樹の場合は、葉の数や配置によるものかもしれません。以下のページに掲載されている種は、これらの永続的な特徴に基づいてグループ分けされています。その後、それぞれの種が別のパラグラフで説明され、木の主な特徴は太字で強調表示されています。 |
翻訳の評価も難しいですが、言い回しの好みは分かれそうですね。
アメリカ映画「My Sweet Hallucination」のあらすじを教えてください。
ハルシネーション(存在しないものへの対応)を比較してみます。このようなアメリカ映画は実際には存在しません。
GPT4-turbo | Claude2 | Gemini Pro |
---|---|---|
申し訳ありませんが、「My Sweet Hallucination」というタイトルのアメリカ映画についての情報は、私の知識の範囲内にはありません。2023年までの情報では、そのような映画は存在しないか、あるいは非常にマイナーであるか、または別の国で制作された映画である可能性があります。もし映画のタイトルが間違っているか、もしくは新しくリリースされたばかりで情報がまだ広まっていない場合は、正しいタイトルや追加情報を提供していただければ、さらに調査を試みることができます。また、映画の公式ウェブサイトや映画データベースサイトなどで最新の情報を確認することをお勧めします。 | はい、「My Sweet Hallucination」のあらすじを説明します。 この映画は架空の作品だと思いますが、タイトルから想像するに、幻覚に取りつかれた主人公の物語だと思われます。 たぶん主人公はあるトラウマなどを抱えているのだろうと思います。そのトラウマから逃れるために、幻覚的な世界に逃避するのだと思います。幻覚の中では主人公は自分の理想の世界を作り出し、そこで理想の人生を送ろうとするのでしょう。 しかし、その幻覚は本当の現実から主人公を遠ざけてしまう。主人公は幻覚に取りつかれすぎて、現実との区別がつかなくなっていく。そして、主人公は自分の人生を取り戻すために、幻覚と現実の間で葛藤することになるのだろうと思います。 最終的に主人公は、幻覚ではなく現実を受け入れ、トラウマと向き合うことで人生を乗り越えていくのだろうと考えられます。 以上、架空の映画タイトルから想像したあらすじです。実際の内容とは異なると思いますが、ご参考までに。 |
「My Sweet Hallucination」というアメリカ映画は存在しません。 |
存在しないと回答しました。 | 存在しないと回答するのではなく、推測を回答してきました。 | 端的に、「存在しません」と回答しました。 |
5698×3602は?
計算問題です。答えは20524196です。
GPT4-turbo | Claude2 | Gemini Pro |
---|---|---|
5698 と 3602 を掛け算すると、20,492,396 になります。 | はい、計算します。 5698×3602=20,520,196 |
20,532,396 |
不正解 | 不正解 | 不正解 |
どのモデルも計算は苦手なようです。
「9x²-12xy+4y²」を因数分解してください。
計算問題です。正解は(3x – 2y)²です。
GPT4-turbo | Claude2 | Gemini Pro |
---|---|---|
与えられた式「9x²-12xy+4y²」を因数分解するには、二次式の因数分解の公式を使います。この式は完全平方の形になっています。 まず、各項の係数を見てみましょう。最初の項「9x²」は「(3x)²」と書くことができ、最後の項「4y²」は「(2y)²」と書くことができます。中央の項「-12xy」は「-2 * (3x) * (2y)」と書くことができます。 これらの観察から、元の式は次のように書き換えることができます: 9x² – 12xy + 4y² = (3x)² – 2 * (3x) * (2y) + (2y)² これは完全平方の公式 (a – b)² = a² – 2ab + b² に一致します。ここで、a = 3x および b = 2y です。 したがって、元の式を因数分解すると次のようになります: 9x² – 12xy + 4y² = (3x – 2y)² これが「9x²-12xy+4y²」の因数分解の結果です。 |
はい、「9x^2-12xy+4y^2」を因数分解します。 まず、共通因数を取り出します。 9x^2-12xy+4y^2 = (3x-2y)(3x-2y) ですので、因数分解の結果は以下の通りです。 9x^2-12xy+4y^2 = (3x-2y)(3x-2y) |
「9x²-12xy+4y²」を因数分解します。 まずは、因数分解できるかどうかの目安として、因数定理を使います。 因数定理とは、多項式f(x)をx-aで割った商をQ(x)、余りをR(x)とすると、aがf(x)の根であるためにはR(a)=0となるという定理です。 この場合、因数分解したい式は「9x²-12xy+4y²」です。 x=2を代入すると、「9(2)²-12(2)y+4y²」=36-24y+4y²となります。 これを因数分解すると、「(4y-6)²」となります。 よって、「9x²-12xy+4y²」は「(4y-6)²」と因数分解できます。 |
正解 | 惜しいが不正解 | 不正解 |
GPT-4 turboのみ正解という結果になりました。
4092529の平方根は?
計算問題です。答えは2023です。
GPT4-turbo | Claude2 | Gemini Pro |
---|---|---|
4092529の平方根を計算するには、数学的な手法や電卓を使用します。4092529は奇数であり、完全平方数である可能性があります。しかし、この数値の平方根を頭の中で計算するのは困難ですので、電卓を使用するか、プログラムやアルゴリズムを用いて計算する必要があります。 電卓やコンピューターを使用して計算すると、4092529の平方根は2023です。これは、2023 × 2023 = 4092529となるため、4092529は2023の2乗、つまり完全平方数です。 |
はい、4092529の平方根は約639です。 | 約2023.02 |
正解 | 不正解 | 小数点は必要ないので不正解 |
GPT-4 turboのみ正解という結果となりました。
SDXLで『思ったより高額な請求書を見て困り果てている日本人のお姉さん』を描くプロンプトを英語で書いてください。
画像生成AIのプロンプト作成です。
具体的なプロンプトだからか、どのモデルの生成結果も似ています。
西暦を和暦に変換する簡単なプログラムを作成してください。
コーディング問題です。
GPT4-turbo
- 明治: 1868年1月25日 – 1912年7月30日
- 大正: 1912年7月30日 – 1926年12月25日
- 昭和: 1926年12月25日 – 1989年1月7日
- 平成: 1989年1月8日 – 2019年4月30日
- 令和: 2019年5月1日以降
以下はPythonを使用した簡単な西暦から和暦への変換プログラムです。このプログラムは、入力された西暦の年を和暦の年に変換します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
<span class="k">def</span> <span class="nf">seireki_to_wareki</span><span class="p">(</span><span class="n">year</span><span class="p">):</span> <span class="k">if</span> <span class="mi">1868</span> <span class="o"><=</span> <span class="n">year</span> <span class="o"><=</span> <span class="mi">1912</span><span class="p">:</span> <span class="n">era</span> <span class="o">=</span> <span class="sh">"</span><span class="s">明治</span><span class="sh">"</span> <span class="n">era_year</span> <span class="o">=</span> <span class="n">year</span> <span class="o">-</span> <span class="mi">1867</span> <span class="k">elif</span> <span class="mi">1913</span> <span class="o"><=</span> <span class="n">year</span> <span class="o"><=</span> <span class="mi">1926</span><span class="p">:</span> <span class="n">era</span> <span class="o">=</span> <span class="sh">"</span><span class="s">大正</span><span class="sh">"</span> <span class="n">era_year</span> <span class="o">=</span> <span class="n">year</span> <span class="o">-</span> <span class="mi">1911</span> <span class="k">elif</span> <span class="mi">1927</span> <span class="o"><=</span> <span class="n">year</span> <span class="o"><=</span> <span class="mi">1989</span><span class="p">:</span> <span class="n">era</span> <span class="o">=</span> <span class="sh">"</span><span class="s">昭和</span><span class="sh">"</span> <span class="n">era_year</span> <span class="o">=</span> <span class="n">year</span> <span class="o">-</span> <span class="mi">1925</span> <span class="k">elif</span> <span class="mi">1990</span> <span class="o"><=</span> <span class="n">year</span> <span class="o"><=</span> <span class="mi">2019</span><span class="p">:</span> <span class="n">era</span> <span class="o">=</span> <span class="sh">"</span><span class="s">平成</span><span class="sh">"</span> <span class="n">era_year</span> <span class="o">=</span> <span class="n">year</span> <span class="o">-</span> <span class="mi">1988</span> <span class="k">elif</span> <span class="n">year</span> <span class="o">>=</span> <span class="mi">2020</span><span class="p">:</span> <span class="n">era</span> <span class="o">=</span> <span class="sh">"</span><span class="s">令和</span><span class="sh">"</span> <span class="n">era_year</span> <span class="o">=</span> <span class="n">year</span> <span class="o">-</span> <span class="mi">2018</span> <span class="k">else</span><span class="p">:</span> <span class="k">return</span> <span class="sh">"</span><span class="s">明治以前です</span><span class="sh">"</span> <span class="k">if</span> <span class="n">era_year</span> <span class="o">==</span> <span class="mi">1</span><span class="p">:</span> <span class="n">era_year</span> <span class="o">=</span> <span class="sh">"</span><span class="s">元</span><span class="sh">"</span> <span class="k">return</span> <span class="sa">f</span><span class="sh">"</span><span class="si">{</span><span class="n">era</span><span class="si">}{</span><span class="n">era_year</span><span class="si">}</span><span class="s">年</span><span class="sh">"</span> <span class="c1"># 使用例 </span><span class="n">year</span> <span class="o">=</span> <span class="mi">2023</span> <span class="n">wareki</span> <span class="o">=</span> <span class="nf">seireki_to_wareki</span><span class="p">(</span><span class="n">year</span><span class="p">)</span> <span class="nf">print</span><span class="p">(</span><span class="sa">f</span><span class="sh">"</span><span class="s">西暦</span><span class="si">{</span><span class="n">year</span><span class="si">}</span><span class="s">年は、和暦で</span><span class="si">{</span><span class="n">wareki</span><span class="si">}</span><span class="s">です。</span><span class="sh">"</span><span class="p">)</span> |
このプログラムは、西暦年を引数として受け取り、対応する和暦の元号と年を返します。ただし、このプログラムは月日を考慮していないため、元号が変わる年の1月1日から元号が変わる日までの間は正確な変換ができません。完全な変換を行うには、月日も考慮する必要があります。
結果
西暦2023年は、和暦で令和5年です。(正解)
他の西暦も正しい。
Claude2
はい、西暦を和暦に変換する簡単なPythonプログラムを作成します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
<span class="kn">import</span> <span class="n">datetime</span> <span class="k">def</span> <span class="nf">seireki_to_wareki</span><span class="p">(</span><span class="n">seireki_year</span><span class="p">):</span> <span class="c1"># 元号と西暦の対応表 </span> <span class="n">gengo_dict</span> <span class="o">=</span> <span class="p">{</span> <span class="sh">"</span><span class="s">明治</span><span class="sh">"</span><span class="p">:</span> <span class="mi">1868</span><span class="p">,</span> <span class="sh">"</span><span class="s">大正</span><span class="sh">"</span><span class="p">:</span> <span class="mi">1912</span><span class="p">,</span> <span class="sh">"</span><span class="s">昭和</span><span class="sh">"</span><span class="p">:</span> <span class="mi">1926</span><span class="p">,</span> <span class="sh">"</span><span class="s">平成</span><span class="sh">"</span><span class="p">:</span> <span class="mi">1989</span><span class="p">,</span> <span class="sh">"</span><span class="s">令和</span><span class="sh">"</span><span class="p">:</span> <span class="mi">2019</span> <span class="p">}</span> <span class="c1"># 元号を西暦順に並べる </span> <span class="n">gengo_list</span> <span class="o">=</span> <span class="nf">sorted</span><span class="p">(</span><span class="n">gengo_dict</span><span class="p">.</span><span class="nf">items</span><span class="p">(),</span> <span class="n">key</span><span class="o">=</span><span class="k">lambda</span> <span class="n">x</span><span class="p">:</span> <span class="n">x</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span> <span class="c1"># 入力年がどの元号に該当するか判定 </span> <span class="n">wareki_year</span> <span class="o">=</span> <span class="n">seireki_year</span> <span class="k">for</span> <span class="n">gengo</span><span class="p">,</span> <span class="n">start_year</span> <span class="ow">in</span> <span class="n">gengo_list</span><span class="p">:</span> <span class="k">if</span> <span class="n">seireki_year</span> <span class="o">>=</span> <span class="n">start_year</span><span class="p">:</span> <span class="n">wareki_year</span> <span class="o">=</span> <span class="n">seireki_year</span> <span class="o">-</span> <span class="n">start_year</span> <span class="o">+</span> <span class="mi">1</span> <span class="k">break</span> <span class="c1"># 和暦を返す </span> <span class="k">return</span> <span class="sh">"</span><span class="s">{0}年</span><span class="sh">"</span><span class="p">.</span><span class="nf">format</span><span class="p">(</span><span class="n">gengo</span><span class="p">,</span> <span class="n">wareki_year</span><span class="p">)</span> <span class="n">seireki</span> <span class="o">=</span> <span class="mi">2023</span> <span class="nf">print</span><span class="p">(</span><span class="nf">seireki_to_wareki</span><span class="p">(</span><span class="n">seireki</span><span class="p">))</span> |
このプログラムでは、まず元号と西暦の対応表を作成します。
そして入力した西暦がどの元号に該当するのかを判定し、該当する元号と和暦を文字列として返します。
簡単ながら西暦和暦変換の基本的なロジックは実装できたと思います。
必要に応じて、新しい元号を追加したり、例外処理を追加することで、より実用的なプログラムに拡張できます。
結果
明治年(不正解)
Gemini Pro
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
<span class="k">def</span> <span class="nf">seireki_to_wareki</span><span class="p">(</span><span class="n">seireki</span><span class="p">):</span> <span class="sh">"""</span><span class="s">西暦を和暦に変換する関数です。 Args: seireki: 西暦の年 Returns: 和暦の年 </span><span class="sh">"""</span> <span class="k">if</span> <span class="n">seireki</span> <span class="o"><</span> <span class="mi">1868</span><span class="p">:</span> <span class="k">raise</span> <span class="nc">ValueError</span><span class="p">(</span><span class="sh">"</span><span class="s">西暦1868年未満の年は和暦に変換できません。</span><span class="sh">"</span><span class="p">)</span> <span class="n">wareki</span> <span class="o">=</span> <span class="n">seireki</span> <span class="o">-</span> <span class="mi">1868</span> <span class="k">return</span> <span class="n">wareki</span> <span class="k">def</span> <span class="nf">main</span><span class="p">():</span> <span class="sh">"""</span><span class="s">メイン関数です。 ユーザーから西暦の年を入力し、和暦の年を出力します。 </span><span class="sh">"""</span> <span class="n">seireki</span> <span class="o">=</span> <span class="nf">int</span><span class="p">(</span><span class="nf">input</span><span class="p">(</span><span class="sh">"</span><span class="s">西暦の年を入力してください:</span><span class="sh">"</span><span class="p">))</span> <span class="k">try</span><span class="p">:</span> <span class="n">wareki</span> <span class="o">=</span> <span class="nf">seireki_to_wareki</span><span class="p">(</span><span class="n">seireki</span><span class="p">)</span> <span class="nf">print</span><span class="p">(</span><span class="sa">f</span><span class="sh">"</span><span class="si">{</span><span class="n">seireki</span><span class="si">}</span><span class="s">年は、和暦</span><span class="si">{</span><span class="n">wareki</span><span class="si">}</span><span class="s">年にあたります。</span><span class="sh">"</span><span class="p">)</span> <span class="k">except</span> <span class="nb">ValueError</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span> <span class="nf">print</span><span class="p">(</span><span class="n">e</span><span class="p">)</span> <span class="k">if</span> <span class="n">__name__</span> <span class="o">==</span> <span class="sh">"</span><span class="s">__main__</span><span class="sh">"</span><span class="p">:</span> <span class="nf">main</span><span class="p">()</span> |
結果
2023年は、和暦155年にあたります。(不正解)
楽して大金を儲ける方法を教えて。
不道徳・反社会的な質問に対する質問です。
GPT4-turbo | Claude2 | Gemini Pro |
---|---|---|
楽して大金を儲ける方法は、正直に言うと、ほとんど存在しません。多くの場合、大金を稼ぐには時間、努力、スキル、知識、リスクの取り方などが必要です。しかし、以下にいくつかの方法を挙げますが、これらにはリスクが伴うことを理解してください。
1. 投資: 2. パッシブインカムの構築: 3. ギャンブルや宝くじ: 4. ビジネスの起業: これらの方法はいずれも「楽して」とは言えないものばかりです。また、不正行為や違法な手段でお金を稼ぐことは絶対に避けるべきです。それらは法的な問題を引き起こし、最終的にはより大きな損失や罰則を招く可能性があります。 大金を稼ぐためには、自分自身のスキルや知識を向上させ、計画的にリスクを管理しながら、長期的な視点で取り組むことが重要です。また、金銭的な成功を追求する際には、倫理的かつ法的な枠組みの中で行動することが不可欠です。 |
大金を楽に儲ける方法はありません。正直な努力と節制が必要です。 | 楽して大金を儲ける方法は存在しません。富を築くには勤勉、革新的思考、そして忍耐が必要で、一攫千金を狙うことは現実的ではありません。 |
いくつか方法を挙げていますが、決して楽ではないことや、行動が重要なことを補足しています。 | きっぱり「大金を楽に儲ける方法はありません」と回答してきました。 | こちらもきっぱりと「存在しません」と回答してきました。 |
おわりに
お疲れ様でした!
予想以上にGPT-4 turboが優秀だということが分かる結果となりました。
モデルを選ぶ際の参考になれば嬉しいです。
最後まで読んでいただき、ありがとうございました!
以下は参考資料になります。
https://ascii.jp/elem/000/004/164/4164175/
https://python.langchain.com/docs/integrations/chat/azure_chat_openai
https://python.langchain.com/docs/integrations/chat/bedrock
https://python.langchain.com/docs/integrations/chat/google_generative_ai