概要
ノートパソコンしかないけれど、ローカルな環境でチャットボットを作成してみたのでまとめます。
また、私は素人かつ初投稿なので説明やコードに至らない点もあるかと思いますがご了承ください。
目次
-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って動くんだなぁ
ここまでお読みいただきありがとうございました。