【要約】さくらのAIと話したかっただけなのに。。。人生初APIで、会話履歴をJSON保存し始めたセキュリティエンジニアの話 [Qiita_Trend] | Summary by TechDistill
> Source: Qiita_Trend
Execute Primary Source
// Problem
API実装経験の少ないセキュリティエンジニアが、さくらのAI EngineのPlaygroundを利用中に、会話履歴が消失する問題に直面した。筆者は、生成AIとの対話において文脈を維持したいと考えていたが、以下の課題に直面した。
- ・Playgroundは動作確認用であり、再ログイン時に履歴が保持されない。
- ・API自体はステートレスであり、クライアント側で履歴を管理する必要がある。
- ・プロンプトの入力や履歴の確認作業に、手動のコピペが発生し非効率である。
// Approach
筆者は、会話履歴を永続化するために、Pythonを用いてAPIを直接叩く独自のチャット環境を構築した。生成AIの支援を受けながら、以下のステップで実装を進めた。
- ・
prompt.txtから入力を読み込み、プロンプトを外部管理する仕組みを構築した。 - ・会話履歴を
history.jsonへ逐次保存し、リクエスト時に毎回送信する実装を行った。 - ・対話内容を人間が読みやすいHTML形式で、1往復ごとにファイル出力する機能を設けた。
- ・特定のキーワード入力により、会話履歴を初期化するセッションリセット機能を実装した。
// Result
筆者は、会話の文脈を維持しながら、独自のUIで対話できる環境を手に入れた。これにより、以下の成果を得ている。
- ・JSON保存により、過去のやりとりを確実に記録・蓄積できた。
- ・HTML出力により、対話内容の視認性が大幅に向上した。
- ・APIの基本構造(messages配列の管理)への理解が深まった。
- ・今後の展望として、SQLiteによる管理やRAGの導入、音声APIの活用を挙げている。
Senior Engineer Insight
> プロトタイピングとしては非常に素直な実装である。しかし、履歴を毎回全送信する手法は、会話の長期化に伴いトークンコストとレイテンシを増大させる。実運用では、履歴の要約やベクトル検索(RAG)によるコンテキスト制御が不可欠だ。また、セキュリティの観点から、APIトークンの環境変数管理やHTML出力時のエスケープ処理は、実装時に必ず考慮すべき必須要件となる。