AIエージェントの定義いろいろ

Building effective agents
Anthoropic社が公開しているAgentsの定義
- 独立して複雑なタスクを実行するものや事前定義されたワークフローなど様々なバリエーションをすべてagentic systemsと呼ぶ上で以下の2点に分類
- Workflows: 事前に定義されたフローや期待される結果がわかっているとき
- 例)Difyなどのワークフローで定義できるもの
- Agents: LLM自身で動的にコントロールしながらタスクを実行していくとき
- 例)Clineなど出力結果に対して良し悪しを評価して再実行し内省(コーディングエージェント)
- Workflows: 事前に定義されたフローや期待される結果がわかっているとき
- 基本的に業務で実行する分にはWorkflowsで十分なことが大半
- Anthoropicの主張としては、"エージェントシステム"の言葉に囚われずにまずはシンプルなLLMコールから一つずつ小さく試してユースケースにあったものを選択すれば良い
- 複雑なシステムを作ることはゴールではなく、正しいシステムを作ることが大事

Prompt Chaining
これとかまさにワークフローの簡単な例で、これまでも同じようなことをDifyやコードベースでやってきたと思うが、それが用語と一緒に整理されている感じ。
例)ある文章をLLMで生成→100文字以内かチェック→Noの場合は再度LLMをコールし100文字以内に要約(以下ループ)

n8n(エヌエイトエヌ)
n8n(エヌエイトエヌ)は無料で使えるオープンソースのワークフロー自動化ツールでIFTTTやZapierと比較されることが多く、これらのツールを使ったことがあればそれのGenAI版と思えば良い
- 無料でオープンなノードベースのワークフロー自動化ツール
- Webサービスやツールのタスクを自動化できる
- ホスティング型とクラウド型(有料)を提供
- ほぼノーコードでワークフローが組めるので自動化が簡単
- 対応しているWebサービスの200以上でIFTTTのようにインテグレーションを定義してワークフローを作るだけ
- 対応サービス一覧: https://n8n.io/integrations
名前の由来
It is "n8n" with all lower case letters. It can either be pronounced "n eight n" or "nodemation".
While looking for a good name for the project with a free domain, Jan quickly realized that all the good ones he could think of were already taken. So, in the end, he chose nodemation. 'node-' in the sense that it uses a Node-View and that it uses Node.js and '-mation' for 'automation' which is what the project is supposed to help with. However, he did not like how long the name was and could not imagine writing something that long every time in the CLI. That is when he ended up on 'n8n'.
https://github.com/n8n-io/n8n?tab=readme-ov-file#what-does-n8n-mean

Googleが定義するAgents
Building effective agentsはAnthoroic社の定義だが、Googleの定義はペーパーが公開されている。

Algomatic社のAIエージェントの解説
自動運転におけるレベル分けと同じように、自動化システムの代行レベルに応じて Automation > Agentive > Assistant > Manual と使い分けたりします。

Function callingとAI Agents
関係性: Function calling の延長が AIエージェント
Function callingは「外部ツールを呼び出して使う」ことにとどまりますが、AIエージェントはそれを**「どのように組み合わせて目標を達成するか」まで考慮する仕組み**と言えます。
例えば、以下の2つを比較すると違いが明確です。
Function callingの活用例
- ユーザー: 「東京の天気を教えて」
- LLM: 「天気APIを呼び出します… 東京の天気は晴れです。」
AIエージェントの活用例
- ユーザー: 「今週末に東京でBBQをするんだけど、場所の候補を教えて」
- エージェントの動き:
- 天気APIを呼び出して今週末の東京の天気を確認
- 天気が悪そうなら「屋根付きBBQ場」の検索を優先
- Google Maps APIを使い、交通アクセスの良いBBQ場をリストアップ
- 各候補の予約可否をチェックし、ユーザーに提案
このように、Function calling が単なるツール呼び出しなのに対し、AIエージェントは状況に応じた複数のアクションを自律的に組み合わせる点でより高度な仕組みになります。
結論
✔ Function callingはAIエージェントの基盤技術の1つだが、それだけではエージェントとは言えない
✔ エージェントはFunction callingを活用しつつ、より自律的に目的達成を目指す仕組みを持つ
✔ Function callingを適切に組み合わせて意思決定をするようになると、よりエージェントに近づく
つまり、「状況に応じたFunction callingの組み合わせとその結果をもとに行動を決定する仕組み」を作れば、それはAIエージェントとしての役割を果たし始めると言えます。

LangGraphのドキュメントより
Anthoropic引用してた
One way to think about this difference is nicely explained here by Anthropic:

実際、2020年から2024年初頭にかけて登場したAIモデルは飛躍的に性能を進化させていましたが、それ以降は明らかに成長が鈍化しています。単にデータを増やすだけでは、AIの精度が飛躍的に向上することはなくなってきたのです。
この限界を打破するものとして登場したのが、第三の波であるReasoning Modelです。Reasoning Modelであるo1は、前述の通り複雑なタスクにおいて4oのパフォーマンスを大きく凌駕