OllamaのPythonライブラリを使ってローカルLLMを利用する

23 アクセス

はじめに

この記事は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ライブラリをインストールする

サンプルコード

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を起動しておく

実行結果

{'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など他の言語でも使いこなせそうだと思った

ストリーミングなどの機能の活用方法もこれから模索していく予定

Comments

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です