“IIIF Tsukushi Viewer”は、日本古典籍との生成AIチャット機能を備えたIIIFビューワである。
日本古典籍を対象としたAIチャット機能により、古典籍に対する現代日本語によるアクセスを提供する。
本ツールは、IIIF Curation Viewerをベースとして、AIチャット用途に特化して機能を加除したツールである。この文章では、本ツール固有の内容を中心に記述する。
目次
動作デモ/活用例
使い方
マニフェストの指定
IIIF Curation Viewerと同じく、GET引数(パラメータ名:manifest)の指定やドラッグ&ドロップ、ペースト(貼り付け)により、閲覧する資料のIIIFマニフェストURLを指定する。
つくしサーチの検索結果や日本古典籍データセットの資料ページに用意された本ツールへのリンクを用いても良い。
閲覧対象を読み込むと、資料画像が表示されるとともに、AIチャットに関する機能を提供するサイドバーが画像右側に表示される。サイドバー上のいずれかのアイコンボタンをクリックすると、サイドバーが展開される。
展開されたサイドバー上部の水平矢印アイコン()ボタン押下によりサイドバーを横方向に最大化、垂直矢印アイコン()ボタン押下により資料のフルページ表示が行える。
AIチャットタブ
サイドバー上のロボットアイコン()ボタン押下により、サイドバーの「AIチャット」タブが表示される。
AIチャットタブは、上から、チャット対象選択部、チャット履歴部、プロンプト部の三つの部分によって構成される。
チャット対象選択部
チャット対象選択部では、本全体、ページリスト、画像領域の3種類のコンテキストからチャット対象を選択する。
チャット対象としてページリストを選択した場合は、質問対象としたいページ(コマ)をリスト(ページリスト)に登録した上で、プロンプト部から質問を行う。リスト登録は、IIIF Curation Viewerにおけるキュレーションリスト登録と同様に、画面上部のリスト登録(☆)ボタンを用いて行う。
なお、リスト登録ボタンの右隣のリスト表示()ボタン押下によりページリスト画面が表示される。同画面では、リスト登録内容の確認や削除が行える他、登録されたページのテキストを表示できる。ページリストを対象としたチャットは、このテキストについてのチャットとなる。
チャット対象として画像領域を選択した場合は、質問対象としたい画像領域を指定した上で、プロンプト部から質問を行う。画像領域の指定は、IIIF Curation Viewerにおける部分矩形領域指定と同様に、画面右上の部分矩形領域指定(■)ボタンを用いて行う。
プロンプト部
プロンプト部には、左側に新しいチャット()ボタン、右側上にプロンプトを自由に入力できるテキストボックス、右側下にプロンプトライブラリが表示される。
新しいチャットボタンを押下すると、それまでにAIと行ったやり取りがクリアされる。この後に行う質問では、AIはそれまでのやり取りの内容を忘却し、新しいチャットが開始される。AIとのやり取り(チャット履歴)は3種類のチャット対象ごとに管理されており、チャット対象を切り替えてもそれぞれのチャット履歴は保持される。
プロンプト入力テキストボックスには、自由に質問を入力し、入力を終えればエンターキー押下または質問を送信()ボタン押下により、質問を行う。
プロンプトライブラリには、チャット対象ごとに典型的な質問のボタンが表示され、ボタン押下により典型的な質問を簡単に行うことができる。
チャット履歴部
チャット対象を選択し、プロンプトを入力またはプロンプトライブラリから一つを選んでチャットを開始すると、質問と回答がチャット履歴部に表示される。新しいチャットボタンが押下されるまでは、それまでに行ったやり取りに基づいた回答がなされる。
利用回数制限のあるモデルを利用している場合、24時間以内に利用可能な残り回数があわせて表示されることがある。
AIチャット設定タブ
サイドバー上の歯車アイコン()ボタン押下により、サイドバーの「AIチャット設定」タブが表示される。
ここでは、AIチャットに関する設定が表示され、利用するモデルの選択やパラメータ値の設定を行える。表示内容は、IIIF Tsukushi Viewerの設置時オプションで設定された内容に応じて異なる。
AIチャットについてタブ
サイドバー上の情報アイコン()ボタン押下により、サイドバーの「AIチャットについて」タブが表示される。
ここでは、本ツールのバックエンドに関する情報が表示される。表示内容は、IIIF Tsukushi Viewerの設置時オプションで設定された内容に応じて異なる。
設置時の設定
IIIF Tsukushi Viewer設置時のオプション指定により、IIIF Curation Viewerと同様に、IIIF Tsukushi Viewerの挙動をカスタマイズできる。IIIF Curation Viewer設置時の設定資料を参照のこと。
オプション指定
IIIF Tsukushi Viewer固有のオプション指定は、以下の3項目からなる。
-
contentService
:コンテントサービス(IIIF資料のテキストを提供するサービス)に関する指定 -
chatService
:チャットサービス(本を対象としたAIチャット機能を提供するサービス)に関する指定 -
tsukushiViewer
:フロントエンド動作に関する指定
それぞれの詳細を以下に挙げる。
contentService
コンテントサービスに関する設定を指定する。
-
contentService
-
endpointUrl
:サービスのエンドポイントURLを指定する。 -
label
:サービスの表示名を指定する。AIチャットについてタブで利用される。 -
description
:サービスの説明を指定する。AIチャットについてタブで利用される。
-
chatService
チャットサービスに関する設定を指定する。
-
chatService
-
endpointUrl
:サービスのエンドポイントURLを指定する。 -
label
:サービスの表示名を指定する。AIチャットについてタブで利用される。 -
description
:サービスの説明を指定する。AIチャットについてタブで利用される。 -
chatMethod
:プロンプトに関するJSON-RPCリクエストに用いるメソッド設定を、チャット対象ごとに指定する。-
book
:本全体をチャット対象とする際の動作に関する設定を指定する。-
method
:JSON-RPCリクエストで実行するメソッド名を指定する。 -
params
:メソッドに送信するパラメータオブジェクトに含めるプロパティを含むオブジェクトを指定する。オブジェクトに含めるプロパティ名はprompt
、manifest
、content
、image
のいずれかとし、その値は任意とする(リクエスト実行時は、ビューワによって適切な値が設定され送信される)。
-
-
page
:ページリストをチャット対象とする際の動作に関する設定を指定する。指定方法はbook
と同じ。 -
region
:画像領域をチャット対象とする際の動作に関する設定を指定する。指定方法はbook
と同じ。
-
-
params
:JSON-RPCリクエストに用いるパラメータ設定を指定する。この設定内容は、モデルやチャット対象によらず共通して適用される。-
パラメータ名
:メソッドに送信するパラメータオブジェクトに含めるプロパティ名を指定する。-
label
:パラメータの表示名を指定する。AIチャット設定タブで利用される。 -
default
:パラメータのデフォルト値(文字列)を指定する。AIチャット設定タブで設定した値がデフォルト値と一致する場合または空値である場合、当該パラメータはメソッドに送信されない。 -
isPersistent
:AIチャット設定タブで設定した値を、ブラウザのローカルストレージを用いて保持するか否かを指定する。 -
placeholder
:AIチャット設定タブで表示するプレースホルダを指定する。
-
-
-
promptLibrary
:プロンプトライブラリに関する設定を指定する。-
book
:本全体をチャット対象とする際の動作に関する設定を指定する。以下のプロパティを持つオブジェクトの配列を指定する。-
method
:JSON-RPCリクエストで実行するメソッド名を指定する。 -
label
:プロンプトライブラリに表示されるボタンの表示名を指定する。 -
text
:チャット履歴に表示される質問文を指定する。 -
params
:メソッドに送信するパラメータオブジェクトに含めるプロパティを含むオブジェクトを指定する。オブジェクトに含めるプロパティ名はprompt
、manifest
、content
、image
のいずれかとし、その値は任意とする(リクエスト実行時は、ビューワによって適切な値が設定され送信される)。
-
-
page
:ページリストをチャット対象とする際の動作に関する設定を指定する。指定方法はbook
と同じ。 -
region
:画像領域をチャット対象とする際の動作に関する設定を指定する。指定方法はbook
と同じ。
-
-
models
:モデルに関する設定を指定する。-
モデル名
:モデル名を指定する。JSON-RPCリクエストやチャット履歴表示に利用される。-
label
:AIチャット設定タブに表示されるモデル名を指定する。 -
description
:AIチャット設定タブに表示されるモデルの説明を指定する。 -
hasQuota
:利用回数制限のあるモデルであるか否かを指定する。AIチャット設定タブで利用される。 -
params
:モデル固有のパラメータ設定を、先述のparams
(モデルやチャット対象によらず共通して適用される設定)と同様の形式で指定する。 -
features
:モデルの特徴を指定する。modelFeatures
(後述)で記述したファセット名
をキーとし、ファセット選択肢
を値として持つオブジェクトを指定する。この設定内容は、AIチャット設定タブにおいてモデルの絞り込みに利用される。
-
-
-
modelFeatures
:モデルの特徴に関するファセットを指定する。この設定内容は、AIチャット設定タブにおいてモデルの絞り込みに利用される。-
ファセット名
:ファセット名を指定する。この設定は、models['モデル名'].features
設定で利用するキー名となる。-
label
:AIチャット設定タブに表示されるファセット名を指定する。 -
options
:以下のプロパティを持つオブジェクトを指定する。-
ファセット選択肢
:ファセット選択肢を指定する。この設定は、models['モデル名'].features
設定で利用する値となる。-
label
:AIチャット設定タブに表示される選択肢ボタンの表示名を指定する。
-
-
-
-
-
tsukushiViewer
IIIF Tsukushi Viewerのフロントエンド動作に関わる設定を指定する。
-
tsukushiViewer
-
message
:メッセージ表示に関する内容を指定する。-
showOnLoaded
:資料読み込み時にメッセージ表示を行うか否かを指定する。 -
title
:メッセージのタイトルを指定する。 -
description
:メッセージの内容を指定する。
-
-
設定例
index.js
var iiifViewer = (function() {
var config = {
//Tsukushi Content Service
contentService: {
endpointUrl: 'http://codh.rois.ac.jp/tsukushi/iiif-content/canvas-text',
label: 'Tsukushi Content Service',
description: [
{
'@language': 'en',
'@value': 'A web service that provides the functionality to register and search text in the basic unit of the IIIF as a RESTful API. Please refer to <a href="/tsukushi/#tsukushi-content-service">Tsukushi Content Service</a> for details.'
},
{
'@language': 'ja',
'@value': 'IIIFの基本単位でテキストを登録し検索する機能をRESTful APIとして提供するウェブサービスです。詳しくは<a href="/tsukushi/#tsukushi-content-service">Tsukushi Content Service</a>をご覧下さい。'
}
]
},
//Tsukushi Chat Service
chatService: {
endpointUrl: 'https://mp.ex.nii.ac.jp/tsukushi/chat',
label: 'Tsukushi Chat Service',
description: [
{
'@language': 'en',
'@value': 'A web service that provides functionality to convey prompts received from users to a large-scale language model and deliver the answers to users as a JSON-RPC API. Please refer to <a href="/tsukushi/#tsukushi-chat-service">Tsukushi Chat Service</a> for details and <a href="/tsukushi/terms/">Privacy Policy / Terms of Use</a> when using this service.'
},
{
'@language': 'ja',
'@value': '利用者から受け取ったプロンプトを大規模言語モデルに伝え、その回答を利用者に届けるための機能をJSON-RPC APIとして提供するウェブサービスです。詳しくは<a href="/tsukushi/#tsukushi-chat-service">Tsukushi Chat Service</a>を、また本サービスの利用にあたっては、<a href="/tsukushi/terms/">プライバシーポリシー/利用規約</a>をご覧ください。'
}
],
chatMethod: {
book: {
method: 'book:chat',
params: {
prompt: '',
manifest: ''
}
},
page: {
method: 'text:chat',
params: {
prompt: '',
content: ''
}
},
region: {
method: 'image:chat',
params: {
prompt: '',
image: ''
}
}
},
promptLibrary: {
book: [
{
method: 'book:summarize',
label: [
{
'@language': 'en',
'@value': 'Summarize'
},
{
'@language': 'ja',
'@value': '要約する'
}
],
text: [
{
'@language': 'en',
'@value': 'Summarize the book'
},
{
'@language': 'ja',
'@value': '本全体の内容をまとめて'
}
],
params: {
manifest: ''
}
}
],
page: [
{
method: 'text:summarize',
label: [
{
'@language': 'en',
'@value': 'Summarize'
},
{
'@language': 'ja',
'@value': '要約する'
}
],
text: [
{
'@language': 'en',
'@value': 'Summarize the page list'
},
{
'@language': 'ja',
'@value': 'ページリストの内容を要約して'
}
],
params: {
content: ''
}
},
{
method: 'text:translate',
label: [
{
'@language': 'en',
'@value': 'Translate'
},
{
'@language': 'ja',
'@value': '翻訳する'
}
],
text: [
{
'@language': 'en',
'@value': 'Translate the page list to English'
},
{
'@language': 'ja',
'@value': 'ページリストを英語に翻訳して'
}
],
params: {
content: ''
}
}
],
region: [
{
method: 'image:describe',
label: [
{
'@language': 'en',
'@value': 'Describe'
},
{
'@language': 'ja',
'@value': '記述する'
}
],
text: [
{
'@language': 'en',
'@value': 'Describe the image'
},
{
'@language': 'ja',
'@value': '画像の内容を記述して'
}
],
params: {
image: ''
}
}
]
},
models: {
'claude-3-5-sonnet': {
label: 'claude-3-5-sonnet☆☆☆',
description: [
{
'@language': 'en',
'@value': 'Use the paid APIs provided by Anthropic. There is a limit of a maximum of 10 uses per 24 hours for all paid APIs combined. [ <a href="/tsukushi/ai-chat/#claude-3-5-sonnet" target="_blank">Detailed Information</a> ]'
},
{
'@language': 'ja',
'@value': 'Anthropicが提供する課金APIを利用します。すべての課金APIを合計して、24時間あたり最大10回の利用回数制限があります。[ <a href="/tsukushi/ai-chat/#claude-3-5-sonnet" target="_blank">詳細情報</a> ]'
}
],
hasQuota: true,
params: {
'temperature': {
label: 'Temperature',
default: '0.2',
isPersistent: true,
description: [
{
'@language': 'en',
'@value': 'Temperature (0.0-1.0) controls the randomness. A larger value returns more diverse answer. This setting is preserved in a browser.'
},
{
'@language': 'ja',
'@value': 'Temperature (0.0-1.0)はランダム性を制御します。値を大きくすると、回答の多様性が高まります。この設定はブラウザに保存されます。'
},
]
}
},
features: {
'performance': 'performance_priority',
'language': 'multilingual'
}
},
'gpt-4o': {
label: 'gpt-4o☆☆☆',
description: [
{
'@language': 'en',
'@value': 'Use the paid APIs provided by OpenAI. There is a limit of a maximum of 10 uses per 24 hours for all paid APIs combined. [ <a href="/tsukushi/ai-chat/#gpt-4o" target="_blank">Detailed Information</a> ]'
},
{
'@language': 'ja',
'@value': 'OpenAIが提供する課金APIを利用します。すべての課金APIを合計して、24時間あたり最大10回の利用回数制限があります。[ <a href="/tsukushi/ai-chat/#gpt-4o" target="_blank">詳細情報</a> ]'
}
],
hasQuota: true,
params: {
'temperature': {
label: 'Temperature',
default: '0.2',
isPersistent: true,
description: [
{
'@language': 'en',
'@value': 'Temperature (0.0-1.0) controls the randomness. A larger value returns more diverse answer. This setting is preserved in a browser.'
},
{
'@language': 'ja',
'@value': 'Temperature (0.0-1.0)はランダム性を制御します。値を大きくすると、回答の多様性が高まります。この設定はブラウザに保存されます。'
},
]
}
},
features: {
'performance': 'performance_priority',
'language': 'multilingual'
}
},
'gemma2': {
label: 'gemma2☆☆',
description: [
{
'@language': 'en',
'@value': 'Gemma 2 released from Google DeepMind is a multilingual language model. [ <a href="/tsukushi/ai-chat/#gemma2" target="_blank">Detailed Information</a> ]'
},
{
'@language': 'ja',
'@value': 'Google DeepMindが公開するGemma 2は、多言語の言語モデルです。 [ <a href="/tsukushi/ai-chat/#gemma2" target="_blank">詳細情報</a> ]'
}
],
params: {
},
features: {
'performance': 'usage_priority',
'language': 'multilingual'
}
},
'qwen2': {
label: 'qwen2☆☆',
description: [
{
'@language': 'en',
'@value': 'Qwen2 released from Alibaba is a multilingual language model. [ <a href="/tsukushi/ai-chat/#qwen2" target="_blank">Detailed Information</a> ]'
},
{
'@language': 'ja',
'@value': 'Alibabaが公開するQwen2は、多言語の言語モデルです。 [ <a href="/tsukushi/ai-chat/#qwen2" target="_blank">詳細情報</a> ]'
}
],
params: {
},
features: {
'performance': 'usage_priority',
'language': 'multilingual'
}
},
'elyza': {
label: 'elyza☆☆',
description: [
{
'@language': 'en',
'@value': 'Llama-3-ELYZA-JP-8B released by Elyza is a Japanese-centric language model. [ <a href="/tsukushi/ai-chat/#elyza" target="_blank">Detailed Information</a> ]'
},
{
'@language': 'ja',
'@value': 'Elyzaが公開するLlama-3-ELYZA-JP-8Bは、日本語中心の言語モデルです。[ <a href="/tsukushi/ai-chat/#elyza" target="_blank">詳細情報</a> ]'
}
],
params: {
},
features: {
'performance': 'usage_priority',
'language': 'japanese_centric'
}
},
'phi3': {
label: 'phi-3☆',
description: [
{
'@language': 'en',
'@value': 'Phi-3 released from Microsoft is an English-centric language model. [ <a href="/tsukushi/ai-chat/#phi3" target="_blank">Detailed Information</a> ]'
},
{
'@language': 'ja',
'@value': 'Microsoftが公開するPhi-3は、英語中心の言語モデルです。[ <a href="/tsukushi/ai-chat/#phi3" target="_blank">詳細情報</a> ]'
}
],
params: {
},
features: {
'performance': 'usage_priority',
'language': 'english_centric'
}
},
'llm-jp': {
label: 'llm-jp☆',
description: [
{
'@language': 'en',
'@value': 'LLM-jp-13B-v2.0 released from the LLM Study Group is a Japanese-centric language model. [ <a href="/tsukushi/ai-chat/#llm-jp" target="_blank">Detailed Information</a> ]'
},
{
'@language': 'ja',
'@value': 'LLM勉強会が公開するLLM-jp-13B-v2.0は、日本語中心の言語モデルです。[ <a href="/tsukushi/ai-chat/#llm-jp" target="_blank">詳細情報</a> ]'
}
],
params: {
},
features: {
'performance': 'usage_priority',
'language': 'japanese_centric'
}
},
'llama3': {
label: 'llama3☆',
description: [
{
'@language': 'en',
'@value': 'Llama3 released from Meta is an English-centric language model. [ <a href="/tsukushi/ai-chat/#llama3" target="_blank">Detailed Information</a> ]'
},
{
'@language': 'ja',
'@value': 'Metaが公開するLlama3は、英語中心の言語モデルです。[ <a href="/tsukushi/ai-chat/#llama3" target="_blank">詳細情報</a> ]'
}
],
params: {
},
features: {
'performance': 'usage_priority',
'language': 'english_centric'
}
},
'aya': {
label: 'aya☆',
description: [
{
'@language': 'en',
'@value': 'Aya released from Cohere is a multilingual language model. [ <a href="/tsukushi/ai-chat/#aya" target="_blank">Detailed Information</a> ]'
},
{
'@language': 'ja',
'@value': 'Cohereが公開するAyaは、多言語の言語モデルです。[ <a href="/tsukushi/ai-chat/#aya" target="_blank">詳細情報</a> ]'
}
],
params: {
},
features: {
'performance': 'usage_priority',
'language': 'multilingual'
}
}
},
params: {
'refPages': {
label: [
{
'@language': 'en',
'@value': 'Number of reference pages'
},
{
'@language': 'ja',
'@value': '参考ページ数'
}
],
default: '5',
placeholder: [
{
'@language': 'en',
'@value': 'Enter a number'
},
{
'@language': 'ja',
'@value': '数字を入力'
}
]
}
},
modelFeatures: {
'performance': {
label: [
{
'@language': 'en',
'@value': 'Filter by usage pattern'
},
{
'@language': 'ja',
'@value': '利用パターンで絞り込み'
}
],
options: {
'performance_priority': {
label: [
{
'@language': 'en',
'@value': 'Priortize performance'
},
{
'@language': 'ja',
'@value': '高性能優先'
}
]
},
'usage_priority': {
label: [
{
'@language': 'en',
'@value': 'Priortize number of use'
},
{
'@language': 'ja',
'@value': '利用回数優先'
}
]
}
}
},
'language': {
label: [
{
'@language': 'en',
'@value': 'Filter by language'
},
{
'@language': 'ja',
'@value': '言語で絞り込み'
}
],
options: {
'multilingual': {
label: [
{
'@language': 'en',
'@value': 'Multilingual'
},
{
'@language': 'ja',
'@value': '多言語'
}
]
},
'japanese_centric': {
label: [
{
'@language': 'en',
'@value': 'Japanese-centric'
},
{
'@language': 'ja',
'@value': '日本語中心'
}
]
},
'english_centric': {
label: [
{
'@language': 'en',
'@value': 'English-centric'
},
{
'@language': 'ja',
'@value': '英語中心'
}
]
}
}
}
}
},
//IIIF Tsukushi Viewer
tsukushiViewer: {
message: {
showOnLoaded: true,
title: [
{
'@language': 'en',
'@value': 'Note on the Usage of Generative AI'
},
{
'@language': 'ja',
'@value': '生成AIの利用に関する注意事項'
}
],
description: [
{
'@language': 'en',
'@value': 'The output of Generative AI should be verified by the original text or appropriate references.<br/>Some models have a limit of a maximum number of uses per 24 hours.'
},
{
'@language': 'ja',
'@value': '生成AIの出力内容については、原文や適切な情報源で確認してください。<br/>一部のモデルには、24時間あたりの利用回数制限があります。'
}
]
}
}
};
return IIIFTsukushiViewer(config);
})();
ライセンス
IIIF Tsukushi Viewer v2.0
http://codh.rois.ac.jp/software/iiif-tsukushi-viewer/
Copyright 2024 Center for Open Data in the Humanities, Research Organization of Information and Systems
Released under the MIT license
Core contributor: Jun HOMMA (@2SC1815J)
Licenses of open source libraries, see acknowledgements.txt
開発履歴
バージョン2.0 (2024-11-11)
- IIIF Curation Viewer v2.0相当の機能に更新。
バージョン1.1 (2024-08-27)
- IIIF Presentation API 3.0のマニフェスト表示に対応。
バージョン1.0 (2024-07-18)
- 最初のバージョンを公開。