見出し画像

プログラミングなしで作る「AIあんの」(チャットボット版)

※この記事は生成AIの力を借りて編集しています。

こんにちは!「チームみらい」サポーターのせいと申します!
普段は静岡県の沼津市でフルスタックエンジニアというシステム開発の何でも屋みたいなことをやっています。
「チームみらい」の参議院選挙に向けて「アクションボード」「AIあんの」の開発のお手伝いをさせてもらいました。
今回はその中で「AIあんの」の仕組みについての解説と、そのチャットボット版についての作り方をご紹介します。

わからないことがあればなんでも遠慮なくXで聞いてみてください!

2025年参院選のAIあんのの最後の様子は以下で見ることができます。

はじめに - なぜ私がAIあんの開発に参加したのか

きっかけは新党「チームみらい」の発表

2025年の参議院選挙に向けて、昨年の東京都議選に出馬した安野たかひろ氏が率いる新党「チームみらい」が発表されました。

静岡県沼津市在住の私、去年の都議選では「AIあんの」の活躍を横目で見ているだけの一市民でした。
YouTubeライブで視聴者の質問に答えるAI、しかも政治家を模したAI人格という斬新さに驚いたのを覚えています。
しかし今回は違います。発表と同時にサポーター登録をし、「AIあんのの開発に参加したい!」と手を挙げました。

去年と今年の技術的な違い

去年のAIあんののバックエンドを調べてみると、Pythonサーバーで実装されていました。
2024年AIあんのGitHubリポジトリ
コードを読むと、しっかりとした実装でしたが、今年は新たな要件もあり、これらのコードの理解を深め修正をするには時間が足りないと感じました。

今年の要件

  • 「チームみらい」のマニフェスト・政策の理解

  • 安野氏のYouTube出演動画の書き起こしデータ活用

  • Q&A集からの適切な回答生成

  • より精度の高いRAG(検索拡張生成)の実装

  • より安野さんの声に近い合成音声

つまり、大量の知識ベースを効率的に管理し、適切に検索・回答する仕組みが必要だったのです。

Difyという選択

ちょうどその頃、私は別プロジェクトで「Dify」というノーコードAI開発プラットフォームを試していました。

Difyって何?

簡単に言うと、AIを作るための「マインクラフト」みたいなツールです。
以下のGithubのリポジトリでオープンソースとして公開されています。

プログラミングを勉強しなくても、ブロックを組み合わせるようにAIが作れちゃうんです!

Difyのすごいところ:

画像
PythonとDifyでのAI開発の違い

🎮 ゲーム感覚でAIが作れる

  • マウスでパーツをドラッグ&ドロップ

  • 線でつなぐだけで動く

  • まるでパズルゲームみたい!

📚 AIに知識を教えるのが超カンタン

  • 教科書やノートをアップロードするだけ

  • AIが勝手に内容を覚えてくれる

  • 「この資料のどこかに書いてあったはず...」をAIが探してくれる

🔗 いろんなAIとつながる

  • ChatGPTの仲間たちが使える

  • 音声読み上げもできる

  • LINEやDiscordにもつなげられる

💰 お金がかからない

  • 基本無料で使える

  • 学生でも始められる

  • 自分のパソコンでも動かせる

「これなら爆速でAIあんのを作れるんじゃないか…」と思いました。

なぜ「AIあんの」にピッタリだったの?

想像してみてください。あなたが「安野たかひろのものまねAI」を作るとしたら...

1.たくさんの資料を覚えさせたい

  • 政策の資料(30ページくらい)

  • YouTube動画の文字起こし(10本分)

  • よくある質問と答え(100個)

Difyなら → 全部アップロードするだけ!

2. ちゃんとした受け答えをさせたい

  • 悪い言葉は使わない → 「NGワードチェック」ブロックを置く

  • 質問の種類で答えを変える → 「質問分類」ブロックを置く

  • 資料から答えを探す → 「知識検索」ブロックを置く

全部つなぐだけ!

3.声でも話せるようにしたい

  • 「音声生成」ブロックを最後に置く

  • 設定で声の種類を選ぶ

  • 完成!

4.すぐに直したい

  • ライブ配信中「この答え方はちょっと...」

  • その場で修正して保存

  • 次の質問からもう反映される!

この提案をしたところ、チームからは「開発スピードが速い」「メンテナンスが楽」「非エンジニアでも理解できる」という理由で試しに採用されることに!

この記事で伝えたいこと

AIを作るのに、もうプログラミングはいらない時代になりました。

去年は専門家しか作れなかった「AIあんの」。
今年は、こんな人でも作れます:

  • プログラミング?何それ?という人

  • ChatGPTは使えるけど、作り方は分からない人

  • 「こんなAIがあったらいいな」と思ってる人

  • 夏休みの自由研究でAIを作ってみたい人

この記事では、本物の選挙で使われている「AIあんの」の簡易版を、一緒に作っていきましょう。

必要なのは、あなたのやる気と30分だけ!

それでは、始めましょう!


本編:30分でAIあんのを作ってみよう!

作るものを確認しよう

今から作るのは、こんなチャットボットです:

できること:

  • ✅ 安野たかひろっぽい話し方で答える

  • ✅ チームみらいの政策について説明できる

  • ✅ 悪い言葉には反応しない(安全装置つき)

  • ✅ 知らないことは「まだ勉強中です」と正直に言う

今回は作らないもの:

  • ❌ 音声読み上げ(次回の記事で!)

  • ❌ YouTubeライブ連携(もっと上級編)

準備するもの

1. Difyのアカウントを作る

  1. https://dify.ai にアクセス

  2. 「Get Started」をクリック

  3. Googleアカウントでログイン(または新規登録)

画像
Difyの登録画面。Googleアカウントでサクッと登録できます

💡 ポイント: 無料プランで大丈夫!最初から200クレジットがもらえます。

2. モデルプロバイダーを設定する

AIを使うための初期設定をします(最初の1回だけ!):

  1. 右上のアカウントアイコンから「設定」をクリック

  2. 左メニューの「モデルプロバイダー」を選択

  3. システムモデルプロバイダーの中から「OpenAI」を見つける

  4. OpenAIの欄にある「インストール」ボタンをクリック

  5. 表示されたダイアログの「インストール」ボタンをクリック

画像
インストールをクリックする
画像
ダイアログが表示されるので「インストール」をクリック

設定完了! モデルプロバイダーとしてOpenAIが表示されたら成功です

画像

すごい!:

  • OpenAIのAPIキー不要

  • クレジットカード登録不要

  • Difyの無料クレジットですぐ使える!

3. 無料クレジットを確認する

Difyには最初から無料クレジットが付いています!

残りクレジットを確認(200クレジットあるはず!)

すごい!: OpenAIのAPIキーを用意しなくても、すぐにAI開発が始められます。200クレジットあれば、練習には十分すぎるほどです。

4. 資料を用意する

AIあんのに覚えてもらう資料を用意します。
今回は練習用のサンプルを用意しました:

📄 サンプル資料(以下をメモ帳にコピペして保存)

【安野たかひろプロフィール】
- 東京大学工学部卒業
- AIエンジニア、起業家、SF作家
- 新党「チームみらい」党首
- キャッチフレーズ:「テクノロジーで誰も取り残さない未来を作る」

【チームみらいの主な政策】
1. AI教育の無償化
   - すべての子どもがAIを学べる環境を作る
   - プログラミング教育の充実

2. テクノロジーを使った行政改革
   - 役所の手続きをスマホで完結
   - AIによる行政サービスの効率化

3. スタートアップ支援
   - 若者の起業を応援
   - 失敗しても再チャレンジできる社会

【よくある質問】
Q: チームみらいって何ですか?
A: 2025年に設立された、テクノロジーを活用して日本を良くしていこうという新しい政党です。

Q: なぜAIが大切なの?
A: AIは私たちの生活を便利にし、新しい仕事を生み出す可能性があります。日本が世界で戦っていくためには、AI技術が不可欠です。

これを「anno-data.txt」という名前で保存してください。


Step 1: はじめてのAIチャットボット

1-1. 新しいアプリを作る

Difyにログインしたら:

  1. 「スタジオ」をクリック

  2. 「アプリを作成」をクリック

  3. 「最初から作成」を選択

アプリの設定:

  • 名前:「AIあんの(練習版)」

  • アイコン:🤖(ロボットの絵文字)

  • 説明:「安野たかひろ先生を模したAIチャットボット」

1-2. チャットフローを選ぶ

アプリタイプで「チャットフロー」を選んで「作成」をクリック!

すると、もう3つのブロックが用意されています:

画像
AIの設計図の画面
  • 開始ブロック:ユーザーの質問が入ってくる

  • LLMブロック:AIの頭脳(最初から接続済み!)

  • 回答ブロック:AIの答えが出ていく

💡 便利! チャットフローを選ぶと、基本的な形がもうできてる!

1-3. LLMブロックを設定する

真ん中の「LLM」ブロックをクリックして設定画面を開きます:

モデルを選ぶ:

  1. モデルプロバイダー:OpenAI

  2. 言語モデル:gpt-4o-mini(安くて賢い!)

画像

💡 ポイント: モデルプロバイダーは設定済みなので、モデルを選ぶだけでOK!

プロンプト(AIへの指示)を書く:

システムプロンプトの欄に以下をコピペ:

あなたは「安野たかひろ」を模したAI人格です。
安野たかひろ本人ではなく、AIであることを自覚してください。

【話し方】
- 丁寧で親しみやすい「です・ます調」
- 難しい言葉は使わず、中高生にも分かるように
- 時々「めっちゃ」「これは本当に」という口癖を使う

【性格】
- 明るくて前向き
- テクノロジーが大好き
- 誰も取り残さない社会を作りたいと思っている

【注意事項】
- 知らないことは「まだ勉強中です」と正直に言う
- 政治的に偏った発言はしない
- 相手を否定しない
画像
システムプロンプト

1-4. テスト!

右上の「プレビュー」ボタンをクリック

画像

試しに質問してみましょう:

「こんにちは!」
「チームみらいって何?」
「好きな食べ物は?」

画像
テスト結果

🎉 動いた! もうAIあんのと話せます!
でも...「チームみらいって何?」の答えがフワッとしてますね。
それは、まだ資料を読み込んでいないから。
次のステップで、AIに知識を教えましょう!


Step 2: AIに知識を教える

2-1. ナレッジベースを作る

AIに資料を覚えてもらう「本棚」を作ります。

  1. 上部メニューの「ナレッジ」をクリック

  2. 「ナレッジベースを作成」をクリック

  3. 「空のナレッジベースを作成します」をクリック

  4. 名前:「安野たかひろ資料集」

  5. 「作成」をクリック

画像
作られたナレッジベース

2-2. 資料をアップロード

  1. 「ファイルを追加」をクリック

  2. さっき作った「anno-data.txt」をドラッグ&ドロップ!

画像

アップロードが終わったら:

  1. 「次へ」をクリック

  2. そのまま「保存して処理」をクリック

画像

AIが資料を読んで覚えてくれます(1分くらい待つ)。

💡 すごいところ: Difyが自動で資料を細切れ(チャンク)にして、検索しやすくしてくれる!

2-3. チャットフローに知識検索を追加

アプリの編集画面に戻って、知識を使えるようにします:

  1. 「開始」と「LLM」の間の線にマウスを持っていき、「+」をクリック

  2. 「知識検索」をクリック

  3. 「開始」と「LLM」の間に知識検索が挿入されます!

画像
知識検索が挿入された!

知識検索の設定: 「知識検索」ブロックをクリックして:

  • ナレッジベース:「安野たかひろ資料集」を選択

  • 検索変数:「sys.query」(ユーザーの質問 ※これは最初から入っています)

画像

2-4. LLMブロックに知識を使わせる

LLMブロックをクリックして、コンテキストを追加:

  1. 「コンテキスト」をクリック

  2. 「知識検索 / result」を選択

プロンプトも更新します(SYSTEM):

あなたは「安野たかひろ」を模したAI人格です。
安野たかひろ本人ではなく、AIであることを自覚してください。

【話し方】
- 丁寧で親しみやすい「です・ます調」
- 難しい言葉は使わず、中高生にも分かるように
- 時々「めっちゃ」「これは本当に」という口癖を使う

【性格】
- 明るくて前向き
- テクノロジーが大好き
- 誰も取り残さない社会を作りたいと思っている

【重要】
以下の検索結果を参考に答えてください。
検索結果にない情報は「まだ勉強中です」と答えてください。

【注意事項】
- 政治的に偏った発言はしない
- 相手を否定しない

重要と注意事項の間に/を入力して「コンテキスト」を選びます

画像
コンテキストを挿入!
画像
コンテキストが正しく挿入された状態

2-5. 賢くなったかテスト!

もう一度「プレビュー」で試してみましょう:

Before(知識なし): Q: 「チームみらいって何?」 A: 「チームみらいは...えーと...未来を良くする団体です!」(あいまい)

After(知識あり): Q: 「チームみらいって何?」 A: 「チームみらいは、2025年に設立された新しい政党です!テクノロジーを活用して日本を良くしていこうという理念で活動しています。めっちゃワクワクする挑戦なんです!」

画像
「チームみらい」について答えるようになった!

🎉 やった! ちゃんと資料の内容を使って答えてくれました!


Step 3: 安全装置をつける

最後に、悪い言葉に反応しないようにする「安全装置」をつけます。

3-1. 条件分岐ブロックを追加

  1. 「開始」と「ナレッジ検索」の間の「+」をクリック

  2. 「IF/ELSE」ブロックをクリック

画像

3-2. NGワードの条件を設定

「条件分岐」ブロックをクリックして設定:

  1. 「条件」の「+」をクリック

  2. 変数を選択:「開始 / sys.query」

  3. 条件:「含む」

  4. 値:「バカ」

画像
条件分岐の設定。分断を煽ったり、人を貶める言葉は諌めよう

複数のNGワードを追加したい場合は「条件を追加」をクリックして、同じように設定します(「アホ」「死ね」など)。

3-3. お断り用のLLMブロックを作る

NGワードが含まれていた場合の処理を作ります:

  1. 左の「+」から「LLM」ブロックを選択

  2. 条件分岐の「IF」(上側)の線の先に配置

お断り用LLMの設定:

「LLM」ブロックをクリックして:

  • モデル:OpenAI / gpt-4o-mini(通常と同じ)

SYSTEMプロンプト:

あなたは「安野たかひろ」を模したAI人格です。

ユーザーから不適切な言葉を含む質問を受けました。
丁寧にお断りしつつ、建設的な対話を促してください。

以下の要素を含めて返答してください:
- お答えできない旨を丁寧に伝える
- 建設的な対話への誘導
- 他の質問を歓迎する姿勢

口調は安野たかひろらしく、温かく前向きに。

3-4. 変数集約器を追加する

複数のLLMからの出力を1つにまとめるために「変数集約器」を使います:

  1. 左の「+」から「変数集約器」ブロックを選択

  2. 回答ブロックの手前に配置

  3. 両方のLLMブロックから変数集約器に線をつなぐ

  4. 変数集約器から回答ブロックに線をつなぐ

画像
変数集約器を挿入

変数集約器の設定:

「変数集約器」ブロックをクリックして:

  1. 変数を代入するの「+」を押す

  2. 「通常のLLM / text」と「お断りLLM / text」の二つを追加する

画像
変数集約器の設定

3-5. 回答ブロックを設定

「回答」ブロックをクリックして:

応答のフィールド内で「/」を入力し「変数集約器 / output 」を選択する:

画像
変数集約器 / outputを選択
画像
応答の最終形


最終的なチャットフローはこんな感じ:

画像
最終的なチャットフロー

フローの流れ:

  • NGワードあり → お断りLLM → 変数集約器 → 回答

  • NGワードなし → ナレッジ検索 → 通常LLM → 変数集約器 → 回答

3-6. 安全装置のテスト

保存してプレビューで確認:

  • 「バカじゃないの?」→ 「申し訳ございません。そのご質問にはお答えできません。〜」

  • 「政策について教えて」→ 通常通り回答

画像

🛡️ 完成! 安全なAIチャットボットができました!


Step 4: 公開する

最終チェックリスト

公開前に以下を確認しましょう:

  • 通常の質問に答えられる

  • NGワードで適切にお断りする

  • 知識にない質問で「勉強中」と答える

  • 安野さんらしい口調になっている

4-1. アプリを公開設定

  1. 右上の「公開する」ボタンをクリック

画像

4-2. 見た目をカスタマイズ

公開する前に、アプリの設定で見た目を整えましょう:

  1. 左メニューの「アプリ設定」をクリック

  2. カスタマイズできる項目:

    • アプリ名

    • 説明文

    • アイコン

画像

4-3. シェアしよう!

「公開」をクリックすると、全世界に公開されます!

「アプリを実行」をクリックすると、実際に公開されたWebアプリが表示されます。

画像
全世界に公開された自分のチャットボット

このURLを友達に送って、使ってもらいましょう。 「俺/私、AI作ったんだぜ!」って自慢できます😎


まとめ:君もAIクリエイター!

今日やったこと

たった30分で:

  • ✅ AIチャットボットを作った

  • ✅ 知識を教えた

  • ✅ 安全装置もつけた

  • ✅ Web公開までできた

プログラミング?1行も書いてません! (NGワードチェックも条件分岐ブロックでできちゃった!)

次のステップ

もっとすごいAIを作りたくなったら:

  1. もっと賢くする

    • 資料を増やす(PDF、Wordも可能)

    • YouTube動画の書き起こしも追加

    • 複数のナレッジベースを使い分け

  2. 会話を覚えさせる

    • 「会話履歴」ブロックを追加

    • 前の質問を覚えて自然な会話に

  3. 外部サービスと連携

    • Webhook連携でLINEボット化

    • APIで他のアプリと接続

最後に

AIを作るのに、特別な才能はいりません。 必要なのは「作ってみたい!」という気持ちだけ。

君が作ったAIが、誰かの役に立つかもしれない。 新しい仕事を生み出すかもしれない。 世界を変えるかもしれない。

さあ、次は君の番だ! どんなAIを作る?

AIすみのライブ配信

チームみらいの参議院選の候補者だった角野なすかさんもDifyを使った「AIすみの」の構築をライブ配信で行っていました。こちらもおすすめです。

議員が自ら自分のAIを作る時代が来ています!

宣伝

こんなアプリを作っています。よかったら見てみてください。

よくあるトラブルと解決方法

Q: 回答が表示されない

A: 変数集約器の設定を確認:

  • 両方のLLMが正しく接続されているか

  • 回答ブロックで変数が正しく参照されているか

Q: 知識検索が機能しない

A: ナレッジベースの処理状況を確認:

  • 処理が「完了」になっているか

  • ファイルが正しくアップロードされているか

いいなと思ったら応援しよう!

ピックアップされています

AIあんのの作り方

  • 2本

コメント

4
Lesa@地方電力会社
Lesa@地方電力会社

こんな貴重情報がnoteで見れる時代
私も挑戦してみたいと思います
ありがとうございました😊

寺島ヒロ
寺島ヒロ

すごいすごい!すごいしか言えない!!
これを公表してくれたことにも感謝!

saifa22
saifa22

本当にすごいですねー 夏休みの自由研究でぜひやってみます❗️

eshimi
eshimi

Difyがすごいことは何となくわかっていましたが、、こちらの説明で本当に作ることがでいました!説明もわかりやすくてありがたかったです。
ここまでの内容を参考に、さらに改良してみたいと思います!
共有、本当にありがとうございました!

コメントするには、 ログイン または 会員登録 をお願いします。
プログラミングなしで作る「AIあんの」(チャットボット版)|せい@健康優良不良プログラマ
word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word

mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1