記事一覧
Streamlit + OpenAI Assistants APIで作成したチャットアプリケーションをStreamingに対応させる
先日OpenAI Assistants APIがStreamingに対応しました。この機能により、ChatGPTのようにアシスタントの回答(途中経過)をリアルタイムに出力することが可能になります。
そこで、Streamlit + OpenAI Assistants APIでアプリケーションを組んでいる、組もうとしている人向けにStreamingへの対応方法を共有します。
ベースとなるアプリケー
【Python】StreamlitのE2Eテスト、どうやる?
Streamlitで作成したアプリケーションのE2Eテストってどうしてますか?
最近Streamlitのテストを書く機会があったので、調べたことをまとめました。
テスト用フレームワークの比較StreamlitアプリケーションのE2Eテスト実装の選択肢としては以下が挙げられます。
Streamlit AppTest
Selenium
SeleniumBase
Playwright
Str
ConfluenceページをMarkdownに変換する方法
PythonでConfluenceのページをMarkdownに変換する方法を紹介します。
モチベーションなぜMarkdownに変換したいかというと、社内wikiとして利用しているConfluenceの既存ページを、生成AIのRAGから参照させるのが目的です。
PDFに変換する方法もありますが、PDFにすると元ページの構造や文章が崩れてしまい、RAGの精度が大きく低下してしまいます。一方、Mark
RAGの精度を向上させる~Self-Reflective RAG~
こちらの記事で紹介されているSelf-Reflective RAGが気になったのでまとめました。
通常のRAGとの違い通常のRAG
質問 → 参照 → 回答生成 という直線的なフロー
Self-Reflective RAG
質問 → 参照 → フィードバック → 回答生成 → フィードバック
フィードバックを受けて次の行動を選択する(質問を修正する / 再度ドキュメントを参照するなど)
Prompt Hackingに対する防御手法
先日こちらの記事でPrompt Hackingの手法についてまとめました。
今回はそういった攻撃に対する防御策に関する記事です。
Learn PromptingのDefensive Measuresの内容が元ネタとなっています。
それでは、各手法について見ていきます。
日本語名は私が適当につけたものです。
Filtering(フィルタリング)プロンプトや出力においてブロックすべき単語やフレー
Prompt Hacking手法のまとめ
こちらの論文で紹介されているPrompt Hackingの手法についてまとめてみました。
この論文はLearn Prompting社が2022年12月に主催したPrompt Hackingのコンペ「HackAPrompt」の結果をまとめたものです。
Prompt Hackingとは論文内では以下のようなLLMの脆弱性を用いた攻撃を総称してPrompt Hackingと呼んでいます。
Prom
OpenAI Assistants APIとは何か
2023年11月に公開されたOpenAI Assistants APIについて、GPTsやLangChainとの違いについてまとめました。
OpenAI Assistants APIでできることAssistants APIは、アシスタントボットを作成するためのAPIです。以下のような機能が用意されています。
機能リスト
ファイル参照
コード実行
ファンクション呼び出し
会話履歴の保存
【Obsidian】Dataviewで手軽にHabit Trackerを作成する
この記事ではDataviewを使ってHabit Trackerを作成する方法を紹介します。
なぜ専用プラグインを使わないのか?コミュニティプラグインを見ると、色々な専用プラグインが存在します。
しかし、いくつか試してみてあまり使い勝手が良くなかったのと、インストールするプラグインを増やしたくないという理由から、Dataviewで作成する方法を選びました。
作成したDataviewのテンプレー
【キーボード】US配列での英数・かな切り替え問題の解決方法
US配列キーボードを使用している人にとってしばしば問題となる「英数・かな切り替え問題」について、よい解決法を探ってみました。
前提Mac向けの内容です。キーマッピングにはKarabiner-Elementsを利用します。
なお、トグル方式での切り替えでも問題ないという人には本記事の内容は関係ありません。本記事は「英数」と「かな」それぞれに別のキーを割り当てたい人に向けた内容となります。
左右コ
【Python】変数への再代入を禁止する
Pythonの変数は再代入可能Pythonでは普通に定義した変数には値の再代入が可能です。
foo: int = 33foo = 44# 正常終了
参考) 一方、例えば関数型言語であるScalaでは変数への値の再代入はデフォルトでできない仕様となっています。
val foo: Int = 33foo = 44// Reassignment to val fooエラー
再代入を禁止する方法
【Obsidian】Excalidrawに最適な手書き風日本語フォント3選
ExcalidrawのフォントについてExcalidrawはObsidian内で手書きテイストの作図が行えるプラグインです。
図内にテキストを入力する際、英文では標準で手書き風フォントを選ぶことができます。
しかし日本語は通常フォントしか用意されておらず、ツールの雰囲気とマッチしません。
そこで、日本語を使う場合は後述する「第4のフォント」を追加する機能で好きなフォントを設定することをおすす