
Strands Agents의 도구 전달 방식 3가지를 시도하다
요약
Strands Agents를 활용하여 에이전트에게 도구를 전달하는 세 가지 방식(기본 도구, 커스텀 도구, MCP)을 실습합니다. 공식 문서와 서적을 바탕으로 단순 에이전트부터 도구가 결합된 에이전트까지 단계별 구현 과정을 다룹니다.
핵심 포인트
- Strands Agents의 세 가지 도구 전달 방식 실습
- 기본 제공 도구, 커스텀 함수, MCP 연동 방법 비교
- 문서 기반 학습을 통한 에이전트 구현 역량 강화
- Claude Code를 학습 보조 도구로 활용하는 방법
- Strands Agents를 스스로 이해하기 위해 문서를 참고하여 에이전트를 작성합니다.
- 간단한 에이전트를 작성하고, 그 에이전트에 Tool을 부여하는 단계까지 구현합니다. 다음 3가지를 시도합니다.
- Strands Agents Tools (사전에 준비된 것)
- 커스텀 도구 작성
- MCP를 도구로 전달
지금까지는 Claude나 Codex, Kiro 등의 AI 에이전트에게 구현을 맡겨왔습니다.
하지만, AI의 생성물을 정확하게 이해하지 못하고 있는 제 자신을 발견했습니다.
AI 에이전트로 코딩을 시키는 것은 편하지만, 지금 방식으로는 제 실력이 진보하지 않으므로 처음부터 문서 기반으로 학습을 진행합니다.
우선, Strands Agents의 공식 문서를 참고하고 있습니다.
문서와 함께 다음 서적을 읽으며 이해하며 진행하고 있습니다.
Amazon Bedrock AgentCore 실전 입문 Strands Agents로 구축하는 AI 에이전트 [AWS 심층 가이드]
막힐 때나 정보 보충 등에 대해서는, Strands Agents MCP Server를 연동한 ClaudeCode를 과외 선생님처럼 활용하여 학습에 도움을 받고 있습니다.
할 일은 다음 4가지입니다. 문서나 서적을 참고하여 코드를 작성 및 실행해 봅니다.
- 특히 기능이나 도구를 가지지 않는 심플한 에이전트 작성
- Strands Agents Tools (사전에 준비된 것)를 사용하여 현재 시각을 답변하는 에이전트 작성
- 커스텀 도구 (상품명으로부터 가격을 취득)를 가진 에이전트 작성
- MCP (AWS Knowledge MCP Server)를 도구로 가진 에이전트 작성
에이전트의 기능을 확장할 수 있는 것입니다.
도구를 통해 다양한 기능을 부여할 수 있습니다.
도구에는 다음과 같은 3가지 종류가 있습니다. 이번에는 3가지 모두 시도해 보겠습니다.
| 종별 | 개요 |
|---|---|
| Strands Agents Tools | 사전에 준비되어 있는 도구군. 커뮤니티 주도 프로젝트인 듯함 |
| ... |
환경 준비로서 다음을 실행합니다.
# 가상 환경을 작성
python -m venv .venv
# 가상 환경을 활성화
...
다음 Strands Agents의 퀵 스타트(Quick Start)를 참고하여 최소한의 응답을 해주는 에이전트를 작성합니다.
agent.py에 다음과 같이 기재합니다. 이것은 심플하게 Claude Haiku에게 "지금 몇 시?"라고 물어 에이전트가 답변하도록 하는 단순한 것입니다.
from strands import Agent
agent = Agent(
model="global.anthropic.claude-haiku-4-5-20251001-v1:0" # Claude Haiku 4.5
...
응답은 다음과 같이 "현재 시각을 알 수 없다"라고 돌아옵니다.
지금 사용 중인 Claude Haiku에는 WEB 검색이나 현재 시각 취득 수단이 없으며, 모델이 알고 있는 정보만을 답변할 수 있는 상태입니다.
% python agent.py
죄송합니다만, 저는 현재 시각을 알 수 없습니다.
저는 실시간 정보에 액세스할 수 없기 때문에 정확한 시각을 제공할 수 없습니다.
...
지금까지의 상태로는 에이전트가 현재 시각을 취득할 수 없으므로, 시각 취득 도구를 전달해 줍니다.
도구를 사용함으로써 단순한 텍스트 생성 이외의 액션을 에이전트가 실행할 수 있게 됩니다.
도구에는 Python 함수, Strands Agents Tools, MCP가 있지만, 이번에는 미리 준비된 도구인 Strands Agents Tools를 사용합니다.
Strands Agents Tools는 다음에서 확인할 수 있습니다. 많은 기능이 제공되고 있으므로 직접 구현하는 수고를 덜 수 있을 것 같습니다.
이번에는 현재 시각을 취득하고 싶으므로 current_time이라는 도구를 사용합니다. 다음에서 해당 부분으로 이동할 수 있습니다.
strands_tools 패키지에서 필요한 도구를 임포트(import)하고, Agent 클래스의 tools 인수에 배열 형식으로 지정합니다.
from strands import Agent
from strands_tools import current_time # strands_tools 패키지에서 필요한 도구를 임포트
agent = Agent(
...
도구를 설정한 에이전트(Agent)를 실행해 보겠습니다.
Tool #1: current_time
표시된 대로, 도구를 사용하여 현재 시각을 가져왔습니다.
이로써 사전에 준비된 도구인 Strands Agents Tools를 사용한 에이전트를 생성할 수 있었습니다.
실행 전에는 다음 명령어를 실행해 주세요.
pip install strands-agents-tools
% python agent_tool.py
현재 시각을 확인합니다.
Tool #1: current_time
...
Python 함수에 @tool 데코레이터(decorator)를 부여함으로써, 에이전트의 도구로 이용할 수 있습니다.
해당 문서는 다음과 같습니다.
단순하게 상품명으로부터 가격을 문장으로 반환하는 함수를 작성하여 도구로 전달해 줍니다.
프롬프트(prompt)에 우마이보(うまい棒)의 가격을 물어봅니다.
from strands import Agent, tool
@tool
def get_price(item_name: str) -> str:
...
커스텀 도구(custom tool)를 설정한 에이전트를 실행해 보겠습니다.
Tool #1: get_price
표시된 대로, 커스텀 도구를 사용하여 가격을 가져왔습니다.
% python agent_tool_customs.py
Tool #1: get_price
우마이보의 가격은 **100엔**입니다!
...
get_price는 고정적으로 100엔을 반환할 뿐인 더미(dummy)입니다. 만약을 위해 보충 설명을 덧붙입니다.
마지막으로 MCP를 도구로서 에이전트에게 전달하여 사용하게 합니다.
관련 문서는 다음과 같습니다.
사용할 MCP 서버는 다음과 같습니다. 자주 사용하는 AWS Knowledge MCP Server를 전달합니다.
from mcp.client.streamable_http import streamablehttp_client
from strands import Agent
from strands.tools.mcp import MCPClient
...
AWS Knowledge MCP Server의 도구를 사용하여 답변하고 있네요.
% python agent_tool_mcp.py
Amazon Bedrock AgentCore에 대해 검색해 보겠습니다.
Tool #1: aws___search_documentation
...
평소에는 코딩 에이전트(coding agent)에게 의지하여 구현이나 조사 등을 맡기고 있지만, 스스로 문서를 읽으며 시도해 보았습니다.
단 몇 줄의 코드만으로 에이전트에 추가 기능이나 정보를 간단히 전달할 수 있어 매우 편리하다는 것을 새삼 느꼈습니다.
지금까지 핸즈온(hands-on) 등을 통해 진행한 범위이긴 하지만, 단계를 밟아 학습하는 것은 역시 즐겁고 지식이 되는 것 같습니다.
에이전트를 사용하는 입장에서 만드는 사람이 되기 위해 계속해서 직접 움직이고 싶네요.
서두에도 기재했지만, 다시 한번 참고한 문서와 서적을 기재합니다.
막혔을 때나 정보의 보충 등에 대해서는, Strands Agents MCP Server를 연동한 ClaudeCode를 과외 선생님처럼 동작하게 하여 학습에 활용하고 있습니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Qiita AI의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기