サイトアイコン アマチュア無線局JS2IIU

【Streamlit】LangChainとGPT-4.5-preview を使ったチャットアプリ構築

こんにちは、JS2IIUです。

OpenAI は 2025 年 2 月 27 日、最新のチャット向けモデルである GPT-4.5 のリサーチプレビューを公開しました。このモデルは、従来の GPT-4 系列に比べて、パターン認識や関連性の整理、創造的な洞察を生成する能力が向上しています。

この記事では、GPT-4.5-preview モデルを活用し、Streamlit と LangChain を使ってリアルタイムで応答を生成するチャットアプリの作成方法を解説します。

GPT-4.5-preview モデルの特徴

公式発表によると、GPT-4.5-preview には以下の特徴があります:

  1. 高度な理解と推論能力
  1. パフォーマンス向上
  1. 柔軟な出力

詳しくは OpenAI の公式ページ を参照してください。

サンプルプログラム

以下は、GPT-4.5-preview を使用した Streamlit チャットアプリのサンプルコードです。

Python
import streamlit as st
from langchain_community.chat_models import ChatOpenAI
from langchain.schema import HumanMessage, AIMessage, SystemMessage
import os

# OpenAI クライアントを生成
chat = ChatOpenAI(
    model="gpt-4.5-preview",  # GPT-4.5-preview モデルを指定
    temperature=0.7,           # 応答のランダム性を調整
    streaming=True,            # ストリーミング応答を有効化
    openai_api_key=os.getenv("OPENAI_API_KEY")  # 環境変数から API キーを取得
)

# セッションステートを初期化
if "messages" not in st.session_state:
    st.session_state.messages = [SystemMessage(content="You are a helpful assistant.")]

# タイトルを表示
st.title("GPT-4.5-preview チャット")

# メッセージ履歴を表示
for message in st.session_state.messages:
    if isinstance(message, HumanMessage):
        with st.chat_message("user"):
            st.markdown(message.content)
    elif isinstance(message, AIMessage):
        with st.chat_message("assistant"):
            st.markdown(message.content)

# ユーザー入力を処理
if prompt := st.chat_input("What is up?"):
    user_message = HumanMessage(content=prompt)
    st.session_state.messages.append(user_message)

    with st.chat_message("user"):
        st.markdown(prompt)

    # AI 応答を生成
    with st.chat_message("assistant"):
        full_response = ""
        placeholder = st.empty()

        for chunk in chat.stream(st.session_state.messages):
            if chunk.content:
                full_response += chunk.content
                placeholder.markdown(full_response + "")

        placeholder.markdown(full_response)

    # AI のメッセージを履歴に追加
    ai_message = AIMessage(content=full_response)
    st.session_state.messages.append(ai_message)
https://js2iiu.com/wp-content/uploads/2025/03/gpt45.mov

コード解説

1. 必要なライブラリのインポート

Python
import streamlit as st
from langchain_community.chat_models import ChatOpenAI
from langchain.schema import HumanMessage, AIMessage, SystemMessage
import os

2. OpenAI クライアントの作成

Python
chat = ChatOpenAI(
    model="gpt-4.5-preview",
    temperature=0.7,
    streaming=True,
    openai_api_key=os.getenv("OPENAI_API_KEY")
)

3. メッセージ履歴の初期化

Python
if "messages" not in st.session_state:
    st.session_state.messages = [SystemMessage(content="You are a helpful assistant.")]

セッションステートを使用して、メッセージ履歴を保持します。

4. ユーザー入力の処理

Python
if prompt := st.chat_input("What is up?"):
    user_message = HumanMessage(content=prompt)
    st.session_state.messages.append(user_message)

5. AI 応答の生成と表示

Python
with st.chat_message("assistant"):
    full_response = ""
    placeholder = st.empty()

    for chunk in chat.stream(st.session_state.messages):
        if chunk.content:
            full_response += chunk.content
            placeholder.markdown(full_response + "")

    placeholder.markdown(full_response)

ストリーミング応答をリアルタイムで表示します。

まとめ

このチュートリアルでは、GPT-4.5-preview モデルを利用した Streamlit チャットアプリの作成方法を解説しました。GPT-4.5-preview の高速な応答と高度な理解力を活かし、対話型アプリケーションを構築できます。

参考リンク

最後に、書籍のPRです。

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

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

モバイルバージョンを終了