Python

Streamlit

StreamlitとRAGで作る 実用的なAIチャットボット(6) ストリーミング応答とチャット履歴の管理

こんにちは、JS2IIUです。連載「StreamlitとRAGで作る:実用的なAIチャットボット開発ガイド」の第6回です。前回は、StreamlitとLangChain、そしてVector Storeを統合し、独自のドキュメントに基づいて回答する基本的なRAGアプリを完成させました。これで機能的には...
Streamlit

StreamlitとRAGで作る 実用的なAIチャットボット(5) 基本の質問応答アプリを完成させる

こんにちは、JS2IIUです。連載「StreamlitとRAGで作る:実用的なAIチャットボット開発ガイド」の第5回をお届けします。これまで私たちは、AIアプリを構築するための「部品」を一つずつ丁寧に作り上げてきました。UIの基礎: Streamlitの使い方をマスターしました。RAGの概念: 外部...
Streamlit

StreamlitとRAGで作る 実用的なAIチャットボット(4) エンベディングとローカルVector Storeの構築

こんにちはJS2IIUです。連載「StreamlitとRAGで作る:実用的なAIチャットボット開発ガイド」の第4回目の記事です。前回は、PDFなどのドキュメントを読み込み、AIが食べやすい一口サイズ(チャンク)に分割するところまでを解説しました。これで手元には大量のテキストデータの断片があります。し...
Streamlit

StreamlitとRAGで作る 実用的なAIチャットボット(3) ドキュメントローダーとチャンキングの最適化

こんにちは、JS2IIUです。連載「StreamlitとRAGで作る:実用的なAIチャットボット開発ガイド」の第3回目の記事になりました。前回は、プロンプトに手動で情報を埋め込む「最小構成のRAG」を作成しました。しかし、現実の業務では、「社内Wikiの全記事」や「数百ページのPDFマニュアル」など...
Streamlit

StreamlitとRAGで作る 実用的なAIチャットボット(2) RAGの基本を理解する

こんにちは、JS2IIUです。前回に引き続き、「StreamlitとRAGで作る 実用的なAIチャットボット」シリーズの第2回目。RAGについてみていきます。前回は、Streamlitを使ってPythonだけでリッチなチャットUIを作る方法を学びました。しかし、作成したボットはまだ「オウム返し」しか...
Streamlit

StreamlitとRAGで作る 実用的なAIチャットボット(1) Streamlit超入門

こんにちは、JS2IIUです。今回から全10回にわたり、「StreamlitとRAGで作る:実用的なAIチャットボット開発ガイド」というシリーズ連載を開始します。近年、大規模言語モデル(LLM)の発展により、私たちエンジニアは強力なAIアプリケーションを個人レベルでも開発できるようになりました。しか...
Streamlit

長時間処理を実行するための Streamlit アプリ設計

こんにちは、JS2IIUです。Streamlitで「数分〜数時間かかる重い処理」を安全かつ安定して実行したい——そんな悩みを持つ開発者は多いのではないでしょうか。Streamlitは手軽にWebアプリを作れる一方、長時間処理には設計上の壁が立ちはだかります。本記事では、なぜStreamlitで長時間...
Python

Pythonによる交通シミュレーション:追従(IDM) × 車線変更(MOBIL)

こんにちは、JS2IIUです。皆さんは、高速道路で自動運転車がスムーズに車線変更をする動画を見たことがありますか? あるいは、普段の運転で「前の車が遅いな、隣の車線に移ろうか」と判断する一瞬、頭の中でどのような計算が行われているのか気になったことはないでしょうか。今回は、そんな「運転の意思決定」をP...
Python

Pythonによる交通シミュレーション:Intelligent Driver Model (IDM) による挙動の物理モデル化

こんにちは、JS2IIUです。これまでの連載では、基本的な交通シミュレーション環境の構築から始まり、マルチエージェント化、そしてFinite State Machine(FSM)を用いた状態遷移による行動制御までを解説してきました。前回までの実装で、車は「前の車がいなければ進む」「近づいたら止まる」...
Python

有限オートマトン(FSM)とマルチエージェントの融合:整列行動の実装

こんにちは、JS2IIUです。これまでの連載では、物理学に基づいた「社会力モデル」による群衆の動き(第1回)と、コスト関数を用いた「混雑回避の思考」(第2回)を実装してきました。これらによって、エージェントたちは障害物を避け、空いている場所を選ぶことができるようになりました。しかし、シミュレーション...