🎉

Sakura AI × Streamlit で作る“国内LLMチャットアプリ”──GPT-OSS 120Bで安全・高速な対話UIを構築する

に公開

はじめに

ルミナイR&Dチームの 宮脇彰梧 です。
普段はマルチモーダルAIの研究に取り組んでいます。

本記事では、

Sakura AI(GPT-OSS 120B)を利用した「国内LLMチャットアプリ」を Streamlit で構築する

という 最小で最強のLLMアプリケーション を作ります。

🔍 本記事で学べること

  • Sakura AI API(GPT-OSSモデル)の基礎
  • .env を使った安全なトークン管理
  • StreamlitでのチャットUI実装
  • 履歴管理(conversation memory)
  • OpenAI互換APIを使うメリット
  • 無料枠が豊富なので、とにかく大量に試せる

🎯 結論

Sakura AI × Streamlit の組み合わせは
国内データで安全に使える LLM チャットアプリを最速で構築できる

しかも 無料枠がかなり豊富なので、
PoC(実証実験)やプロトタイプを何度も回せる。

1. まずは環境構築

さくらインターネットのAPI取得

Pipインストールと.envの準備

pip install streamlit requests python-dotenv

.env を準備:

SAKURA_TOKEN=あなたのAPIキー

プロジェクト構成:

project/
├── app.py
├── sakura_client.py
└── .env

2. Sakura AI クライアント(sakura_client.py)

OpenAI互換なのでコードは非常にシンプルです。

# sakura_client.py

import os
import requests
from dotenv import load_dotenv

load_dotenv()

API = "https://api.ai.sakura.ad.jp/v1/chat/completions"
TOKEN = os.getenv("SAKURA_TOKEN")

if not TOKEN:
    raise RuntimeError("SAKURA_TOKENが設定されていません")

HEADERS = {
    "Content-Type": "application/json",
    "Authorization": f"Bearer {TOKEN}"
}

def sakura_chat(messages, model="gpt-oss-120b"):
    payload = {
        "model": model,
        "messages": messages
    }
    res = requests.post(API, headers=HEADERS, json=payload)
    res.raise_for_status()
    data = res.json()
    return data["choices"][0]["message"]["content"]

3. Streamlit のチャット UI(app.py)

最小で動くチャット画面を構築します。

# app.py

import streamlit as st
from sakura_client import sakura_chat

st.set_page_config(page_title="Sakura AI Chat", page_icon="💬")

st.title("💬 Sakura AI × Streamlit — 国内LLMチャットアプリ")

if "history" not in st.session_state:
    st.session_state.history = [
        {"role": "system", "content": "あなたは親切なAIアシスタントです。"}
    ]

#  入力欄 
user_input = st.text_input("質問を入力してください")

if st.button("送信", type="primary"):
    if user_input.strip():
        st.session_state.history.append({"role": "user", "content": user_input})

        response = sakura_chat(st.session_state.history)
        st.session_state.history.append({"role": "assistant", "content": response})
    else:
        st.warning("テキストを入力してください!")

#  チャットの描画 
for message in reversed(st.session_state.history):
    role = message["role"]
    if role == "user":
        st.chat_message("user").write(message["content"])
    elif role == "assistant":
        st.chat_message("assistant").write(message["content"])

# 履歴クリア
if st.button("履歴をクリア"):
    st.session_state.history = [
        {"role": "system", "content": "あなたは親切なAIアシスタントです。"}
    ]

4. 動作確認

streamlit run app.py

ブラウザが開き、
ChatGPTのように使える Sakura AI のチャット UI が完成します。

5. 触ってみて感じたこと(筆者の考察)

🔹 Sakura AI の良さ

  • 国内クラウドなので安心
  • API が完全 OpenAI 互換
  • GPT-OSS120B の回答品質は実務でも十分
  • 無料枠がめちゃくちゃ大きい(本当にありがたい)

🔹 Streamlit との相性

  • UIを数行で作れるので PoC に最適
  • 非エンジニアにもすぐ触ってもらえる
  • “まず形にする” という点で最強コンビ

6. まとめ

  • Sakura AI × Streamlit の組み合わせで 国内向けチャットアプリ が秒でできる
  • コードはわずか 2ファイル
  • OpenAI互換なので開発が簡単
  • 無料枠が多く、検証を大量に回せる
  • PoC → デモ → 社内導入 の第一歩として非常に優秀

執筆:宮脇 彰梧(ルミナイ株式会社 / Lluminai)

参考コード: GitHub


【現在採用強化中です!】

  • AIエンジニア
  • PM/PdM
  • 戦略投資コンサルタント

▼代表とのカジュアル面談URL
https://pitta.me/matches/VCmKMuMvfBEk

ルミナイ - 産業データをLLM Readyにするための技術ブログ

Discussion