tlo_oly

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

tlo_oly

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

マガジン

  • Python・機械学習

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

  • キーボード

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

  • Obsidian

    Obsidianに関する投稿まとめ

記事一覧

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

先日OpenAI Assistants APIがStreamingに対応しました。この機能により、ChatGPTのようにアシスタントの回答(途中経過)をリアルタイムに出力することが可能になります。 …

tlo_oly
1か月前
5

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

「マウスに手を伸ばすのが面倒」、「とにかくキーボードから手を離したくない」という人向けにおすすめの各種アプリや設定を紹介します。 アプリケーションの起動アプリケ…

tlo_oly
2か月前
9

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

Streamlitで作成したアプリケーションのE2Eテストってどうしてますか? 最近Streamlitのテストを書く機会があったので、調べたことをまとめました。 テスト用フレームワー…

tlo_oly
2か月前
1

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

PythonでConfluenceのページをMarkdownに変換する方法を紹介します。 モチベーションなぜMarkdownに変換したいかというと、社内wikiとして利用しているConfluenceの既存ペ…

tlo_oly
3か月前
3

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

こちらの記事で紹介されているSelf-Reflective RAGが気になったのでまとめました。 通常のRAGとの違い通常のRAG 質問 → 参照 → 回答生成 という直線的なフロー Self-R…

tlo_oly
3か月前
5

Prompt Hackingに対する防御手法

先日こちらの記事でPrompt Hackingの手法についてまとめました。 今回はそういった攻撃に対する防御策に関する記事です。 Learn PromptingのDefensive Measuresの内容が元…

tlo_oly
3か月前
2

Prompt Hacking手法のまとめ

こちらの論文で紹介されているPrompt Hackingの手法についてまとめてみました。 この論文はLearn Prompting社が2022年12月に主催したPrompt Hackingのコンペ「HackAPrompt…

tlo_oly
3か月前
1

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

LLMのハルシネーション検知手法に関するこちらの記事を読み、興味を持ったので調べてみました。 記事のベースとなっているのは以下の論文のようです。 上記を参考に、ハ…

tlo_oly
3か月前
4

OpenAI Assistants APIとは何か

2023年11月に公開されたOpenAI Assistants APIについて、GPTsやLangChainとの違いについてまとめました。 OpenAI Assistants APIでできることAssistants APIは、アシスタ…

tlo_oly
3か月前
18

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

この記事ではDataviewを使ってHabit Trackerを作成する方法を紹介します。 なぜ専用プラグインを使わないのか?コミュニティプラグインを見ると、色々な専用プラグインが…

tlo_oly
4か月前
6

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

US配列キーボードを使用している人にとってしばしば問題となる「英数・かな切り替え問題」について、よい解決法を探ってみました。 前提Mac向けの内容です。キーマッピン…

tlo_oly
5か月前

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

購入したキーボード今回私が購入したキーボードはNuPhyの「Halo65」というキーボードです。 元々使用していたHHKB Professional Hybrid Type-s(日本語配列)には何の不…

tlo_oly
5か月前

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

PrefectとはPythonでワークフロー・パイプラインを構築するためのライブラリです。 ライセンスは「Apache License 2.0」。 Prefectはクラウドサービス(Prefect Cloud)…

tlo_oly
6か月前
1

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

Pythonの変数は再代入可能Pythonでは普通に定義した変数には値の再代入が可能です。 foo: int = 33foo = 44# 正常終了 参考) 一方、例えば関数型言語であるScalaでは変…

tlo_oly
6か月前
2

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

記号の配置に関する不満私は普段JIS配列のキーボードを使用しています。 主な理由としては以下のとおりです。 短いスペースキーの両脇に英数, かなの入力キーが欲しいか…

tlo_oly
6か月前
3

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

ExcalidrawのフォントについてExcalidrawはObsidian内で手書きテイストの作図が行えるプラグインです。 図内にテキストを入力する際、英文では標準で手書き風フォントを選…

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

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

先日OpenAI Assistants APIがStreamingに対応しました。この機能により、ChatGPTのようにアシスタントの回答(途中経過)をリアルタイムに出力することが可能になります。

そこで、Streamlit + OpenAI Assistants APIでアプリケーションを組んでいる、組もうとしている人向けにStreamingへの対応方法を共有します。

ベースとなるアプリケー

もっとみる
Macの操作をキーボードで完結させる

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

「マウスに手を伸ばすのが面倒」、「とにかくキーボードから手を離したくない」という人向けにおすすめの各種アプリや設定を紹介します。

アプリケーションの起動アプリケーションの起動、ファイル検索、ブックマーク検索などのいわゆる"ランチャーアプリ"は、Mac標準のSpotlightよりも高機能なRaycastを使用しています。

<使用アプリ>
Raycast

<キーバインド>
ランチャー起動: Co

もっとみる
【Python】StreamlitのE2Eテスト、どうやる?

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

Streamlitで作成したアプリケーションのE2Eテストってどうしてますか?
最近Streamlitのテストを書く機会があったので、調べたことをまとめました。

テスト用フレームワークの比較StreamlitアプリケーションのE2Eテスト実装の選択肢としては以下が挙げられます。

Streamlit AppTest

Selenium

SeleniumBase

Playwright

Str

もっとみる
ConfluenceページをMarkdownに変換する方法

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

PythonでConfluenceのページをMarkdownに変換する方法を紹介します。

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

もっとみる
RAGの精度を向上させる~Self-Reflective RAG~

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

こちらの記事で紹介されているSelf-Reflective RAGが気になったのでまとめました。

通常のRAGとの違い通常のRAG

質問 → 参照 → 回答生成 という直線的なフロー

Self-Reflective RAG

質問 → 参照 → フィードバック → 回答生成 → フィードバック

フィードバックを受けて次の行動を選択する(質問を修正する / 再度ドキュメントを参照するなど)

もっとみる
Prompt Hackingに対する防御手法

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と呼んでいます。

Prom

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

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

LLMのハルシネーション検知手法に関するこちらの記事を読み、興味を持ったので調べてみました。

記事のベースとなっているのは以下の論文のようです。

上記を参考に、ハルシネーション検知に対する考え方や、各検知手法について簡単にまとめました。

前提テストは以下の前提とします。これを「ブラックボックステスト」と呼んでいます。

外部知識は利用しない

LLMの内部挙動を見ない

生成された回答のみを

もっとみる
OpenAI Assistants APIとは何か

OpenAI Assistants APIとは何か

2023年11月に公開されたOpenAI Assistants APIについて、GPTsやLangChainとの違いについてまとめました。

OpenAI Assistants APIでできることAssistants APIは、アシスタントボットを作成するためのAPIです。以下のような機能が用意されています。

機能リスト

ファイル参照

コード実行

ファンクション呼び出し

会話履歴の保存

もっとみる
【Obsidian】Dataviewで手軽にHabit Trackerを作成する

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

この記事ではDataviewを使ってHabit Trackerを作成する方法を紹介します。

なぜ専用プラグインを使わないのか?コミュニティプラグインを見ると、色々な専用プラグインが存在します。

しかし、いくつか試してみてあまり使い勝手が良くなかったのと、インストールするプラグインを増やしたくないという理由から、Dataviewで作成する方法を選びました。

作成したDataviewのテンプレー

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

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

US配列キーボードを使用している人にとってしばしば問題となる「英数・かな切り替え問題」について、よい解決法を探ってみました。

前提Mac向けの内容です。キーマッピングにはKarabiner-Elementsを利用します。
なお、トグル方式での切り替えでも問題ないという人には本記事の内容は関係ありません。本記事は「英数」と「かな」それぞれに別のキーを割り当てたい人に向けた内容となります。

左右コ

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

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


購入したキーボード今回私が購入したキーボードはNuPhyの「Halo65」というキーボードです。

元々使用していたHHKB Professional Hybrid Type-s(日本語配列)には何の不満もなかったのですが、8年近く同じキーボードを使って飽きてきたので気分転換に買い替えてみました。

キーボード選びに数週間迷いましたが、最終的に以下の選択肢を辿ってこれに行き着きました。

数日使

もっとみる
【Python】Prefectで作るパイプライン

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


PrefectとはPythonでワークフロー・パイプラインを構築するためのライブラリです。
ライセンスは「Apache License 2.0」。

Prefectはクラウドサービス(Prefect Cloud)も提供していて、クラウドへのデプロイやジョブ実行に対応しています。 ただし、Prefect Cloudを業務で使う場合は有料ライセンスが必要になってきます。

本記事ではクラウド機能は使

もっとみる
【Python】変数への再代入を禁止する

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


Pythonの変数は再代入可能Pythonでは普通に定義した変数には値の再代入が可能です。

foo: int = 33foo = 44# 正常終了

参考) 一方、例えば関数型言語であるScalaでは変数への値の再代入はデフォルトでできない仕様となっています。

val foo: Int = 33foo = 44// Reassignment to val fooエラー

再代入を禁止する方法

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

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


記号の配置に関する不満私は普段JIS配列のキーボードを使用しています。
主な理由としては以下のとおりです。

短いスペースキーの両脇に英数, かなの入力キーが欲しいから

HHKBのキータッチが好きで愛用しているが、US配列版にはカーソルキーがなくて不便だから

一方で「記号の配置」についてはUS配列の方が合理的でよいとも思っていました。
特にプログラミングしていて使用頻度の高い記号が入力しづら

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

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


ExcalidrawのフォントについてExcalidrawはObsidian内で手書きテイストの作図が行えるプラグインです。
図内にテキストを入力する際、英文では標準で手書き風フォントを選ぶことができます。

しかし日本語は通常フォントしか用意されておらず、ツールの雰囲気とマッチしません。

そこで、日本語を使う場合は後述する「第4のフォント」を追加する機能で好きなフォントを設定することをおすす

もっとみる