ソフトバンク — AGENTIC STAR & 全社AIエージェント戦略
企業概要
| 項目 | 内容 |
|---|
| 企業名 | ソフトバンク株式会社 |
| 業種 | 通信・IT |
| 従業員数 | 約55,000名(グループ) |
| AIエージェント数 | 250万超(全社員が作成) |
| 公式情報 | ソフトバンク公式 / 社員の取り組み |
背景と課題
- 通信事業の成熟化に伴い、AIを新たな成長エンジンに位置づけ
- 約55,000名の社員全員がAIを業務に活用する文化を醸成する必要
- 法人顧客向けに、セキュアかつ柔軟なAIエージェント基盤の需要が急増
全社AIエージェント創出プロジェクト
施策の概要
2025年6月、全社員に**「1人100個のAIエージェント作成」**をミッションとして課すプロジェクトを開始。
成果
| 指標 | 結果 |
|---|
| 創出AIエージェント数 | 250万超(2ヶ月半) |
| 参加率 | 全社員 |
| AI理解度向上 | 約**90%**の社員が「理解が深まった」 |
AGENTIC STARの技術アーキテクチャ
技術選定
| コンポーネント | 技術 | 選定理由 |
|---|
| LLM | マルチLLM(タスクに応じて最適モデルを動的選択) | テキスト・画像・動画で最適なモデルが異なる |
| 連携プロトコル | MCP(Model Context Protocol) | 既存業務システムとの双方向連携を標準化 |
| 記憶機構 | 長期・短期記憶 | ユーザーの好みや業務コンテキストを学習 |
| 提供形態 | SaaS型(ブラウザアクセス) | 導入の容易さとセキュリティの両立 |
┌────────────────────────────────────────────┐
│ AGENTIC STAR プラットフォーム │
├────────────────┬───────────────────────────┤
│ Agent管理 │ セキュリティ基盤 │
│ ダッシュボード │ (認証・認可・監査) │
├────────────────┴───────────────────────────┤
│ │
│ ┌──────────────┐ ┌──────────────────┐ │
│ │ マルチLLM │ │ MCP連携ゲート │ │
│ │ ルーター │ │ ウェイ │ │
│ │ (テキスト/ │ │ (既存SaaS/ │ │
│ │ 画像/動画) │ │ 業務システム) │ │
│ └──────┬───────┘ └────────┬─────────┘ │
│ │ │ │
│ ┌──────▼───────────────────▼──────────┐ │
│ │ Agent実行エンジン │ │
│ │ ┌────────┐ ┌────────┐ ┌────────┐ │ │
│ │ │短期記憶 │ │長期記憶 │ │ツール │ │ │
│ │ │ │ │ │ │80種類+ │ │ │
│ │ └────────┘ └────────┘ └────────┘ │ │
│ └────────────────────────────────────┘ │
│ │
│ ┌──────────────────────────────────────┐ │
│ │ プリビルトAgent(リサーチ/文書作成/ │ │
│ │ 戦略支援/部門間調整) │ │
│ └──────────────────────────────────────┘ │
└────────────────────────────────────────────┘
実装例: MCP対応AIエージェントの構築
1. マルチLLMルーターの実装
from openai import OpenAI
from anthropic import Anthropic
from enum import Enum
class TaskType(Enum):
TEXT_ANALYSIS = "text"
IMAGE_UNDERSTANDING = "image"
CODE_GENERATION = "code"
CREATIVE_WRITING = "creative"
class MultiLLMRouter:
"""タスクに応じて最適なLLMを動的に選択するルーター"""
def __init__(self):
self.openai = OpenAI()
self.anthropic = Anthropic()
self.model_map = {
TaskType.TEXT_ANALYSIS: ("openai", "gpt-4o"),
TaskType.IMAGE_UNDERSTANDING: ("openai", "gpt-4o"),
TaskType.CODE_GENERATION: ("anthropic", "claude-sonnet-4-20250514"),
TaskType.CREATIVE_WRITING: ("anthropic", "claude-sonnet-4-20250514"),
}
def classify_task(self, user_message: str) -> TaskType:
"""ユーザー入力からタスクタイプを自動分類"""
response = self.openai.chat.completions.create(
model="gpt-4o-mini",
messages=[
{"role": "system", "content": """タスクを以下に分類してJSON出力:
{"task_type": "text|image|code|creative"}"""},
{"role": "user", "content": user_message}
],
response_format={"type": "json_object"}
)
import json
result = json.loads(response.choices[0].message.content)
return TaskType(result["task_type"])
def route_and_execute(self, user_message: str, context: dict = None) -> str:
"""タスク分類 → 最適LLM選択 → 実行"""
task_type = self.classify_task(user_message)
provider, model = self.model_map[task_type]
if provider == "openai":
response = self.openai.chat.completions.create(
model=model,
messages=[
{"role": "system", "content": "業務支援AIエージェントです。"},
{"role": "user", "content": user_message}
]
)
return response.choices[0].message.content
else:
response = self.anthropic.messages.create(
model=model,
max_tokens=2000,
messages=[{"role": "user", "content": user_message}]
)
return response.content[0].text
router = MultiLLMRouter()
result = router.route_and_execute("売上データを分析してレポートを作成して")
print(result)
2. 長期記憶機能の実装
from dataclasses import dataclass, field
from datetime import datetime
import json
@dataclass
class Memory:
content: str
category: str
created_at: str = field(default_factory=lambda: datetime.utcnow().isoformat())
importance: float = 0.5
class AgentMemoryManager:
"""ユーザーの好みや業務コンテキストを学習する記憶システム"""
def __init__(self, user_id: str):
self.user_id = user_id
self.short_term: list[Memory] = []
self.long_term: list[Memory] = []
def extract_preferences(self, conversation: str) -> list[Memory]:
"""会話からユーザーの好みや傾向を自動抽出"""
from openai import OpenAI
client = OpenAI()
response = client.chat.completions.create(
model="gpt-4o-mini",
messages=[
{"role": "system", "content": """会話から以下を抽出してJSON配列で出力:
[{"content": "抽出した情報", "category": "preference|context", "importance": 0.0-1.0}]
例: 好みのレポート形式、よく使うツール、業務上の制約など"""},
{"role": "user", "content": conversation}
],
response_format={"type": "json_object"}
)
items = json.loads(response.choices[0].message.content).get("memories", [])
return [Memory(**item) for item in items]
def get_relevant_context(self, query: str, top_k: int = 5) -> str:
"""クエリに関連する記憶を取得してコンテキストとして返す"""
all_memories = self.short_term + self.long_term
sorted_memories = sorted(
all_memories, key=lambda m: m.importance, reverse=True
)[:top_k]
return "\n".join([f"- [{m.category}] {m.content}" for m in sorted_memories])
SE本部での現場活用事例
| Agent | 用途 | 効果 |
|---|
| アラート分析Agent | サーバー運用アラートの自動分析・対処提案 | 対応時間を大幅短縮 |
| ソースレビューAgent | コードレビューの自動化 | レビュー工数を大幅削減 |
| リサーチAgent | 市場調査・技術調査の自動化 | 調査時間を短縮 |
| 文書作成Agent | 提案書・報告書の下書き自動生成 | 作成時間を短縮 |
学びと再現のポイント
- 全社員参加型: 「1人100個」という数値目標で、全員がAIに触れる機会を創出
- マルチLLM戦略: 1つのLLMに依存せず、タスクに応じて最適モデルを選択
- MCP対応: 既存業務システムとの連携を標準プロトコルで実現
- 記憶機能: ユーザーの業務コンテキストを学習し、パーソナライズされた支援を提供