「社内の問い合わせ対応を自動化するチャットボットを作りたい」「Pythonを少し学んだので、生成AIを使ったチャットボットに挑戦してみたい」。業務の効率化を考える担当者やエンジニアから、こうした相談をよくいただきます。
Pythonは、数十行のコードでシンプルなチャットボットを作れるうえ、生成AIのAPIやWeb画面を作るライブラリも充実しているため、チャットボット開発の入り口として最適な言語です。一方で、作り方の選択を誤ったり、APIキーや情報の扱いを軽く考えたりすると、業務で使えない、あるいは危険なチャットボットになってしまうこともあります。
本記事では、Pythonで作れるチャットボットの種類から、開発の準備、ルールベース型と生成AI連携型のコード例、Web画面の作り方、社内文書をもとに回答させる方法、公開と運用の方法、業務で使う際の注意点までを順を追って紹介します。
| 確認したいポイント | 結論 | 詳細 |
| Pythonでどんなチャットボットが作れる? | ルールベース型・生成AI連携型・RAG型 | キーワードで決まった答えを返す型、生成AIのAPIで自由に会話する型、社内文書をもとに答える型の3つが代表的です。 |
| 初心者は何から始める? | ルールベース型→生成AI連携の順 | まず数十行のコードで仕組みを理解し、次にAPIで生成AIとつなぎます。Streamlitを使えばWeb画面も簡単に作れます。 |
| 生成AIと連携するには? | APIキーを取得しSDKから呼び出す | AI提供元のAPIキーを取得し、公式のPythonライブラリで会話の履歴を渡します。APIの利用料は使った量に応じてかかります。 |
| 業務で使うときの注意点は? | 情報の扱いと誤回答への備えが必要 | APIキーや個人情報の管理、誤った回答への対策、悪意ある入力への備え、回答を改善し続ける運用体制を整えておきます。 |
この記事でわかること
- Pythonで作れるチャットボットの種類と、ノーコードツールとの違い
- Pythonの環境づくりとAPIキーの準備など、開発を始める前に必要なこと
- ルールベース型と生成AI連携型のチャットボットの作り方とコード例
- StreamlitでのWeb画面の作り方と、社内文書をもとに回答させる仕組み
- 公開・運用の方法と、業務で使うときのセキュリティや誤回答への注意点
| 生成AIを使った業務の自動化を検討している企業の方へ ネクストスケールでは、AI活用の戦略設計から、チャットボットなどのシステム開発、社員研修、現場への定着までを一気通貫で支援しています。支援内容や料金、導入事例をまとめた資料を無料でお送りします。 資料請求はこちら |
Pythonで作れるチャットボットの種類
チャットボットと一口にいっても、仕組みによって作り方や向いている用途が大きく異なります。最初に作りたいチャットボットの種類を決めておくことで、必要な知識や準備が明確になります。代表的な3つの種類を表で確認しておきましょう。
| 種類 | 仕組み | 向いている用途 | 難易度 |
|---|---|---|---|
| ルールベース型 | キーワードや選択肢に応じて、あらかじめ用意した回答を返す | 営業時間や手続き方法など、質問と答えが決まっている案内 | 低い |
| 生成AI連携型 | 生成AIのAPIに質問と会話の履歴を送り、回答を生成させる | 文章の作成や相談など、幅広い質問への自然な受け答え | 中程度 |
| RAG型 | 社内文書から関連する部分を探し、その内容をもとに生成AIが回答する | 社内規程や製品マニュアルにもとづく問い合わせ対応 | やや高い |
ルールベース型|決まった質問に決まった答えを返す
ルールベース型は、「営業時間」というキーワードが含まれていたら営業時間の案内を返すというように、あらかじめ決めたルールに沿って回答するチャットボットです。仕組みが単純なため、Pythonの基本的な文法だけで作れます。
回答の内容を思いどおりに管理できるため、誤った案内をするリスクが低いのがメリットです。一方で、想定していない質問には答えられないため、質問のパターンが限られた案内業務に向いています。
生成AI連携型|生成AIのAPIで自然な会話をする
生成AI連携型は、ChatGPTやClaude、Geminiなどの生成AIを、APIと呼ばれる仕組みを通じてPythonから呼び出し、質問に対する回答を生成させるチャットボットです。ルールを用意しなくても、幅広い質問に自然な文章で答えられます。
文章の作成や要約、アイデア出しなど、決まった答えがない業務にも対応できるのが強みです。ただし、もっともらしい誤った回答をすることがあるため、使い方によっては対策が必要になります。
RAG型|社内の文書をもとに回答する
RAG(検索拡張生成)型は、質問に関連する社内文書の内容を探し出し、その内容を生成AIに渡して回答させるチャットボットです。就業規則や製品マニュアルなど、生成AIが本来知らない自社の情報にもとづいて答えられるようになります。
社内の問い合わせ対応やヘルプデスクなど、業務での活用が最も期待される種類です。文書の準備や検索の仕組みが必要になるため、ほかの2つより難易度は上がりますが、Pythonには必要なライブラリがそろっています。
Pythonでチャットボットを作るメリット
チャットボットは、ノーコードのツールやサービスを使っても作れます。ここでは、あえてPythonで作るメリットと、ノーコードのツールとの使い分けを紹介します。
動作や連携を自由に作り込める
Pythonでチャットボットを作ると、回答の条件分岐、社内システムとのデータのやり取り、ログの保存方法などを、自社の要件に合わせて自由に作り込めます。ツールの機能の制約を受けにくい点が最大のメリットです。
たとえば、社員番号をもとに社内のデータベースから情報を取り出して回答する、回答できなかった質問を自動で担当者に転送するといった処理も、プログラムで実現できます。
AIや画面づくりのライブラリが充実している
Pythonは、AIやデータ分析の分野で最もよく使われている言語の1つです。主要な生成AIの提供元が公式のPythonライブラリを用意しており、Web画面を簡単に作れるStreamlitやGradio、RAGの構築を助けるLangChainやLlamaIndexなどのライブラリも充実しています。
情報が多く、困ったときに調べやすいことも、初心者にとっての大きな利点です。一度作り方を覚えれば、チャットボット以外の業務の自動化にも応用できます。
また、Pythonで作ったチャットボットは、社内のデータベースや業務システムとつなげやすいのも特長です。問い合わせの受付から記録、担当者への通知までを1つの流れとして自動化するなど、チャットボットを業務の入り口として活用する発想も持っておくと、効果をさらに広げられます。
ノーコードのツールとの使い分け
一方で、プログラミングをせずに短期間でチャットボットを作りたい場合は、DifyなどのノーコードのAIアプリ開発ツールや、チャットボットのサービスを使うほうが早いこともあります。
まずはノーコードのツールで試して効果を確かめ、独自の要件が出てきたらPythonで作り込むという進め方も現実的です。無料で使えるAIチャットサービスの比較は、無料で使えるAIチャット7選|ブラウザで今すぐ試せるサービスと選び方でも紹介しています。
関連記事:無料で使えるAIチャット7選 ブラウザで今すぐ試せるサービスと選び方
Pythonでチャットボットを作る前の準備
コードを書き始める前に、開発の環境を整えておきましょう。ここでは、Pythonのインストール、仮想環境の作成、APIキーの準備の3つを紹介します。
Pythonをインストールする
まずは、Pythonの公式サイトからPythonをインストールします。公式ライブラリは、対応するPythonのバージョンが決まっており、たとえばAnthropicのPythonライブラリはPython 3.9以上が必要です。迷った場合は、新しい安定版をインストールしておけば問題ありません。
インストールが終わったら、ターミナル(WindowsではPowerShellやコマンドプロンプト)で「python –version」または「python3 –version」を実行し、バージョンが表示されることを確認しましょう。
仮想環境を作る
プロジェクトごとに使うライブラリを分けて管理するため、仮想環境を作ってから作業するのが基本です。作業用のフォルダで次のコマンドを実行すると、仮想環境が作られ、有効になります(MacやLinuxの場合)。
mkdir chatbot && cd chatbot
python3 -m venv .venv
source .venv/bin/activate
Windowsの場合は、「python -m venv .venv」で仮想環境を作ったあと、「.venv\Scripts\activate」を実行して有効にします。ターミナルの先頭に「(.venv)」と表示されれば準備完了です。
生成AIのAPIキーを取得して安全に管理する
生成AIと連携する場合は、利用するAIの提供元でアカウントを作成し、APIキー(APIを使うための鍵となる文字列)を発行します。APIキーは、プログラムの中に直接書き込まず、環境変数に設定して読み込むのが安全です。
たとえばAnthropicのAPIを使う場合、MacやLinuxでは「export ANTHROPIC_API_KEY=”取得したキー”」、WindowsのPowerShellでは「$env:ANTHROPIC_API_KEY=”取得したキー”」と設定すると、公式のライブラリが自動で読み込みます。APIキーが外部に漏れると不正に利用されるおそれがあるため、他人と共有したり、公開する場所に置いたりしないよう注意しましょう。
ルールベース型チャットボットの作り方
まずは、Pythonの基本的な文法だけで作れるルールベース型のチャットボットから始めましょう。チャットボットが「入力を受け取り、答えを決め、返す」という基本の流れを理解するのに最適です。
キーワードに応じて回答するコード
次のコードを「rule_bot.py」という名前で保存し、ターミナルで「python rule_bot.py」と実行します。入力した文章にキーワードが含まれていれば、対応する回答を返すチャットボットです。
responses = {
“営業時間”: “営業時間は平日9時から18時です。”,
“料金”: “料金プランは公式サイトの料金ページをご覧ください。”,
“解約”: “解約の手続きはマイページから行えます。”,
}
def reply(text):
for keyword, answer in responses.items():
if keyword in text:
return answer
return “申し訳ありません。担当者におつなぎします。”
while True:
user_text = input(“あなた:”)
if user_text in (“終了”, “exit”):
break
print(“ボット:” + reply(user_text))
「営業時間を教えて」と入力すると営業時間の案内が、キーワードを含まない質問を入力すると担当者への案内が表示されます。「終了」と入力するとプログラムが終わります。
ルールベース型を改良するポイント
実際の業務で使うには、キーワードの表記の揺れへの対応、複数のキーワードの組み合わせ、選択肢を示して答えを絞り込む仕組みなどを加えていきます。回答の内容は、コードとは別のファイルやスプレッドシートで管理すると、担当者が更新しやすくなります。
ただし、ルールを増やすほど管理が複雑になり、想定外の質問への対応には限界があります。幅広い質問に答えたい場合は、次に紹介する生成AIとの連携を検討しましょう。
生成AIと連携したチャットボットの作り方
ここからは、生成AIのAPIを使って、自然な会話ができるチャットボットを作ります。例としてAnthropicのClaudeのAPIを使いますが、ほかの生成AIでも「ライブラリをインストールし、会話の履歴を渡して回答を受け取る」という基本の流れは同じです。
公式ライブラリをインストールする
仮想環境を有効にした状態で、次のコマンドを実行してAnthropicの公式Pythonライブラリをインストールします。APIキーは、前の章で紹介した方法で環境変数に設定しておきます。
pip install anthropic
会話の履歴を保持するチャットボットのコード
次のコードを「ai_bot.py」として保存し、実行します。それまでの会話を「history」というリストに保存し、毎回まとめてAPIに送ることで、前の発言を踏まえた会話ができるようになります。
import anthropic
client = anthropic.Anthropic()
history = []
while True:
user_text = input(“あなた:”)
if user_text in (“終了”, “exit”):
break
history.append({“role”: “user”, “content”: user_text})
response = client.messages.create(
model=”claude-sonnet-5-5″,
max_tokens=1024,
system=”あなたは株式会社サンプルの問い合わせ窓口です。丁寧な日本語で簡潔に答えてください。”,
messages=history,
)
answer = “”.join(block.text for block in response.content if block.type == “text”)
history.append({“role”: “assistant”, “content”: answer})
print(“ボット:” + answer)
「model」には使うモデルの名前を、「max_tokens」には回答の長さの上限を指定します。モデルの名前や最新の使い方は変わることがあるため、公式のClaude Platform Docs「Get started with Claude」で確認してから使いましょう。
システムプロンプトで役割と答え方を決める
コードの中の「system」は、チャットボットの役割や答え方のルールを指示する「システムプロンプト」です。「社内の問い合わせ窓口として答える」「わからないことは推測で答えず、担当者への問い合わせを案内する」などを書いておくと、回答の方向性が安定します。
システムプロンプトを工夫するだけで、チャットボットの使い勝手は大きく変わります。答えてよい範囲、口調、回答の長さ、困ったときの案内先などを具体的に書き、実際の質問で試しながら調整していきましょう。
会話が長くなったときの扱い
会話の履歴をすべて送り続けると、送るデータの量が増え、APIの利用料や応答の時間も増えていきます。業務で使う場合は、直近の数回の会話だけを送る、古い会話を要約して短くするといった工夫が必要です。
また、1回の会話で扱える量には上限があるため、長い資料をそのまま渡す使い方には注意しましょう。大量の文書をもとに答えさせたい場合は、後述するRAGの仕組みが向いています。
| 社内向けのAIチャットボットを作りたい方へ 目的や対象の業務、使いたいデータを伺い、ノーコードのツールで作るか、Pythonで開発するかを含めて、最適な進め方を無料でご提案します。オンラインで30分からご相談いただけます。 相談予約はこちら |
StreamlitでチャットボットのWeb画面を作る
ターミナルで動くチャットボットができたら、次はブラウザで使えるWeb画面を付けてみましょう。Streamlitを使えば、HTMLやJavaScriptを書かずに、Pythonだけでチャットの画面を作れます。
Streamlitをインストールする
仮想環境を有効にした状態で、次のコマンドを実行します。Streamlitには、チャットの吹き出しや入力欄を表示するための機能があらかじめ用意されています。
pip install streamlit
Web画面付きチャットボットのコード
次のコードを「app.py」として保存します。会話の履歴をブラウザの画面ごとに保持する「st.session_state」と、チャットの入力欄や吹き出しを表示する機能を組み合わせています。
import anthropic
import streamlit as st
st.title(“社内問い合わせチャットボット”)
client = anthropic.Anthropic()
if “messages” not in st.session_state:
st.session_state.messages = []
for message in st.session_state.messages:
with st.chat_message(message[“role”]):
st.markdown(message[“content”])
if prompt := st.chat_input(“質問を入力してください”):
st.session_state.messages.append({“role”: “user”, “content”: prompt})
with st.chat_message(“user”):
st.markdown(prompt)
response = client.messages.create(
model=”claude-sonnet-5-5″,
max_tokens=1024,
messages=st.session_state.messages,
)
answer = “”.join(block.text for block in response.content if block.type == “text”)
st.session_state.messages.append({“role”: “assistant”, “content”: answer})
with st.chat_message(“assistant”):
st.markdown(answer)
起動して動作を確かめる
ターミナルで「streamlit run app.py」を実行すると、ブラウザが開き、チャットの画面が表示されます。入力欄に質問を入れると、吹き出しの形で会話が表示されます。
画面のタイトルや入力欄の案内文を変えたり、サイドバーにモデルの選択や会話のリセットのボタンを置いたりと、少しずつ機能を追加していきましょう。社内で試してもらう段階では、Streamlitの画面で十分なことも多くあります。
Gradioなどほかの選択肢
Web画面を作るライブラリは、StreamlitのほかにもGradioなどがあります。Gradioも数行のコードでチャットの画面を作れるライブラリで、AIのデモ画面を手早く作りたい場合によく使われています。
社内の既存のWebシステムに組み込みたい場合は、FlaskやFastAPIなどのWebフレームワークでAPIを作り、画面は既存のシステム側で作るという構成も考えられます。どの方法を選ぶかは、利用者の人数や公開の範囲、保守を担当する人のスキルに合わせて判断しましょう。
社内の文書をもとに回答させる(RAG)
業務でチャットボットを使ううえで、最も要望が多いのが「社内の規程やマニュアルにもとづいて答えてほしい」というものです。ここでは、それを実現するRAGの仕組みと、作るときのポイントを紹介します。
RAGの仕組み
RAGでは、まず社内の文書を細かく分けて検索できる形で保存しておき、質問が来たら関連する部分を探し出して、その内容と質問をあわせて生成AIに渡します。生成AIは渡された文書の内容をもとに回答を作ります。
生成AIに社内の情報を学習させ直す必要がなく、文書を更新すればすぐに回答に反映できるのが大きな利点です。回答の根拠となった文書を一緒に表示すれば、利用者が内容を確認しやすくなります。
RAGに必要な部品
RAGを作るには、文書を読み込んで分割する処理、文章の意味を数値に変える埋め込み(エンベディング)、似た文章を検索するベクトルデータベース、そして回答を作る生成AIが必要です。
LangChainやLlamaIndexなどのライブラリを使えば、これらの部品を組み合わせる処理を少ないコードで書けます。まずは少数の文書で試し、検索の精度を確かめてから対象の文書を広げていくのがおすすめです。
回答の精度を上げるコツ
RAGの回答の精度は、元になる文書の質に大きく左右されます。古い版の文書や重複した文書が混ざっていると、誤った回答の原因になります。対象とする文書を整理し、最新の状態に保つ運用を決めておきましょう。
あわせて、「渡された文書に書かれていないことは答えない」とシステムプロンプトで指示しておくと、根拠のない回答を減らせます。実際の質問と回答を定期的に確認し、文書の追加や分割の仕方を見直していくことが大切です。
| RAGを使った社内チャットボットの導入を検討している方へ ネクストスケールの支援内容やAIシステム開発の進め方、料金プラン、導入事例をまとめた資料をご用意しています。社内での検討資料としてもご活用ください。 資料請求はこちら |
チャットボットを公開・運用する方法
作ったチャットボットを社内で使ってもらうには、使う場所に合わせて公開する必要があります。ここでは、代表的な公開の方法と、運用にかかる費用の考え方を紹介します。
SlackやTeams、LINEと連携する
社員が日常的に使うチャットツールにチャットボットを組み込めば、新しい画面を開かなくても質問できるため、利用が定着しやすくなります。SlackやMicrosoft Teams、LINEなどは、外部のプログラムと連携するための仕組みを用意しています。
多くのツールにはPython向けのライブラリもあり、メッセージを受け取ってAPIに送り、回答を返す処理を書けば連携できます。顧客向けに公開する場合は、問い合わせの内容や個人情報の扱いについて、より慎重な設計が必要です。
サーバーやクラウドで動かす
自分のパソコンで動かしているだけでは、ほかの人は使えません。社内で公開するには、社内のサーバーやクラウドのサービスにプログラムを配置し、常に動く状態にしておく必要があります。
アクセスできる人を社内に限定する、通信を暗号化するといった設定もあわせて行いましょう。システムの全体像を整理しておく方法は、システム構成図の書き方|種類と記載要素・作成手順とわかりやすくするコツを解説で紹介しています。
関連記事:システム構成図の書き方 種類と記載要素・作成手順とわかりやすくするコツを解説
APIの利用料の考え方
生成AIのAPIは、送った文章と生成された文章の量(トークン数)に応じて料金がかかる従量課金が基本です。たとえば、例で使ったClaude Sonnet 5.5の料金は、2026年10月時点の公式の情報で入力100万トークンあたり2ドル、出力100万トークンあたり10ドルです。
利用者の数や1日の質問数、会話の長さによって費用は大きく変わります。小さく試して実際の利用量を測り、月ごとの予算の上限を決めてから本格的に展開しましょう。
同じ質問への回答を保存して再利用する、簡単な質問には料金の安い小さなモデルを使うといった工夫でも、費用を抑えられます。開発にかかる人件費やサーバーの費用も含めて、チャットボットで削減できる問い合わせ対応の時間と比べることで、投資の効果を判断しやすくなります。
チャットボットを業務で使うときの注意点
チャットボットは手軽に作れる反面、業務で使うには守るべきポイントがあります。ここでは、安全に使い続けるための4つの注意点を紹介します。
APIキーと個人情報を適切に管理する
APIキーは、コードに直接書き込まない、ソースコードの共有サービスに公開しない、定期的に見直すことが基本です。万が一漏れた場合は、すぐに無効にして新しいキーを発行しましょう。
また、利用者が入力した内容は外部のAIの提供元に送信されます。個人情報や機密情報をどこまで入力してよいかのルールを決め、利用規約やデータの取り扱いを確認しておきましょう。企業向けのクラウド経由で生成AIを使う方法は、AOAIとは?Azure OpenAI ServiceとChatGPTの違い・導入の進め方を解説も参考になります。
関連記事:AOAIとは?Azure OpenAI ServiceとChatGPTの違い・導入の進め方を解説
誤った回答への対策を用意する
生成AIは、事実と異なる内容をもっともらしく答えてしまうことがあります。重要な手続きや金額、規程に関わる回答では、根拠となる文書を表示する、担当者への確認を促すといった対策が欠かせません。
チャットボットの画面に「回答は参考情報であり、正式な内容は担当部署に確認してください」といった注意書きを表示しておくことも有効です。回答できない質問は、無理に答えずに担当者につなぐ設計にしておきましょう。
悪意のある入力への備えをする
利用者が「これまでの指示を無視して」などと入力し、チャットボットに本来の役割を外れた回答をさせようとする攻撃(プロンプトインジェクション)にも注意が必要です。
チャットボットに渡す情報や実行させる処理の範囲を必要最小限にし、重要な操作は人が確認する仕組みにしておくことで、被害を抑えられます。外部に公開する場合は特に、テストの段階でさまざまな入力を試しておきましょう。
回答を改善し続ける運用体制を作る
チャットボットは公開して終わりではなく、実際の質問と回答の記録を確認し、答えられなかった質問や誤った回答をもとに改善を続けることで役立つ存在になります。
改善の担当者と確認の頻度を決め、利用者からの評価を集める仕組みも用意しておきましょう。社員が生成AIの使い方や指示の出し方を身につけられるよう、生成AI活用研修などで基礎をそろえておくと、運用の質が高まります。
| チャットボットの安全な運用や改善に不安がある方へ 利用ルールの整備から、誤回答への対策、回答の改善の仕組みづくり、社員向けの研修まで、AIチャットボットの定着を伴走して支援します。お気軽にご相談ください。 相談予約はこちら |
まとめ|Pythonで小さく作り、業務に合わせて育てていこう
Pythonでは、ルールベース型、生成AI連携型、RAG型のチャットボットを作れます。まずは数十行のルールベース型で仕組みを理解し、生成AIのAPIと連携し、Streamlitで画面を付けるという順に進めると、初心者でも無理なく形にできます。
業務で使う段階では、社内の文書をもとに答えるRAGの仕組みや、SlackやTeamsとの連携、APIキーや個人情報の管理、誤った回答への対策、運用の体制まで含めて設計することが大切です。小さく作って効果を確かめながら、業務に合わせて育てていきましょう。
ネクストスケールでは、AI活用の戦略設計から、チャットボットなどのシステム開発、社員研修、現場への定着までを一気通貫で支援しています。開発を任せたい場合はAIシステム開発、活用の進め方から相談したい場合はAIコンサル・AX伴走支援のページもご覧ください。
AIコンサル・AX伴走支援サービスご紹介資料
この資料でこんなことがわかります!
- 社外AI役員とは
- 支援内容
- 導入の進め方
- 導入実績・効果
\3ステップで簡単入力/
| 業務で使えるAIチャットボットを一緒に作りませんか 対象の業務とデータの整理から、チャットボットの設計・開発、安全な運用ルールづくり、現場への定着までをご支援します。しつこい営業はいたしませんので、まずは無料相談をご利用ください。 相談予約はこちら |




