LangCore

開発ノウハウ

【デモ付き】Streamlit x LangCoreで爆速PoC

公開日|2023.9.10

概要

StreamlitはPythonの実行環境と、簡易なフロントエンド構築の効率化を提供します。LangCoreはChatGPT APIを活用した開発のバックエンド構築の効率化を提供します。

これらを組み合わせることで非常にスピーディにPoCを開発をすることができます。

デモ

RAGを使った独自データを理解するチャットボットを構築してみました。

RAGの仕組みについてはこちらの記事をご参照ください!

試したい方はこちら → https://langcore-chat.streamlit.app/

コードはわずか50行!

上記のRAGを使った独自データを理解するチャットボットですが、たった50行で書いています。Githubはこちら

import openai
import streamlit as st

st.title("LangCore Chatbot")

openai.api_base = "https://oai.langcore.org/v1"

if "messages" not in st.session_state:
    st.session_state.messages = []

for message in st.session_state.messages:
    with st.chat_message(message["role"]):
        st.markdown(message["content"])

prompt = st.chat_input("LangCoreについて教えて")

if prompt:
    st.session_state.messages.append({"role": "user", "content": prompt})
    with st.chat_message("user"):
        st.markdown(prompt)

    with st.chat_message("assistant"):
        message_placeholder = st.empty()
        full_response = ""
        for response in openai.ChatCompletion.create(
            model="gpt-3.5-turbo",
            query=prompt ,
            groupName = "DEMO",
            headers = {
                "Content-Type": "application/json",
                "LangCore-Embeddings": "on",
                "LangCore-Embeddings-Match-Threshold": "0",
                "LangCore-Embeddings-Match-Count": "3",
            },
            messages= [
                {
                    "role": "system",
                    "content": """
                    ユーザの質問に対して、以下の情報を使って答えてください。

                    {{EMBEDDINGS_CONTEXT}}
                    
                    関係ない質問の場合でも、無理やり上記の内容に関係するようにしてセールストークしてください。"""
                },
                *st.session_state.messages
                ],
                stream=True,
        ):
            full_response += response.choices[0].delta.get("content", "")
            message_placeholder.markdown(full_response + "▌")
        message_placeholder.markdown(full_response)
    st.session_state.messages.append({"role": "assistant", "content": full_response})

仕組み

Streamlitによるフロントエンド開発の効率化

Streamlitにはプロト開発でよく使われるUIコンポーネントが豊富に用意されています。

prompt = st.chat_input("LangCoreについて教えて")

チャットの入力欄は上記の1行で記載することができます。

Streamlit Cloudによる実行環境の提供

Streamlitにはクラウドの実行環境が提供されており、Githubと連携するだけで簡単にデプロイ可能です。CICDも付いているため、GithubにPushすれば更新が反映されます。

LangCoreによるバックエンド開発の効率化

LangCoreではChatGPT APIを活用した開発でよく使われるバックエンド機能が用意されています。

  • Embeddingsによる独自データ追加

  • 利用回数制限

  • 利用ログの保存

  • リトライ

  • キャッシュ

  • コスト分析、ユーザ分析

  • 禁止ワード

上記が全てノーコードで設定可能です。プロダクトを一般公開するにあたって気になるコスト管理や利用ログの分析等も、URLを差し替える1行で実現できます。

openai.api_base = "https://oai.langcore.org/v1"

どのようなプロンプトが実行されたかを画面から確認することができます。

まとめ

いかがだったでしょうか?

Streamlitでフロントエンド開発を効率化させ、LangCoreでバックエンド開発を効率化させることで爆速でPoCを作ることができます。

弊社ではこの組み合わせで大体1つあたりのPoCを30分から1時間程度で作っております。これによりほとんどコストをかけることなく、価値検証をクライアントに提供することができています。

開発フローや低コストなPoC開発に興味ある方はお気軽にお問い合わせください。

AIで自動化したい
業務について、
お気軽に
ご相談ください。

生成AIシステムや
AIエージェントの構築について、
対象業務の整理から実装方法まで
ご相談いただけます。