本文へ移動
技術を、自社の仕事に。
判断と実行を助けるメディア

記事を検索

Chat APIで回答に出典を付ける 社内AIボットの根拠表示

目次 · 6項目

社内の規程や手順書を検索して答えるChatボットの回答を受け取った人が、次に確かめたくなるのは「その答えはどの文書に書いてあるのか」です。回答の末尾にURLを並べることはできますが、どの文がどの文書に基づくのかまでは伝わりません。読む人は結局、元の文書を開いて該当の箇所を探し直すことになります。

Google Chat APIのメッセージでは、この対応関係を項目 elements で表せます。本文の一部を「出典付き」として示し、その出典のタイトル・URL・抜粋をホバーカードで見せる citations と、回答全体の参考資料をメッセージの下にリンクとして並べる citedSources の2つを持ちます。2026年11月3日のリリースノートで、この機能は一般提供(Generally Available)と告知されました。本記事では、Googleのリリースノートとガイド、公式リポジトリの定義、npmの公式クライアントの型定義を確認した内容をもとに、書き方と、設計の前に決めておきたい点を整理します。

何が使えるようになったのか

Chat APIのリリースノートでは、この機能は2026年8月26日に開発者プレビューとして載り、2026年11月3日の項で「Generally Available」と告知されました。使い方は、ガイドの「Add citations to a text message」にあります。

Googleが公開しているAPI定義のリポジトリ(googleapis/googleapis)には、2026年10月28日に「feat: Add Citation and Elements protos for Google Chat v1」というコミットが入りました。メッセージ(Message)に elements が追加され、Citation・CitedSource・Elements の定義が新しく置かれています。

同じ内容は、Chat APIのDiscovery文書(2026年11月6日に取得、revision 20261103)にも載っています。Node.js向けの公式クライアント @googleapis/chat では、2026年10月30日公開の51.4.0から型定義に Schema$Elements が入り、10月22日公開の51.3.0にはありません。

提供段階の表示は、資料の間でそろっていません。2026年11月6日の時点で、ガイドの該当の節と Citation のリファレンスにはプレビューの表示がありません。一方で、開発者プレビューの一覧には「Include citations and footer sources in text messages.」が残り、spaces.messages のリファレンスの Elements にも Developer Preview の表示があります。編集部は実際に投稿して確かめていないため、本番で使う前に、自分のプロジェクトで投稿できることを確かめてください。

ガイドと定義の説明によると、2つの項目の役割は次のとおりです。

  • citations: 本文の特定の部分に結び付く出典。ポインターを重ねると出る対話的なカード(ホバーカード)として表示される
  • citedSources: 回答の作成に使った全体の参考資料。本文の特定の部分には結び付けず、メッセージの下にフッターのリンクとして表示される

メッセージを読み出したときも、出典が付いていれば elements に両方が入って返ります。投稿だけでなく、出典を読み取って別のシステムに記録する用途にも使えます。

なお、2026年11月4日のリリースノートには、回答を少しずつ表示する spaces.streamMessages が開発者プレビューとして載り、途中でインラインの出典を追加できると書かれています。本記事は、一般提供と告知された通常のメッセージの投稿だけを扱います。

書き方:本文のタグと、出典の一覧を対応させる

本文の中で出典を付けたい部分を <chat-citation data-id="{id}">{text}</chat-citation> で囲み、同じ id を持つ出典を elements.citations に入れます。次の例は、規程を検索して答えるアプリが、Chat APIの spaces.messages.create で投稿するメッセージです。

import { chat_v1 } from '@googleapis/chat';

export function buildAnswer(): chat_v1.Schema$Message {
  return {
    text:
      '経費精算の締め日は<chat-citation data-id="c1">毎月25日</chat-citation>です。',
    markupSyntax: 'MARKUP_SYNTAX_MARKDOWN',
    elements: {
      citations: [
        {
          id: 'c1',
          citedSources: [
            {
              title: '経費精算規程(2026年版)',
              uri: 'https://docs.google.com/document/d/EXAMPLE/edit',
              snippet: { text: '精算の締め日は毎月25日とする。' },
              footer: { text: '総務部' },
            },
          ],
        },
      ],
    },
  };
}

export async function post(chat: chat_v1.Chat, space: string) {
  return chat.spaces.messages.create({ parent: space, requestBody: buildAnswer() });
}

このコードは、編集部の作業ディレクトリで @googleapis/chat 51.4.0 と TypeScript 5.9.3 を使い、tsc --strict の型チェックだけを通しました。項目名を citedSource と1文字変えると型エラーになることも確かめています。認証情報がないため、実際のスペースへの投稿と表示は確認していません。

Chat APIの出典の対応図。本文のchat-citationタグのdata-idが、elementsのcitationsのidと一致し、そこに出典のタイトル・URL・抜粋・フッターが入る。citedSourcesはメッセージの下のリンク。下に、Chat APIの非同期の投稿だけ、markupSyntaxはMARKUP_SYNTAX_MARKDOWN、抜粋は1,000文字まで、idは英数字で63文字未満、タグのない出典は無視される、と添える

ガイドと定義に書かれている制約

ガイドとAPI定義の説明から、実装の前に知っておきたい制約を拾います。

  1. Chat APIからの非同期の投稿だけ。 ガイドとリリースノートは、Chat APIを使った非同期のメッセージ作成でだけ使えると書いています。上の例のように spaces.messages.create を呼ぶ形にします。利用者の発言のイベントに同期で応答を返す作りのアプリは、この点を先に確かめてください
  2. Markdownのときだけ使える。 出典は、メッセージの markupSyntax が MARKUP_SYNTAX_MARKDOWN のときだけ使えます。記法の指定そのものは、Chat APIでMarkdownのまま投稿する記事で整理しました
  3. idは英数字で63文字未満。 本文のタグの data-id と一致させる必要があり、定義で使えるとされているのはASCIIの英字と数字だけです。ガイドの例の cite_1 は下線を含み、定義の説明と一致していません。定義に合わせて英数字だけにしておくのが無難です
  4. 抜粋は1,000文字まで。 snippet.text はMarkdownに対応せず、1,000文字を超えてはいけません。出典のタイトル(title)とフッター(footer.text)も、Markdownに対応しない素の文字です
  5. タイトルとURLは必須。 CitedSource の title と uri は Required です
  6. 本文にタグがない出典は無視される。 elements.citations に入れても、本文に対応するタグがなければ無視され、メッセージ自体は拒否されません。エラーにならないので、表示されていないことに気づけない場合があります
  7. フッターの自動補完。 citedSources を指定しない場合、フッターの出典は本文の citations から重複を除いて自動で作られ、そのときは抜粋が省かれます
  8. 画像は公開URLだけ。 抜粋に添える画像(imagePreview)は、Chatが取得して表示するため、公開されたURLでなければなりません

設計の前に決めておきたいこと(編集部の提案)

ここからは定義から読み取れる性質をもとにした、編集部の提案です。実際の表示での確認はしていません。

抜粋は、スペースの全員に見える前提で選ぶ。 出典のURLがアクセス制限のあるドキュメントでも、抜粋の文字列はメッセージの一部としてアプリが送るものです。元の文書を開く権限のない人にも、抜粋そのものは見えると考えて設計してください。検索の段階で、質問した人とスペースのメンバーが読める文書だけを回答の材料にするのが基本です。

出典の画像に社内の画像を使わない。 画像のURLは公開されている必要があります。社内の図面や画面のキャプチャを抜粋に添えるために公開の場所へ置く、という作りは避けたほうが安全です。

「出典なし」の回答の扱いを決める。 検索で根拠が見つからなかったのに文章だけを生成した回答は、出典の欄が空になります。そのときに回答を出さないのか、「根拠となる文書が見つかりませんでした」と添えるのかを、アプリの仕様として先に決めておくと、利用者が回答を信じすぎることを防げます。

読み出した出典を記録に使う。 メッセージを読み出すと elements が返るため、どの回答がどの文書を根拠にしたかを後から集計できます。古い規程を根拠にした回答が多ければ、文書の側を直すきっかけになります。カードの差し替えで回答を更新する作りは、replaceCardsの記事で扱いました。

確認した範囲と、まだ分からないこと

2026年11月6日に、Chat APIのリリースノート、ガイド、リファレンス、開発者プレビューの一覧、Discovery文書(revision 20261103)、googleapis/googleapis リポジトリの定義(コミット 2bf8227、10月28日)、npm の @googleapis/chat 51.3.0・51.4.0 の型定義を確認しました(資料調査)。コード例は2026年11月5日に型チェックだけを実施しています。リリースノートは一般提供と告知していますが、上に書いたとおり開発者プレビューの表示が残るページがあり、実際の投稿でも確かめていません。スマートフォンのアプリでの表示と、ホバーカードの見た目も未確認です。

社内文書を検索して答えるChatアプリや、生成AIとGoogle Workspaceをつなぐ仕組みの設計は、グリームハブのIT・Google Workspace 無料相談で承っています。扱う文書の範囲や権限の設計によって構成が変わるため、お問い合わせからご相談ください。

参考資料

この記事を共有XFacebook
鈴木 翔

技術の可能性に魅了され、学生時代からプログラミングとデジタルアートの分野に深い関心を持つ

この記事のテーマを、自社の次の一歩へ

自社に合う、Workspaceの進め方を。

移行するデータ、共有ルール、管理体制を整理し、導入から日々の運用までの進め方を考えます。

  • 移行と初期設定
  • 共有・権限の整理
  • 管理体制
Workspaceの導入・運用を相談する

構想段階からご相談いただけます。この記事の情報を相談フォームに引き継ぎます。

最新記事をメールで受け取る