nook:net:

2025-07-17 summaries in Japanese

Building Better Agents: What’s New in Koog 0.3.0 | The JetBrains Blog

View on JetBrains Blog (Kotlin)

Koog 0.3.0 リリース:より優れたエージェント構築のための新機能

JetBrainsは、インテリジェントエージェントの構築、実行、管理を容易にするKoog 0.3.0をリリースしました。今回のバージョンでは、耐久性、速度、可観測性、そして現実世界システムとのよりスムーズな統合に焦点を当てています。

主な新機能:

  • 永続化と復元: エージェントの状態をローカルディスク、S3バケット、またはデータベースに保存・復元することで、障害発生時の復旧能力を高め、進捗を失うことなく処理を継続できます。チェックポイント機能により、必要に応じて以前の状態に戻すことも可能です。
  • 強化されたドキュメント保存: 永続的なベクトルストレージをサポートし、RAG(検索拡張生成)パイプラインを構築できます。様々なフォーマット、ランキング方法、バックエンドに対応したモジュール設計です。
  • 組み込みの可観測性とモデレーション: OpenTelemetryサポートにより、システム全体で一貫したツールを使ってエージェントを追跡、ロギング、測定し、ボトルネックの特定や動作の監視が可能になりました。また、規制環境向けに、出力の適切性と安全性を確認するモデレーション機能も搭載しています。
  • 並列実行: MapReduceスタイルのAPIによるノードの並列実行に対応し、複数の戦略の同時実行やマルチステップワークフローの高速化を実現します。
  • Springとの統合: Spring Bootを使用している場合、すぐに利用できるBeanと自動設定されたLLMクライアントが提供されます。
  • ReActスタイルの思考: ReActスタイルのエージェント思考をサポートし、思考とアクションを切り替えながら段階的な推論パスを辿ることができます。
  • 回復力の向上: Retryコンポーネントによりエージェントの回復力が向上し、多肢選択推論によりオプションを探索し、ユーザーの好みに対応する新しい方法が提供されます。
  • その他の改善点:
    • Ollamaバックエンドモデル実行時に画像入力に対応
    • Full WebAssembly (WASM)サポートによるブラウザへのデプロイ
    • Amazon Bedrockのネイティブサポート
    • ファクト検索履歴圧縮の改善
    • 任意の入出力タイプに対応し、実行フローの柔軟性を向上
    • UXを円滑にするためのバグ修正

Koog 0.3.0は、エージェントの堅牢性、ポータビリティ、価値を高めるためのステップであり、コミュニティからのフィードバックに基づいて多くのアップデートが実装されました。


テスタビリティの高いjava.nio.file.Pathの作り方 - IK.AM

View on IK.AM

テスタビリティの高いjava.nio.file.Pathの作り方 - 要約

この記事は、JavaでNIO.2のPathオブジェクトを作成する際のテスタビリティを高める方法について解説しています。

問題点:

  • Path.of()Paths.get() を使用すると、実際のファイルシステムに依存するため、OSの違い(パスセパレータ、パーミッション)やテスト環境の状態によってテストが失敗する可能性があります。
  • 特に、WindowsとUnix系でパスのセパレータが異なるため、異なるOS環境で開発を行うチームでは、テストの互換性に問題が生じやすい。
  • @TempDir を利用したテストでも、パスの扱いには注意が必要。

解決策:

  1. FileSystem#getPath() の利用:
    • Path.of() は内部的にデフォルトの FileSystemgetPath メソッドを使用しているため、直接 FileSystem#getPath() を使用する。
    • FileSystem はJDKに組み込まれたファイルシステムの抽象化であり、テスト時にインメモリファイルシステムを利用できる。
    • FileSystem はSPIを通じて拡張可能で、S3やAzure Blob Storageの実装もある。
    • FileSystem をコンストラクタインジェクションで受け取る設計にすることで、テスト時に任意の FileSystem を注入できる。
  2. プロダクションコードの設定:
    • デフォルトの FileSystem を使用するために、Springの @ConfigurationFileSystems.getDefault() をBean定義する。これにより、プロダクションコードでは Path.of() を使っているのと同様に動作する。
  3. Jimfsの利用 (インメモリファイルシステム):
    • Jimfsは、Googleが提供するインメモリファイルシステムの実装。
    • Jimfsを利用することで、実際のファイルシステムに依存しないテストが可能になり、環境による差異を気にせずテストを実行できる。
    • Jimfsを FileSystem に注入することで、より高速で安定したテストが実現できる。
    • ファイルI/Oが多いアプリケーションや、クロスプラットフォーム対応が必要な場合に有効。

結論:

FileSystem#getPath() を使用してPathを作成し、テスト時にJimfsなどのインメモリファイルシステムを注入する設計にすることで、テスタビリティの高い、環境に依存しないテストを実現できます。