화려한 부분은 model choice야. 유용한 부분은 file을 읽고, web을 검색하고, URL을 fetch하고, draft를 쓰고, test를 돌리고, workspace를 박살내지 않고 failure를 보고하는 toolbelt다. 많은 agent product는 slogan보다 tool quality에서 갈린다.
read, write, execute를 분리해
list, read, write, delete, shell 실행을 한 vague file_tool에 몰아넣지 마. blast radius로 tool을 쪼개. read tool은 넓어도 되고, write tool은 scope가 있어야 하고, execute tool은 sandbox, timeout, output cap, approval이 필요해.
Tool result는 dump가 아니라 pointer여야 해
search tool은 id, title, URL, snippet, confidence를 돌려줘야지 웹페이지 전체를 토하면 안 돼. file search는 path와 match range를 돌려줘. 모델이 자격을 얻으면 다음 tool이 full content를 가져오면 된다.
def web_search(query: str, max_results: int = 5) -> dict:
raw = search_provider(query, max_results=max_results)
return {
"query": query,
"results": [
{
"id": f"r{i}",
"title": item["title"],
"url": item["url"],
"snippet": item["snippet"][:240],
}
for i, item in enumerate(raw[:max_results])
],
"next_action": "Use fetch_url(url) for the most relevant official source.",
}