
生成AI協会(GAIS)のエバンジェリスト森です。2025年はエージェント元年であると主張している記事をよく見かけたりしましたが、生成AIの本家?であるOpenAIからも2025年3月12日に「エージェント SDK」としてリリースされました。そんなわけで、今回は以前にも紹介した「Dify」を使って、「エージェントSDK」の一部を触ってみたいと思います。
エージェントとは!?
流行っているのもあって、各サービス会社も「エージェント」という言葉を使いがちです。でも、ちょっとずつ定義が違ったりするんですよね。そんなわけで、いくつかのサービスで言っているエージェントをざっくりとまとめて言ってみることにします。

目的をもっている
エージェントは特定の目的を持って作られています。例えば「会議の議事録を作る」とか「売上データを分析する」とか言ったものです。逆に言えば特に目的のない汎用的なものはエージェントとは呼ばないのかもしれません。
連携先を持っている
AIは学習に使われたデータというものがありますので、例えば今日の株価について聞いても答えてくれません。もしかすると過去のデータをもとに予想して答えてくれるかもしれませんが、事実をもとに答えているわけではないでしょう。この場合はネットから検索して情報を持ってくることになると思いますが、これも連携のひとつです。会社で使っているデータベースからデータを持ってきたいとか、クラウドから持ってきたいなど色々あると思いますが、AIのモデルに含まれていないものと連携するというのがAIエージェントの定義になっているようです。
自律的に処理する
連携先があって、それを使うだけではなく、「自律的に」使ってくれるのがエージェントです。定義されている連携先を使う、使わないの判断もそうですし、ネット検索するなら、どんなキーワードで検索するのか?などAI側で考えて処理してくれるのがエージェントということになります。
Difyで作ってみるもの
AIエージェントの定義は上記のようなものです。今回Difyをつかって作ってみるものの定義をしてみましょう。

というわけで、簡単にできそうなものとして、生成AI系のニュースを検索、まとめてSlackに投稿するエージェントを作ってみようかと思います。
「Web Search」APIを使う
OpenAIがリリースした「エージェントSDK」は Python 用のもので、プログラムから使うことが前提となったものです。ただ、ドキュメントをよく読むと「Built-in Tools」としてWebから利用できるAPIとしても定義されている事がわかります。

https://platform.openai.com/docs/guides/agents
この中に「Web Search」というAPIがありますので、こちらを使うことでネット検索して生成AIニュースを拾ってくるという部分はOKです。Difyには「HTTPリクエスト」というノード(それぞれの機能を持ったアイコン部分のこと)がありますので、呼び出すことで実装できそうです。
Slackへの投稿と起動のタイミング
Slackへの投稿についてもDifyにノードがあるので、問題なさそうです。SlackのAPIサイトでトークンを取得してセットすることで連携できます。
Difyはいろいろと便利ですが、今回のエージェント作成にあたってどうしようもなかった点として、起動する方法が無いことがありました。毎朝Slackに書き込むため毎朝Difyのワークフローが自動的に動いてくれないと意味ないですよね。Difyを自分の環境としてDockerで立ち上げていればLinuxのcronコマンドとかでDifyのAPIを実行するcurlをセットしておくなどすると良さそうです。
作ってみたワークフロー

全体感は上記の図で示したようになりました。5つのノードを並べるだけで出来上がるってところだけでもDifyって便利ですよね。
最初の「開始」ノードでは外部から値を受け取れるようにしました。対象のニュースの期間を指定できるように開始日と終了日を入れています。
続く「HTTPリクエスト」ノードが本体とも言うべき、ChatGPTのAPIを実行している部分です。

APIのエンドポイントを設定、ヘッダーにはAPIキーを入れています。ボディ部分にOpenAIで公開されているAPIリファレンスを参考にしてオプションやシステムプロンプトをセットしています。
次の「JSON Parse」ノードではOpenAIのAPIから返されるJSONから、文章部分だけを切り出しています。

「JSON filter」部分に切り出したい部分のパスを書くのですが、書き方はリファレンスに詳しく載っている部分が見つけられなかったので、サンプルで提供されているテンプレートを眺めて設定してみました。よくあるJSONのパス指定方法みたいです。条件の指定がどのあたりまで詳しくできるかはわかりませんが、単純にあるノードの下を持ってくるくらいなら簡単に指定できます。
続く「Incoming Webhook to send message」ノードではSlackのAPIサイトで発行したWebhookのURLをセットするのみで指定したチャンネルに書き込むことができるようになります。Slackのトークン発行については色んなサイトで紹介されているので簡単に調べることが切ると思いますし、ChatGPTに聞いても答えてくれました。

実際のところ・・・

やってみると色々わかってくることがありました。例えば指定した日付のニュースではないものがまじることもありましたし、出力フォーマットが微妙だったりもしました。
ニュースの発表日時については生成AI側におまかせするのではなく、Google検索でオプション指定したほうがプロンプトを試行錯誤するよりも現時点では正確になりそうです。Google検索のノードもDifyには用意されてましたので、そちらを使ったほうがいいかもですね。
出力フォーマットの方もプロンプトで指定しましたが、多少の揺れは起きるようです。また、Slack側がマークダウン形式の一部しか対応していないのもあって、そのあたりも工夫の余地があります。
まとめ
Difyを使ってエージェント作成してみましたがいかがでしたでしょうか。
簡単に試せるのは良い感じですよね。試行錯誤も簡単です!
ただ、今回は連携先のSlackがノードとして用意されているものを選んだので簡単でしたが、用意されていない連携先を使ってみたい場合はハードルが少々上がりそうです。APIが提供されていない企業向けのシステムとかだと、プログラムを完全になしにするのは難しいかもしれません。
今後のシステム選定では「AIから連携できるのか?」が選定の優先度として高くなってくることも考えられますね。