AIチャット
Docsbook AIチャットは、ドキュメントサイト上で、ドキュメントの内容に基づいて読者の質問に回答するウィジェットです。読者が質問すると、サーバーがページを検索し、一致したページを取得して、それらを引用した回答をストリーミングで返します。
ドキュメントアシスタントについて確認すべき重要な点は、回答できるかどうかではなく、回答できないときにどう動作するかです。このページは、双方にとっての契約事項です。パイプライン自体については回答の品質をご覧ください。
得られるもの#
- チケットではなく、ページ内の回答。 見出しとは異なる言い方で質問した読者も、その質問に答えるページにたどり着けます。
- 目に見える痕跡。 ウィジェットは
Found N resultsを出力し、その後に開かれたページごとにReading <page>の行を1つ出力します。各行はリンクになっているため、懐疑的な読者も自分でアクセスして情報源を確認できます。 - 回答の下に表示される引用。 引用が残るのは、サーバーがこの質問のために実際にそのページを取得した場合、または回答がそのパスを本文中で引用した場合だけです。モデルが読んでも引用もしなかったパスは、読者に表示される前に削除されます。
- 追加の質問。 回答から短い次の質問が3つ生成され、ボタンとして提示されます。
- 失敗した内容の記録。 アシスタントが回答できなかった質問は、未回答の質問レポートと
chat.no_answerWebhook になります。これは、まだ作成していないページの一覧です。
アシスタントが行わないこと#
| 行わないこと | 理由 |
|---|---|
| モデル自身の事前学習済み知識から回答する | 指示ブロックでは、ドキュメントで扱われていない用語の定義や不足部分の補完のために、一般知識に頼ることを禁じている |
| 読んでも引用もしていないページを引用する | 引用は、回答内でパスがインラインで引用されている場合、またはサーバーが実際に取得したページである場合にのみ有効です。取得された部分は構造上、根拠があります。インライン部分にはありません — 回答の品質を参照してください |
| セットアップ手順を創作する | 「Xを設定するにはどうすればよいですか」という質問に対しては、具体的なメニューパス、ボタン、または手順を記載したコンテンツ内の文を示さなければならない。Xに触れているだけではセットアップ手順とはならず、その旨を伝えるよう指示されている |
| 明示された前提条件を省略する | ページに必要なプラン、ロール、前の手順、バージョン、またはクォータが記載されている場合、回答にはそれを含めなければならない — その要件がページの冒頭にのみ記載されている場合も含む |
| 無料機能と有料アップグレードを混同する | 関連しているものの異なる内容を説明するページは、意図的に区別されている |
| アンカーを推測する | 引用された見出しのリンク先は、ページをレンダリングするのと同じスラグ化処理を使ってサーバーが計算するものであり、モデルから取得することは決してない |
回答はどのように生成されますか?#
簡単に説明すると、詳細は回答の品質をご覧ください。
- オプションの前処理フック。登録している場合、エンドポイントが最初に質問を受け取り、ブロックしたりコンテキストを追加したりできます。チャットフックをご覧ください。
- 検索。ベクトル検索とPostgresの全文検索が両方実行され、結果が統合されます。ただし、合計で最大5ページまでです。ベクトルインデックスがないコーパスには、2つの字句フォールバックが適用されます。
- 取得。選択された各ページが、デフォルトブランチのリポジトリから読み込まれ、先頭と末尾を残したまま12,000文字に切り詰められます。
- 生成。ページ、システムプロンプト、グラウンディングルールがモデルに送られ、回答がMarkdownと引用配列としてストリーミングで返されます。
- 引用のフィルタリング。参照先が実際に読み込まれたページと照合され、アンカーがサーバー側で再計算されます。
- 記録。トークン数とプロバイダーのコストが使用量台帳に書き込まれ、
chat.question_askedが発火します。また、回答が不明であることを認めた場合はchat.no_answerも発火します。
設定できる項目#
| 項目 | 変更内容 | 場所 |
|---|---|---|
| システムプロンプト | デフォルトの指示を、あなたの文体やルールに置き換えます。グラウンディングルールの代わりではなく、それに加えて適用されます | チャット設定 |
| 提案質問 | 空の状態で表示される開始用プロンプト — ウィジェット内で最も効果の高いテキストです。アシスタントの用途を読者に伝える役割を果たすためです | チャット設定 |
| 行動喚起 URL | アシスタントはまず質問に回答し、その後1文でそのリンクを案内します — 読者が制限、料金、またはプランについて評価、比較、質問している場合に限り、1回の返信につき1度を超えて案内することはありません | チャット設定 |
| モデル | 読者に回答するモデル。すべてのプランで無料 | チャット設定 |
| 前処理 / 後処理 / ストリーミングフック | 各回答の前後およびストリーミング中に呼び出す独自の HTTPS エンドポイント | チャットフック |
| セマンティックインデックス | キーワードマッチングに加えて、意味に基づいて検索します | フロートウィジェット → AI チャット → セマンティック検索 |
すべての回答の最後に料金ページへのリンクを付けるアシスタントは、信頼されなくなります。その結果、獲得できるコンバージョンよりも多くのコンバージョンを失うことになります — そのため、行動喚起は広告を常に表示する指示ではなく、いつ提示するかの制約として表現されています。
チャットを実行するモデルはどれですか?#
リーダーチャットで管理されるデフォルトは、OpenRouter 経由の openai/gpt-4o-mini です。OpenAI のモデルリファレンスによると、コンテキストウィンドウは 128,000 トークン、出力上限は 16,384 トークンです。代わりに、すべてのプランでチャットカタログから任意のモデルを選択でき、モデル選択欄には各モデルの 100 万トークンあたりの料金が表示されます。
2 つの異なるアシスタントが動作しており、それぞれ個別に測定されるため、モデル設定も 2 つあります。
- AI 訪問者チャットモデル — 読者の質問に回答するモデルです。
- 管理者 & AI エージェントモデル — ダッシュボード内でアシスタントを実行するモデルです。ツールを呼び出し、ドキュメントを編集します。
これらを 1 つの設定にしていないのは意図的です。Docsbook では以前、1 つのパラメータが渡されなかったため、管理者ループがリーダーチャットのデフォルトをひそかに使用するリリースがあり、数週間にわたって外部からは両方の画面が同じように見えていました。ツール呼び出し用に測定されたモデルが、読者向けの Q&A に適したモデルとは限らず、その逆も同様です。定数を分けておくことで、それぞれの選択を検証できるようになります。
Docsbook のキーでは、公開カタログに掲載されているモデルのみが使用されます。料金はモデルの実際の価格に基づいて請求されるため、認識されないモデルを指定すると、事前に提示されていない料金で請求されることになるからです。独自のプロバイダーキーを持ち込む場合は、プロバイダーが提供する任意のモデルを指定でき、使用量は Docsbook の残高ではなく、プロバイダーの料金であなたのキーに対して請求されます。
利用可能性と料金#
読者向けのAIチャットはProの機能です。 Freeプロジェクトでは、プロジェクトがどのキーを保持しているかにかかわらず、モデルが呼び出される前に訪問者の質問が拒否されます。これはコスト上の判断ではなくティアによる判断であるため、自分のキーを使用しても再び利用できるようにはなりません。管理者チャットでの所有者本人の質問は、すべてのプランで引き続き利用できます。現在のプランについては料金ページをご覧ください。
チャットでプロジェクトの残高に対して従量課金されるものは3つあります。読者への回答、セマンティックインデックスの構築または再構築(および受信した各質問の埋め込み)、そしてチャットから開始されたエージェントの実行です。ウィジェットのホスティング、ページの配信、キーワード検索、ページへのフィードバック、フックの呼び出しには従量課金されません。
従量課金の対象とモデルを呼び出すものは同じ一覧ではないため、それぞれがどちらに該当するかを知っておくことが重要です。読者向けの経路で行われる2つのモデル呼び出しは、現在は課金されません。回答の下に表示される3つの追加質問と、すべての検索手段が空の結果を返した場合にのみ実行されるエージェント型検索ループです。読者向けの経路に含まれないモデル呼び出しのうち、1つは課金されますAnswered列に入力する判定処理で、所有者側のAI処理として課金されます。
残高を使い切ると、それ以上課金されることなくチャットは停止します。サーバー独自のレスポンスでは、プランの上限と自分で設定した上限が区別されます。また、ペイウォールへの到達としてカウントされるのは前者だけです。そのため、自分で設定したソース上限が、アップグレードの需要としてファネルに表示されることはありません。どちらの場合も、読者にはチャットが一時停止したことが通知されます。
何かが失敗したときに読者に表示される内容#
| 状況 | 読者に表示される内容 |
|---|---|
| このサイトにAIチャットが接続されていない | サイト所有者に問い合わせるよう求める簡潔な説明。スタックトレースは決して表示されません |
| Freeプランのプロジェクト | 何も表示されません。チャットの表示領域自体がレンダリングされないため、ボタンもメッセージもありません。読者にはアシスタントのないドキュメントサイトが表示されます |
| 残高を使い切った | チャットが一時停止し、その旨が表示されます |
| 検索で何も見つからなかった | ドキュメントではその内容を扱っていないことを明確に伝える回答と、未回答の質問レポートの1行 |
| pre-hookが質問をブロックした | 一般的なエラーメッセージ。下記の制限を参照してください |
| モデルまたはネットワークの障害 | 読者の言語で「問題が発生しました。もう一度お試しください。」と表示されます |
制限事項#
- ブロックされた質問では、読者に理由が表示されません。 pre-hook の
reason文字列はレスポンスストリームで送信されますが、docs-site ウィジェットでは代わりに汎用エラーメッセージが表示されます。質問については、このフィールドは配信され、カスタムフロントエンドで読み取れますが、付属のウィジェットでは読み取れません。修正されるまで、reasonは独自のログ用の値として扱ってください。 - マルチプレイヤーチャットは構築済みですが、まだ有効になっていません。 招待 UI、プレゼンスボタン、API ルートは存在しますが、トランスポートがないため、共有セッションを有効にすると「一時的に利用できません」と返されます。これを前提に計画しないでください。
- 回答なし検出器は英語のパターンマッチです。 別の言語で書かれた拒否は認識されないため、
chat.no_answerと「未回答の質問」レポートでは、英語以外のサイトの件数が実際より少なくなります。 - 回答フィードバックとページフィードバックは別の系列です。 回答 に対する低評価は、ページ に対する低評価と同じイベントではありません。それぞれがどこに届くかについては、ページフィードバックを参照してください。
- 公開された精度の数値はありません。 Docsbook は回答精度のパーセンテージを主張していません。回答品質では、代わりに何が測定されるのか、また数値を提示しない理由を説明しています。
- デフォルトの読者モデルを変更するのはプロバイダーです。 コンテキストウィンドウ、拒否の動作、価格はプロバイダー側のものであり、検索と引用の仕組みは当社のものです。