AI Ads Engine(AI広告エンジン)
概要
AI Ads Engine は、チャットやエージェントに組み込むためのオープンソースの広告配信基盤で、いわゆる「Bazaar」パターンに着想を得た設計を採用しています。本プロジェクトの肝は「広告をテキストそのものとして埋め込まず、構造化されたコンテンツ(bazaar_content)として配信する」点にあり、これによりUI側で明確にラベリング・レンダリングでき、LLM のプロンプトに混入することを避けられます。TypeScript 実装で LLM に依存しないアーキテクチャを提供し、サーバー側の意思決定ロジックとクライアント側の表現分離を重視しています。
リポジトリの統計情報
- スター数: 1
- フォーク数: 0
- ウォッチャー数: 1
- コミット数: 6
- ファイル数: 19
- メインの言語: TypeScript
主な特徴
- 広告を「構造化コンテンツ(bazaar_content)」として配信し、UI が明示的にレンダリング・ラベリングできる点を重視
- サーバー側で広告決定(マッチング/選択)を行い、クライアントは受け取った構造化データを描画
- LLM 非依存(LLM に広告テキストを混入しない)で、複数のモデルや環境に対応可能
- オープンソースで拡張性があり、Bazaar パターンのドキュメントと実装が同梱
技術的なポイント
AI Ads Engine の技術的核は「分離された表現と意思決定」にあります。広告を純粋なテキストとしてモデルプロンプトに混ぜる代わりに、サーバーは広告を bazaar_content の形式で構造化して配信します。この形式により、クライアントは広告を専用 UI コンポーネントとして扱い、ユーザーに明示的に「広告」であることを示したり、表示スタイルやインタラクションを独自に制御できます。結果としてプロンプト汚染や生成結果の不意な広告混入を避けつつ、広告効果測定やクリックトラッキングなどの機能をクライアント側で実装しやすくなります。
アーキテクチャ面では TypeScript ベースのサーバーコードが中心で、API による広告配信・決定ロジック、広告メタデータ(クリエイティブID・カテゴリ・重み付け等)、配信ポリシー(フィルタリング・優先順位付け)を分離して実装する想定です。Bazaar スタイルはクライアント側との契約(schema)を明確にするため、互換性を保ちながら複数のフロントエンド実装や異なる LLM エコシステムへ対応できます。また、ドキュメント(docs/)にリバースエンジニアリングで得られた洞察があることで、既存のクライアント実装と連携する際の実務的な注意点や設計パターンが参照できます。非依存性を保つことで、OpenAI 等の特定プロバイダにロックインされず、オンプレ・プライベートモデル・各種クラウド上の LLM と合わせて使える点も大きな利点です。
プロジェクトの構成
主要なファイルとディレクトリ:
- .env.example: file
- .gitignore: file
- CODE_OF_CONDUCT.md: file
- CONTRIBUTING.md: file
- LICENSE: file
…他 14 ファイル
まとめ
構造化された広告配信により、LLM ベース体験で広告の可視性と安全性を両立する実践的な実装です。
リポジトリ情報:
- 名前: ai-ads-engine
- 説明: Open-source ad serving platform for LLM applications - inspired by ChatGPT Bazaar system
- スター数: 1
- 言語: TypeScript
- URL: https://github.com/system32miro/ai-ads-engine
- オーナー: system32miro
- アバター: https://avatars.githubusercontent.com/u/136376949?v=4
READMEの抜粋:
AI Ads Engine (Bazaar-style)
Ads as structured content (for example bazaar_content) for chat and agent experiences: the server decides; the client renders.
This repo is an implementation-oriented, LLM-agnostic ads stack inspired by the “Bazaar” pattern discovered in client-side reverse engineering work (see docs/). It is not affiliated with OpenAI.
What’s unique
- Ads are not model text: ads ship as
bazaar_contentso UIs can render and label them without “prompt blending”…