5
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Agentariumで作る!激辛カレーに取り憑かれたAIエージェントたちのマーケティング戦略

Posted at

⚠️ この記事は実験的な内容です

この記事を読む前に、以下の点にご注意ください:

  • 再現性について

    • エージェント間の対話や結論は実行ごとに異なる可能性があります
    • 使用するLLMの特性により、同じ入力でも異なる出力が生成されることがあります
    • OpenAI APIやAgentariumの仕様変更により、動作が変わる可能性があります
  • 推奨する使い方

    • アイデア創出の補助として活用してください
    • 可能であれば同じ設定で複数回試してみることをお勧めします
    • 生成された結果は必ず人間が確認し、妥当性を評価してください

以下の内容は、「こういうことができるかもしれない」という可能性の提示であり、実務での動作を保証するものではありません。

1. なにが面白いのか?

  • 激辛カレーブーム
    「辛いもの好き」「辛さに取り憑かれた人たち」が増え、飲食店やスーパーマーケットでも激辛コーナーが目立つようになってきました。

  • エージェント同士の自動議論
    Agentarium を使えば、複数のエージェントがそれぞれの役割・専門知識を生かして勝手に話し合い、結論をまとめてくれます。

  • マーケティング視点の取り込み
    単に「美味しい激辛カレー」を作るだけでなく、「どう商品化すれば市場で売れるか?」をマーケター視点で検討できるのがポイント。

    image.png


2. Agentariumとは

Agentarium は、Python で簡単に「AIエージェント」を作り、複数のエージェント同士のやり取りを管理できるライブラリです。特徴としては:

  • 複数エージェントの生成 (Agent.create_agent())
  • 対話の送受信 (talk_to())
  • 自動アクション (act(): THINK / TALK をLLMが決める)
  • 履歴管理 (get_interactions())

などが挙げられます。OpenAI API や他の LLM プロバイダを接続して、高度な会話生成もできます。

image.png


3. 3人のAIエージェントによる激辛マーケティング戦略

今回のサンプルでは、以下の3人を登場させます。

  1. SpiceChef
    • 激辛カレーの調理にこだわるシェフ。新しいスパイス配合アイデアを常に探求している。
  2. FlavorScientist
    • 辛味成分や香りの化学を研究するフレーバーサイエンティスト。辛さと旨味のバランスに詳しい。
  3. CurryMarketer
    • カレーの販促やパッケージ戦略を担当。ニュースで「激辛ブーム」が盛り上がっていることを把握し、市場での売り出し方を検討したい。

全体の流れ

  1. SpiceChefFlavorScientist が先に「どのようなスパイス配合で激辛を演出できるか」を議論。
  2. その結論を FlavorScientistCurryMarketer に伝え、流行の激辛ブームをどうマーケティングに生かすか意見交換。
  3. 最後にエージェントたちのやり取りログを確認し、得られたアイデアを活用。

4. コード例

以下、Google Colab で試すことを想定したサンプルです。

!pip install agentarium
import os
# 必要なら OpenAI APIキーを設定
os.environ["OPENAI_API_KEY"] = "sk-xxxxx..."

from agentarium import Agent

def main():
    # 1. エージェントを日本語で作る。激辛ブームを意識した occupation / bio を設定
    SpiceChef = Agent.create_agent(
        name="SpiceChef",
        occupation="激辛カレーシェフ",
        bio="辛さにこだわりを持ち、独自のスパイス配合を日々研究。"
    )
    FlavorScientist = Agent.create_agent(
        name="FlavorScientist",
        occupation="フレーバーサイエンティスト",
        bio="辛味物質の化学特性や、旨味の引き立て方を知る研究者。"
    )
    CurryMarketer = Agent.create_agent(
        name="CurryMarketer",
        occupation="カレーマーケター",
        bio=(
            "カレー商品の販促や戦略を担当。"
            "ニュースによると激辛ブームが熱いと感じており、"
            "これをビジネスに活かせないか日々模索。"
        )
    )

    # 2. まず SpiceChef -> FlavorScientist で激辛アイデアを議論
    SpiceChef.talk_to(
        FlavorScientist,
        "最近、激辛マニアが増えてるみたいなんだけど、辛さと旨味の両立はどうアプローチすればいい?カレーのレシピ案を考えてほしい。"
    )
    for _ in range(3):
        SpiceChef.act()
        FlavorScientist.act()

    # 3. 要約を SpiceChef に依頼してみる (ask() が利用可能な場合)
    chef_summary = SpiceChef.ask("今の話し合いを手短にまとめて。重要なポイントと結論を教えて。")

    # 4. FlavorScientist -> CurryMarketer に話をつなぎ、マーケ的視点を取り入れる
    FlavorScientist.talk_to(
        CurryMarketer,
        f"SpiceChefとの結論をまとめると:\n{chef_summary}\nこの激辛ブームをどう活かすべきか、一緒に考えない?"
    )
    for _ in range(3):
        FlavorScientist.act()
        CurryMarketer.act()

    # 5. 最後にエージェントたちのやり取り履歴を表示
    print("=== SpiceChef's interactions ===")
    for i in SpiceChef.get_interactions():
        print(i)

    print("\n=== FlavorScientist's interactions ===")
    for i in FlavorScientist.get_interactions():
        print(i)

    print("\n=== CurryMarketer's interactions ===")
    for i in CurryMarketer.get_interactions():
        print(i)

if __name__ == "__main__":
    main()

エラーが発生することがありますが、複数回実行すると成功するケースもあるため、エージェントへの入力情報を調整したり、しばらく時間をおいて再度試してみてください。

出力例:
image.png

出力例:エージェント間の対話サマリー

# 出力例:エージェント間の対話サマリー

## カレーレシピの開発ポイント
1. **材料のバランス**
  - トマトの活用:辛さを和らげる酸味の効果
  - ココナッツミルク:クリーミーさによる全体のバランス調整

2. **スパイスの組み合わせ**
  - 香り付け:クミン(小さじ1)、コリアンダー(小さじ1.5)
  - 辛味:チリパウダー、カイエンペッパー
  - 旨味:ガーリック、ジンジャー

3. **調理のポイント**
  - 最初にスパイスを炒めて香りを引き出す
  - 材料の投入順序を工夫

## 対話の特徴
- 具体的なスパイスの分量まで踏み込んだ議論
- 材料の特性(酸味、クリーミーさ)を活かした配合
- 調理手順についての実践的な提案

注)この出力例は1回の実行結果であり、再現性は保証されません。

5. 応用アイデア

  1. 複数のマーケターを用意する
    地域限定の激辛イベントに詳しいマーケター、海外輸出の専門家などを増やしてみると、より多彩な議論が期待できます。

  2. ユーザーエージェント
    たとえば「自分」を表すエージェントを追加し、「体調に合わせたレシピを」「そんなに辛いのは無理だけど興味ある」などと要望を入れることで、よりパーソナルな対話が可能になります。

  3. 辛さ度合いの調整
    「スコヴィル値」を指標として扱うなど、辛味の度合いを細かく設定して議論させると、さらにリアリティが増すかもしれません。

  4. Agentariumのチェックポイント機能
    長時間の議論を行いたい場合、途中で状況を保存(Checkpoint)し、後から再開することもできます。


6. まとめ

  • Agentarium を使えば、激辛カレーに熱狂するエージェントたちが自動的に議論を進める環境を簡単に作れます。
  • talk_to()act() を活用するだけで、スパイス配合→味の調整→マーケティング戦略といった流れをシミュレーション可能。
  • 最近のニュースでも話題の激辛ブームをどう商品化するか、エージェントのアイデアを参考にしてみてはいかがでしょうか。

辛さを求める人たちのニーズに応えるには、味のバランスや訴求方法など多面的な検討が必要です。こうしたマルチエージェントの議論システムを使えば、ちょっとした研究や試作段階にも役立つヒントが得られるかもしれません。ぜひ試してみてください!

image.png

実装例のノートブック

Agentarium_Spicy_Curry_Strategy.ipynb

{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "f6023f73",
   "metadata": {},
   "source": [
    "# Agentariumで作る!激辛カレーに取り憑かれたAIエージェントたちのマーケティング戦略"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "1421f4c4",
   "metadata": {},
   "source": [
    "## サンプルコード"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "4e331cd6",
   "metadata": {},
   "outputs": [],
   "source": [
    "!pip install agentarium"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "adeb6a81",
   "metadata": {},
   "outputs": [],
   "source": [
    "import os\n",
    "# 必要なら OpenAI APIキーを設定\n",
    "os.environ[\"OPENAI_API_KEY\"] = \"sk-xxxxx...\"\n",
    "\n",
    "from agentarium import Agent\n",
    "\n",
    "def main():\n",
    "    # 1. エージェントを日本語で作る。激辛ブームを意識した occupation / bio を設定\n",
    "    SpiceChef = Agent.create_agent(\n",
    "        name=\"SpiceChef\",\n",
    "        occupation=\"激辛カレーシェフ\",\n",
    "        bio=\"辛さにこだわりを持ち、独自のスパイス配合を日々研究。\"\n",
    "    )\n",
    "    FlavorScientist = Agent.create_agent(\n",
    "        name=\"FlavorScientist\",\n",
    "        occupation=\"フレーバーサイエンティスト\",\n",
    "        bio=\"辛味物質の化学特性や、旨味の引き立て方を知る研究者。\"\n",
    "    )\n",
    "    CurryMarketer = Agent.create_agent(\n",
    "        name=\"CurryMarketer\",\n",
    "        occupation=\"カレーマーケター\",\n",
    "        bio=(\n",
    "            \"カレー商品の販促や戦略を担当。\"\n",
    "            \"ニュースによると激辛ブームが熱いと感じており、\"\n",
    "            \"これをビジネスに活かせないか日々模索。\"\n",
    "        )\n",
    "    )\n",
    "\n",
    "    # 2. まず SpiceChef -> FlavorScientist で激辛アイデアを議論\n",
    "    SpiceChef.talk_to(\n",
    "        FlavorScientist,\n",
    "        \"最近、激辛マニアが増えてるみたいなんだけど、辛さと旨味の両立はどうアプローチすればいい?\"\n",
    "    )\n",
    "    for _ in range(3):\n",
    "        SpiceChef.act()\n",
    "        FlavorScientist.act()\n",
    "\n",
    "    # 3. 要約を SpiceChef に依頼してみる (ask() が利用可能な場合)\n",
    "    chef_summary = SpiceChef.ask(\"今の話し合いを手短にまとめて。重要なポイントと結論を教えて。\")\n",
    "\n",
    "    # 4. FlavorScientist -> CurryMarketer に話をつなぎ、マーケ的視点を取り入れる\n",
    "    FlavorScientist.talk_to(\n",
    "        CurryMarketer,\n",
    "        f\"SpiceChefとの結論をまとめると:\\n{chef_summary}\\nこの激辛ブームをどう活かすべきか、一緒に考えない?\"\n",
    "    )\n",
    "    for _ in range(3):\n",
    "        FlavorScientist.act()\n",
    "        CurryMarketer.act()\n",
    "\n",
    "    # 5. 最後にエージェントたちのやり取り履歴を表示\n",
    "    print(\"=== SpiceChef's interactions ===\")\n",
    "    for i in SpiceChef.get_interactions():\n",
    "        print(i)\n",
    "\n",
    "    print(\"\\n=== FlavorScientist's interactions ===\")\n",
    "    for i in FlavorScientist.get_interactions():\n",
    "        print(i)\n",
    "\n",
    "    print(\"\\n=== CurryMarketer's interactions ===\")\n",
    "    for i in CurryMarketer.get_interactions():\n",
    "        print(i)\n",
    "\n",
    "if __name__ == \"__main__\":\n",
    "    main()\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "a033c611",
   "metadata": {},
   "source": [
    "## ノートブックの説明"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "c0727be5",
   "metadata": {},
   "source": [
    "このノートブックでは、Agentariumを使用して激辛カレーに関する議論をシミュレートします。エージェントたちが自律的に会話を進め、激辛ブームを反映したアイデアを生成します。"
   ]
  }
 ],
 "metadata": {},
 "nbformat": 4,
 "nbformat_minor": 5
}
5
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?