mirror of
https://github.com/HKUDS/nanobot.git
synced 2026-08-06 17:38:35 +00:00
refactor: simplify Anthropic tool id remapping
maintainer edit: remove duplicate counter state and use the seen id set directly when choosing duplicate suffixes.
This commit is contained in:
parent
0e9861558a
commit
23dc253f89
@ -158,27 +158,25 @@ class AnthropicProvider(LLMProvider):
|
|||||||
system: str | list[dict[str, Any]] = ""
|
system: str | list[dict[str, Any]] = ""
|
||||||
raw: list[dict[str, Any]] = []
|
raw: list[dict[str, Any]] = []
|
||||||
seen_tool_ids: set[str] = set()
|
seen_tool_ids: set[str] = set()
|
||||||
duplicate_counts: dict[str, int] = {}
|
|
||||||
pending_tool_ids: dict[str, deque[str]] = {}
|
pending_tool_ids: dict[str, deque[str]] = {}
|
||||||
|
|
||||||
def unique_tool_id(value: Any) -> str:
|
def unique_tool_id(value: Any) -> str:
|
||||||
raw_id = str(value) if value else _gen_tool_id()
|
raw_key = str(value) if value else ""
|
||||||
mapped_id = _sanitize_tool_id(raw_id)
|
mapped_id = _sanitize_tool_id(raw_key) if raw_key else _gen_tool_id()
|
||||||
if mapped_id and mapped_id not in seen_tool_ids:
|
if mapped_id and mapped_id not in seen_tool_ids:
|
||||||
seen_tool_ids.add(mapped_id)
|
seen_tool_ids.add(mapped_id)
|
||||||
if value:
|
if raw_key:
|
||||||
pending_tool_ids.setdefault(str(value), deque()).append(mapped_id)
|
pending_tool_ids.setdefault(raw_key, deque()).append(mapped_id)
|
||||||
return mapped_id
|
return mapped_id
|
||||||
|
|
||||||
seed = mapped_id or _gen_tool_id()
|
seed = mapped_id or _gen_tool_id()
|
||||||
duplicate_counts[seed] = duplicate_counts.get(seed, 1) + 1
|
suffix = 2
|
||||||
suffix = duplicate_counts[seed]
|
|
||||||
while True:
|
while True:
|
||||||
candidate = f"{seed}__dedupe_{suffix}"
|
candidate = f"{seed}__dedupe_{suffix}"
|
||||||
if candidate not in seen_tool_ids:
|
if candidate not in seen_tool_ids:
|
||||||
seen_tool_ids.add(candidate)
|
seen_tool_ids.add(candidate)
|
||||||
if value:
|
if raw_key:
|
||||||
pending_tool_ids.setdefault(str(value), deque()).append(candidate)
|
pending_tool_ids.setdefault(raw_key, deque()).append(candidate)
|
||||||
return candidate
|
return candidate
|
||||||
suffix += 1
|
suffix += 1
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user