はじめに
SAP の生成AIアシスタント Joule には、Document Grounding の機能が提供されています。これにより、社内の業務ドキュメントの内容を元に迅速で的確な回答を生成できるようになります。例えば、従業員が社内ポリシーやマニュアルについて質問した際、Jouleは大規模言語モデルの知識だけでなく、会社内に保存された関連ドキュメントの内容を参照して回答します。従来この Document Grounding 機能は Microsoft SharePoint をデータソースとしてサポートしていましたが、SAP Build Work Zone, advanced edition 上のコンテンツも参照可能になりました。SAP Build Work Zone 上のワークスペースのパブリックコンテンツ(全ユーザーに公開されたドキュメントやページ)をJouleの提供する回答のソース情報として利用できるようになるため、社内ナレッジをより活用した回答が期待できます。
本記事では、SAP Build Work Zone をドキュメントリポジトリとして設定し、Jouleのドキュメントグラウンディングを有効化する手順を解説します。これにより SAP Build Work Zone, advanced edition 内に格納したPDFやWordファイル、ナレッジベース記事などをインデックス化し、ユーザーの質問に対してそれらのファイルの内容に基づく回答を Joule が生成できるようになります。なお、本記事の読者は SAP BTP や SAP Build Work Zone の基本的な知識を有していることを前提とします。
前提条件
本手順を開始する前に、以下の準備が整っていることを確認してください。
SAP BTP 環境と Joule のセットアップ: SAP BTP のグローバルアカウントおよびサブアカウントがあり、Joule のサブスクリプションが有効になっていること。 SAP Build Work Zone, advanced edition: SAP Build Work Zone, advanced editionが利用可能で、サイトが初期セットアップ済みであること。 アイデンティティと認証基盤: SAP Cloud Identity Services (Identity Authentication) でシングルサインオン基盤が整備され、Jouleと統合製品(SAP Build Work Zone)間でグローバルユーザーID(user UUID)が共有されていること。Joule導入時にIdentity Authenticationの信頼関係を設定済みであること。 SAP Build Work Zone 管理者権限: SAP Build Work Zone の管理コンソールにアクセスでき、機能の有効化や設定変更を行える管理者ユーザーとしてログインできる。
以上の前提を満たした上で、以下に示す手順に従って設定を行います。
全体構成図
公式なSAP Help Portalのセットアップガイドから、全体の俯瞰図を描いてみると以下のような形になると考えられます。
なお、こちらは個人的な見解であり、情報の正当性には細心の注意を払ってください。
【随時、更新します】
手順
今回は下記のSAP Help Portalの手順に則った上でセットアップを進めていきます。
GitHub上に手順をまとめたスクリプトを用意していますので、ぜひご活用ください。ただし、正確な手順はSAP Help Portalに準じます。
まずは下記の通り、GitHub上のリポジトリをクローンしましょう。
git clone https://github.com/watwatwhat/document-grounding-setup.git
下記コマンドを実行して、セットアップガイドスクリプトを起動しましょう。
./main.sh
このガイドは、インタラクティブに手順を実行することができるように設計されています。1~12までを順次選択しながら進んで行きましょう。
1. Document Grounding サービスの有効化
まず、SAP BTP上で Document Grounding のサービスインスタンスを作成します。このサービスがJouleで社内ドキュメントを取り扱うための技術的な基盤となります。
まずはセットアップガイドスクリプトを起動し、メニューから 「1. Create Document Grounding Instance」 を選択します。Document Groundingのインスタンスの名前やそこに追加するサービスインスタンスの名前を決めて入力しましょう。今回の例では、それぞれ「document-grounding-other」「sb-document-grounding-other」としています。この入力値に基づいてセットアップの指示が表示されるので、その通りに設定を行いましょう。
(該当する公式ドキュメント:SAP Help Portal: Configure User Authentication) BTP Cockpitでサービスの作成: JouleをサブスクライブしているサブアカウントのBTP Cockpitにログインし、「Service Marketplace」を開きます。 サービス一覧から「Document Grounding」を検索し、該当のサービスを選択します。 サービスインスタンスの作成: 「作成(Create)」ボタンをクリックします。プランはデフォルト(通常は data-manager プラン)を選択します。 Instance Nameには、 先ほど設定したインスタンス名を入力します。(例: document-docgrounding-other)Runtime Environment(実行環境)は 「Other」 を選択してください。Plan(サービスプラン)は「data-manager」 を選択してください。入力後、「Create(作成)」を実行しインスタンスを作成します。
インスタンス作成後、一覧に表示された当該インスタンスを選択し、Service Bindingの作成を行います。「Create(作成)」ボタンをクリックします。サービスバインディングの名前も先ほど決めたものを入力しましょう。(例:sb-document-grounding-other) 作成後、サービスバインディングの名前をクリックし、サービスバインディングのURL をコピーしてください。
これを先ほどの待機しているセットアップガイドスクリプトに標準入力します。このように入力された必要情報はローカルの設定ファイルに保存されるようになっています。
2. Cloud Identity Services インスタンスの有効化
次に、Document Grounding サービスへセキュアにアクセスするための SAP Cloud Identity Services のインスタンスの有効化設定をします。ここでは SAP Cloud Identity Services上にJoule用のXSUAAインスタンスを作成し、クライアント証明書を発行してDocument Groundingサービスへのアクセスに利用します。
セットアップガイドスクリプトを起動し、「2. Create Cloud Identity Services Instance」 を選択します。 インスタンスの名前とサービスバインディングの名前を決め、出力された手順に従ってBTP Cockpitからインスタンスを有効化します。今回はそれぞれ 「cis-other」 と 「sb-cis-other」 という名前にしています。
BTP Cockpit の Service Marketplace に戻り、「Cloud Identity Services」を検索して選択します。「create(作成)」 をクリックし、プランは 「application」、Runtime Environmentは 「Other」 を選択します。インスタンス名を先ほど決めた名前を入力します。(例: cis-other)入力が終わったら、「Next(次へ)」 をクリックしましょう。
「パラメーター」 設定画面が表示されたら、以下のJSONを入力します。これによって、Document Grounding サービスとの紐付けが行われます。
{
“consumed-services”: [
{
“service-instance-name”: “<Document Grounding インスタンス名>”
}
]
} インスタンスが作成されたら、Service Bindings 部分にある 「Create(作成)」 ボタンより、サービスバインディングを作成します。 作成したCloud Identity Servicesインスタンスを選択し、「サービスキーを作成(Create Service Key)」します。サービスキー名先ほど決定したものを入力します。(例:sb-cis-other)サービスキー作成時に以下のパラメーターを指定します。これにより、このXSUAAインスタンスに紐づくOAuthクライアントのX.509証明書と秘密鍵が生成されます(有効期限365日)。
{
“credential-type”: “X509_GENERATED”,
“validity”: 365,
“validity-type”: “DAYS”
}
サービスバインディングが作成できたら、名前をクリックしてバインディングの内容を確認します。このうち、「clientid」 と 「authorization_endpoint」 の値をコピーします。 セットアップガイドスクリプトに値を渡します。後ほどこの値を使ってCloud Identity Servicesからトークンを取得しますが、 その時に利用する値が設定ファイルに書き込まれて保存されました。
3. 証明書の作成
上記Cloud Identity Servicesのサービスバインディングにより、認証に利用する証明書が発行されました。しかしこちらは改行文字の変換等の処理が必要です。このステップでは、その変換処理を行います。
セットアップガイドスクリプトを起動し、「3. Create Certificate Files」 を実行します。これにより、credentials フォルダの配下に 「cis_certificate.cer」 と 「cis_key.key」 が作成されます。このファイルの内容を、それぞれCloud Identity Services のサービスバインディングに記載されている 「certificate」 「key」 の内容に書き換えてください。
それぞれ記入が終わったら、「y」を入力して次に進みましょう。
次に変換処理後の証明書と秘密鍵ファイルの名前をどうするかを尋ねられますが、特に理由がなければそのままEnterでデフォルトの無難な名前が設定されるようにしています。この変換後のファイルは「credentials_adjusted」 フォルダの配下に格納されるようになっています。
4. Document Grounding APIへの接続をテスト
これでDocument Groundingサービスへの操作を行う準備が整いました。まずは設定済みのドキュメント取り込みパイプラインを一覧表示するAPIを呼び出してみましょう。
セットアップガイドスクリプトを起動し、「4. Get Access Token 」 を呼び出します。内部では、上記で用意した証明書ファイルと秘密鍵ファイルを用いて、Document Groundingサービス用のOAuthトークンを取得しています。下記のようなリクエストを送信しています。取得されたトークンは設定ファイルに保存されます。
curl –request POST
–url https://<authorization_endpointのドメイン>/oauth2/token
–header “accept: application/json”
–header “content-type: application/x-www-form-urlencoded”
–data “client_id=<上でメモしたclientid>”
–data “grant_type=client_credentials”
–cert ./doc-grounding.crt
–key ./doc-grounding.key 続いてセットアップガイドスクリプトを起動し、「5. Test Document Grounding Endpoint 」 を実行しましょう。これにより現在設定されているパイプラインの一覧が取得できます。初回実行であれば何もパイプラインは存在しないはずなので、 [] という空配列が返ってきます。
5. SAP Build Work Zone 側の外部統合に関する設定
続いて、SAP Build Work Zone 側で Document Grounding との連携を行うための設定を行います。(該当する公式ドキュメント:SAP Help Portal: Integration With Document Grounding)
SAP Build Work Zone Advanced Editionの管理者として Admin Console にログインし、「Feature Enablement(機能の有効化)」 を開きます。
まず、SAP Work Zone側で外部連携する際に使用するOAuthクライアントを作成します。「External Integration」 -> 「OAuth Clients」 に移動し、「Add OAuth Client」 より新規OAuthクライアントを作成します。
適当な名前とIntegration URLを記入し、「Save」ボタンで保存します。今回は「Document Grounding OAuth Client」という名前および、本環境のJouleのURLをIntegration URLに入力しました。
保存が完了したら、「View」ボタンをクリックして発行されたOAuth認証情報を確認しましょう。
表示された「Key」と「Secret」をコピーしてください。
次に、「Feature Management」 -> 「Features」 項目で 「Enable document grounding integration」 というオプションをオンにします。この設定を保存することで、SAP Build Work Zone, Advanced Edition と Document Grounding サービス間の統合機能がシステム内で有効になります。この際、通信に利用するOAuth Clientは先ほど作成したもの(例:Document Grounding OAuth Client)を設定します。
次に、SAP BTP のサブアカウントでこのS AP Build Work Zone のコンテンツにアクセスするための Destination を作成します。 Document Grounding サービスが SAP Build Work Zone 内のコンテンツにアクセスする際には、このDestination設定を経由します。BTP Cockpitの「Connectivity > Destinations」を開き、「新規作成(New Destination)」で以下のように設定します。なお、<DWS URL> は、Admin ConsoleのOverviewページから取得可能です。
プロパティ
値
Name
任意の名前(例:DocumentGrounding_WZAdv)
Type
HTTP
Description
任意
Proxy Type
Internet
URL
<DWS URL>
Authentication
OAuth2ClientCredentials
Client ID
Admin Console で発行したOAuth Client の 「Key」
Client Secret
Admin Console で発行したOAuth Client の 「Secret」
Token Service URL
<DWS URL>/api/v1/auth/token
Token Service URL Type
Dedicated
追加プロパティ
値
HTML5.DynamicDestination
true
SetXForwardedHeaders
false
HTML5.SetForwardedHeaders
false
セットアップガイドスクリプトに戻って 「6. Configure Work Zone Integration」 を実行し、設定したDestinationの名前を渡します。
6. SAP Build Work Zone 内のコンテンツのインデックス登録(パイプライン設定)
最後に、Document Groundingサービスに対して SAP Build Work Zone コンテンツを取り込み登録(インデックス化)する処理を設定します。これはパイプラインと呼ばれるスケジュールされたデータ取り込みジョブの登録で、設定後は定期的(1日1回)にWork Zone上のドキュメントをクロールし、最新内容がJouleに取り込まれます。
セットアップガイドスクリプトを起動し、「7. Create Work Zone Pipeline」 を実行します。内部ではDocument Groundingサービスのエンドポイントに対し、先ほど取得したアクセストークンおよび証明書を用いてパイプライン作成APIを呼び出しています。以下のコマンドはその例です。
curl –request POST
–url “<ドキュメントグラウンディングのサービスキーURL>/pipeline/api/v1/pipeline”
–header “Authorization: Bearer <上で取得したaccess_token>”
–header “Content-Type: application/json”
–data ‘{
“type”: “WorkZone”,
“metadata”: {
“destination”: “<前ステップで設定したDestination名>”
}
}’
–cert ./doc-grounding.crt
–key ./doc-grounding.key
無事処理が完了するとパイプラインIDが返されます。このIDにより、Document Groundingサービス上で SAP Build Work Zone コンテンツを取得するパイプラインジョブが管理されます。パイプラインの作成と同時に初回実行が行われ、SAP Build Work Zone内のパブリックコンテンツ(アップロードされたドキュメント等)が読み込まれ、ベクトルインデックスが作成されます。以降は1日1回の頻度でWork Zone側の更新を自動反映します。手動で最新化したい場合はパイプラインAPIで適宜再実行することも可能です。(後述)
グラウンディングの準備とパイプラインの手動実行
これでDocument Groundingの機能を利用して、Jouleに回答を生成させる準備が完了しました。最後に、実際にドキュメントを読み込ませた上で回答させてみましょう。
今回はITセキュリティポリシーに関するサンプル文書を用意しました。こちらをSAP Build Work Zoneにアップロードしましょう。なお、現時点(2025/08/29)では、英語の文書に対してのみ、グラウンディングは動作するようです。
SAP Build Work Zoneのコンテンツページより、アップロードを行います。
また、このワークスペースの単位でも Document Grounding を有効化する必要があります。「Workspace Admin Settings」より設定に進みましょう。
Document Grounding の部分のチェックボックスを有効化して、「Save」より設定を保存します。
最後に、セットアップガイドスクリプトから「10. Trigger Pipeline」を実行して、パイプラインを手動実行します。
パイプラインの実行状態は、セットアップガイドスクリプトの「8. Check Grounding Status」より確認できます。うまくGroundingの取り込みが完了していると、「INDEXED」という表記が確認できます。
Document Grounding の実行
最後に、Document GroundingをJouleから実行し、SAP Build Work Zone, Advanced Edition上のコンテンツファイルの記述内容に基づいた回答が返ってくることを確認しましょう。
まずは上記の Document Grounding の設定を行う前の回答を見てみましょう。一般的な回答が返ってきており、詳細は管理者に問い合わせるように案内されます。
そして、下記が設定を行った後の回答です。しっかりと社内文書に基づいて回答が生成されていることが確認できます。ちなみに、Sourcesからドキュメント名をクリックすると、SAP Build Work Zone内の対象文書のページに遷移することができます。
まとめ
以上の手順により、SAP Build Work Zone, Advanced Edition に保存された社内ドキュメントをデータソースとして、Joule のドキュメントグラウンディング機能を設定できました。これにより、ユーザーがJouleに対して行う質問に対し、Work Zone内のファイル(PDFやWord文書など)の内容を根拠にした回答が生成されるようになります。たとえば社内規程集のPDFをWork Zoneにアップロードしパブリックに公開しておけば、Jouleに規程の詳細を尋ねた際にそのPDFから回答が引用されるようになります。
社内ナレッジを有効活用することで、Jouleの回答精度向上や信頼性の高い情報提供が期待できます。ただし前述の通り、現在この機能ではドキュメントがテナント内の全ユーザーにとって参照可能な情報源となる点に留意し、公開して問題ない情報のみをアップロードしてください。機能拡張により将来的にはユーザー権限に応じた応答制御なども行われる可能性があります。
最後に、設定に際して不明点があればSAPヘルプの公式ドキュメント(Integrating Joule with SAP Solutions内の 「Set Up Document Grounding」 節や、SAP Build Work Zone, advanced editionの「Integration With Document Grounding」ガイド)を参照してください。最新情報や制約事項が更新されている場合があります。本記事の手順を参考に、自社環境でJouleとWork Zoneを連携させ、社内文書に基づく高度なQ&Aシステムを活用してみてください。
参考資料
SAP Help Portal: Integrating Joule with SAP Solutions – Set up Document Grounding
https://help.sap.com/docs/joule/integrating-joule-with-sap/set-up-document-grounding SAP Help Portal: SAP Build Work Zone, advanced edition – Integration With Document Grounding
https://help.sap.com/docs/build-work-zone-advanced-edition/sap-build-work-zone-advanced-edition/integration-with-document-grounding
はじめに SAP の生成AIアシスタント Joule には、Document Grounding の機能が提供されています。これにより、社内の業務ドキュメントの内容を元に迅速で的確な回答を生成できるようになります。例えば、従業員が社内ポリシーやマニュアルについて質問した際、Jouleは大規模言語モデルの知識だけでなく、会社内に保存された関連ドキュメントの内容を参照して回答します。従来この Document Grounding 機能は Microsoft SharePoint をデータソースとしてサポートしていましたが、SAP Build Work Zone, advanced edition 上のコンテンツも参照可能になりました。SAP Build Work Zone 上のワークスペースのパブリックコンテンツ(全ユーザーに公開されたドキュメントやページ)をJouleの提供する回答のソース情報として利用できるようになるため、社内ナレッジをより活用した回答が期待できます。 本記事では、SAP Build Work Zone をドキュメントリポジトリとして設定し、Jouleのドキュメントグラウンディングを有効化する手順を解説します。これにより SAP Build Work Zone, advanced edition 内に格納したPDFやWordファイル、ナレッジベース記事などをインデックス化し、ユーザーの質問に対してそれらのファイルの内容に基づく回答を Joule が生成できるようになります。なお、本記事の読者は SAP BTP や SAP Build Work Zone の基本的な知識を有していることを前提とします。 前提条件 本手順を開始する前に、以下の準備が整っていることを確認してください。 SAP BTP 環境と Joule のセットアップ: SAP BTP のグローバルアカウントおよびサブアカウントがあり、Joule のサブスクリプションが有効になっていること。 SAP Build Work Zone, advanced edition: SAP Build Work Zone, advanced editionが利用可能で、サイトが初期セットアップ済みであること。 アイデンティティと認証基盤: SAP Cloud Identity Services (Identity Authentication) でシングルサインオン基盤が整備され、Jouleと統合製品(SAP Build Work Zone)間でグローバルユーザーID(user UUID)が共有されていること。Joule導入時にIdentity Authenticationの信頼関係を設定済みであること。 SAP Build Work Zone 管理者権限: SAP Build Work Zone の管理コンソールにアクセスでき、機能の有効化や設定変更を行える管理者ユーザーとしてログインできる。 以上の前提を満たした上で、以下に示す手順に従って設定を行います。 全体構成図 公式なSAP Help Portalのセットアップガイドから、全体の俯瞰図を描いてみると以下のような形になると考えられます。なお、こちらは個人的な見解であり、情報の正当性には細心の注意を払ってください。 【随時、更新します】 手順 今回は下記のSAP Help Portalの手順に則った上でセットアップを進めていきます。 GitHub上に手順をまとめたスクリプトを用意していますので、ぜひご活用ください。ただし、正確な手順はSAP Help Portalに準じます。 まずは下記の通り、GitHub上のリポジトリをクローンしましょう。 git clone https://github.com/watwatwhat/document-grounding-setup.git下記コマンドを実行して、セットアップガイドスクリプトを起動しましょう。 ./main.sh このガイドは、インタラクティブに手順を実行することができるように設計されています。1~12までを順次選択しながら進んで行きましょう。 1. Document Grounding サービスの有効化 まず、SAP BTP上で Document Grounding のサービスインスタンスを作成します。このサービスがJouleで社内ドキュメントを取り扱うための技術的な基盤となります。 まずはセットアップガイドスクリプトを起動し、メニューから 「1. Create Document Grounding Instance」 を選択します。Document Groundingのインスタンスの名前やそこに追加するサービスインスタンスの名前を決めて入力しましょう。今回の例では、それぞれ「document-grounding-other」「sb-document-grounding-other」としています。この入力値に基づいてセットアップの指示が表示されるので、その通りに設定を行いましょう。 (該当する公式ドキュメント:SAP Help Portal: Configure User Authentication) BTP Cockpitでサービスの作成: JouleをサブスクライブしているサブアカウントのBTP Cockpitにログインし、「Service Marketplace」を開きます。 サービス一覧から「Document Grounding」を検索し、該当のサービスを選択します。 サービスインスタンスの作成: 「作成(Create)」ボタンをクリックします。プランはデフォルト(通常は data-manager プラン)を選択します。 Instance Nameには、 先ほど設定したインスタンス名を入力します。(例: document-docgrounding-other)Runtime Environment(実行環境)は 「Other」 を選択してください。Plan(サービスプラン)は「data-manager」 を選択してください。入力後、「Create(作成)」を実行しインスタンスを作成します。 インスタンス作成後、一覧に表示された当該インスタンスを選択し、Service Bindingの作成を行います。「Create(作成)」ボタンをクリックします。サービスバインディングの名前も先ほど決めたものを入力しましょう。(例:sb-document-grounding-other) 作成後、サービスバインディングの名前をクリックし、サービスバインディングのURL をコピーしてください。 これを先ほどの待機しているセットアップガイドスクリプトに標準入力します。このように入力された必要情報はローカルの設定ファイルに保存されるようになっています。 2. Cloud Identity Services インスタンスの有効化 次に、Document Grounding サービスへセキュアにアクセスするための SAP Cloud Identity Services のインスタンスの有効化設定をします。ここでは SAP Cloud Identity Services上にJoule用のXSUAAインスタンスを作成し、クライアント証明書を発行してDocument Groundingサービスへのアクセスに利用します。 セットアップガイドスクリプトを起動し、「2. Create Cloud Identity Services Instance」 を選択します。 インスタンスの名前とサービスバインディングの名前を決め、出力された手順に従ってBTP Cockpitからインスタンスを有効化します。今回はそれぞれ 「cis-other」 と 「sb-cis-other」 という名前にしています。 BTP Cockpit の Service Marketplace に戻り、「Cloud Identity Services」を検索して選択します。「create(作成)」 をクリックし、プランは 「application」、Runtime Environmentは 「Other」 を選択します。インスタンス名を先ほど決めた名前を入力します。(例: cis-other)入力が終わったら、「Next(次へ)」 をクリックしましょう。 「パラメーター」 設定画面が表示されたら、以下のJSONを入力します。これによって、Document Grounding サービスとの紐付けが行われます。 {
“consumed-services”: [
{
“service-instance-name”: “<Document Grounding インスタンス名>”
}
]
} インスタンスが作成されたら、Service Bindings 部分にある 「Create(作成)」 ボタンより、サービスバインディングを作成します。 作成したCloud Identity Servicesインスタンスを選択し、「サービスキーを作成(Create Service Key)」します。サービスキー名先ほど決定したものを入力します。(例:sb-cis-other)サービスキー作成時に以下のパラメーターを指定します。これにより、このXSUAAインスタンスに紐づくOAuthクライアントのX.509証明書と秘密鍵が生成されます(有効期限365日)。{
“credential-type”: “X509_GENERATED”,
“validity”: 365,
“validity-type”: “DAYS”
} サービスバインディングが作成できたら、名前をクリックしてバインディングの内容を確認します。このうち、「clientid」 と 「authorization_endpoint」 の値をコピーします。 セットアップガイドスクリプトに値を渡します。後ほどこの値を使ってCloud Identity Servicesからトークンを取得しますが、 その時に利用する値が設定ファイルに書き込まれて保存されました。 3. 証明書の作成 上記Cloud Identity Servicesのサービスバインディングにより、認証に利用する証明書が発行されました。しかしこちらは改行文字の変換等の処理が必要です。このステップでは、その変換処理を行います。 セットアップガイドスクリプトを起動し、「3. Create Certificate Files」 を実行します。これにより、credentials フォルダの配下に 「cis_certificate.cer」 と 「cis_key.key」 が作成されます。このファイルの内容を、それぞれCloud Identity Services のサービスバインディングに記載されている 「certificate」 「key」 の内容に書き換えてください。 それぞれ記入が終わったら、「y」を入力して次に進みましょう。 次に変換処理後の証明書と秘密鍵ファイルの名前をどうするかを尋ねられますが、特に理由がなければそのままEnterでデフォルトの無難な名前が設定されるようにしています。この変換後のファイルは「credentials_adjusted」 フォルダの配下に格納されるようになっています。 4. Document Grounding APIへの接続をテスト これでDocument Groundingサービスへの操作を行う準備が整いました。まずは設定済みのドキュメント取り込みパイプラインを一覧表示するAPIを呼び出してみましょう。 セットアップガイドスクリプトを起動し、「4. Get Access Token 」 を呼び出します。内部では、上記で用意した証明書ファイルと秘密鍵ファイルを用いて、Document Groundingサービス用のOAuthトークンを取得しています。下記のようなリクエストを送信しています。取得されたトークンは設定ファイルに保存されます。 curl –request POST
–url https://<authorization_endpointのドメイン>/oauth2/token
–header “accept: application/json”
–header “content-type: application/x-www-form-urlencoded”
–data “client_id=<上でメモしたclientid>”
–data “grant_type=client_credentials”
–cert ./doc-grounding.crt
–key ./doc-grounding.key 続いてセットアップガイドスクリプトを起動し、「5. Test Document Grounding Endpoint 」 を実行しましょう。これにより現在設定されているパイプラインの一覧が取得できます。初回実行であれば何もパイプラインは存在しないはずなので、 [] という空配列が返ってきます。 5. SAP Build Work Zone 側の外部統合に関する設定 続いて、SAP Build Work Zone 側で Document Grounding との連携を行うための設定を行います。(該当する公式ドキュメント:SAP Help Portal: Integration With Document Grounding) SAP Build Work Zone Advanced Editionの管理者として Admin Console にログインし、「Feature Enablement(機能の有効化)」 を開きます。 まず、SAP Work Zone側で外部連携する際に使用するOAuthクライアントを作成します。「External Integration」 -> 「OAuth Clients」 に移動し、「Add OAuth Client」 より新規OAuthクライアントを作成します。 適当な名前とIntegration URLを記入し、「Save」ボタンで保存します。今回は「Document Grounding OAuth Client」という名前および、本環境のJouleのURLをIntegration URLに入力しました。 保存が完了したら、「View」ボタンをクリックして発行されたOAuth認証情報を確認しましょう。 表示された「Key」と「Secret」をコピーしてください。 次に、「Feature Management」 -> 「Features」 項目で 「Enable document grounding integration」 というオプションをオンにします。この設定を保存することで、SAP Build Work Zone, Advanced Edition と Document Grounding サービス間の統合機能がシステム内で有効になります。この際、通信に利用するOAuth Clientは先ほど作成したもの(例:Document Grounding OAuth Client)を設定します。 次に、SAP BTP のサブアカウントでこのS AP Build Work Zone のコンテンツにアクセスするための Destination を作成します。 Document Grounding サービスが SAP Build Work Zone 内のコンテンツにアクセスする際には、このDestination設定を経由します。BTP Cockpitの「Connectivity > Destinations」を開き、「新規作成(New Destination)」で以下のように設定します。なお、<DWS URL> は、Admin ConsoleのOverviewページから取得可能です。プロパティ 値 Name 任意の名前(例:DocumentGrounding_WZAdv) Type HTTP Description 任意 Proxy Type Internet URL <DWS URL> Authentication OAuth2ClientCredentials Client ID Admin Console で発行したOAuth Client の 「Key」 Client Secret Admin Console で発行したOAuth Client の 「Secret」 Token Service URL <DWS URL>/api/v1/auth/token Token Service URL Type Dedicated 追加プロパティ 値 HTML5.DynamicDestination true SetXForwardedHeaders false HTML5.SetForwardedHeaders false セットアップガイドスクリプトに戻って 「6. Configure Work Zone Integration」 を実行し、設定したDestinationの名前を渡します。 6. SAP Build Work Zone 内のコンテンツのインデックス登録(パイプライン設定) 最後に、Document Groundingサービスに対して SAP Build Work Zone コンテンツを取り込み登録(インデックス化)する処理を設定します。これはパイプラインと呼ばれるスケジュールされたデータ取り込みジョブの登録で、設定後は定期的(1日1回)にWork Zone上のドキュメントをクロールし、最新内容がJouleに取り込まれます。 セットアップガイドスクリプトを起動し、「7. Create Work Zone Pipeline」 を実行します。内部ではDocument Groundingサービスのエンドポイントに対し、先ほど取得したアクセストークンおよび証明書を用いてパイプライン作成APIを呼び出しています。以下のコマンドはその例です。 curl –request POST
–url “<ドキュメントグラウンディングのサービスキーURL>/pipeline/api/v1/pipeline”
–header “Authorization: Bearer <上で取得したaccess_token>”
–header “Content-Type: application/json”
–data ‘{
“type”: “WorkZone”,
“metadata”: {
“destination”: “<前ステップで設定したDestination名>”
}
}’
–cert ./doc-grounding.crt
–key ./doc-grounding.key 無事処理が完了するとパイプラインIDが返されます。このIDにより、Document Groundingサービス上で SAP Build Work Zone コンテンツを取得するパイプラインジョブが管理されます。パイプラインの作成と同時に初回実行が行われ、SAP Build Work Zone内のパブリックコンテンツ(アップロードされたドキュメント等)が読み込まれ、ベクトルインデックスが作成されます。以降は1日1回の頻度でWork Zone側の更新を自動反映します。手動で最新化したい場合はパイプラインAPIで適宜再実行することも可能です。(後述) グラウンディングの準備とパイプラインの手動実行 これでDocument Groundingの機能を利用して、Jouleに回答を生成させる準備が完了しました。最後に、実際にドキュメントを読み込ませた上で回答させてみましょう。 今回はITセキュリティポリシーに関するサンプル文書を用意しました。こちらをSAP Build Work Zoneにアップロードしましょう。なお、現時点(2025/08/29)では、英語の文書に対してのみ、グラウンディングは動作するようです。 SAP Build Work Zoneのコンテンツページより、アップロードを行います。 また、このワークスペースの単位でも Document Grounding を有効化する必要があります。「Workspace Admin Settings」より設定に進みましょう。 Document Grounding の部分のチェックボックスを有効化して、「Save」より設定を保存します。 最後に、セットアップガイドスクリプトから「10. Trigger Pipeline」を実行して、パイプラインを手動実行します。 パイプラインの実行状態は、セットアップガイドスクリプトの「8. Check Grounding Status」より確認できます。うまくGroundingの取り込みが完了していると、「INDEXED」という表記が確認できます。 Document Grounding の実行 最後に、Document GroundingをJouleから実行し、SAP Build Work Zone, Advanced Edition上のコンテンツファイルの記述内容に基づいた回答が返ってくることを確認しましょう。 まずは上記の Document Grounding の設定を行う前の回答を見てみましょう。一般的な回答が返ってきており、詳細は管理者に問い合わせるように案内されます。 そして、下記が設定を行った後の回答です。しっかりと社内文書に基づいて回答が生成されていることが確認できます。ちなみに、Sourcesからドキュメント名をクリックすると、SAP Build Work Zone内の対象文書のページに遷移することができます。 まとめ 以上の手順により、SAP Build Work Zone, Advanced Edition に保存された社内ドキュメントをデータソースとして、Joule のドキュメントグラウンディング機能を設定できました。これにより、ユーザーがJouleに対して行う質問に対し、Work Zone内のファイル(PDFやWord文書など)の内容を根拠にした回答が生成されるようになります。たとえば社内規程集のPDFをWork Zoneにアップロードしパブリックに公開しておけば、Jouleに規程の詳細を尋ねた際にそのPDFから回答が引用されるようになります。 社内ナレッジを有効活用することで、Jouleの回答精度向上や信頼性の高い情報提供が期待できます。ただし前述の通り、現在この機能ではドキュメントがテナント内の全ユーザーにとって参照可能な情報源となる点に留意し、公開して問題ない情報のみをアップロードしてください。機能拡張により将来的にはユーザー権限に応じた応答制御なども行われる可能性があります。 最後に、設定に際して不明点があればSAPヘルプの公式ドキュメント(Integrating Joule with SAP Solutions内の 「Set Up Document Grounding」 節や、SAP Build Work Zone, advanced editionの「Integration With Document Grounding」ガイド)を参照してください。最新情報や制約事項が更新されている場合があります。本記事の手順を参考に、自社環境でJouleとWork Zoneを連携させ、社内文書に基づく高度なQ&Aシステムを活用してみてください。 参考資料 SAP Help Portal: Integrating Joule with SAP Solutions – Set up Document Grounding https://help.sap.com/docs/joule/integrating-joule-with-sap/set-up-document-grounding SAP Help Portal: SAP Build Work Zone, advanced edition – Integration With Document Grounding https://help.sap.com/docs/build-work-zone-advanced-edition/sap-build-work-zone-advanced-edition/integration-with-document-grounding Read More Technology Blog Posts by SAP articles
#SAP
#SAPTechnologyblog