diff options
| author | tanaka takashi <isazaka@gmail.com> | 2026-08-16 19:24:33 +0900 |
|---|---|---|
| committer | tanaka takashi <isazaka@gmail.com> | 2026-08-16 19:24:33 +0900 |
| commit | 8ce6627324c258fead9164b1532241a698284fc4 (patch) | |
| tree | a4126f59c8a63a1af5dd69836dd690b9c2a52a44 /src | |
| parent | 239c206659d02f5e89b3f54aa050aff6a71dcdd5 (diff) | |
fix(llm): 上限到達後のツール呼び出しを無効化
ツールラウンド上限到達後の最終回答生成でも effective_tools を渡していたため、コメント上の「ツールなしで最終回答」と実際のリクエストが一致していなかった。モデルが最終段階で再び tool_calls を生成できる状態も残っていた。
非ストリーミング版とストリーミング版の最終Ollama呼び出しを tools=[] に変更する。通常ラウンドでは従来どおり標準ツールとMCPツールを公開し、上限到達後だけ既存のツール結果から回答をまとめるようにする。
標準ツールとMCPツールの回帰テストを追加し、通常ラウンドにはツール定義が渡ること、最終呼び出しでは空になること、ツール実行・上限通知・最終delta・doneイベントが維持されることを検証した。全115テスト、Ruff、mypy、および実モデルによるWeb検索と複数回スクレイピングの確認を完了している。
Diffstat (limited to 'src')
| -rw-r--r-- | src/ollama_web/llm.py | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/src/ollama_web/llm.py b/src/ollama_web/llm.py index 2839051..4951b36 100644 --- a/src/ollama_web/llm.py +++ b/src/ollama_web/llm.py @@ -326,7 +326,7 @@ def chat_with_tools( resp = cast(Any, raw_client).chat( model=model, messages=messages, - tools=effective_tools, + tools=[], think=effective_think, options=options or None, stream=False, @@ -596,7 +596,7 @@ def stream_chat_with_tools( stream = cast(Any, raw_client).chat( model=model, messages=messages, - tools=effective_tools, + tools=[], think=effective_think, options=options or None, stream=True, @@ -716,4 +716,4 @@ def _assistant_message_chunk(full_message: dict[str, Any]) -> Message | None: Message.ToolCall(function=Message.ToolCall.Function(name=name, arguments=args)) ) kwargs["tool_calls"] = tc_list - return Message(**kwargs)
\ No newline at end of file + return Message(**kwargs) |
