ローカルでChatbotを作ってみよう2(最小のChatbot)

前回の「環境構築編」に続いて
今回は必要最低限の機能のみの「最小のChatbot」を作っていきます。

最小のChatbotとは

Chatbotとして必要最低限の機能だけを持たせたChatbotのことを、ここでは「最小のChatbot」と呼びます。

かなり単純で、やることは次の3つだけです。

  1. ユーザーの入力を受け取る
  2. その入力をローカルLLMに渡す
  3. 返ってきた回答を表示する

これだけです。

構成

全体像は以下のとおりです。

ユーザー

ターミナルで質問を入力

Pythonスクリプト

Ollama上のローカルLLM

回答を受け取る

ターミナルに表示

「Pythonが、ローカルで動くAIに質問を中継する」 状態です。

ディレクトリ構成は以下のようになります。

chatbot-test/
├─ .venv/
└─ app.py

事前準備

仮想環境(venv)

Pythonの仮想環境(venv)は、プロジェクトごとに独立したPython実行環境を作成し、ライブラリのバージョン競合を防ぐ仕組みです。
これにより、プロジェクトごとに異なるパッケージ環境を安全に管理できます。

以前作った作業用のディレクトリ(サンプルのままならchatbot-test)にて、以下のコマンドを実行してください。

python3 -m venv .venv
source .venv/bin/activate

1行目で仮装環境を作成
2行目で仮装環境を有効化
しています。

有効化されると、ターミナルのユーザー名などの左側に仮想環境名が表示されます。

最小のChatbotを実装

ライブラリのインストール

PythonでOllamaを動かすためにライブラリをインストールします。

pip install ollama

コード実装

下記のコードをコピペしたapp.pyファイルを作成します。

chatbot-test/app.py
from ollama import chat


MODEL_NAME = "gemma3"


def main():
    user_input = input("You: ")

    response = chat(
        model=MODEL_NAME,
        messages=[
            {"role": "user", "content": user_input}
        ]
    )

    answer = response["message"]["content"]
    print(f"Bot: {answer}")


if __name__ == "__main__":
    main()

input()で、ユーザーからのメッセージを受け取り
chat()で、LLMに渡すモデルの指定やメッセージを指定します。
そして、LLMからの返信を受け取り、出力する処理になっています。

コード実行

以下のコマンドでapp.pyを実行します。

python app.py

実行すると「You: 」と出てくるので、質問を投げてみます。
「chatbotはどんなことができますか」
と質問すると、以下のような回答が返ってきました。

しっかり会話をしてくれていますね!

※ローカルで実行しているため、ChatGPTのようにスラスラ返信してくれないかもしれません。その場合は待ってあげてください。

おわり

いかがだったでしょうか。
今回はPythonを経由してローカルLLMに質問をするところまでを実装しました。

ローカルでもこんなことができるとは驚きですね…!

次回は「会話履歴つきChatbot」を作っていきます。

お楽しみに〜