ãä¹ ãã¶ãã§ããæŸç°ã§ãïŒ
ãããªãã§ãããã³ãŒãã£ã³ã°ãšãŒãžã§ã³ã䜿ã£ãŠãŸããïŒ
ã³ãŒãã£ã³ã°ãšãŒãžã§ã³ãã«ã¯CursorãWindsurfãClaude CodeãDevinãªã©å€çš®å€æ§ã«ãããŸãã
ãã®èšäºãèªãã§ãããŠããããªãããäœãããã®ã³ãŒãã£ã³ã°ãšãŒãžã§ã³ããå©çšããŠæ¥åã®å¹çåãããŠããã®ã§ã¯ãªãã§ããããïŒ
(ã¡ãªã¿ã«ç§ã¯Cursor掟ã§ãã)
äžéã«ç»å ŽããŠããéããªãã³ãŒãã£ã³ã°ãšãŒãžã§ã³ãã§ããããšã³ãžãã¢ã«ãšã£ãŠå¿ èŠäžå¯æ¬ ãªååšã«ãªãã€ã€ãããŸãã
ãããªã³ãŒãã£ã³ã°ãšãŒãžã§ã³ãã§ãããçããã¯ã©ã®ãããªä»çµã¿ã§å®çŸãããŠãããç¥ã£ãŠããŸããïŒ
ä»çµã¿ãçè§£ããã«ã¯å®éã«äœã£ãŠã¿ãã®ãäžçªã§ãïŒ
ãã®èšäºã§æžãããš
AIãšãŒãžã§ã³ããã¬ãŒã ã¯ãŒã¯ã§ããStrands Agents(以åŸãStrands)ãå©çšãããšãæäœéã®ã³ãŒãã£ã³ã°ãšãŒãžã§ã³ãã§ããã°20è¡ã»ã©ã®ããã°ã©ã ã§å®è£
ã§ããŠããŸããŸãã
ãã®èšäºã¯ãã³ãŒãã£ã³ã°ãšãŒãžã§ã³ãã®ä»çµã¿ãçè§£ããŠãStrandsã«è§Šããããšãã§ããå
容ã«ããŸããã
ãšãŠãç°¡åãªããã°ã©ã ãªã®ã§ã誰ã§ãçè§£ã§ãããšæããŸãïŒ
ãã®èšäºããã³ãŒãã£ã³ã°ãšãŒãžã§ã³ãã®ä»çµã¿ãStrandsãžèå³ãæã€ãã£ããã«ãªãã°å¬ããã§ãã
ã³ãŒãã£ã³ã°ãšãŒãžã§ã³ãã«ã€ããŠ
ã³ãŒãã£ã³ã°ãšãŒãžã§ã³ãã®ä»çµã¿
以åãClineã®ãœãŒã¹ã³ãŒããå
ã«ã³ãŒãã£ã³ã°ãšãŒãžã§ã³ãã®ä»çµã¿ã«ã€ããŠè§£èª¬ããããã°ãæçš¿ããããŸããã
[Cline] ã³ãŒãã£ã³ã°ãšãŒãžã§ã³ãã®ä»çµã¿ããã£ããçè§£ãã
ã³ãŒãã£ã³ã°ãšãŒãžã§ã³ãã«ãããŠFunction Callingã¯äžæ žãšãªãæ©èœã§ããFunction Callingã¯LLMãããã°ã©ã ã®é¢æ°(ããŒã«)ãåŒã³åºãããã®ä»çµã¿ã§ãããLLMã«å©çšå¯èœãªããŒã«ã®æ
å ±ãæž¡ãããšã§ãLLMããã®ããŒã«ãšãã®åŒæ°ãè¿ããšãããã®ã§ãã
ããŒã«ã®å®è¡èªäœã¯LLMãè¡ãããã§ã¯ãããŸããããã®ãããFunction Callingã«ãããããŒã«ã®å®è¡ã¯ã¢ããªã±ãŒã·ã§ã³åŽã§å¶åŸ¡ããå¿
èŠããããŸãããã®Function Callingãå¶åŸ¡ããæ©æ§ã¯ã«ãŒããäž»äœãšãªã£ãŠå®è£
ãããŸãã
ãŸããããäžã€éèŠãªã®ãã·ã¹ãã ããã³ããã§ããã·ã¹ãã ããã³ããã¯LLMã®è¡åãæå°ããåºç€çãªæç€ºã«è©²åœããŸãããŠãŒã¶ãŒããã®å
¥å(ãŠãŒã¶ãŒããã³ãã)ãåŠçããåã«ãLLMã«äžãããã圹å²ãå¶çŽãªã©ãã·ã¹ãã ããã³ãããšããŠå®çŸ©ãããŸãã
ã³ãŒãã£ã³ã°ãšãŒãžã§ã³ãã«ãããŠãã·ã¹ãã ããã³ãããšãŠãŒã¶ãŒããã³ããã®å
å®¹ã«æ²¿ã£ãŠããŒã«ãå®è¡ãããŸãããã®ãããã·ã¹ãã ããã³ããã®è³ªãã³ãŒãã£ã³ã°ãšãŒãžã§ã³ãã®è³ªã«çŽçµãããšãã£ãŠãéèšã§ã¯ãããŸããã
ããããèžãŸãããšãã³ãŒãã£ã³ã°ãšãŒãžã§ã³ãã¯ä»¥äžã®èŠçŽ ã§æ§æãããŠãããšèšããŸãã
1. ã·ã¹ãã ããã³ãã
2. ããŒã«(åŠçã®å®äœ)
3. ããŒã«å¶åŸ¡æ©æ§(å®äœã¯ã«ãŒã)
ã³ãŒãã£ã³ã°ãšãŒãžã§ã³ãã®çš®é¡
ã³ãŒãã£ã³ã°ãšãŒãžã§ã³ãã«ã¯3ã€ã®çš®é¡ããããšèšãããŠããŸãã
| ã¿ã€ã | åäœç°å¢ | ç¹åŸŽ | äŸ |
|---|---|---|---|
| ãšãã£ã¿å | ãšãã£ã¿ | ãŠãŒã¶ãŒãšäžŠèµ°ãããããªå©çšã¹ã¿ã€ã«ã§ããªã¢ã«ã¿ã€ã ã«å·®å確èªã»æ¿èªã»ä¿®æ£ãã | Cursor, Windsurfãªã© |
| CLIå | ã¿ãŒããã« | ãšãã£ã¿åãããèªç«æ§ãé«ããªã£ãŠããããªã¢ã«ã¿ã€ã ã§ã®ãŠãŒã¶ãŒä»å ¥ã¯ã»ãšãã©ãªã | Claude Code, Gemini CLIãªã© |
| ã³ã³ããå | ãµã³ãããã¯ã¹ç°å¢(ã³ã³ãã) | CLIåãããèªç«æ§ãé«ãããŠãŒã¶ãŒã®ä»å ¥ã¯æç€ºåºããšçµæç¢ºèªã®ã¿ | Devin, Codexãªã© |
ããããã®çš®é¡æ¯ã«åäœç°å¢ãç¹åŸŽã¯ç°ãªããŸãããäžã§è¿°ã¹ãã³ãŒãã£ã³ã°ãšãŒãžã§ã³ãã®ä»çµã¿ã¯å ±éããŠããã¯ãã§ãã
AIãšãŒãžã§ã³ããã¬ãŒã ã¯ãŒã¯ã®æ¬è³ª
AIãšãŒãžã§ã³ãã®äœæ/管çãå¹çè¯ãè¡ãããã«AIãšãŒãžã§ã³ããã¬ãŒã ã¯ãŒã¯ããããŸãã
çš®é¡ãšããŠã¯ãLangChain/LangGraph, CrewAI, Mastra, Strandsãªã©ããããŸãã
AIãšãŒãžã§ã³ããã¬ãŒã ã¯ãŒã¯ã®æ¬è³ªã¯ããŒã«å¶åŸ¡æ©æ§ã®æœè±¡åã ãšæã£ãŠããŸãã(å人çã«)
AIãšãŒãžã§ã³ããã¬ãŒã ã¯ãŒã¯ããªãäžçç·ã ãšãAIãšãŒãžã§ã³ããäœãéã«èªåã§ããŒã«å¶åŸ¡æ©æ§ãå®è£
ããå¿
èŠããããŸãã
ããŒã«å¶åŸ¡æ©æ§ãæœè±¡åããŠãç°¡åã«AIãšãŒãžã§ã³ããå®è£
ã§ããããã«ããã®ãAIãšãŒãžã§ã³ããã¬ãŒã ã¯ãŒã¯ã§ãã
Strandsã¯ããŒã«å¶åŸ¡æ©æ§ãAgent LoopãšåŒãã§ããŸãã
ãã¬ãŒã ã¯ãŒã¯æ¯ã«å®è£
ã¯ç°ãªããŸãããã«ãŒããäžå¿ãšããããŒã«å®è¡ãããŠããç¹ã¯ã©ããå
±éãªã¯ãã§ãã
Strandsã ãšç°¡åã«ã³ãŒãã£ã³ã°ãšãŒãžã§ã³ããäœãã
AIãšãŒãžã§ã³ããã¬ãŒã ã¯ãŒã¯ã®æ¬æ¥ã¯ããŒã«å¶åŸ¡æ©æ§ã®æœè±¡åãšèšããŸãããã€ãŸãStrandsã®ãããªAIãšãŒãžã§ã³ããã¬ãŒã ã¯ãŒã¯ãå©çšããã°ã3. ããŒã«å¶åŸ¡æ©æ§ã¯æã«å
¥ã£ããåç¶ã§ãã
ã§ã¯2. ããŒã«ã¯ã©ãã§ããããïŒ
Strandsã®ç¹åŸŽãšããŠãè±å¯ãªçµã¿èŸŒã¿ããŒã«(å
ããçšæãããŠããããŒã«)ãæããããŸãã
https://github.com/strands-agents/tools
ã³ãŒãã£ã³ã°ãšãŒãžã§ã³ããå®è£ ããããã«å¿ èŠãªä»¥äžã®ããŒã«ããã§ã«çšæãããŠããŸãã
- file_read : ãã¡ã€ã«èªã¿èŸŒã¿ãè¡ãããŒã«
- file_write : ãã¡ã€ã«æžã蟌ã¿ãè¡ãããŒã«
- shell : Shellã³ãã³ãå®è¡ãè¡ãããŒã«
æ¬æ Œçãªã³ãŒãã£ã³ã°ãšãŒãžã§ã³ããäœããªãã°å€ãã®ããŒã«ãå¿
èŠã«ãªããŸããClineã®ãœãŒã¹ã³ãŒããèŠãŠããå€ãã®ããŒã«ãå©çšãããŠããããšãããããŸãã
ãã ããäžèš3ã€ã®ããŒã«ãããã°ãæäœéã®ã³ãŒãã£ã³ã°ãšãŒãžã§ã³ãã¯äœæããããšãã§ãããã§ãã
ã€ãŸãStrandsã䜿ãã°2. ããŒã«ãš3. ããŒã«å¶åŸ¡æ©æ§ãæã«å
¥ããŸãã
ãã®ãããã·ã¹ãã ããã³ããããçšæããã°ãã³ãŒãã£ã³ã°ãšãŒãžã§ã³ããå®è£
ã§ããããã§ãã
å®éã«äœã£ãŠã¿ãã
ä»åã¯Python3ã§CLIããåŒã³åºããŠåäœããã³ãŒãã£ã³ã°ãšãŒãžã§ã³ããäœããŸãã
åæ
- Python3(3.10以äž)ãã€ã³ã¹ããŒã«æžã¿
- AWSã®ã¯ã¬ãã³ã·ã£ã«ãç»é²æžã¿
- Bedrockã®Claude 4 Sonnetãå©çšå¯èœã«ãªã£ãŠãã
Strandsã¯ããã©ã«ãã§Bedrockã®Claude 4 Sonnetã«æ¥ç¶ãã«ãããŸãã
ãã®ããã¢ã¯ã»ã¹ããŒ/ã·ãŒã¯ã¬ããã¢ã¯ã»ã¹ããŒãªã©ã®ã¯ã¬ãã³ã·ã£ã«æ
å ±ã®ç»é²ãšãBedrockã§Sonnet4ãå©çšã§ããããã«ã¢ãã«ã¢ã¯ã»ã¹ãæå¹ã«ããŠããå¿
èŠããããŸãã
詳现ã¯ãã¡ãããåç §ãã ããã
æºå
å¿ èŠãªããã±ãŒãžãã€ã³ã¹ããŒã«ããŠãstrandsãå©çšã§ããããã«ããŠãã ããã
pip install strands-agents strands-agents-tools
ããã°ã©ã
以äžã®ããã°ã©ã ãäœæããŸãã
import sys
from strands import Agent
from strands_tools import file_read, file_write, shell
agent = Agent(
tools=[file_read, file_write, shell],
system_prompt=(
"""
ããªãã¯ã³ãŒãã£ã³ã°ã®ãããã§ãã·ã§ãã«ã§ãã
以äžã®ã¿ã¹ã¯ãè¡ã責åããããŸãã
- ãŠãŒã¶ãŒããã®å
¥åã«åŸã£ãŠãã³ãŒããçæãã
- ãŠãŒã¶ãŒããã®å
¥åã«åŸã£ãŠãã³ãŒããä¿®æ£ãã
- ãŠãŒã¶ãŒããã®å
¥åã«åŸã£ãŠãã³ãŒããå®è¡ãã
"""
)
)
if __name__ == "__main__":
agent(sys.argv[1])
ä¿¡ããããªããããããŸããããããã ãã§ã³ãŒãã£ã³ã°ãšãŒãžã§ã³ããšããŠåããŸãã
ç¹ã«ããã°ã©ã ã®èª¬æãäžèŠãªãããã·ã³ãã«ã§ãã
åäœç¢ºèª
以äžã®ããã«Hello WorldãäœæããŠãå®è¡ããŠããããŸãããã
python simple_coding_agent.py "hello worldããã°ã©ã ãPython3ã§äœæããŠãå®è¡ããŠãã ãã"
ãããšä»¥äžã®ãããªåºåã衚瀺ãããŸãã
hello worldããã°ã©ã ãPython3ã§äœæããŠå®è¡ããŸãã
ãŸããhello.pyãã¡ã€ã«ãäœæããŸãïŒ
Tool #1: file_write
Do you want to proceed with the file write? [y/*] y
次ã«ãäœæããããã°ã©ã ãå®è¡ããŸãïŒ
Tool #2: shell
Do you want to proceed with execution? [y/*] y
Hello, World!
å®äºããŸããïŒ Python3ã§hello worldããã°ã©ã ãäœæããæ£åžžã«å®è¡ã§ããŸããã
äœæããããã°ã©ã å
容ïŒ
- ãã¡ã€ã«å: `hello.py`
- å
容: `print("Hello, World!")`
å®è¡çµæãšããŠãHello, World!ããåºåãããŸããã
file_writeããŒã«ã§ãã¡ã€ã«ã«Hello Worldããã°ã©ã ãæžã蟌ãã§ãshellããŒã«ã§ãããå®è¡ããŠããŸãã
file_writeãšshellã¯å®è¡æã«æ¿èªãå¿
èŠãªä»æ§ã«ãªã£ãŠããŸãã(ç°å¢å€æ°BYPASS_TOOL_CONSENTãTrueã«ã»ããããŠãããšããã®æ¿èªãã¹ãããã§ããŸãã)
åºåãããhello.pyã¯ä»¥äžã®éãã§ãã
print("Hello, World!")
ã·ã³ãã«ãããã®ã§ãå°ãã ãåã£ããã®ãåºåããŠããããŸãããã
python simple_coding_agent.py "hello worldããã°ã©ã ãæ¹ä¿®ããŠãã ãããåºåã«çŸåšã®æå»ã衚瀺ããããã«ããŠãã ããã"
hello worldããã°ã©ã ãæ¹ä¿®ããŠãçŸåšã®æå»ã衚瀺ããããã«ããŸããããŸããæ¢åã®hello worldããã°ã©ã ããããã©ãã確èªããŠããäœæã»ä¿®æ£ããŸãã Tool #1: file_read bedrock threw context window overflow error Tool #2: file_read æ¢ã«hello.pyãã¡ã€ã«ãããããšã確èªããŸããããŸãçŸåšã®hello.pyã®å 容ã確èªããŠãããæå»è¡šç€ºæ©èœã远å ããŸãããã Tool #3: file_read çŸåšã®hello.pyã¯éåžžã«ã·ã³ãã«ãªããã°ã©ã ã§ããããããæ¹ä¿®ããŠçŸåšã®æå»ã衚瀺ããããã«ããŸãã Tool #4: file_write Do you want to proceed with the file write? [y/*] y æ¹ä¿®ããããã°ã©ã ãå®è¡ããŠåäœã確èªããŠã¿ãŸãããã Tool #5: shell Do you want to proceed with execution? [y/*] y Hello, World! çŸåšã®æå»: 2025幎08æ03æ¥ 17æ41å28ç§ å®ç§ã§ãïŒhello worldããã°ã©ã ã®æ¹ä¿®ãå®äºããŸããã ## æ¹ä¿®å 容 1. **datetimeã¢ãžã¥ãŒã«ã®ã€ã³ããŒã**: çŸåšã®æå»ãååŸããããã«datetimeã¢ãžã¥ãŒã«ã远å ããŸããã 2. **çŸåšæå»ã®ååŸ**: `datetime.datetime.now()`ã䜿çšããŠçŸåšã®æå»ãååŸããŸãã 3. **æå»ã®è¡šç€º**: `strftime()`ã¡ãœããã䜿çšããŠãæ¥æ¬èªã§èªã¿ããã圢åŒïŒå¹Žææ¥ æåç§ïŒã§æå»ã衚瀺ããããã«ããŸããã 4. **åºåã®æ¹å**: "Hello, World!"ã®åŸã«æ¹è¡ããŠçŸåšã®æå»ã衚瀺ããããã«ããŸããã ## å®è¡çµæ ããã°ã©ã ãå®è¡ãããšä»¥äžã®ãããªåºåã«ãªããŸãïŒ Hello, World! çŸåšã®æå»: 2025幎08æ03æ¥ 17æ41å28ç§ ãã®ããã°ã©ã ã¯å®è¡ãããã³ã«ç°ãªãæå»ã衚瀺ãããHello, World!ããšããåºæ¬çãªã¡ãã»ãŒãžã«å ããŠãå®çšçãªçŸåšæå»ã®æ å ±ãæäŸããããã«ãªããŸããã
ãŸãfile_readã«ãŠhello.pyã®å 容ã確èªããŠãããç·šéãšå®è¡ãããŠããŸãã
ãã®ããã«20è¡ã»ã©ã®ç°¡åãªããã°ã©ã ã§ã³ãŒãã£ã³ã°ãšãŒãžã§ã³ããäœãããšãã§ããŸããïŒ
ãããŸã§æäœéã®ã³ãŒãã£ã³ã°ãšãŒãžã§ã³ã
ä»åäœã£ãã³ãŒãã£ã³ã°ãšãŒãžã§ã³ãã¯ãæäœéã®ã³ãŒãçæ/ç·šé/å®è¡ããã§ããŸããã
CursorãClaude Codeãªã©ã«æ¯ã¹ããšãããŸããŸãªæ©èœãè¶³ããŠããŸããã
äŸãã°ãã»ãã·ã§ã³ç®¡çãã§ãã
ä»åäœã£ãã³ãŒãã£ã³ã°ãšãŒãžã§ã³ãã¯äŒè©±å±¥æŽãä¿æããŠããŸããã
> python simple_coding_agent.py "ããã«ã¡ã¯ïŒç§ã®ååã¯ãžã§ã³ã§ã" ããã«ã¡ã¯ããžã§ã³ããïŒã¯ãããŸããŠïŒ ç§ã¯ã³ãŒãã£ã³ã°ã®ãããã§ãã·ã§ãã«ãšããŠã以äžã®ããšããæäŒãã§ããŸãïŒ - **ã³ãŒãã®çæ** - ããªãã®èŠä»¶ã«åºã¥ããŠæ°ããã³ãŒããæžããŸã - **ã³ãŒãã®ä¿®æ£** - æ¢åã®ã³ãŒãã®æ¹åãä¿®æ£ãè¡ããŸã - **ã³ãŒãã®å®è¡** - ã³ãŒããå®éã«å®è¡ããŠåäœç¢ºèªãããŸã äœãããã°ã©ãã³ã°ã«é¢ããŠãæäŒãã§ããããšã¯ãããŸããïŒã©ããªèšèªã§ããã©ããªãããžã§ã¯ãã§ãåãã§ãµããŒãããŸãïŒ äœããå§ããŸããããïŒ
> python simple_coding_agent.py "ç§ã®ååãããããŸããïŒ" ç³ãèš³ãããŸããããããªãã®ãååãæããŠããã ããŠãããŸãããç§ã¯éå»ã®äŒè©±å±¥æŽãæã£ãŠããªããããããªãã®ååãå人æ å ±ãç¥ãããšãã§ããŸããã ãããããããã°ããååãæããŠããã ããŸããïŒãŸããäœãã³ãŒãã£ã³ã°ã«é¢ãããæäŒããã§ããããšãããã°ããæ°è»œã«ã声ãããã ãããããã°ã©ã ã®äœæãä¿®æ£ãå®è¡ãªã©ã®ãµããŒãããããŠããã ããŸãã
ã芧ã®ããã«ãäŒè©±å±¥æŽãä¿æãããŠããŸããã
å®çšçãªã³ãŒãã£ã³ã°ãšãŒãžã§ã³ãã«ããããã«ã¯äŒè©±å±¥æŽãä¿æ/管çã§ããããã«ããå¿
èŠããããŸãã
(ã¡ãªã¿ã«Strandsã§ã¯äŒè©±å±¥æŽã¯ã»ãã·ã§ã³ãšããŠç®¡çããææ³ããããŸã)
ãŸãCursorãäŸã«æãããšãCursorã§ã¯ãããžã§ã¯ãå
šäœã®ã³ãŒããã€ã³ããã¯ã¹åããŠããããžã§ã¯ãå
šäœã®ã³ãŒãå
šäœã俯ç°ããŠææ¡ããæ©èœããããŸãã
ä»ã®ã³ãŒãã£ã³ã°ãšãŒãžã§ã³ãã«ãåãè¶£æšã®æ©èœããããããã«ãã£ãŠå¹çããã³ãŒããçè§£ããŠç·šéãªã©ãã§ããããã«ãªã£ãŠããŸãã
ãããä»åå®è£ ããã³ãŒãã£ã³ã°ãšãŒãžã§ã³ãã«ã¯ããããããŸããã
å®çšçãªã³ãŒãã£ã³ã°ãšãŒãžã§ã³ããäœãããšãããšãèæ
®ããªããŠã¯ãããªãããšããããããããŸãã
ãã®ãããä»åã®ã³ãŒãã£ã³ã°ãšãŒãžã§ã³ãã¯ãããŸã§ã³ã¢ãªéšåã®å®è£
ã§ããããšã¯ãèªèãã ããã
ãŸãšã
- ã³ãŒãã£ã³ã°ãšãŒãžã§ã³ãã¯ããŒã«/ããŒã«å¶åŸ¡æ©æ§/ã·ã¹ãã ããã³ããããæã£ãŠãã
- AIãšãŒãžã§ã³ããã¬ãŒã ã¯ãŒã¯ã¯ããŒã«å¶åŸ¡æ©æ§ãæœè±¡åãããã®
- Strandsã¯çµã¿èŸŒã¿ããŒã«ãè±å¯ã§ãããç°¡åãªãšãŒãžã§ã³ãã§ããã°ããã«å®è£ ã§ãã
ãããã§ããã§ããããïŒã³ãŒãã£ã³ã°ãšãŒãžã§ã³ãã®ä»çµã¿ãã€ã¡ãŒãžãã€ã€ãStrandsè§Šã£ãŠã¿ããããªãšæã£ãŠããã ããã幞ãã§ãïŒ
Strandsã®æ
å ±ã¯ãŸã ãŸã äžè¶³ããŠãããšæãã®ã§ãä»åŸãããã°ã«ãŠçºä¿¡ããŠãããããšæã£ãŠããŸãïŒ
ã§ã¯ïŒ