PythonでOllamaを自在に操作!API連携と自動化の第一歩
01. はじめに
Ollamaの魅力を最大化するのは、ターミナルからの利用ではなく「プログラムからの制御」です。自作のWebアプリにAIチャット機能を組み込んだり、大量のテキストを自動で要約させたりといった高度なタスクは、API経由で行うことで真価を発揮します。
Ollamaは標準でOpenAI互換のAPIエンドポイントを提供しているため、既存のエコシステムとの統合も簡単です。今回は、世界で最も人気のあるプログラミング言語であるPythonを使って、Ollamaをコードから操作する方法を徹底解説します。
02. OllamaのREST API基礎
Ollamaが起動しているとき(デフォルトポート11434)、以下のエンドポイントが利用可能です。
POST /api/generate: シンプルなテキスト生成POST /api/chat: チャット形式(履歴考慮)の生成POST /api/pull: モデルのダウンロード
特別な認証キーも不要で(localhostの場合)、シンプルなJSONを投げるだけでレスポンスが返ってきます。
03. 公式Pythonライブラリの使い方
requestsを使ってHTTPリクエストを投げても良いですが、公式ライブラリを使うほうが型定義もしっかりしており便利です。
インストール
pip install ollama
基本的な使い方
import ollama
# シンプルな生成
response = ollama.chat(model='llama3', messages=[
{
'role': 'user',
'content': 'PythonでHello Worldを表示するコードは?',
},
])
print(response['message']['content'])
これだけで、Llama 3からの返答を取得してPythonプログラム内で利用できます。
04. 実践:AIチャットボットの試作
もう少し実用的な、対話履歴を保持する簡単なCLIチャットボットを作ってみましょう。
import ollama
def chat_bot():
history = []
print("AI ChatBot (type 'exit' to quit)")
while True:
user_input = input("You: ")
if user_input.lower() == 'exit':
break
# 履歴に追加
history.append({'role': 'user', 'content': user_input})
# API呼び出し
response = ollama.chat(model='llama3', messages=history)
ai_message = response['message']['content']
print(f"AI: {ai_message}")
# AIの返答も履歴に追加
history.append({'role': 'assistant', 'content': ai_message})
if __name__ == "__main__":
chat_bot()
このスクリプトを実行するだけで、文脈を記憶したAIとの会話が実現します。メモリ管理(historyリストの肥大化対策)は必要ですが、プロトタイプとしては十分です。
05. ストリーミング応答の処理
ChatGPTのように、文字がパラパラと表示される「ストリーミング」を実装するには、stream=True パラメータを使用します。
stream = ollama.chat(
model='llama3',
messages=[{'role': 'user', 'content': '長い物語を書いて'}],
stream=True,
)
for chunk in stream:
# 改行なしで逐次出力
print(chunk['message']['content'], end='', flush=True)
これにより、生成完了を待たずにユーザーに結果を見せることができ、体感速度(UX)が向上します。
06. まとめ
Python連携ができれば、あとはStreamlitでGUIを付けるもよし、FastAPIでWebサーバー化するもよし、アイデア次第で何でも作れます。
OllamaのAPIはシンプルかつ強力です。ぜひこれを活用して、自分だけのAIアプリケーション開発に挑戦してみてください。既存のハードウェアリソースだけで、ここまで高度なAI開発ができる時代が到来しています。
コメント
コメントを投稿