完全ノーコードで自動化フローにAI導入してみた

### はじめに

以前、[アポ調整のSlackアプリをWorkatoで構築した事例](https://qiita.com/yabikih/items/a2be1babf62d6cc3469c)を紹介しました。
そのアプリでは、新着の問い合わせから情報を抜き出す際、事前に用意したパターンのどれに当てはまるか判定し、パターン毎に構えた正規表現により「会社名」「氏名」等の項目を抜き出していました。

今回は、AIを連携させてあらゆる問い合わせのパターンに対応させたいと思います。
しかもノーコードで。

### こんな方に読んでほしい
・AIの力を借りて業務を効率化（自動化）したい
・でも難しそうで敬遠している
・コーディング／API操作に苦手意識あり
・絶対にコードを書きたくない！

このような思いを抱えている方へのアンサーになるかもしれません。

### 今回やりたいこと
**AIで新着の問い合わせから情報を抜き出せるか**実験をしたいので、簡易化します。
![やりたいこと.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3570108/cd3a6137-fc64-d0e0-eb37-19cd9ebf7880.jpeg)


問い合わせのメール／外部システムからの通知 が所定のメールボックスに送られます。

Workatoは、
処理1) Gmailに新しく届いたメールをトリガー(※)します。
処理2) そのメールの本文を生成AIにかけて、「会社名」「氏名」を抜き出します。
さらに、AIには問い合わせの「緊急度」も判定させます。
念のため、「緊急度の判断根拠」も出してもらいます。
処理3) 生成AIの処理結果を、スプレッドシートに出力します。

※トリガーについて同僚がまとめた記事があるので、ご参考にどうぞ
→[なんちゃってエンジニアがWorkatoのトリガーについてまとめてみた](https://qiita.com/Omitsu_bvt/items/7be20abd03889306b979)

今回、処理の対象となる問い合わせメールは以下の通りです。

**定型タイプ**
LPサイトの申込フォーム等からデータ連携されてくることを想定。
何らかのシステム経由のため、項目ごとにラベルが付いていたり改行されていたりと、構造化されています。
![定型タイプ.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3570108/42facae5-e243-9b69-8c4b-eb800a85c240.jpeg)


**非定型タイプ**
カスタマーサービス宛に、直接メールで問い合わせしてくることを想定。
当然ながら自由形式です。
![非定型タイプ2.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3570108/05066486-219d-44c3-bbc0-fd5a82f5e065.jpeg)


### 処理結果
**結論：定型も非定型も、正しく項目が抜き出せました**
![処理結果.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3570108/5062d162-2856-5d28-8850-036d895d752a.jpeg)



非定型の例３については、「デモ太郎です」と氏名だけを名乗りましたが、会社名を署名から引用してくれたようですね。

### どんな実装をしたのか
さて、本当にノーコードでやったのか？と疑問を持つ方もいると思います。
答えはYesです。

**レシピ全容**

![レシピ全容.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3570108/b0825dc4-c101-111e-3bae-5ebba7e781d3.jpeg)


各Stepについて補足していきます。
なお、各コネクションは接続済みのものを使用し、説明を省きます。

**Step1：New email in Gmail**
ほぼ何も設定しないため省きます。

**Step2：Chat with ChatGPT by OpenAI
（ChatGPTにメッセージを送る）**

![step2_再.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3570108/18be6761-d0cd-06d0-3c86-25dd713a9cbc.jpeg)


Message typeはSingle messageを選択します。
Text to sendにプロンプトを入力します。
Model(任意)は未選択とします。（初期値のgpt-3.5-turboが適用されます）

「#入力:」の部分に設定しているのは、Step1でトリガーした新着メールの「本文」データピルです。

Workatoのデータピルとは、トリガーやアクションステップからの出力データのことで、変数を指します。先行ステップから出力された変数を後続ステップで使うことができます。
難しい宣言や代入なしで、必要なアイテムを直感的に使用できます。

**Step3：Parse text to find specific information using OpenAI
（OpenAIを使用してテキストを解析して特定の情報を見つける）**

Step2の出力結果そのものは、
「"会社名：株式会社テストカンパニー\n氏名：デモ太郎\n緊急度：中\n緊急度の判断根拠：問い合わせ文章に特別な緊急性を示す表現はなく、一般的な相談内容であるため、中の緊急度と判断しました。」
のような文字列となります。
こうした項目同士が連なった値ではなくて項目ごとに分かれた値を得たい時、皆さんならどうしますか？
Formulaモードにしてsplitやgsubのような簡単なRubyを書いてもいいかもしれません。

でも今回はノーコードにこだわりたいと思います。
***ということで、ChatGPTにいい感じに分解してもらいます！***

![step3_前.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3570108/aa3ecd78-16f4-0dbb-cdfb-f7c47eea5788.jpeg)
![step3_後.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3570108/3ecc81fb-4f5d-2064-a39e-b703ff0307da.jpeg)

**Step4：Add a new row in a sheet in Google Sheets
（Google スプレッドシートのシートに新しい行を追加する）**

Step3で得た内容を、スプレッドシートの行に書き出します。

![step4_前.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3570108/ed15df60-2393-0c59-2338-a6a9cb89fa3d.jpeg)
![step4_後.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3570108/2512fe8b-af2b-4b7b-c4f0-5defdb1e5bdf.jpeg)



### 良かったこと
**✓**　パターンの洗い出し／パターン毎の分岐処理や正規表現がいらない
**✓**　パターン予測できないものにも対応できる
**✓**　ChatGPTのコンソールで直接質問を投げかける時と、感覚がそんなに変わらない実装体験
**✓**　APIに不慣れでも、API実行時と同じ結果を得られる

### 最後に
AIを利用して業務を効率化したい。
でも全部をAIでやりたいわけじゃなくて、ハンドリングしたい部分は処理を組みたい。
それをノーコードでやりたい。
こうした野望を持っているなら、Workatoがマッチしていそうです。

今回のサンプルではスプレッドシートに出力しましたが、WorkatoはSlackやTeams上のbot処理を構築しやすいので、AIと組み合わせたらこんなこともできそうだなと思いました。

![理想イメージ.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3570108/17c92bd4-37f6-2e1f-97b6-b163b2cc5502.jpeg)

AIから返ってきた結果がイマイチな時は、人間が選択(入力)し直すなど、アイディア次第で柔軟に組めるのがいいですよね。

そんなの実際どうやるの？が気になるところかと思います。
それについてはWorkatoの機能に触れながら詳細に解説していくことになりますので、また別の機会にお伝えできればと思います。

AIを使うと開発の生産性も向上します。
以下は、AIにPythonを書かせてWorkatoレシピを作成した記事を紹介しています。
[〇 Workato×Pythonで生産性向上！SaaS連携だけで可能になる自動化](https://bstyle-value-technologies.blogspot.com/2024/09/workatoaicodepython.html)