ローカルLLMをLangchainで使いこなす!OllamaとLangchainで簡単AIチャットボット開発

ローカル環境で動作するLLM「Ollama」を、強力なライブラリ「Langchain」と組み合わせることで、誰でも簡単にAIチャットボットを開発できる方法を紹介します。初心者でも理解しやすいように、具体的なコード例と解説を交えながら、Langchainの基本的な使い方からOllamaとの連携方法、さらにはチャットボットの構築までを解説します。

ollamaって何?

ollamaって何?って方は、ollamaについてやWindows環境への導入方法をまとめていますので、こちらを確認してみてください。

Langchainとは?

langchainとは、ChatGPTなどの大規模言語モデル(LLM)を効率的に実装するためのライブラリです。
PythonやTypescriptによるライブラリが存在します。
メモリ機能やAgentなど難しいことを比較的簡単に実装できるようになります。

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

以下のコマンドでライブラリを導入します。

pip install langchain oolama

langchainとollamaの二つをインストールしました。
合わせていろいろと一緒に導入されます。

実装

今回の実装すべてをまずは。

import os
import sys

from langchain_community.llms import Ollama
from langchain_core.prompts import ChatPromptTemplate

def main():
    llm = Ollama(model="gemma2")

    chat_template = ChatPromptTemplate.from_messages(
        [
            ("system", "You are Very good Prgramer"),
            ("human", "Please Create Program for {user_input}\nNothing explanation"),
        ]
    )
    chain = chat_template | llm
    
    while True:
        question = input("質問内容を入力してください")
        print(text, "と入力されました。")
        result = chain.invoke({"user_input":question})
        print(result)
        break
    

if __name__ == '__main__':
    main()

今回は、実行するとプロンプトに”質問内容を入力してください”と表示されるので、質問したい内容を記入して確定すると、LLMに問い合わせをして答えを返却するようにしました。

実行結果はこちらです。

北海道の県庁所在地は?と問い合わせすると”札幌市”と返答されました!!

プログラム解説

インポート

from langchain_community.llms import Ollama
from langchain_core.prompts import ChatPromptTemplate

langchainのOllalaと、ChatPromptTemplateをインポートしています。
Ollamaは、Ollamaへアクセスするためのもので、ChatPromptTemplateは問い合わせをするためのクラスになります。

プログラム

まず↓の処理で、LLMのインスタンスを生成しています。
modelに使用するモデルを指定します。

llm = Ollama(model="gemma2")

以下で、プロンプトテンプレートを生成

chat_template = ChatPromptTemplate.from_messages(
        [
            ("system", "You are Very good Prgramer"),
            ("human", "Please Create Program for {user_input}\nNothing explanation"),
        ]
    )

※{user_input}の部分は、ユーザーインプットが入った変数をここに入れますよという印です。

で、以下で、ランナブルを生成しています。

chain = chat_template | llm

プロンプト+LLMとなっています。
出力のパーサーを入れたい場合は、この後ろに|で区切って、パーサーのインスタンスを指定します。

続いて、以下で、ユーザーの質問文を入力待ちします。

question = input("質問内容を入力してください")

最後に、以下で、実際にLLMへ問い合わせをします。

result = chain.invoke({"user_input":question})

※user_inputに、question という変数を入れてねと指示しています。

まとめ

非常に簡単な処理しかしていませんが、これでLangchainを使用してOllamaへアクセスすることが簡単にできました。
ここから拡張していくことで、複雑な問い合わせをしたり、GUIをつけて、ChatBotを作ったりできます。

今後ちょっとずつやってみようかと思いますので、また出来ましたら、シェアします。
最後に、Pythonの基礎を学びたい方は以下がおすすめです。私も持っていてたまに眺めて勉強していますものですのでぜひ購入して学習してみてください。

langchainについて学びたいという方は,以下をちょっと見繕ってみましたので、参考にしてみてください。

にいやん

出身 : 関西 居住区 : 関西 職業 : 組み込み機器エンジニア (エンジニア歴13年) 年齢 : 38歳(2022年11月現在) 最近 業務の効率化で噂もありPython言語に興味を持ち勉強しています。 そこで学んだことを記事にして皆さんとシェアさせていただければと思いブログをはじめました!! 興味ある記事があれば皆さん見ていってください!! にほんブログ村