今回は、話しかけたら答えてくれる 自分だけのbot を作るよ。「こんにちは」と打ったら「やあ!」と返事してくれる、そんなロボット。ChatGPT みたいな本格的な AI ではないけど、その第一歩になる仕組みだよ。
1. botってどう動くの?
bot は、「もし○○と言われたら、××と答える」というルールを持ったプログラム。今回作るのは、そのルールを 辞書 (リストの中の辞書) で持っているシンプルなタイプ。
- 入力: きみが入力した文字 (例:「こんにちは」)
- 判定: 入力に「こんにちは」が含まれているかチェック
- 出力: 含まれていたら、対応する答えを表示
- ループ: 「おわり」と入力するまで繰り返し
2. 完成形のコード
colab に貼り付けて実行
Python
# 質問とこたえのリストqa_list = [ {"q": "こんにちは", "a": "やあ!元気?"}, {"q": "好きな食べ物は", "a": "プログラムだよ。ジョークだけど。"}, {"q": "今何時", "a": "それは時計を見て!"},]
while True: user_input = input("きみ: ") if user_input == "おわり": print("bot: バイバイ!") break found = False for qa in qa_list: if qa["q"] in user_input: print("bot:", qa["a"]) found = True break if not found: print("bot: わからないよ〜。教えて!")3. コードの読み方
- `qa_list`: 質問とこたえのペアを並べたリスト。追加すれば bot がもっと頭良くなる
- `while True:`: 「ずっと繰り返す」という意味。`break` が出るまで止まらない
- `input("きみ: ")`: ユーザーが入力する文字を取る
- `if user_input == "おわり":`: 「おわり」と入力したら break で終わる
- `if qa["q"] in user_input:`: 入力文字に質問が含まれていたらマッチ
4. 拡張して遊んでみよう
- 1自分の好きな話題を qa_list に追加 (好きなアニメ、ペット、学校のこと等)
- 2ランダムな返事: `import random` して `random.choice(["うん", "そうだね", "なるほど"])` で違う反応に
- 3カウンター: 何回話しかけられたか数える変数を追加
- 4時計の答えをちゃんと: `from datetime import datetime` で実際の時刻を返す
- 5会話の記録: `chat_log` というリストに会話を全部保存して、最後に表示
ランダム返事の例
Python
import random
# わからないときの返事を 3 つから選ぶunknown_responses = [ "わからないよ〜。教えて!", "もう一回、ちがう言葉で言って?", "うーん、それは知らないなあ",]
# found が False のときに使うif not found: print("bot:", random.choice(unknown_responses))5. 落とし穴とコツ
- 「。」や「!」が入ると一致しない: 「こんにちは。」は「こんにちは」と違う。`replace()` で句読点を消すと改善
- 大文字小文字も別物: 「Hello」と「hello」は違う扱い。`.lower()` で揃える
- 最初の一致だけ拾う: 複数の質問にマッチする入力 (例: 「こんにちは、好きな食べ物は?」) では先のマッチだけ拾う
- 「賢く見せる」のと「本当に賢い」は違う: これは検索型 bot。ChatGPT のような 生成 AI (LLM) とは仕組みが全く違う
6. 自由研究のヒント
「自分だけの先生 bot」を作ろう
自分が学校で覚えた知識 (理科の語句、英単語、歴史の年号) を qa_list に入れて、「クイズ bot」にすると勉強になる。「◯ 個入れたら満点になった」を自由研究レポートにまとめると映える。
7. 「本物の AI」との違い
今回作った bot は 「あらかじめ用意した答えから探す」 タイプ。一方、ChatGPT や Claude は 「言葉を 1 文字ずつ予測して生成する」 タイプ (大規模言語モデル = LLM)。仕組みは全く違うけど、両方とも 「人と会話するソフト」 であることは同じ。本シリーズで Python の基礎を覚えて、その後で AI を学ぶと、両者の違いが感覚的に分かるようになるよ。
次回予告
次回(EP.08)は、ピクセルアートを作ろう。リスト(配列)を使って、自分だけのドット絵を描く。
この記事の感想を教えてください
あなたの 1 クリックで、本当にこの記事は更新されます。「もっと詳しく」「続編希望」が一定数集まった記事は、 ふくふくが 実際に内容を拡充したり続編記事を公開 します。 送信したリアクションはお使いのブラウザに記録され、再カウントされません。