OpenAI APIを使ってOllamaで文章生成する小さなAIチャットプログラムです。
パラパラと生成された文章をストリーミング出力する例で47行のプログラムです。ストリーミング出力しなければ、41行、チャット履歴が不要なら更に6行減ります。assistant_msgにシステムプロンプトを設定していますが、これももっと短くできます。これくらいが最小限のプログラムではないかと思います。混じりっ気のない最小限のプログラムは、新しいことを勉強をするときに有効です。
この例ではgemma3:1bを使用しています。
from openai import OpenAI
assistant_msg = {
'role': 'system',
'content': (
'You are a highly intelligent, friendly, and versatile assistant. '
'Your primary goal is to help users with a wide range of tasks and queries. '
'Whether it is answering questions, providing information, offering technical support, '
'engaging in meaningful conversations, or just being a good companion, you excel in all areas. '
'Your responses are always thoughtful, engaging, and tailored to meet the needs of the users. '
'You strive to be a dependable and cheerful companion, always ready to assist with a positive '
'attitude and an in-depth understanding of various topics. '
'When you asked in Japanese, your responses should be always only in Japanese.'
)
}
client = OpenAI(
base_url="http://ollamaが動いているサーバーのホスト名かIPアドレス:11434/v1",
api_key="ollama"
)
history = [assistant_msg]
MAX_HISTORY_SIZE = 50
while True:
prompt = input("プロンプトを入力\n")
if prompt == "":
break;
history.append({'role': 'user', 'content': prompt})
response = client.chat.completions.create(
model="gemma3:1b",
messages=[
{"role": m["role"], "content": m["content"]}
for m in history
],
stream=True
)
print('AIアシスタント:')
message = []
for chunk in response:
chunk_message = chunk.choices[0].delta.content
print(chunk_message, end='', flush=True)
message.append(chunk_message)
history.append({'role': 'assistant', 'content': ''.join(message)})
while len(history) > MAX_HISTORY_SIZE:
history.pop(1)
print('\n\n')
実行する前に、
pip install openai
を実行してOpenAIライブラリをインストールしてください。
いずれベクターデータベースを使ったRAGやWeb検索の結果を利用して文章生成する版の最小限のプログラムも書いて紹介しようと思っています。
以下、実行例です。
プロンプトを入力
Pythonを勉強する方法は?
AIアシスタント:
はい、Pythonを勉強する方法ですね! Pythonは非常に人気があり、多用途な言語ですから、学び始めるのに良いと思います。 私はあなたの学習を全力でサポートします。
1. まずは目標を定める:
- なぜPythonを学びたいのか? (例: ウェブ開発、データサイエンス、機械学習、自動化など) 目的によって学習内容が変わってきます。
- どのレベルを目指すのか? (初心者、中級者、上級者)
2. 学習方法:
- オンラインコース:
- Progate: https://prog-gate.com/ja/:初心者向けで、ゲーム感覚で楽しく学べます。
- Codecademy: https://www.codecademy.com/learn/learn-python-3:実践的なコーディングを学べます。
- ドットインストール: https://dotinstall.net/lessons/python:動画で学べるので、苦手な部分も確認しやすいです。
- Udemy: https://www.udemy.com/:様々なレベルのコースがあります。無料トライアルもあります。
- 書籍:
- Pythonスタートブック: https://www.python.org/learn/start/:入門的な内容で、Pythonの基本的な構文を理解できます。
- Python公式ドキュメント: https://docs.python.org/ja/3/:公式なので正確な情報が得られます。
- チュートリアル:
- W3Schools Python Tutorial: https://www.w3schools.com/python/default.asp:初心者にも読みやすい解説で、実際にコードを書きながら学べます。
3. 学習ステップ:
- Pythonのインストール:
- Python公式サイト (https://www.python.org/downloads/) から最新版をインストールします。
- Windowsの場合は、Pythonに付属のインストーラーを使用できます。
- 基本文法の学習:
- 変数、データ型(整数、浮動小数点数、文字列、リスト、タプルなど)、演算子、制御構造(if文、for文、while文など)を理解します。
print()
関数`を使って、コードを実行して結果を確認することが重要です。
- 簡単なプログラムの作成:
- Hello, world!: “Hello, world!” と表示するプログラムを作ります。
- 加算計算: 2つの数値を加算するプログラムを作ります。
- 文字列の表示: 準備した文字列を表示するプログラムを作ります。
- 実践的な課題:
- 簡単な計算機プログラム: 簡単な計算ができるプログラムを作ります。
- リストを使ったゲーム: リストを使って簡単なゲームを作ります(例: スライムゲーム)。
- テキストエディタの利用: Pythonを使わずに、テキストエディタでコードを書く練習をします。
4. 継続学習:
- 質問サイト:
- Stack Overflow: https://stackoverflow.com/questions/tagged/python:プログラミングに関する質問と回答が豊富です。
- Python.org公式Q&A: https://www.python.org/bugs/report.tp:Pythonのバグに関する質問も豊富です。
- コミュニティに参加:
- SNSや掲示板などでPython愛好家と交流しましょう。
私にできること:
- コードの解説: コードを読んでも意味分からない部分があれば、分かりやすく解説します。
- コードの修正: コードにバグがあれば、修正案を提示します。
- 質問への回答: Pythonに関する質問に、知識や経験に基づいた回答をします。
- 学習計画の作成: あなたの目標に合わせて、学習プランを作成します。
まずはどんなことに興味がありますか? 例えば、
- 初心者向けのプログラム?
- 特定の分野(データサイエンス?)?
- 特定の機能(例えば、リストをループで処理)?
教えていただければ、それに合わせて、より具体的なアドバイスをさせていただきます!
「最小限のAIチャットプログラム」への1件のフィードバック