
特定モデルに依存しないAIエージェントの設計: Clean Architectureとテスト戦略
AIエージェントのAIモデルはできるだけ差し替え可能にしておいた方がよい、という話について書きます。 本記事では、LLMアダプタという抽象化レイヤーを作り、Claude Code と Codex CLI を差し替え可能にする抽象化の方法とテスト戦略について紹介します。 はじめに
記事を読む
AIエージェントのAIモデルはできるだけ差し替え可能にしておいた方がよい、という話について書きます。 本記事では、LLMアダプタという抽象化レイヤーを作り、Claude Code と Codex CLI を差し替え可能にする抽象化の方法とテスト戦略について紹介します。 はじめに
記事を読むはじめに こんにちは!aokitiです。 現在は、慶應SFCのRG(楠本・高汐・バンミーター・植原・三次・中澤・大越 合同研究プロジェクト)の中澤・大越研究室、d-hacks研究グループに所属しています。d-hacksは深層学習・AIを専門とする研究グループで、毎週木曜の4限・5限にミーティングを行っています。
背景 現在所属している中澤・大越研究室のホームページには、採択された論文や発表会議の一覧を掲載するページ(以下、publicationsページ)がある。 https://www.jn.sfc.keio.ac.jp/publication/
以前、d-hacksの新人向け勉強会を実施した時に以下2つの質問をもらったのですが、その場であまりうまく答えられた自信がなく、改めて調べ直しも兼ねてまとめました。勉強のお役に立てば幸いです。 Q. 活性化関数はなぜ必要なのか? 深層学習におけるニューラルネットワークで活性化関数が重要なのは、複雑な関数を表現できるようにするため。基本的にはReLU関数が最もよく使われており、最近のLLMでは勾配消失を防ぐ目的でGeLU関数が使われている。

3年前に作ったDiscord Botの導入サーバー数が93を超えてたので、100サーバーを達成したいと思い、宣伝の意味も込めて記事を書きます。 こちらからDiscordに追加できます! https://github.com/sakusaku3939/discord-vc-bot
記事を読むGoogle Antigravityが全ての話題をかっさらっていったが、先週にKiroが一般提供されていたので使ってみたら想像以上にすごかった。 せっかくなので、今やってる研究テーマに関連する、1つ思い付いたアイデアを実際に作らせてみた。具体的には、オープンボキャブラリー物体検出モデルのYOLO-World [CVPR’24] が「単語などの短いテキストしか扱えない」という課題に対して、高速性はそのままに、もっと文脈を理解して長めの文章からでも物体を検出できるようになることを目指している。今回は、YOLO-Worldで長文を単語レベルに分割して検出したあと、軽量MLPでリランキングするモジュールを後付けしてみて、文脈精度がどれくらい向上するか?という実装を0からKiroで作ってみた。 やったこと
Working Out Loud (WOL) の考え方が良かったので、学びの発信を心がけるために個人ブログを開設した。 技術的なことは既にZennやQiitaでいくつか発信しているが、もっと気軽に作ったものや学びの進捗を残したり、本を読んだ感想を書いたりするために使う予定です。 以下は記法など

Jetpack Compose において、無駄な再コンポーズを防ぐことはパフォーマンスの改善における重要な要素です。 そこで、必要なタイミングだけ再コンポーズが発生するように抑える仕組みとして用意されているのが、derivedStateOf です。 ただ一方で、Jetpack Compose は再コンポーズ周りがどんどん進化する中で、derivedStateOf が実際にはどう動き、どんな場面で使い分けるべきなのか、自分にはいまひとつ掴めていませんでした。
記事を読む
Androidアプリ開発では、例えば 1秒(1000ミリ秒)後に処理を実行したい場合、次のような方法を使うことがあります。 このコードがどのように動作しているのかは、Javaでの記述を見るとより理解しやすいと思います。 他の言語の経験がある人にとっては、1秒待機するだけでなぜこれだけ複雑な記述が必要なのか? Handler とは?Looper.getMainLooper() とは?という気持ちになるかもしれません。これは、Android のスレッドやメッセージループの仕組みを踏まえて考えると、より腑に落ちると思います。
記事を読む
Androidアプリ開発では、例えば 1秒(1000ミリ秒)後に処理を実行したい場合、次のような方法を使うことがあります。 kotlin Handler(Looper.getMainLooper()).postDelayed({
記事を読む
概要 https://github.com/AILab-CVC/YOLO-World Dockerを使用してYOLO-Worldを動かす時に、2025年3月時点で公式READMEの手順どおりにインストールしても上手く動作しなかった。また、インストールを進める中で、複数のディレクトリ内にあるREADMEを行き来する必要があり分かりづらかった。
記事を読む
背景 以下のRaspberry Piフォーラムと全く同じ問題が起きていた。 https://forums.raspberrypi.com/viewtopic.php?t=331525
記事を読む
今回の背景 Flutterで自作したアプリの Android Gradle Plugin (AGP) を最新のバージョンに更新しようと思い、7.x.x から 8.x.x にアップデートしました。すると、使用しているパッケージのsound_modeにて以下のエラーが発生し、アプリのビルドが通らなくなりました。 !image.png
記事を読む
venv(virtualenv)は、プロジェクト毎に独立した仮想環境を作成することができる、Python3の標準ライブラリのこと。 python -m venv で作成できる。今回は仮想環境名をvenvとする。 Windowsの場合
記事を読む
Windows11でGPU(CUDA)を認識しない時に AssertionError: Torch not compiled with CUDA enabled エラーが起きる。PyTochの中にCPUのみのバージョンが存在しているのが原因。 他の記事だとconda環境での解決方法しか載っていなかった。 解決方法
記事を読む
問題 Next.jsで``タグを使用してページ遷移する時に、スクロール位置が 0, 0 にリセットされない。 または、以下のようにスクロール位置が指定できない。
記事を読む
よくある画像のピンチイン・ピンチアウトはInteractiveViewerを使用して実装することができます。 ただし、InteractiveViewerだけだと2枚目のスクリーンショットのように画像サイズが固定されてしまい、その中で拡大してしまいます。 そこで、SizeBoxで外側の大きさをMediaQuery.of(context).sizeにし、FittedBoxで比率を固定しながらリサイズすることで3枚目のように拡大することができます。
記事を読む
Flutterで日本語の縦書きを実現する方法 第2弾です。 前回の記事(2021年12月20日)では、TextPainter を使用して縦書き文章を描画する方法を解説しましたが、「改行に対応してない」「実装コードが複雑」といった欠点がありました。 ↓ 前回の記事はこちら
記事を読む
Flutterでは縦書きテキストが標準でサポートされていません。 また、 Stack Overflowでも縦書きテキストのサポートについて言及されていましたが、将来的にもFlutterに追加される予定は無いとのことです。 https://stackoverflow.com/questions/56782788/vertical-text-widget-for-flutter
記事を読む
Flutterで作ったアプリをiOS向けにクローズド配信する時に、せっかくなので自動化したいと思い、Github Actionsを使用してCI/CD環境を構築する方法をまとめました。 masterブランチにpushされた時に、自動でDeployGateにアップロードされるようになっています。 また、今回の方法はこちらの記事を参考にしました。
記事を読む
複数行のRadioButtonが標準で用意されてなかったので、作ってみたところ、意外と詰まったのでまとめてみました。 イメージは下の通りです。少しレイアウトが弄ってありますが、詳しい説明は省かせていただきます。 忙しい方は3. RadioGroupをカスタマイズするをご覧ください。
記事を読む
PreferenceFragmentCompat、とても便利ですが痒いところに手が届きません。特にこのような設定レイアウトはよく見ますが、標準では用意されていません。 |完成図|参考レイアウト(Twitter)| |:---:|:---:|
記事を読む