この記事では、以下のようなAIアプリ開発ツール「Dify(ディファイ)」を用いた、請求書の勘定科目を判別するAIチャットボットの構築方法を解説します。
弊社Walkersでは、“AIトレンドに乗り遅れたくないけど、具体的な活用法が見えない…”を解決するAI導入支援を行っています。補助金により1/3のコストで導入可能なので、ぜひAI活用にお悩みがある方はお気軽にご相談下さい。⇒AI導入支援サービスの概要はこちら
執筆者:山口 鳳汰
ノーコード・AI開発会社「Walkers」のCMO。
AIサービス「Prompt Lab」運営。
その他、受託開発や教育など多数のAI事業に参画している。
運営会社:株式会社Walkers
ノーコード・AI専門の開発会社。
300件以上の開発/制作実績、200件以上の企業様を支援。
マーケティングやUI/UXと掛け合わせたサービス開発を得意としている。
執筆者:山口 鳳汰
ノーコード・AI開発会社「Walkers」のCMO。
AIサービス「Prompt Lab」運営。
運営会社:株式会社Walkers
ノーコード・AI専門の開発会社。
これまでに300件以上の開発/制作実績、200件以上の企業様を支援。
Dify(ディファイ)とは?
Dify(ディファイ)とは「AI言語モデルを用いてチャットボットなどの独自アプリを開発することができるオープンソースのツール」です。
このツールを使うことで、プログラミングなど専門知識がなくても簡単に高性能なアプリを作成することができます。
「チャットボット」といわれると、企業のホームページなどに配置されている「お問い合わせ対応を行うチャットボット」を連想される方が多いと思われますが、
Difyでは、お問い合わせ対応以外にも複雑な処理を行うチャットボットを簡単に開発できます。
Difyには無料プランも用意されているため、「簡単な業務をAIで効率化したいが、本当にできるか不安」という方でも安心して利用することができます。
»関連記事:Dify(ディファイ)とは?事例や使い方、商用利用まで完全解説!
勘定科目判定AIチャットボットの開発方法
「請求書の仕訳を自動化したい」
「経費精算に費やす労力を削減したい」
このようなお悩みを抱えている方は多くいるのではないでしょうか。
この記事では、「請求書の勘定科目を判定するAIチャットボットの開発方法」を解説します。
勘定科目の判定を自動化することにより、書類の仕訳や経費精算にかかる時間を大幅に短縮することができます。
【手順①】過去の請求書仕訳データを用意する
この記事では、過去の請求書の仕訳データをアップロードし、そのデータを参考にして科目判定を行うAIチャットボットを開発します。
仕訳データをアップロードすることによって「今までこの取引先からの請求書は、どの勘定科目に割り振られているのか」をAIに学習させることができ、より正確な勘定科目の判定ができるようになります。
この「【手順①】過去の請求書仕訳データを用意する」では、Difyにアップロードをする過去の仕訳データを作成する方法を解説します。
過去の仕訳データが用意できない方は、「【手順②】Difyを構築する」に移動してください。
判定の正確性は多少劣ってしまいますが、AIチャットボットの開発は行うことができます。
現在使用している会計ソフトから、請求書の仕訳データをCSV形式でエクスポートします。
会計ソフトからのエクスポート方法一例:
Freee会計:仕訳帳をCSV形式・PDF形式で出力する(印刷する)
マネーフォワードクラウド経費:仕訳エクスポートの設定方法
弥生会計:仕訳データを書き出す(エクスポート)方法
空のスプレッドシートを作成し、「ファイルタブ」から「インポート」を選択します。
ファイルのアップロード画面で、ステップ1で取得した仕訳データをアップロードするとGoogleスプレッドシートにCSVデータをインポートできます。
インポートが完了したら、どの列に借方の「勘定科目」「金額」「会社名」が格納されているか記録しておきましょう。
「拡張機能タブ」から「Apps Script」を選択します。
コードの編集画面で既存のものから、以下のコードに差し替えを行います。
各項目が格納されている列名が異なる場合は、編集を行なってください。
function fetchResponse(e) {
const sheetData = fetchSheetData();
// JSON形式でレスポンスを作成して返却
return ContentService
.createTextOutput(JSON.stringify({ data: sheetData }))
.setMimeType(ContentService.MimeType.JSON);
}
function fetchSheetData() {
const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("シート1"); // スプレッドシートから「シート1」を取得
const categoryData = sheet.getRange("D2:D" + sheet.getLastRow()).getValues(); // D2からD列の最終行までデータを取得
const amountData = sheet.getRange("F2:F" + sheet.getLastRow()).getValues(); // F2からF列の最終行までデータを取得
const clientData = sheet.getRange("M2:M" + sheet.getLastRow()).getValues(); // M2からM列の最終行までデータを取得
let result = [];
categoryData.forEach((_, index) => {
result.push({
category: categoryData[index][0], // 勘定科目 (D列)
amount: amountData[index][0], // 金額 (F列)
client: clientData[index][0] // 取引先名 (M列)
});
});
return result;
}
コードの編集が完了したら、画面右上の「デプロイ」から「新しいデプロイ」を選択します。
画面右上の歯車ボタンから「ウェブアプリ」を選択します。
表示されたウェブアプリ編集画面で以下のように設定をし、「デプロイ」します。
次のユーザーとして実行:自分
アクセスできるユーザー:全員
デプロイ後に表示される画面で、ウェブアプリのURLをコピーします。
後ほど使用するため、必ず控えておくようにしましょう。
【手順②】Difyを構築する
「GitHub」または「Google」アカウントを用いてDifyではアカウントを作成します。
手順や複雑さに違いはないため、普段よく使用するアカウントを選んで作成しましょう。
画面の指示に従い「GitHub」または「Google」アカウントでログインを行えば、Difyアカウントの作成は完了です。
アカウント作成またはログインが完了すると、Difyのトップページに移動します。
この画面右上に表示されている「自身のアカウント名」をクリックし、表示されるメニューから「設定」を選択します。
「モデルプロパイダー」を選択し、LLMの設定画面に移動します。
ChatGPTとClaudeに関しては標準でモデルの組み込みが行われているため、この2つのLLMのどちらかを使用してDifyを利用する場合には、
ChatGPTの場合は、OpenAIタブの横にある「API-KEYセットアップ」
Claudeの場合は、ANTHROPICタブの横にある「API-KEYセットアップ」
をクリックして、APIキーのセットアップ画面を表示します。
表示された画面にそれぞれのAPIキーを入力すると接続が完了し、Difyで使用できるようになります。
※ChatGPTの利用に限り、API接続を行わなくても一定回数無料で使用することが可能です。
ステップ2と同様に、「モデルプロパイダー」を選択しLLMの設定画面に移動します。
この画面の下に表示されている、「モデルプロパイダを追加」から、使用したいLLMを探し、カーソルを合わせます。
カーソルを合わせると「モデルを追加」または「セットアップ」という表示が現れるため、そちらをクリックします。
表示された画面の指示に従い、モデルタイプの選択やAPIキーなどの求められた情報を入力すると接続が完了し、Difyで使用できるようになります。
※この設定は必須ではありません。特定のLLMをDifyで使用したい場合のみ設定を行なってください。
LLMの接続を行ったらホーム画面に移動し、「アプリを最初から作成」というボタンを選択します。
表示される画面で以下のように設定を行い、「作成する」ボタンをクリックします。
アプリタイプ:チャットボット
オーケストレーション:Chatflow
アプリアイコン:任意のものを選択
アプリ名:任意の名前を入力
画面右上の「機能」を選択します。
機能設定画面にて、「画像をアップロード」という項目をオンに変更します。
機能設定画面を閉じて、Difyのアプリ構築画面に戻ります。
「開始」ブロックを選択し、ブロック右側に表示される「+」ボタンを選択します。
選択後に表示されるメニューから「コード」を選択して、コードブロックを追加します。
コードの入力画面に、以下のコードを入力します。
5行目には、手順1のステップ6でコピーしたウェブアプリのURLを入力しましょう。
import urllib.request
import ssl
def fetch_data():
url = "https://script.google.com/macros/s/xxx" # AppsScriptウェブアプリURL
context = ssl._create_unverified_context() # SSL証明書の検証を無効化
with urllib.request.urlopen(url, context=context) as response:
return response.read().decode('utf-8') if response.status == 200 else None
def main():
return {"result": fetch_data()}
if __name__ == "__main__":
print(main())
「LLM」ブロックを追加します。
LLMブロックの「SYSTEM」入力欄に、以下のようなプロンプトを入力します。
アップロードされた画像から、以下のデータを抽出してください。
「取引先名」「金額」
さらに「LLM」ブロックを追加し、コンテキストとSYSTEM入力欄に以下のようなプロンプトを入力します。
コンテキスト欄:
クリックするとメニューが表示されるため、一覧から「コード/result」を選択します。
SYSTEM欄:
[コード]を参考にして、[LLM]の勘定科目を判定してください。
判定後、勘定項目のみ出力してください。
「回答」ブロックを追加します。
回答入力欄に「LLM2」という項目を入力します。
【手順③】テストを行う
画面右上の「プレビュー」または「公開する」を選択して、チャット画面を開きます。
請求書の送信後に、勘定科目が正しく出力されれば構築は完了です。
ステップ1でチャットボットの「公開」を行なっていない場合は、公開設定を行いましょう。
公開後にURLを共有することで、誰でもアクセスできるようになります。
Difyを用いた「請求書の勘定科目を判定するAIチャットボット」の構築方法の解説は以上です。この情報がDifyへの理解促進や業務の効率化につながれば嬉しく思います。
弊社Walkersでは、“AIトレンドに乗り遅れたくないけど、具体的な活用法が見えない…”を解決するAI導入支援を行っています。補助金により1/3のコストで導入可能なので、ぜひAI活用にお悩みがある方はお気軽にご相談下さい。