【Streamlit】OpenAI o3-miniを使ったチャットアプリ

Streamlit
この記事は約8分で読めます。

こんにちは、JS2IIUです。
25年1月に公開されたOpenAIのo3-miniを試してみました。このモデルでは推論の機能も使える様になっています。今回もよろしくお願いします。

Just a moment...

o3-miniモデルの特徴

OpenAIのo3-miniは、軽量でありながら高い性能を持つチャットモデルです。以下の特徴があります。

  • 高い推論能力: 数学、コーディング、科学などの分野での問題解決能力が向上。
  • 軽量で高速: GPT-4oに比べて計算コストが低く、応答速度が速い。
  • チャット専用モデル: v1/chat/completions エンドポイントを利用し、自然な会話を実現。
  • API対応: OpenAIのAPIを利用して簡単に組み込むことが可能。

本記事では、このo3-miniを活用し、Streamlit上で動作するシンプルなチャットアプリを実装します。

サンプルプログラム

以下は、o3-miniを使用したチャットアプリのコードです。

Python
import os
import streamlit as st
from openai import OpenAI

client = OpenAI()

# OpenAI APIキーの設定
openai_api_key = os.environ["OPENAI_API_KEY"]

# Streamlit UIの構築
st.title("o3-mini チャットアプリ")
st.write("OpenAIのo3-miniモデルを使用したチャットアプリです。")

# ユーザー入力欄
user_input = st.text_area("あなた: ", "")

if user_input:
    # モデルからの応答を取得
    response = client.chat.completions.create(
        model="o3-mini",
        messages=[
            {"role": "assistant", "content": f"You are very helpful assistant."},
            {"role": "user", "content": user_input}
        ]
    )
    st.write(f"o3-mini: {response.choices[0].message.content}")

プログラムの解説

このプログラムはStreamlitを使用してOpenAIのo3-miniモデルと連携するシンプルなチャットアプリケーションです。以下にステップバイステップで詳細に解説します。

1. ライブラリのインポート

Python
import os
import streamlit as st
from openai import OpenAI
  • os: 環境変数にアクセスするためのモジュール
  • streamlit: Webアプリケーションを簡単に作成するためのライブラリ
  • OpenAI: OpenAI APIと通信するためのクライアントライブラリ

2. OpenAIクライアントの初期化

Python
client = OpenAI()
  • OpenAIクライアントのインスタンスを作成します。

3. APIキーの設定

Python
openai_api_key = os.environ["OPENAI_API_KEY"]
  • 環境変数から「OPENAI_API_KEY」を取得しています。

4. Streamlit UIの構築

Python
st.title("o3-mini チャットアプリ")
st.write("OpenAIのo3-miniモデルを使用したチャットアプリです。")
  • アプリケーションのタイトルと説明文を設定しています。

5. ユーザー入力フォームの作成

Python
user_input = st.text_area("あなた: ", "")
  • ユーザーが入力できるテキストエリアを作成します。
  • 「あなた: 」というラベルと、デフォルトでは空の入力欄を表示します。

6. 入力処理とAPIリクエスト

Python
if user_input:
    # モデルからの応答を取得
    response = client.chat.completions.create(
        model="o3-mini",
        messages=[
            {"role": "assistant", "content": f"You are very helpful assistant."},
            {"role": "user", "content": user_input}
        ]
    )
    st.write(f"o3-mini: {response.choices[0].message.content}")
  • ユーザーが何か入力した場合のみ処理を実行します。
  • OpenAIのAPIに対してリクエストを送信します。
  • model="o3-mini": 使用するモデルを指定します。
  • messages: 会話の履歴を構造化したリストで、AIの役割設定と実際のユーザー入力を含みます。
    • 最初のメッセージはAIの役割を指定(「You are very helpful assistant.」)
    • 2番目のメッセージはユーザーの入力内容
  • 応答が得られたら、「o3-mini: 」というプレフィックスを付けて画面に表示します。

参考

関連記事

生成AIに関する記事を集めてみました。似た様な記事ばかりになってしまいましたが、ぜひご覧ください!

【Streamlit】gemma-3-1b-ptモデルを使ったチャットアプリ | アマチュア無線局JS2IIU
https://js2iiu.com/2025/03/13/streamlit-gemma-3-1b-pt/

【Streamlit】「Sarashina2.2」でローカルLLMチャットアプリを作成する | アマチュア無線局JS2IIU
https://js2iiu.com/2025/03/08/streamlit-sarashina2-2/

【Streamlit】LangChainとGPT-4.5-preview を使ったチャットアプリ構築 | アマチュア無線局JS2IIU
https://js2iiu.com/2025/03/03/streamlit-langchain-gpt-4-5-preview/

【Streamlit】LangChainとClaude 3.7を活用したチャットアプリの構築 | アマチュア無線局JS2IIU
https://js2iiu.com/2025/03/03/streamlit-langchain-claude-3-7/

【Streamlit】LangSmithに対応したRAGチャットアプリ | アマチュア無線局JS2IIU
https://js2iiu.com/2025/02/25/streamlit-langsmith-rag/

【Streamlit】 LangChainを使ったPDFドキュメント対応RAGチャット | アマチュア無線局JS2IIU
https://js2iiu.com/2025/02/24/streamlit-langchain-pdf-rag/

【Streamlit】RakutenAI 2.0でチャットする | アマチュア無線局JS2IIU
https://js2iiu.com/2025/02/13/streamlit-rakutenai-20/

【Streamlit】LangChainでClaude 3.5 Haikuを使ったチャットアプリ | アマチュア無線局JS2IIU
https://js2iiu.com/2025/01/15/streamlit-langchain-claude-3-5-haiku/

【Streamlit】LangChainでGemini-1.5-Flashを使ったチャットアプリ | アマチュア無線局JS2IIU
https://js2iiu.com/2025/01/11/streamlit-langchain-gemini-1-5-flash/

【Streamlit】LangChainでGPT-4oを使ったチャットアプリ | アマチュア無線局JS2IIU
https://js2iiu.com/2025/01/11/streamlit-langchain/

【Streamlit】GPT-4oとストリーミングを使って自然なチャットを実現 | アマチュア無線局JS2IIU
https://js2iiu.com/2025/01/05/streamlit-gpt-4o-streaming/

【Streamlit】生成AIチャットアプリを構築しよう | アマチュア無線局JS2IIU
https://js2iiu.com/2025/01/05/streamlit-ai-chat/

最後に、書籍のPRです。

最新のOpenAIのチャットAPIの使い方もしっかりと解説されている良書です。2024年11月初版発行、「LangChainとLangGraphによるRAG・AIエージェント[実践]入門」西見、吉田、大嶋著。

最後まで読んでいただきありがとうございます。

コメント

タイトルとURLをコピーしました