Udemyにホームページをカンタンに変更できるElementorの講座を新しくリリースしました。

Difyと外部サーバー連携処理を作ってみよう-第一回

こんにちは
島村竜一です。

さてさてX(Twitter)をみているとつぎつぎに新しいAIがでてきて
目移りしていませんか?

どれを抑えたらいいのだろうかと悩んだりしますよね。
そこで今抑えていただきたいのが
Difyになります。

引用https://dify.ai/jp

DifyですぐにAIを利用したアプリケーションを作ることができますし、ちょっと技を使うと本格的なアプリを作ることができます。

実際に手を動かしながら実際の業務に役立つ外部連携するアプリを作ってみましょう。

Difyで実際の業務に役立つアプリを作ってみよう

今回はこのようなものを作ります。

チャットで入力された文言を元に楽天に関連する商品を検索します。

取得した商品情報を元にLLMに情報を投げて宣伝するための文章を作成します。


まずは画面から入力された言葉を元に楽天で検索をかけてデータを10件取得します。

1.
始めてみましょう。
Difyにログインした後、画面上の「スタジオ」をクリックします。

2.
「最初から作成」をクリックします。

3.

「ワークフロー」をクリックして名前をつけます.

最後に「作成する」をクリックします。

2.「開始」ブロック

画面から言葉を入力できるようにします。
開始ブロックをダブルクリックします。

入力フィールド+のマークをクリックします。
「短文」を選んで入力をします。

今回は短文を選びます。

変数名はkeyword
ラベル名はkeyword
最大長は256
必須はありにします。

3.「HTTPリクエスト」ブロック
次に新しく「HTTPリクエスト」ブロックを追加します。

新しいブロックを追加したいときは
追加したいブロックの右の青いプラスマークをクリックします。

表示された一覧から「HTTPリクエスト」をクリックします。

HTTPリクエストで今回設定するのはGETとパラメータのみ
設定します。

GETで設定する値は
Rakuten Developers
https://webservice.rakuten.co.jp/
から取得します。


ユーザー登録が必要になりますが、
無料で使うことができるので安心してくださいね。

こちらの画面からGetの値を取得する必要があります。
https://webservice.rakuten.co.jp/documentation/ichiba-item-search


注意点は?より前の情報のみ書くということになります。
https://app.rakuten.co.jp/services/api/IchibaItem/Search/20220601
になります。


そしてここに書かれているフォーマットをすべて書く必要はありません。
使うものだけ書いていきましょう。

difyサーバーにはjson形式の書式で返してほしいので
ここではformat jsonを指定します。
それ以外のものは

hits

keyword

ただし気を付けないといけないのは一覧の中で必須とかかれているものはすべて指定する必要があります。


楽天の場合はアプリIDと
検索キーワード/ショップコード/商品コード/ジャンルIDのうちどれかを指定してあげる必要があります。

3.「IF/ELSE」
「HTTPリクエスト」ブロックを追加した時のように.「IF/ELSE」ブロックを追記します。

【説明】
ここの目的ですが「HTTPリクエスト」ブロックで行った処理が成功したのか失敗したのか判断します。
Difyに限った処理ではないですがインターネットの世界では

処理が成功したら200,
処理が失敗したらそれ以外の番号が返ってきます。

ですので200が返ってきたらIFの分岐に入り正常処理

200以外の値が返ってきたらELSEの処理に移っていきます。

【手順】
1.条件を追加をクリックします。
2.表示されたリストの中からstatus_codeをクリックします。
3.右側に200を入力します。

このように処理を設定することにより
前回の「HTTPリクエスト」ブロックが正常終了していた場合には
IFの条件を
異常終了していた場合にはELSEの条件を動かすことができます。

4.コード
【説明】
コードでは通常のDifyでは行えない処理をここで行うことができます。
プログラミングを作成することができます。

注意事項がいくかあります。

Pythonでは自由に関数といった機能をつくることができますが、
Difyで使う時には必ずmainという名前にする必要があります。



必ずmain関数を作ること。


importはmainの中に書くこと。

通常Pythonは関数の外にimportを書きます。
importというのは通常のPythonの処理では用意されていないものとりこむときの
書き方になります。
Difyは関数の中にimportを書くのだと覚えておいてください。


プログラムで使用する引数と戻り値を外部でも設定する必要があること。

青い線で囲まれた場所に実行するプログラムを書きます。
緑の線で囲まれた場所に引数の設定を
赤の線で囲まれた場所に戻り値の情報を書きます。

入力変数は
・左側に青い線で囲まれた範囲で使う変数名を書くこと
・右側にデータの取得元を書きます。

出力変数は
・左側に青い線で囲まれた範囲から外部に出力する情報を書きます。
プログラムの世界では通常これを戻り値と言います。
必ず両方の名前を同じにします。そして変数にいくつかの型を選ぶことができるので
用途に応じてふさわしい型を選びます。

今回はArray[object]という複数の情報が受け取れる形を宣言します。
Array[object]以外にもさまざまな変数の型があります。

String(文字型)
Number(数値型)

では実際に動かしてみましょう

右上の「実行」をクリックしてみましょう

Keywordに検索する文言を入力します。

今回は猫と入力してみます。

右のタブの「トレース」をクリックすると実行した結果をみることができます。

各ブロックごとの結果をみることができるので非常に簡単に実行結果をおうことができます。

まとめ:「HTTPリクエスト」と「コード」がポイントになります。

いつまにかすごく人気になったDify。
それはチャットにとどまらず幅広くいろいろなことができるようになったことが大きいです。

そのなかで抑えておきたいのが
「HTTPリクエスト」
外部APIを公開しているものを接続して情報を取得することができます。

HTTPリクエストが使えると幅広くさまざまなことができます。

「コード」
こちらDifyが持っている機能だけではできないことを実行することができます。

今回紹介した機能のなかでは「HTTPリクエスト」と「コード」が一番難しかったかもしれません。
でもここができるといっきにお仕事の幅が広がるのでぜひ押さえておいてくださいね。

次回も引き続きDifyのことについて解説をさせていただきます。

ここまでよんでくださってありがとうございました。
また次のブログでお逢いしましょう。