はじめに
この記事はLlama 3.1 SwallowをOllamaで使えるようにする|ローカルLLMの続き
せっかくローカルLLMがOllamaで使えるようになったので、APIリクエストによってPythonから呼び出してみる
OllamaのPythonライブラリが用意されているので、これを利用する
参考サイト
OllamaのPythonライブラリ:https://github.com/ollama/ollama-python
OllamaのAPIドキュメント:https://github.com/ollama/ollama/blob/main/docs/api.md
Ollamaライブラリを使用
まず、ollamaライブラリをインストールする
$ pip3 install ollama
サンプルコード
import ollama
response = ollama.chat(model='Llama-3.1-Swallow-8B-Instruct-v0.1_Q4_K_M', messages=[{'role': 'user', 'content': 'こんにちは'}])
print(response) # response全体を表示
print(response['message']['content']) # 生成されたメッセージのみを表示
modelは前回作成したLlama3.1 Swallowを指定
Pythonの実行前に、以下のコマンドでOllamaを起動しておく
$ ollama serve
実行結果
{'model': 'Llama-3.1-Swallow-8B-Instruct-v0.1_Q4_K_M', 'created_at': '2024-11-11T03:16:28.340471Z', 'message': {'role': 'assistant', 'content': 'こんにちは!お元気ですか?何かお手伝いできることがありますか?'}, 'done_reason': 'stop', 'done': True, 'total_duration': 1482949125, 'load_duration': 9593459, 'prompt_eval_count': 11, 'prompt_eval_duration': 471000000, 'eval_count': 19, 'eval_duration': 1001000000}
こんにちは!お元気ですか?何かお手伝いできることがありますか?
初回のみモデルの読み込みに時間がかかるが、2回目からは速くなる
Requestsの使用
原理的にはローカルに立てたOllamaサーバーにAPIリクエストを送っているだけなので、ollamaライブラリを使わなくても同様のことができるはず
下記のプログラムは先ほどのプログラムと同じようなことを行う
(事前にrequestsをpip3 installする必要あり)
import requests
url = 'http://127.0.0.1:11434' + '/api/chat'
json = {"model": "Llama-3.1-Swallow-8B-Instruct-v0.1_Q4_K_M", "messages": [{"role": "user", "content": "こんにちは"}], "stream": False}
response = requests.post(url=url, json=json)
print(response.text)
ちなみに、Ollamaが起動した状態で127.0.0.1:11434にブラウザでアクセスすると、”Ollama is running”というテキストが表示される
注意としては、ollamaライブラリではstreamingがデフォルトでFalseになっていたが、今回はstreamingがデフォルトでTrueになっている
そのため、ストリーミングを使わない場合は明示的に指定する必要がある
おわりに
APIの仕様が理解できれば、javascriptなど他の言語でも使いこなせそうだと思った
ストリーミングなどの機能の活用方法もこれから模索していく予定
コメントを残す