📌 はじめに
最近話題のAI Nativeなアプリケーション開発ですが、プログラミングや複雑な環境構築から入ると挫折しがちです。
そこで今回は、**「ノーコード(Dify)× 高速・高品質LLM(Gemini)× 外部API(GitHub)」を組み合わせて、ユーザーの発言ログから心理状態や未来の行動を推察し、結果を自動でGitHubにMarkdownレポートとしてコミットする「AIプロファイリングAgent」**を作成しました!
この記事では、Difyの初期設定からGeminiの連携、そして途中で遭遇したエラーの解決策までをわかりやすくまとめています。
🏗️ 全体アーキテクチャ
システム全体の処理フローは以下の通りです。
[ 1. User Input ] (ログ・会話データの入力)
│
▼
[ 2. Persona Agent (Gemini 3.6 Flash) ] ── (ユーザーの顕在/潜在特徴を抽出してJSON化)
│
▼
[ 3. Predictor Agent (Gemini 3.6 Flash) ] ── (心理動機・今後の行動予測レポートを作成)
│
▼
[ 4. Code Node (Python3) ] ── (GitHub API用にテキストをBase64エンコード)
│
▼
[ 5. HTTP Request ] ── (GitHub REST API経由で .md ファイルとして自動コミット)
🚀 構築のステップ
1. Dify ✕ Gemini API の連携
Difyの「モデルプロバイダー」設定から、Google AI Studioで取得した API Key を設定します。

今回の推論エンジンには、高速かつ長文理解に長けた Gemini 3.6 Flash を採用しました。

2. Dify Workflow のノード構築
① Start ノード(入力)
-
変数名:
raw_logs(Paragraph) - ユーザーのSNS投稿、チャット履歴、行動ログなどを入力します。
② Persona Agent(特徴抽出 LLMノード)
- Model: Gemini 3.6 Flash
- System Prompt:
あなたは優秀な行動心理学者兼プロファイラーです。
入力されたデータから【基本属性】【心理状態/悩み】【行動タグ】を抽出し、標準的なJSONフォーマットで出力してください。
③ Predictor Agent(行動予測 LLMノード)
- Model: Gemini 3.6 Flash
- System Prompt:
前のノードで生成されたJSONプロファイルを受け取り、対象者が今後7日以内に取る可能性の高い行動トップ3とその理由を推測し、Markdown形式のレポートを作成してください。
④ Code ノード(Base64エンコード)
GitHub API(Contents API)でファイルを新規作成・更新する場合、本文 (content) を Base64 でエンコードする必要があります。Pythonノードを追加し、以下のコードを記述します。
import base64
def main(input_text: str, **kwargs) -> dict:
if input_text is None:
input_text = ""
encoded_bytes = base64.b64encode(input_text.encode("utf-8"))
encoded_str = encoded_bytes.decode("utf-8")
return {
"result": encoded_str
}
⑤ HTTP Request ノード(GitHub連携)
-
Method:
PUT -
URL:
https://api.github.com/repos/{owner}/{repo}/contents/reports/analysis_{{sys.workflow_run_id}}.md -
Headers:
-
Authorization:Bearer ghp_xxxxxxxxxxxx(GitHub Personal Access Token) -
Accept:application/vnd.github+json -
Body (JSON):
{
"message": "feat: auto-generate persona report via Dify Agent",
"content": "{{#Code.result#}}"
}
⚠️ 開発中に踏んだエラーと解決策(Troubleshooting)
構築の際、特に注意すべきだったポイントを2点共有します。
1. Codeノードでの TypeError: main() got an unexpected keyword argument
DifyのCodeノード実行時、関数の引数定義とDify側から渡される引数が不一致だとエラーが発生します。
-
解決策: Pythonの
main関数に**kwargsを追加することで、想定外のシステム引数が渡されても受け流せるように安全化しました。
2. URL変数 sys.query_id が見つからない
DifyのWorkflowモードでは一部のシステム変数が変更されています。
-
解決策: ファイル名の重複を避けるユニークIDとして、
sys.workflow_run_idを指定することで解決しました。
🎉 実行結果
Difyで試行運転(Run)を行うと、ノードが順に緑色に点灯し、GitHubリポジトリの reports/ フォルダ配下に以下のようなプロファイリングレポートが自動生成されました!
# ターゲット行動予測&推論レポート
## 1. 心理動機分析
深夜帯の連続アクセスと「疲労」に関する発言から、高いストレス状態にあると推測...
## 2. 今後7日間の行動予測
1. 【確率 85%】高濃度カフェインまたは安眠グッズの購入
2. 【確率 60%】転職・環境変化に関する情報検索
...
💡 まとめと次のステップ
Difyを使えば、プロンプトの調整から外部API連携までをわずか1時間程度で形にすることができました。
今後は以下のような拡張を予定しています:
- ビジュアル化: FLUX.1 などの画像生成APIを組み込み、人物概念図も同時に自動生成する
- フルスタック化: FastAPI / Next.js を使って自作フロントエンドからこのDify Workflowを呼び出す
個人開発のポートフォリオとしても非常に面白いテーマですので、ぜひ皆さんも作ってみてください!







