tlo_oly

🧑🏻‍💻 ソフトウェアエンジニア 💚 読書、ノート術、データ管理、キーボード、カメラ

tlo_oly

🧑🏻‍💻 ソフトウェアエンジニア 💚 読書、ノート術、データ管理、キーボード、カメラ

マガジン

  • Python・機械学習

    Python・機械学習に関する投稿まとめ

  • キーボード

    キーボードに関する投稿まとめ

  • Obsidian

    Obsidianに関する投稿まとめ

最近の記事

Streamlit + OpenAI Assistants APIで作成したチャットアプリケーションをStreamingに対応させる

先日OpenAI Assistants APIがStreamingに対応しました。この機能により、ChatGPTのようにアシスタントの回答(途中経過)をリアルタイムに出力することが可能になります。 そこで、Streamlit + OpenAI Assistants APIでアプリケーションを組んでいる、組もうとしている人向けにStreamingへの対応方法を共有します。 ベースとなるアプリケーションStreaming + OpenAI Assistants APIのアプリ

    • Macの操作をキーボードで完結させる

      「マウスに手を伸ばすのが面倒」、「とにかくキーボードから手を離したくない」という人向けにおすすめの各種アプリや設定を紹介します。 アプリケーションの起動アプリケーションの起動、ファイル検索、ブックマーク検索などのいわゆる"ランチャーアプリ"は、Mac標準のSpotlightよりも高機能なRaycastを使用しています。 <使用アプリ> Raycast <キーバインド> ランチャー起動: Command + Space ボタンやリンクのクリックボタンやリンクのクリックな

      • 【Python】StreamlitのE2Eテスト、どうやる?

        Streamlitで作成したアプリケーションのE2Eテストってどうしてますか? 最近Streamlitのテストを書く機会があったので、調べたことをまとめました。 テスト用フレームワークの比較StreamlitアプリケーションのE2Eテスト実装の選択肢としては以下が挙げられます。 Streamlit AppTest Selenium SeleniumBase Playwright Streamlit AppTest Streamlit公式のテストライブラリ。 簡

        • ConfluenceページをMarkdownに変換する方法

          PythonでConfluenceのページをMarkdownに変換する方法を紹介します。 モチベーションなぜMarkdownに変換したいかというと、社内wikiとして利用しているConfluenceの既存ページを、生成AIのRAGから参照させるのが目的です。 PDFに変換する方法もありますが、PDFにすると元ページの構造や文章が崩れてしまい、RAGの精度が大きく低下してしまいます。一方、Markdownであれば元の情報を維持したままRAGのインプットとして利用できるため、精

        Streamlit + OpenAI Assistants APIで作成したチャットアプリケーションをStreamingに対応させる

        マガジン

        • Python・機械学習
          10本
        • キーボード
          4本
        • Obsidian
          3本

        記事

          RAGの精度を向上させる~Self-Reflective RAG~

          こちらの記事で紹介されているSelf-Reflective RAGが気になったのでまとめました。 通常のRAGとの違い通常のRAG 質問 → 参照 → 回答生成 という直線的なフロー Self-Reflective RAG 質問 → 参照 → フィードバック → 回答生成 → フィードバック フィードバックを受けて次の行動を選択する(質問を修正する / 再度ドキュメントを参照するなど) 実装方法LangChainが最近ローンチしたLangGraphを使うことで簡単

          RAGの精度を向上させる~Self-Reflective RAG~

          Prompt Hackingに対する防御手法

          先日こちらの記事でPrompt Hackingの手法についてまとめました。 今回はそういった攻撃に対する防御策に関する記事です。 Learn PromptingのDefensive Measuresの内容が元ネタとなっています。 それでは、各手法について見ていきます。 日本語名は私が適当につけたものです。 Filtering(フィルタリング)プロンプトや出力においてブロックすべき単語やフレーズを確認する方法。 ブロックリストだけでなく許可リストを使用することもできる。

          Prompt Hackingに対する防御手法

          Prompt Hacking手法のまとめ

          こちらの論文で紹介されているPrompt Hackingの手法についてまとめてみました。 この論文はLearn Prompting社が2022年12月に主催したPrompt Hackingのコンペ「HackAPrompt」の結果をまとめたものです。 Prompt Hackingとは論文内では以下のようなLLMの脆弱性を用いた攻撃を総称してPrompt Hackingと呼んでいます。 Prompt Injection 攻撃者がLLMの出力をハイジャックし、モデルに対して

          Prompt Hacking手法のまとめ

          LLMのハルシネーションを検知する方法

          LLMのハルシネーション検知手法に関するこちらの記事を読み、興味を持ったので調べてみました。 記事のベースとなっているのは以下の論文のようです。 上記を参考に、ハルシネーション検知に対する考え方や、各検知手法について簡単にまとめました。 前提テストは以下の前提とします。これを「ブラックボックステスト」と呼んでいます。 外部知識は利用しない LLMの内部挙動を見ない 生成された回答のみを使ってテストする ハルシネーションを検知するには?同じ質問に対して複数の回答を

          LLMのハルシネーションを検知する方法

          OpenAI Assistants APIとは何か

          2023年11月に公開されたOpenAI Assistants APIについて、GPTsやLangChainとの違いについてまとめました。 OpenAI Assistants APIでできることAssistants APIは、アシスタントボットを作成するためのAPIです。以下のような機能が用意されています。 機能リスト ファイル参照 コード実行 ファンクション呼び出し 会話履歴の保存 プロンプト保存 機能名とのマッピング 上記機能をAssistants AP

          OpenAI Assistants APIとは何か

          【Obsidian】Dataviewで手軽にHabit Trackerを作成する

          この記事ではDataviewを使ってHabit Trackerを作成する方法を紹介します。 なぜ専用プラグインを使わないのか?コミュニティプラグインを見ると、色々な専用プラグインが存在します。 しかし、いくつか試してみてあまり使い勝手が良くなかったのと、インストールするプラグインを増やしたくないという理由から、Dataviewで作成する方法を選びました。 作成したDataviewのテンプレートDataviewのテンプレートは以下のとおりです。 こちらの記事を参考に少しカ

          【Obsidian】Dataviewで手軽にHabit Trackerを作成する

          【キーボード】US配列での英数・かな切り替え問題の解決方法

          US配列キーボードを使用している人にとってしばしば問題となる「英数・かな切り替え問題」について、よい解決法を探ってみました。 前提Mac向けの内容です。キーマッピングにはKarabiner-Elementsを利用します。 なお、トグル方式での切り替えでも問題ないという人には本記事の内容は関係ありません。本記事は「英数」と「かな」それぞれに別のキーを割り当てたい人に向けた内容となります。 左右コマンドキーに割り当てるJIS配列のスペースバー左右の英数・かなキーから方式の移行

          【キーボード】US配列での英数・かな切り替え問題の解決方法

          【キーボード】NuPhy Halo65の設定をカスタマイズする

          購入したキーボード今回私が購入したキーボードはNuPhyの「Halo65」というキーボードです。 元々使用していたHHKB Professional Hybrid Type-s(日本語配列)には何の不満もなかったのですが、8年近く同じキーボードを使って飽きてきたので気分転換に買い替えてみました。 キーボード選びに数週間迷いましたが、最終的に以下の選択肢を辿ってこれに行き着きました。 数日使ってみた感想としては、Baby Kangaroo軸の打鍵感がとにかく気持ちよく、

          【キーボード】NuPhy Halo65の設定をカスタマイズする

          【Python】Prefectで作るパイプライン

          PrefectとはPythonでワークフロー・パイプラインを構築するためのライブラリです。 ライセンスは「Apache License 2.0」。 Prefectはクラウドサービス(Prefect Cloud)も提供していて、クラウドへのデプロイやジョブ実行に対応しています。 ただし、Prefect Cloudを業務で使う場合は有料ライセンスが必要になってきます。 本記事ではクラウド機能は使用せず、ローカルやオンプレミス環境での利用を想定しています。 Prefectの

          【Python】Prefectで作るパイプライン

          【Python】変数への再代入を禁止する

          Pythonの変数は再代入可能Pythonでは普通に定義した変数には値の再代入が可能です。 foo: int = 33foo = 44# 正常終了 参考) 一方、例えば関数型言語であるScalaでは変数への値の再代入はデフォルトでできない仕様となっています。 val foo: Int = 33foo = 44// Reassignment to val fooエラー 再代入を禁止する方法では、Pythonで再代入を禁止する方法について見ていきます。 大文字で定義す

          【Python】変数への再代入を禁止する

          【キーボード】US配列はプログラミングしやすいのか

          記号の配置に関する不満私は普段JIS配列のキーボードを使用しています。 主な理由としては以下のとおりです。 短いスペースキーの両脇に英数, かなの入力キーが欲しいから HHKBのキータッチが好きで愛用しているが、US配列版にはカーソルキーがなくて不便だから 一方で「記号の配置」についてはUS配列の方が合理的でよいとも思っていました。 特にプログラミングしていて使用頻度の高い記号が入力しづらい位置にあったりすると気になります。 しかしわざわざUS配列のキーボードに乗り

          【キーボード】US配列はプログラミングしやすいのか

          【Obsidian】Excalidrawに最適な手書き風日本語フォント3選

          ExcalidrawのフォントについてExcalidrawはObsidian内で手書きテイストの作図が行えるプラグインです。 図内にテキストを入力する際、英文では標準で手書き風フォントを選ぶことができます。 しかし日本語は通常フォントしか用意されておらず、ツールの雰囲気とマッチしません。 そこで、日本語を使う場合は後述する「第4のフォント」を追加する機能で好きなフォントを設定することをおすすめします。 おすすめフォントを3つ紹介この記事では私の個人的な好みで選んだ手書

          【Obsidian】Excalidrawに最適な手書き風日本語フォント3選