summaryrefslogtreecommitdiff
path: root/docs/tools-schema.md
diff options
context:
space:
mode:
authortanaka takashi <isazaka@gmail.com>2026-08-26 19:23:40 +0900
committertanaka takashi <isazaka@gmail.com>2026-08-26 19:23:40 +0900
commitb495dde6810882efc8481ebebd22ff26a6afb902 (patch)
treec255e809c8b4bc23341cd04c8f2d90020e733bda /docs/tools-schema.md
parent33f6b4dbb69e9366e312a8b44dbed9d22e7cba5b (diff)
fix(tools): PDFの会話間継続をトークン単独で再開可能にする
長いPDFを複数会話に分けて取得する際、モデルがurl_or_pathを省略したり、過去の添付IDや古い継続トークンを組み合わせたりして、先頭または以前のページへ戻る問題を改善する。PDFカーソル自体は正しく進んでいたため、汎用LLM層やセッション形式を変更せず、pdf_to_textの入出力契約だけを明確化する。 - continue_fromを自己完結した再開情報として扱い、PDFソース、ページ番号、ページ内文字位置をトークンから復元 - 継続時はurl_or_pathを省略可能にし、競合する値が渡されてもトークン内のソースを優先 - Ollama生成スキーマでもurl_or_pathを任意にして、continue_from単独のツール呼び出しを許可 - 未完了結果へ最新トークン、旧トークンの置換、単独再開、上限時の保持を表すPDF専用メタデータを追加 - 継続メタデータを固定キーと真偽値で表現し、会話言語に依存しない形式へ統一 - 無効トークン時は先頭再試行を禁止し、直前の最新トークンを再利用する機械可読情報を返却 - メタデータをpage-info側へ配置して本文連結を汚さず、結果全体を6000文字以内に再調整 - llm.py、チャット処理、セッションJSON、scrape_url、search_and_fetch、MCPツールは変更しない 検証: - pytest: 132 passed - ruff check: passed - mypy src: passed - 1463891.1463912.pdf: 12ページ、52577文字をcontinue_from単独の10回で完全再構成 - 指定PDFの最大ツール結果長はメタデータ込み5992文字
Diffstat (limited to 'docs/tools-schema.md')
-rw-r--r--docs/tools-schema.md10
1 files changed, 5 insertions, 5 deletions
diff --git a/docs/tools-schema.md b/docs/tools-schema.md
index 874640a..5b920a4 100644
--- a/docs/tools-schema.md
+++ b/docs/tools-schema.md
@@ -120,13 +120,13 @@ next_token: {token}
| パラメータ | 型 | 必須 | デフォルト | 説明 |
|------------|----|------|------------|------|
-| `url_or_path` | `str` | ✅ | — | HTTP(S) PDF URL。チャット内では現在のセッションの `attachment:<file_id>` も利用可能。任意のローカルパスは拒否 |
+| `url_or_path` | `str \| None` | 初回のみ | `None` | 初回取得用のHTTP(S) PDF URL。チャット内では現在のセッションの `attachment:<file_id>` も利用可能。`continue_from` 指定時はトークンから復元されるため省略可能。任意のローカルパスは拒否 |
| `max_chars` | `int \| None` | ❌ | [`settings.fetch_max_chars`](src/ollama_web/config.py:52) (=8000) | 1ページあたりの返却文字数上限 |
-| `continue_from` | `str \| None` | ❌ | `None` | 前回戻り値の `next_token`。指定時は続きページを取得 |
+| `continue_from` | `str \| None` | ❌ | `None` | 同じPDFの直前の戻り値にある `next_token`。PDFソースと次の開始位置を復元して続きページを取得 |
### 戻り値
-`str` — 1ページ分のテキスト、またはエラーメッセージ。続きがある場合は `scrape_url` と同様のページ情報フッターが付与される。
+`str` — 1ページ分のテキスト、またはエラーメッセージ。続きがある場合はページ情報フッターに加え、最新トークンが以前の同一PDF用トークンを置き換えること、上限到達時は最終回答へそのまま残すこと、次回は `continue_from` 単独で再開できることを示すPDF専用メタデータが付与される。このメタデータは会話言語に依存しない固定キーと真偽値で表現し、本文の連結結果には含まれない。
### 制約
@@ -139,10 +139,10 @@ next_token: {token}
### 処理フロー
-1. `continue_from` があればトークンから `(url, page_index, page_char_offset)` を復元
+1. `continue_from` があれば、`url_or_path` の有無や値にかかわらずトークンから `(url, page_index, page_char_offset)` を復元
2. PDF を全件取得・解析
3. カーソル位置から、結果全体の上限内で実際に返せる文字数だけ抽出
-4. 未返却文字または残りページがあれば、その直後を指す `next_token` を付与
+4. 未返却文字または残りページがあれば、その直後を指す `next_token` とPDF専用の再開指示を付与
---