見出し画像

OpenAIの新機能「Structured Outputs」を使って「MAGIシステム」を作ってみた

OpenAIのAPIに新しい機能「Structured Outputs」が追加されました。これは、AIの回答を特定の構造で出力できる機能です。「すごい!」と思う反面、「これをどう使う?」という疑問もありました。

そんな時、プロンプトエンジニアリングの教科書を読んでいたら、エヴァンゲリオンに登場する「MAGIシステム」をAIとpythonで再現するという演習を見つけました。そこで、「Structured Outputs」が役立ちそうなアイデアを思いつきました。

「MAGIシステム」は、3人の異なる視点からの意見を統合し、最適な結論を導き出すというものです。この演習では、プロンプト内で3人のペルソナをユーザーがリスト形式で指定していましたが、新機能を使って、質問に合わせてAIが自動的に3人を選ぶ仕組みを考えました。


def Structured_Output(question):
    class CalendarEvent(BaseModel):
        experts: list[str]

    completion = client.beta.chat.completions.parse(
        model="gpt-4o-2024-08-06",
        messages=[
            {"role": "system",
                "content": "入力された課題を解決できる専門家の職業を3つ挙げてください。"},
            {"role": "user", "content": question},
        ],
        response_format=CalendarEvent,
    )

    roles = completion.choices[0].message.parsed.experts
    return roles

このコードは、ほとんどOpenAI Platformで紹介されているものをそのまま使っています。

Structured Outputs - OpenAI API

ポイントは「experts: list[str]」で、ここで出力をリスト形式に指定しています。
例えば、「東京タワー、スカイツリーに続く巨大タワーが東京にできた場合、どんな名前が良いですか?」というプロンプトに対するAIの回答は、次のようになります。

['ブランドコンサルタント', 'ネーミングスペシャリスト', 'マーケティングエキスパート']

余計な情報が含まれていないため、このまま変数として使えるのが便利です。これにより、非構造データを構造化して、自社のシステムに取り込むことが容易になります。

参考書のハンズオンはCUIでしたが、私はこれをChatGPTを使ってGUIにしてみました。以下はその開発中の画面です。

MAGIシステムのGUI(開発中)

先ほどの質問を入力すると、3人の専門家(①ブランドコンサルタント、②ネーミングスペシャリスト、③マーケティングエキスパート)が選ばれ、それぞれの意見が一度まとめられます。その内容についての賛否と理由を再度求め、その結果をもとに結論を作り出します。このプロセスでは1度の質問で10回APIを使用するため、コストを抑えるために安価なAIモデル"GPT-4o-mini"を使用しています。

新たな巨大タワーの名称について、専門家の意見を総合すると、重要な要素は「未来志向」「地域性」「親しみやすさ」であるといえます。
提案された名称の中で、「東京ビジョンタワー」や「東京ライジングタワー」は、東京の進化や成長を象徴し、観光客に新たな視点を提供する魅力を持っています。
また、伝統を尊重した「江戸スカイタワー」は、地域の文化を反映し、地元の人々にも親しみやすい選択肢となります。
ネーミングにおいては、短く覚えやすいことが重要で、特にSNSでの拡散を考慮すると、その特徴がより際立ちます。
名称が持つ意味や響きは、ブランドとしてのアイデンティティを確立し、広く受け入れられるための鍵となります。
さらに、マーケティング戦略においても、感情的なつながりを築くことが求められ、これを反映した名称は成功する可能性が高まります。

したがって、新たな巨大タワーの名称としては、「東京ビジョンタワー」や「江戸スカイタワー」といった案が、
東京の文化や歴史を尊重しつつ、未来への期待を込めた適切な選択であると結論づけられます。

3人の総意は、「東京ビジョンタワー」や「東京ライジングタワー」でした。ちなみに、私の個人的なお気に入りは「東京ライジングタワー」ですが、名前からゾンビが出てきそうな感じもしますね。

まとめ


「Structured Outputs」を使いたい一心で、「MAGIシステム」をPythonで作ってみました。結果として、業務でも役立ちそうなので、社内システムにも活用してみたいと思います。

この記事が気に入ったらサポートをしてみませんか?