[ChatStream] HTTP セッションミドルウェアの設定

[ChatStream] HTTP セッションミドルウェアの設定

こんにちは! (株)Qualiteg プロダクト開発部 です!

本稿では、 ChatStream に セッションミドルウェアをセットし、Webアプリケーションをステートフルにする方法についてご説明いたします!

ChatStream では Qualiteg が開発した独自のセッションミドルウェアを使用しており、通常の Starlette 用のセッションミドルウェアよりも高い柔軟性を実現しています。(Java Servlet のセッション管理アプローチに近いです)

セッションミドルウェア

開いたブラウザでWebチャットをするときにマルチラウンドの会話を成立するためには
ChatPrompt(会話履歴) が複数ターンの会話のなかで更新されていく必要があります。

デフォルトでは、 ChatStream は HTTP セッションを使用してWebアプリケーションをステートフルにし、
ChatPrompt をブラウザが開いている間保持することができます。

HTTP セッションを使用するには、以下のように FastAPI のミドルウェアを登録します。

from fastersession import FasterSessionMiddleware, MemoryStore
app.add_middleware(FasterSessionMiddleware,
                   secret_key="your-session-secret-key",
                   store=MemoryStore(),
                   http_only=True,
                   secure=True,
                   )
パラメータ名 説明
secret_key クッキーの署名用キー。
store セッションの保存用ストア。
http_only クッキーがクライアントサイドのスクリプト(JavaScriptなど)からアクセスできないようにするか。デフォルトはTrue。
secure ローカル開発環境のためにFalse。本番環境ではTrue。Httpsが必要。

内部処理

このデフォルトの実装では、セッションID を生成し署名をほどこしたのち、クッキーに保存します。

クッキーの保存期間はブラウザが開いている間のみで、かつ、フロントエンドのJavaScript からアクセスできない状態となっています

会話履歴を永続化するその他の方法

デフォルトの実装では ChatPrompt はセッション上に存在します。 またセッション情報はサーバー側でオンメモリで管理され、セッションの持続期間はブラウザが開いている間でした。

本格的なチャットサーバーを構築する場合は、ユーザーを認証し、ユーザーにひもづいた ChatPrompt をデータベース上に保存(永続化)するのが一般的です。

このような処理を行うためには、カスタムリクエストハンドラの実装 を行い、リクエストハンドラ上で、 ChatPrompt の管理と、永続化を行うことができます。

関連:CORS ミドルウェア

CORS ミドルウェア


Read more

ゼロから作るコーディングエージェント【第1回】「最後までやりきる」が難しい理由と、ターンを回す係と止める係を分ける設計

ゼロから作るコーディングエージェント【第1回】「最後までやりきる」が難しい理由と、ターンを回す係と止める係を分ける設計

コーディングエージェントを自作すると、いちばん難しいのはループを回すことではなく「いつ止めるか」を決めることでした。あるランでは、300ターン中234ターンでツールが1度も呼ばれていませんでした。この数字を出発点に、ターンを回す係と止めてよいか決める係を分け、押し戻しの送り方を直すまでを書きます。

By Qualiteg プロダクト開発部
【AI×CAD 第4回】3Dデータを渡さずにAIに設計をレビューさせる。幾何解析を先に済ませ、LLMには構造化した解析結果だけを渡す

【AI×CAD 第4回】3Dデータを渡さずにAIに設計をレビューさせる。幾何解析を先に済ませ、LLMには構造化した解析結果だけを渡す

機密の3DデータをクラウドAIに上げなくても、設計のAIレビューはできます。CADASのAI所見は、幾何解析エンジンが歯数・連動・穴・フィレットを先に解析し、LLMにはその構造化データ(1KBほど)だけを渡します。実際の所見・送信したJSON・悪用対策まで、実物で解説します。

By Qualiteg コンサルティング
Raspberry Pi Zero Wで外出先からサーボを動かす。ヘッドレスセットアップからハードウェアPWM、WireCanalでの公開まで

Raspberry Pi Zero Wで外出先からサーボを動かす。ヘッドレスセットアップからハードウェアPWM、WireCanalでの公開まで

2017年の初代Raspberry Pi Zero Wにサーボをつなぎ、Windows PCだけでヘッドレスセットアップして、インターネット越しにcurl一発でサーボを動かすまでの全手順です。ソフトウェアPWMで震えるサーボをハードウェアPWMで止め、その差をHTTPのAPIで切り替えられるようにして、WireCanalの無料プランでポート開放なしに公開しました。書き込み184秒・起動5分・切替1秒など、すべて実測値つきです。

By Join us, Michele on Qualiteg's adventure to innovation
【AI×CAD 第3回】「この形、抜けません」を設計中に知る。金型DFM(抜き勾配・アンダーカット・肉厚)をブラウザで自動チェック

【AI×CAD 第3回】「この形、抜けません」を設計中に知る。金型DFM(抜き勾配・アンダーカット・肉厚)をブラウザで自動チェック

抜き勾配・アンダーカット・局所的な肉厚の要注意箇所は、型開き方向を決めれば形状から機械的に一次チェックできます。わざと不良を仕込んだ樹脂ケースでCADASの金型DFMを実走し、要勾配11.8%・アンダーカット0.2%(横穴のみ)・肉厚中央値2.00mmが出るまでと、その判定の仕組みを解説します。

By Qualiteg コンサルティング