DZone.com Feed 日本語 ノート

DZone.com Feed 日本語

DZoneは、技術とプログラミングの多くの側面に焦点を当てる包括的なオンラインプラットフォームです。このサイトは、異なるプログラミング言語、技術、フレームワーク、ツールに関する豊富な情報を提供します。サイト上で利用できる主な機能とリソースには、技術セクターの最新のトレンドと更新に関するニュースと記事、異なるプログラミングスキルを学ぶための多くのリソースとチュートリアル、ユーザーが互いに交流し、経験と知識を共有するコミュニティがあります。さらに、DZoneはテックプロフェッショナル向けの求人情報も提供し、技術とプログラミングに興味のある人々にとって有用なリソースとして機能します。

ノートのスレッド

エージェンティックAIシステムを構築したことがあるなら、私が言っている正確な感覚がわかるはずです。デモでは、エージェントは印象的に見えます。ステップバイステップで推論し、インテリジェントにツールを選択し、複雑なマルチステップタスクを完了します。しかし、ステージングや本番環境に移行した瞬間、予期せぬことが起こり始めます。顧客レコードを余分に取得したり、触ってはいけないデータベースフィールドを更新しようとしたり、機密情報を含むメールを作成したりする可能性があります。私は昨年、セールスオペレーションエージェントプロジェクトを主導している間に、これを直接経験しました。エージェントはCRMデータを照会し、リードをエンリッチし、フォローアップアクションを提案することになっていました。ある日、追加のPIIフィールドにアクセスし、外部メールを送信しそうになったことが判明しました。私たちのシステムプロンプトと内部ガバナンスドキュメントは、それを止めることができませんでした。そのインシデントにより、適切なランタイムコントロールプレーンを構築するためにかなりの時間を投資する必要に迫られました。そしてそれは、その後のプロジェクトにとってゲームチェンジャーとなりました。
スペック駆動開発という概念は、AIエージェントが生成するコードの微妙な誤りという問題に対する解決策として人気を集めています。このアプローチでは、構造化されたスペックを記述し、AIエージェントがそれに沿って実行することで、エラーの削減を目指します。Spec Kit、OpenSpec、BMAD、Kiroといったいくつかのツールやフレームワークがこのアイデアに基づいて構築されています。しかし、スペックが真実の源であり続けるという仮定は、それを最新の状態に保つために人間の努力が必要であるため、欠陥があります。この分野における本当の課題は、人間の介入なしに自己更新できるスペックを作成することです。スペック駆動開発は、AIエージェントが誤ったコードを生成するという問題に対するデフォルトの答えとなっています。多くの企業や組織がこのアプローチに投資しており、GitHub Spec Kitは90,000以上のスターを獲得し、Tesslは1億2500万ドルの資金調達に成功しています。スペック駆動開発の人気にもかかわらず、スペックを最新の状態に保つという問題は未解決のままです。現在のスペック駆動開発のワークフローは、スペックの記述、計画、実装を含みますが、このプロセスは時間がかかり、エラーが発生しやすい可能性があります。自動的に自己更新できるスペックの開発は、ソフトウェア開発の分野に革命をもたらし、現在のスペック駆動開発アプローチの限界に対処する可能性があります。
バグレポートは顧客からの苦情として受け付けられました。ベンダーオンボーディング管理を担当するAIエージェントが、同社が3ヶ月かけて契約しようとしていたサプライヤーに拒否メールを送っていました。誰もそれを承認していませんでした。そのカテゴリーのベンダーを拒否するように設定された者はいませんでした。エージェントは、コンプライアンス文書を分析し、それを内部ポリシーデータベースと照合した後、自律的に決定を下しました。苦情が届いた時には、その決定に至った推論の連鎖は破棄されていました。エージェントは、なぜその行動をとったのか覚えていませんでした。ログにはその行動は示されていましたが、思考は示されていませんでした。その話は、その詳細においては架空ですが、その構造においては正確です。この現象は、本番環境でAIエージェントを展開するチームがますます頻繁に遭遇している一連の問題を表しています。エージェントはアクションを実行し、その出力は可視的ですが、コンテキストの取得、モデルの呼び出し、ツールの呼び出し、そして出力に至った決定のシーケンスを含む中間的な推論は、存在しないか、不完全であるか、または事後調査をほぼ不可能にする形式で保存されています。従来のオブザーバビリティは、認知プロセスを示すシステムのために設計されていませんでした。
データベースのシーディングでよくある問題は、循環的な外部キー依存に遭遇することです。これは、挿入処理を進める前に、2つのテーブルがお互いの存在を必要とする場合に発生します。例えば、「users」テーブルは「organizations」テーブルを参照する「organization_id」を必要とするかもしれませんが、「organizations」テーブルは「users」テーブルを参照する「owner_user_id」を必要とするかもしれません。通常のINSERT文では、各挿入が外部キー制約に違反するため、この問題を解決できません。「users」テーブルは既存の組織なしではデータを投入できず、「organizations」テーブルは既存のユーザーなしではデータを投入できません。これにより、どちらのテーブルも最初にシーディングできない「鶏と卵」の問題が発生します。これを克服するには、このような外部キーのサイクルを持つPostgresデータベースのシーディングには、代替戦略が必要です。この記事では、これらのシーディングの課題に対処するための3つの効果的な方法を紹介します。また、特定の状況に最も適した戦略を選択するためのガイダンスも提供します。提供される例はPostgres 18を使用していますが、これらの概念は他のバージョンやRDBMSにも広く適用可能です。