summaryrefslogtreecommitdiff
path: root/tests
AgeCommit message (Collapse)Author
2026-08-16refactor: streamline chat flow and improve diagnosticstanaka takashi
Store server.log inside OLLAMA_WEB_DATA_DIR and manage the ollama-web file handler through the Starlette lifespan. Close and detach the handler on shutdown to prevent duplicate records and Windows file locks when applications are recreated. Stop converting DuckDuckGo provider failures into empty search results. Record a query-safe traceback, re-raise the original exception, and let ToolRegistry expose the exception type and message as a tool error without adding or spoofing Referer headers. Remove the unused non-streaming chat_with_tools implementation and its private helpers. Move capability, options, standard tool, MCP tool, and final tools=[] regression coverage onto the production streaming path. Add integration coverage for data/server.log placement, handler cleanup, repeated lifespans, and provider 403 diagnostics. Update the Unreleased changelog entry. Validated with 118 tests, Ruff, mypy, diff checks, real DuckDuckGo searches, successful result-page fetches, and observable 401/403 responses from sites that reject automated retrieval.
2026-08-16fix(llm): 上限到達後のツール呼び出しを無効化tanaka takashi
ツールラウンド上限到達後の最終回答生成でも effective_tools を渡していたため、コメント上の「ツールなしで最終回答」と実際のリクエストが一致していなかった。モデルが最終段階で再び tool_calls を生成できる状態も残っていた。 非ストリーミング版とストリーミング版の最終Ollama呼び出しを tools=[] に変更する。通常ラウンドでは従来どおり標準ツールとMCPツールを公開し、上限到達後だけ既存のツール結果から回答をまとめるようにする。 標準ツールとMCPツールの回帰テストを追加し、通常ラウンドにはツール定義が渡ること、最終呼び出しでは空になること、ツール実行・上限通知・最終delta・doneイベントが維持されることを検証した。全115テスト、Ruff、mypy、および実モデルによるWeb検索と複数回スクレイピングの確認を完了している。
2026-08-02fix(tools): search_and_fetch のページングトークン破損バグを修正tanaka takashi
## 背景 search_and_fetch の next_token / continue_from によるページング継続が PDF 形式で間欠的に失敗するバグが報告された。発生エラー: 1. payload is not valid JSON: Expecting ':' delimiter 2. 'utf-8' codec can't decode byte 0xda in position 278 1ページ目の取得自体は成功し、next_token 返却まで正常だが、 next_token を continue_from に渡した2ページ目でエラーが発生。 txt/md/csv/json では安定動作し、PDF で間欠的・再現性なし。 ## 根本原因 コード精査の結果、報告の「非UTF-8バイト混入」仮説に対し、より有力な 主因として「トークン巨大化による末尾欠損」を特定: - _render_file_page() は matched 配列(title/href/body 全部入り)を トークンに埋め込んでいたが、レンダリングで使うのは title と href のみ。body(DuckDuckGo のスニペット、PDF 論文要約で数KB)は未使用 - 候補複数件でトークンが数KB〜十数KBに膨張 - LLM が continue_from にコピーする際、コンテキスト長や _trim_tool_result の切り詰めでトークン末尾が欠損 - base64 デコード結果が不正になり JSONDecodeError(JSON途中切断) と UnicodeDecodeError(マルチバイト境界切断)の両エラーが発生 - PDF で間欠的・再現性なしは、検索結果セットごとにスニペット長が 変動しトークンサイズが破損閾値を前後するためと説明がつく 補助要因: make_token() の ensure_ascii=False が、末尾欠損時に マルチバイト文字境界で切れる確率を上げていた。 ## 修正内容(案A: ユーザー承認済み) 1. pagination.py の make_token() を ensure_ascii=True 化 - トークンを純ASCII化し、末尾欠損でも UnicodeDecodeError を防止 - 非ASCII文字は \uXXXX エスケープ(6バイト固定)で安定化 2. fetch.py に _slim_matched() ヘルパーを追加 - matched から body を除外し title+href のみ埋め込み - 3箇所の make_token 呼び出し(fetch失敗時・ファイル内継続時・ 次ファイル移行時)を matched=_slim_matched(matched) に変更 - トークンサイズを数KB〜十数KB → 数百バイトに削減 3. トークン形式バージョン v は 1維持(構造不変・後方互換) - 旧トークン(body入り・ensure_ascii=False)も parse_token で 正常デコード可能 - 再検索回避機能も維持 ## テスト tests/test_tools.py に新規テスト5件を追加: - test_make_token_ensure_ascii_true - test_search_and_fetch_token_excludes_body - test_search_and_fetch_token_size_reduced - test_search_and_fetch_continue_with_slim_token - test_search_and_fetch_pagination_with_nonascii_title ## 検証結果 - pytest: 113 passed (新規5件含む、既存回帰なし) - ruff check src/ tests/: All checks passed - mypy src/: Success: no issues found in 30 source files ## ドキュメント docs/tools-schema.md に実装ベースの差分を反映: - make_token() の説明に ensure_ascii=True 化の旨を追記 - search_and_fetch 処理フローの注記に _slim_matched() による body 除外とトークンサイズ削減の旨を追記 - トークンペイロード構造の matched 例から body を削除
2026-08-02scrape_url / pdf_to_text / search_and_fetch ↵tanaka takashi
はページング(継続トークン方式)に対応 mypy 6エラー修正
2026-07-09ollama側のレスポンスが空の場合に1回リトライする処理に ↵tanaka takashi
変更 トークン数の累積計算処理削除
2026-07-09停止ボタンの不具合修正(停止ボタンを押すと送信できな ↵tanaka takashi
くなるバグを修正) LLMがメッセージ生成途上で画面スクロールしにくい問題を修正 チャットメッセージバルーンをコピペ対応 トークン消費量をリングゲージで可視化(表示タイミングに不具合あり)
2026-06-28モデル名によってthinkingトグルがグレーアウトする不具å� ↵tanaka takashi
ˆを修正 モデル名にスラッシュが含まれている場合にStarlette側でエスケープされる問題を回避
2026-06-28システムプロンプトへローカルタイムの現在時刻を注入ã ↵tanaka takashi
�™るように変更
2026-06-27Ollama設定の詳細プレースホルダーを修正tanaka takashi
2026-06-27一般設定の追加(UI/Ollama設定) settings.jsonに設定を保存 ↵tanaka takashi
UIから言語設定対応 Ollama設定でシステムプロンプト, temperature, コンテキスト長などのパラメータを設定可能
2026-06-27CSPによるインラインJavascriptの実行ブロックの不具合を修 ↵tanaka takashi
正。
2026-06-27マルチ言語対応。MCP設定画面の言語切り替え表示にバグã ↵tanaka takashi
�‚り
2026-06-27MCP toolsの名称による実行制限処理の削除。tanaka takashi
2026-06-27MCP server機能のセキュア化によるcwdの不整合を除去。tanaka takashi
2026-06-27MCP server機能をセキュア化tanaka takashi
2026-06-26MCP機能追加tanaka takashi
2026-06-25各モデルの機能を取得するように修正。thinking, tools, ↵tanaka takashi
vision対応モデルに応じて機能を変えるように変更。クリアボタンのバグを修正
2026-06-24Harden web UI securitytanaka takashi
2026-06-23基本機能実装tanaka takashi
2026-06-23First Commit.tanaka takashi