
はじめに
OllamaがVulkanをサポートしたのでIntel GPUを使用するのが非常に簡単になりました。touch-sp.hatenablog.com
今回はgtp-oss-20Bを使って翻訳アプリを作りました。
バックグラウンドでOllamaが起動していれば以下のpythonコードを実行するだけで使えます。
Pythonコード
(gradio==5.50.0を使っています。gradio >=6.0では使えません)import gradio as gr from ollama import Client # Ollamaクライアント初期化(ローカルサーバーに接続) client = Client(host='http://localhost:11434') def translate_text(text, direction): """テキスト翻訳(双方向対応)""" if not text.strip(): return "" # 翻訳方向に応じてシステムプロンプトとユーザープロンプトを設定 if direction == "英語→日本語": system_content = "あなたは英語から日本語への翻訳に特化した優秀なAIアシスタントです。回答は翻訳文にとどめ、日本語に翻訳するだけです。" user_content = f"次の英語を日本語に翻訳して下さい。\n{text}" else: # "日本語→英語" system_content = "あなたは日本語から英語への翻訳に特化した優秀なAIアシスタントです。回答は翻訳文にとどめ、英語に翻訳するだけです。" user_content = f"次の日本語を英語に翻訳して下さい。\n{text}" prompt = [ { "role": "system", "content": system_content, }, { "role": "user", "content": user_content, } ] # Ollamaモデルにリクエストを送信 stream = client.chat( model="gpt-oss:latest", messages=prompt, stream=True ) result = "" for new_text in stream: result += new_text.message.content yield result # Gradioインターフェースの構築 demo = gr.Interface( fn=translate_text, inputs=[ gr.Textbox(lines=10, max_lines=40, label="翻訳元テキスト"), gr.Radio( choices=["英語→日本語", "日本語→英語"], value="英語→日本語", label="翻訳方向" ) ], outputs=gr.Textbox(lines=10, max_lines=40, show_copy_button=True, label="翻訳結果"), title="gpt-oss-20b 翻訳アプリ(Ollama版)", description="テキストを入力し、翻訳方向を選択してください。英語⇔日本語の双方向翻訳が可能です。" ) # アプリケーションの起動 if __name__ == "__main__": demo.launch()