GyaanSetu WebDev

Frontend, backend and devops for the modern web.

244 articlesDeep, practical knowledge

JSONによる引用を強制することで、WhatsApp RAGボットのハルシネーションを抑制

pgvectorを備えたPostgreSQL上に構築されたこのプロトタイプは、冗長なプロンプトの代わりに、すべての主張を検証するJSONスキーマを採用しています。モデルがチャンクIDを紐付けられない場合、回答は拒否され、ユーザーには「その質問に答えるための十分な情報がありません」という明確なメッセージが表示されます。

WebDev · 2 分で読めます

AIトラフィックの喪失が、検索上位サイトに数百万ドルの損失をもたらす可能性

VercelとMERJの調査により、GPTBotやClaudeBotはJavaScriptの実行をスキップし、生のHTMLのみをダウンロードしていることが明らかになりました。その結果、ReactやVueなどのクライアントサイド・フレームワークはGoogleの検索順位を独占できる一方で、ChatGPTやBing AIといったAIアシスタントからは認識されないという事態が生じています。

WebDev · 4 分で読めます

混雑したWi-Fi環境でも結婚式の写真を確実に届ける、再開可能なチャンクアップロード

このガイドでは、UUIDセッションの生成、ファイルを5〜10MBのチャンクに分割する方法、IndexedDBへの状態の保存、そしてネットワークの切り替えやデバイスのロック、ホットスポットの過負荷が発生してもアップロードを中断させないための「ジッター付き指数バックオフ」の実装方法を詳しく解説します。

WebDev · 4 分で読めます

RLSが全ジョブを隠蔽したことで、ElevareのAIエージェントはキューが満杯であることに気づかず放置してしまった

AIオーケストレーターがpending-jobsテーブルにクエリを投げた際、RLSポリシーがサービスロールに対してすべての行を密かにフィルタリングしていたため、結果が0行と判定され、そのままアイドルモードに入ってしまいました。チームが死角を明らかにするためにカナリア行チェックを導入するまで、ジョブは気づかれないまま溜まり続けました。

WebDev · 3 分で読めます

AIエージェントによるツールの結果捏造が、自動化ワークフローにおける「サイレントクラッシュ」を誘発

最近のブログ記事は、AIエージェントがツール名を捏造したり、不一致な引数を渡したり、さらには成功した出力を偽造したりする可能性があると警告しています。後者は「サイレントクラッシュ」と呼ばれ、不備のあるデータがパイプラインを通じて連鎖的に伝播することで、誤ったアラートや多大なコストを伴うアクションを引き起こす原因となります。

WebDev · 3 分で読めます

インボックス・リースにより、Cronのメール競合によるアラートの不具合を防止

各cron実行に一意のリースIDを割り当て、タイムスタンプとラベルによるフィルタリングを行い、リース・メタデータをログに記録することで、インボックスを共有している環境でも、予期せぬメッセージによるアラートの重複や見落としを防ぐことができます。

WebDev · 3 分で読めます

Open InterpreterがLLMによるローカルでのコード実行を実現:クラウドコスト削減とプライバシー向上へ

Open Interpreterは、大規模言語モデル(LLM)がユーザーのローカルマシン上でシェルコマンドを実行したりスクリプトを走らせたりできるようにすることで、機密ファイルを外部に出すことなく、高価なクラウドAPIへの依存を解消します。その一方で、開発者にはサンドボックスの構築やユーザーの同意フローの実装といった新たな課題も突きつけています。

WebDev · 2 分で読めます

レプリカに送信された際に「Read-Only Transaction」エラーでPostgreSQLのマイグレーションが失敗する問題

このエラーは通常、書き込み処理がリードレプリカに対して行われることで発生します。主な原因としては、PgBouncerによる接続のルーティング、ロールのデフォルト設定が読み取り専用であること、あるいはクラウド環境でリーダーエンドポイントを使用していることなどが挙げられます。本記事では、現在のトランザクションに対してフラグを上書きする方法と、この問題を回避するための対策について解説します。

WebDev · 3 分で読めます

型安全なAPIモックのツリーシェイキングにより、フロントエンドチームがバンドルサイズへの影響をゼロに

チームはAxiosインターセプターとViteのツリーシェイキングを利用して、開発環境専用のモックレイヤーを構築しました。import.meta.env.DEV、カスタムのVITE_ENABLE_MSWフラグ、およびMODE変数によってインターセプターを制御することで、モックコード全体がプロダクション用のバンドルから削除され、バンドルサイズを維持したまま運用することが可能になります。

WebDev · 3 分で読めます

無料のグローバルインデックス:3,804の港と9,640の空港をリスト化 – 会員登録不要

このサイトは、NGA World Port Index、UN/LOCODE、OurAirportsからデータを取得して不整合を修正し、水深と船舶、滑走路と航空機のマッピングを追加しています。これらはすべてNext.jsの静的ビルドを通じて提供されており、継続的なコンピューティングコストはゼロです。

WebDev · 4 分で読めます

TypeScript、ジェネリクスにおけるリテラルの型拡張を防ぐ「const型パラメータ」を導入

型パラメータに新しいconst修飾子を付与することで、コンパイラが可能な限り狭い型を推論できるようになります。これにより、「GET」のようなリテラルが関数境界を越えてもリテラルのまま保持されるため、繰り返し `as const` を使ってキャストする必要がなくなります。

WebDev · 3 分で読めます