ワークフローツールにおけるAPI連携の極意 jinbaflowでの発見、多分、Dify, Zappier, Gumloopもいつか実装すると思うけど
開発TeamのTakです。自動化ツールをちょっと作っている皆さんなら、知っていることかと思いますが、他サービス連携って意外とムズイのです。
今回は、僕らがAPI連携機構を作るにあたり、めっちゃ悩んだ過程とものすごいいいやり方を見つけた話をします。ちょっとテクニカルなことも出てきますが、非エンジニアでもわかるくらい、チルに書きます。(僕もそんな詳しいことは分からない)。後、それぞれのツールの実際の連携について知りたいかたはこの記事は参考になりません。
https://www.jinba.ai/
オートメーションを作る場合のAPI連携の設計方針は基本は2つ
「がちがちにレール敷く法」
UIをガッツリ作りこみ、限られたMethodについてユーザーに提供する。(Zappier, Gumloop)「もはやコーディング法」
UIは置いといて、すべてのMethodをユーザーが使えるようにする「生成AIにやらせる法」←要は2番をクソスムーズにコード生成させることにより、ユーザーに負荷をかけない。
いきなり、我々の結論を言ってすいません。この第3の答えに至る前、社内では大乱闘が起きていました。
短縮しましたが、この議論を2週間はしていました…w
つまりどうなったか、
こうなりました。Oauth認証だけをするモジュールを作る。右側にPythonモジュールを置き、Authであることを伝えて何したいか伝える
え、これ普通じゃないと思われるかと思いますが、実際には2回APIを叩かないといけないところをショートカットしています。普通だと、Get IDみたいなので、メールのIDを取得し、そのIDから一つ一つのデータをAPIで取得し、さらに、そのデータから受信となっている最新のものを取らないといけない。つまりしたみたいな工程になる。
もちろん、我々のシンプル化された方がでも、ステップは同じだが、全部生成AIに考えて調整してもらおうという最強な方法である。
ここで皆さんに立ち返ってもらいたい、API連携はめんどくさい
これは、なぜかAPIのMethodがめっちゃ沢山あるからです。えー死ぬほどあります。
一例としてSlackを出すので、息をとめてスクロールしてください。これでも全体の10分の1です。
https://api.slack.com/methods
これらを駆使して、特定のスレッドの特定のコメントにされている特定のスタンプを取得し、それに対して返信し、Gmailを自動で送りその報告をするボットをつくろうとするとこうなる。
このワークフローが難しくなるのも、このIDをとってから操作を行わなければないという設定の影響だ。。。(ちょっと時間が足りずこれ自体を更新できていないが、また時間があるときに更新する。)
最後に動かしているとこ。