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

AI
この記事は約13分で読めます。
スポンサーリンク

今回は前回導入したollamaをLangchainライブラリで動かしてみたので、その内容シェアしていきます。
まずollamaって何?って方は、↓を確認してみてください。
ローカルLLMの導入アプリです。

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について学びたいという方は,以下をちょっと見繕ってみましたので、参考にしてみてください。

AIPython技術
スポンサーリンク
シェアする
にいやんをフォローする
スポンサーリンク
にいやんブログ

コメント

タイトルとURLをコピーしました