2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

<備忘録>llama_cppを利用してCPUでチャットボットを作成してみる

Last updated at Posted at 2024-03-18

概要

ノートパソコンしかないけれど、ローカルな環境でチャットボットを作成してみたのでまとめます。
また、私は素人かつ初投稿なので説明やコードに至らない点もあるかと思いますがご了承ください。

目次

-llama_cppとは?
-前準備
-コード
-感想

llama_cppとは?

llama_cppはpythonのライブラリ。

名前にcppとあるように、このライブラリはC言語で記述されている。
モデルを読み込む際に量子化を用い、少ないbit数で読み込むことできる。

llama_cppはMeta社のllamaモデルに向けたライブラリであり、拡張子が.ggufのものであればllama_cppで読み込めた。

llama_cppについて調べると、llama_cppの主目的は「MacBook上で動作…」とでてくるが、私のwindows11環境でも動作できました。

前準備

私はデバイスはwindows、開発環境はVScodeを使用しました。

llama_cppをインストールする過程で、C言語のコンパイラやCmakeが必要になるので環境変数の調整やインストールを行う。

その後pip install llama-cpp-pythonを実行してllama_cppをインストールする。

コード


from llama_cpp import Llama

class LlamaAdapter():
    def __init__(self,user_content):
        model_path = "モデルのパスjapanese-stablelm-3b-4e1t-instruct-q2_K.gguf"
        self.llm = Llama(model_path, chat_format="chatml-function-calling")
        self.output = self.llm.create_chat_completion(
        messages=[
            {
                "role": "system",
                "content": """あなたは学校の先生です。

                """,
            },
            {"role": "user", "content": user_content},
        ],
        response_format={
            "type": "text",
            
            "schema": {
                "type": "text",
            },
        },
        max_tokens=100,
        temperature=0.7,
        top_p=0.3,
        top_k=40,
        stream=False,

    )


        
   
    def get_response(self):
        return self.output['choices'][0]['message']['content']
        


def ask(user_content):
    adapter = LlamaAdapter(user_content)
    response = adapter.get_response()
    return response

if __name__ == '__main__':
    user_content = "ごきげんよう"
    model_output1 = ask(user_content)
    print(model_output1)

モデルの応答

入力:ごきげんよう
出力:元気でしょうか?

モデルへの入力はuser_content、プロンプトはcontentという変数で
渡しているので、適宜変更してください。

感想

ファインチューニングやプロンプト制御をしておらず、そもそものモデル自体コンパクトなので回答が淡泊。

日本語用に事前学習されているので日本語用にファインチューニングする必要が無く、私のように手っ取り早く日本語でAIと会話してみたい人にはちょうど良いのではと考える。

今後はGPUが十分にあるPCを用意して、より精度の良いモデルでファインチューニングやRAG、感情分析とそれに付随したlive2dモデルの挙動変化といったことに挑戦したい。

大学入学時から使用している生協パソコンでもLLMって動くんだなぁ

ここまでお読みいただきありがとうございました。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?