summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authortanaka takashi <isazaka@gmail.com>2026-08-16 19:24:33 +0900
committertanaka takashi <isazaka@gmail.com>2026-08-16 19:24:33 +0900
commit8ce6627324c258fead9164b1532241a698284fc4 (patch)
treea4126f59c8a63a1af5dd69836dd690b9c2a52a44 /src
parent239c206659d02f5e89b3f54aa050aff6a71dcdd5 (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.py6
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)