Chuyển đến nội dung chính

レッスン 1: エージェントとは何ですか? — チャットボットから自律型AIへ

AI エージェントを定義し、チャットボット、エージェント、副操縦士を区別します。知覚-理由-計画-行動のループ。エージェントの種類: 反応型、熟議型、ハイブリッド。 Python を使用した最も単純なデモ エージェント。

🧠 AI と ML — レッスン 0 レッスン 1: エージェントとは何ですか? — チャットボットから来ます 自律型AI

AI エージェントの構築: ゼロから本番環境まで

パート 1: エージェント プラットフォーム — 構築する前に理解する

xdev.asia

はじめに

ChatGPT を使用しました。 AI が質問に答えたり、コードを書いたり、メールを作成したりしているのを見たことがあるでしょう。しかし、想像してみてください。AI はただ答えるだけでなく、自ら行動することができます。Web 上の情報を検索し、API を呼び出し、データベースを読み取り、電子メールを送信し、失敗した場合には自己修正することもできます。

それが AI エージェント です。2025 年から 2026 年の AI の世界で最もホットなトピックです。


1. エージェントとは何ですか?

1.1 定義

AI エージェント は、LLM (Large Language Model) を「頭脳」として使用して次のことを行うシステムです。

  1. 認識: ユーザーまたは環境からの入力を理解します。
  2. 理由: 状況を分析し、計画を立てる
  3. Act (アクション): ツール/API を介してアクションを実行します。
  4. 学習 (学習): 次回の改善のために結果をメモリに保存します。
                    ┌─────────────┐
                    │   USER      │
                    │   INPUT     │
                    └──────┬──────┘
                           │
                    ┌──────▼──────┐
              ┌────►│  PERCEIVE   │
              │     └──────┬──────┘
              │            │
              │     ┌──────▼──────┐
              │     │   REASON    │◄────── Memory
              │     │   & PLAN    │
              │     └──────┬──────┘
              │            │
              │     ┌──────▼──────┐
              │     │    ACT      │────── Tools
              │     │  (Execute)  │       (APIs, DB, Web...)
              │     └──────┬──────┘
              │            │
              │     ┌──────▼──────┐
              └─────│  OBSERVE    │
                    │  (Result)   │
                    └──────┬──────┘
                           │
                    ┌──────▼──────┐
                    │   OUTPUT    │
                    └─────────────┘

1.2 実践例

エージェントではありません: あなたは ChatGPT に「今日のサイゴンの天気はどうですか?」と尋ねます。 → ChatGPT は訓練データに基づいて回答します (間違っている可能性があります)。

エージェントとして: 同じ質問をする → エージェントが Weather API を呼び出す → 実際のデータを取得する → 気温 34°C、午後に雨が正確に回答します。


2. チャットボット vs エージェント vs 副操縦士 — 明確な区別

チャットボット副操縦士エージェント
仕組み質問に答える提案、サポートセルフアクション
インタラクティブな世界いいえ制限事項フル (ツール、API)
自律性のレベル非常に低い平均曹操
意思決定ユーザーが決定推奨: ユーザーはを選択します。エージェントが決定します (承認が必要な場合があります)
メモリ会話中セッションベース短期 + 長期
例ChatGPT基本GitHub コパイロットデビン、クロード コンピューターの使用

自律性スペクトル

Chatbot ◄──────────── Copilot ──────────►  Agent
  │                     │                    │
  │ "Trả lời câu hỏi"  │ "Gợi ý & hỗ trợ" │ "Tự thực hiện"
  │                     │                    │
  │ Q&A đơn giản        │ Code completion    │ Research & report
  │ Dịch thuật          │ Email drafting     │ Order processing
  │ Tóm tắt             │ Bug suggestion     │ Automated testing

3. AI エージェントの種類

3.1 単純な反射エージェント

  • 現在の入力に直接反応します
  • 記憶力も計画性もない
  • 例: チャットボット FAQ、ルールベースのボット

3.2 モデルベースの反射エージェント

  • 世界状態の内部「モデル」を維持する
  • 不完全な情報を扱うことができる
  • 例: カスタマー サポート ボットは会話のコンテキストを認識します。

3.3 目標ベースのエージェント

  • 達成すべき明確な目標がある ・行動計画(計画)を立てる
  • 例: 旅行予約エージェント — 予算内で最も安いチケットを見つける

3.4 ユーティリティベースのエージェント

  • 目標を達成するだけでなく「効用」(満足度)を最適化する
  • 比較して最適なオプションを選択します
  • 例: ポートフォリオ管理エージェント — 最大リターン/リスク比

3.5 学習エージェント

  • 経験を通じた自己改善
  • フィードバックループを使用する
  • 例: エージェントはレビューのたびに、より良いコードの書き方を学習します。

4. 基本的なエージェントのアーキテクチャ

すべてのエージェントには 4 つの主要コンポーネントがあります。

┌──────────────────────────────────────────────┐
│                  AI AGENT                     │
│                                              │
│  ┌──────────┐  ┌──────────┐  ┌──────────┐   │
│  │   LLM    │  │  TOOLS   │  │  MEMORY  │   │
│  │  (Brain) │  │  (Hands) │  │  (Mind)  │   │
│  └──────────┘  └──────────┘  └──────────┘   │
│                                              │
│  ┌──────────────────────────────────────┐    │
│  │        ORCHESTRATION LOGIC           │    │
│  │   (Agent Loop / State Machine)       │    │
│  └──────────────────────────────────────┘    │
└──────────────────────────────────────────────┘

4.1 LLM (脳)

脳は決断を下します。 LLM が決定します: どのツールを呼び出すか?どのようなパラメータで?結果は十分ですか?

4.2 ツール (手)

エージェントが世界と対話するためのツール: Web 検索、電卓、データベース クエリ、API 呼び出し、ファイル I/O、コード実行...

4.3 メモリ

  • 短期: 現在のセッションでの会話履歴
  • 長期: 多くのセッションで蓄積されたナレッジ (ベクター DB)

4.4 オーケストレーション ロジック

制御ループ: 入力の受信 → LLM の呼び出し → ツールの選択 → 実行 → 結果の確認 → 繰り返すまたは戻ります。


5. デモ: Python を使用した最も単純なエージェント

純粋な Python と OpenAI API のみを使用して、可能な限り単純なエージェントを構築します。

5.1 セットアップ

pip install openai

5.2 コード

import json
from openai import OpenAI

client = OpenAI()  # Dùng OPENAI_API_KEY từ env

# Step 1: Định nghĩa tools
tools = [
    {
        "type": "function",
        "function": {
            "name": "get_weather",
            "description": "Lấy thời tiết hiện tại của một thành phố",
            "parameters": {
                "type": "object",
                "properties": {
                    "city": {
                        "type": "string",
                        "description": "Tên thành phố, ví dụ: Ho Chi Minh City"
                    }
                },
                "required": ["city"]
            }
        }
    },
    {
        "type": "function",
        "function": {
            "name": "calculate",
            "description": "Tính toán biểu thức toán học",
            "parameters": {
                "type": "object",
                "properties": {
                    "expression": {
                        "type": "string",
                        "description": "Biểu thức cần tính, ví dụ: 2 + 3 * 4"
                    }
                },
                "required": ["expression"]
            }
        }
    }
]

# Step 2: Implement tool functions
def get_weather(city: str) -> str:
    """Fake weather API cho demo"""
    weather_data = {
        "Ho Chi Minh City": {"temp": 34, "condition": "Nắng, mưa chiều"},
        "Hanoi": {"temp": 28, "condition": "Nhiều mây, ẩm"},
        "Da Nang": {"temp": 30, "condition": "Nắng đẹp"},
    }
    data = weather_data.get(city, {"temp": 25, "condition": "Không có dữ liệu"})
    return json.dumps(data, ensure_ascii=False)

def calculate(expression: str) -> str:
    """Simple calculator"""
    try:
        result = eval(expression)  # ⚠️ Dùng eval cho demo, production cần sandbox
        return json.dumps({"result": result})
    except Exception as e:
        return json.dumps({"error": str(e)})

# Step 3: Tool dispatcher
tool_functions = {
    "get_weather": get_weather,
    "calculate": calculate,
}

# Step 4: The Agent Loop
def run_agent(user_message: str):
    print(f"\n{'='*60}")
    print(f"👤 User: {user_message}")
    print(f"{'='*60}")

    messages = [
        {"role": "system", "content": "Bạn là một AI assistant thông minh. "
         "Hãy sử dụng tools khi cần để trả lời chính xác."},
        {"role": "user", "content": user_message}
    ]

    # Agent loop — tối đa 5 vòng
    for step in range(5):
        response = client.chat.completions.create(
            model="gpt-4o-mini",
            messages=messages,
            tools=tools,
        )
        
        message = response.choices[0].message
        messages.append(message)

        # Nếu LLM không gọi tool → trả lời cuối cùng
        if not message.tool_calls:
            print(f"\n🤖 Agent: {message.content}")
            return message.content

        # Nếu LLM gọi tool(s)
        for tool_call in message.tool_calls:
            func_name = tool_call.function.name
            func_args = json.loads(tool_call.function.arguments)
            
            print(f"\n🔧 Tool call [{step+1}]: {func_name}({func_args})")
            
            # Thực thi tool
            result = tool_functions[func_name](**func_args)
            print(f"   📦 Result: {result}")

            # Trả kết quả về cho LLM
            messages.append({
                "role": "tool",
                "tool_call_id": tool_call.id,
                "content": result,
            })

    return "Agent loop exceeded maximum steps."

# Step 5: Test
if __name__ == "__main__":
    run_agent("Thời tiết Sài Gòn hôm nay thế nào?")
    run_agent("Tính cho tôi: (15 * 7) + (23 * 3) - 42")
    run_agent("So sánh thời tiết Hà Nội và Đà Nẵng, thành phố nào nóng hơn bao nhiêu độ?")

5.3 期待される出力

============================================================
👤 User: Thời tiết Sài Gòn hôm nay thế nào?
============================================================

🔧 Tool call [1]: get_weather({"city": "Ho Chi Minh City"})
   📦 Result: {"temp": 34, "condition": "Nắng, mưa chiều"}

🤖 Agent: Thời tiết Sài Gòn hôm nay: **34°C**, trời nắng và có thể mưa vào buổi chiều. 
   Nhớ mang ô khi ra ngoài nhé! ☀️🌧️

3 番目の質問に注意してください。エージェントから電話があります。 get_weather 2 回 (ハノイとダナンの場合)、結果を比較します。これがエージェントの力です。複数ステップの推論とツールの使用です。


6. エージェントの傾向 2025 ~ 2026 年

6.1 Agentic AI はどこにありますか?

2023: Chatbots (Q&A, content generation)
2024: Copilots (code assist, writing assist)
2025: Single Agents (autonomous task completion)
2026: Multi-Agent Systems (coordinated agent teams)

6.2 重要なマイルストーン

時間イベント
2024 年 3 月Devin — 最初の (物議を醸す) 「AI ソフトウェア エンジニア」
2024 年 6 月クロード 3.5 ソネット + ツールの使用 — エージェントにとってゲームチェンジャー
2024 年 10 月クロード コンピュータの使用 — コンピュータ制御エージェント
2024 年 11 月Anthropic MCP — オープンソース接続標準
2025 年 4 月Google A2A プロトコル — エージェントは相互に通信します。
2025–2026マルチエージェント プラットフォームの競争

6.3 なぜ今学ぶ必要があるのですか?

  • 深い ML/DL を知る必要はありません: エージェントは主に API 経由で LLM を使用します。エンジニアリング スキルは必要ですが、モデルをトレーニングする必要はありません
  • 非常に高い需要: 「AI エージェント開発者」は最も求められているスキルセットです
  • 障壁が低く、天井が高い: 最初はシンプルですが、非常に複雑なシステムを構築できます。
  • 実用的: 自動化、リサーチ、コンテンツ、コーディングなど、仕事にすぐに適用できます...

レッスンの概要

  • AI エージェント = LLM + ツール + メモリ + オーケストレーション ロジック
  • エージェントは、外の世界と独自に行動する能力がチャットボットとは異なります。
  • コアループ: 知覚→理由→行動→観察→(繰り返し)
  • 5種類のエージェント:Simple Reflex → Model-Based → Goal-Based → Utility-Based → Learning
  • OpenAI 関数呼び出しを使用して最も単純なエージェントをコーディングしました
  • 2025 ~ 2026 年は Agentic AI の時代 — 始めるのに最適な時期

演習

  1. パート 5 でデモ エージェントを実行し、より複雑な質問をしてみます (多くのツールを呼び出す必要があります)。
  2. 新しいツールを追加します。 search_web(query) — シミュレーション結果を返します。エージェントはそれをいつ使用するかを知っていますか?
  3. エージェントが日常業務で解決できる 3 つのユースケースを考えてください。
  4. ブログ投稿「AI エージェントとは?」を読んでください。 Anthropic サイトで