후보 확장
Candidate expansion은 initial search 이후 관련 tool을 추가합니다. 가장 중요한 확장은 producer discovery입니다. target이 required field를 소비한다면, graph는 그 field를 생산하는 tool을 포함할 수 있습니다.
이렇게 하면 LLM catalog는 작게 유지하면서도 plan synthesis가 required input을 채울 tool을 볼 수 있습니다.
Minimal Example
from graph_tool_call.graphify import expand_candidates_with_producers
expanded = expand_candidates_with_producers(
candidate_names=["cancelOrder"],
tools_by_name=tools_by_name,
max_producers_per_field=2,
max_hops=1,
)
cancelOrder가 orderNo를 요구하고 다른 tool이 orderNo를 produce한다면, target
selection 또는 planning 전에 producer가 candidate list에 추가될 수 있습니다.
Expansion Sources
- deterministic IO contract edge
- OpenAPI link
- manual edge
- promoted run-observed trace edge
- high-confidence semantic link
Inputs
| Parameter | 목적 |
|---|---|
candidate_names | initial retrieved target |
tools_by_name | 이름으로 indexing된 tool metadata |
max_producers_per_field | missing required field마다 추가할 producer 상한 |
max_hops | producer chain을 따라갈 깊이 |
action_priority | producer-like action ordering 옵션 |
Helper는 required kind=data consume field만 확장합니다. context, auth, paging,
search filter는 execution catalog를 폭발시키면 안 됩니다.
Output
반환값은 ordered tool name list입니다. 원래 candidate가 먼저 남고 그 뒤에 producer candidate가 붙습니다.
[
"cancelOrder",
"searchOrders",
"getOrderDetail",
]
Safety Policy
Expansion은 LLM catalog를 과하게 늘리지 않으면서 planning을 도와야 합니다. low-confidence structural edge는 graph inspection에는 남기되, execution-oriented candidate에는 strong evidence를 우선합니다.
권장 기본값:
| Setting | Guidance |
|---|---|
max_hops | 일반 retrieval은 1, target-specific planning에서만 더 크게 |
max_producers_per_field | 1에서 3 |
| Manual edge | deterministic contract evidence로 표현하기 어려울 때만 |
| Trace edge | 단일 observed run이 아니라 promoted 상태만 |
Failure Modes
| 증상 | 가능한 원인 | 조치 |
|---|---|---|
| expanded tool이 너무 많음 | broad required field 또는 높은 max_hops | hop/producer limit 낮추기 |
| producer가 추가되지 않음 | produces metadata 부족 | IO contract 확인 |
| wrong producer가 추가됨 | weak semantic tag | semantic build 또는 alias 보강 |
| LLM에 helper tool이 노출됨 | source catalog에 non-user tool 포함 | collection build 단계에서 filter |
Validation
Candidate expansion은 list size만 보지 말고 plan outcome으로 검증합니다. 좋은 expansion은
평균 candidate count를 크게 늘리지 않으면서 unsatisfied_field failure를 줄입니다.
추적할 값:
- average candidate count
- max candidate count
- plan hit rate
unsatisfied_fieldcount- selector ambiguity count