æ¬èšäºã¯æ¥æ¬ãªã©ã¯ã«ãéå¶ããäžèšMeetupã§çºè¡šäºå®ã®å 容ã«ãªããŸããçºè¡šãŸã§ã«ä»åŸãå 容ã¯äºåãªã倿Žãããå¯èœæ§ãããããšãããããããäºæ¿ãã ããã
â»ã»ãããŒå®æœæã®åç»ã以éã®èšäºãšåãå 容ã§ãã
â»ã»ãããŒå®æœæã«æ²¢å±±ã®ã質åãããã ãããããšãããããŸãããã»ãããŒæéå ã«åçã§ããªãã£ãã質åããæ£ç¢ºã«åçã§ããªãã£ãã質åã®è£è¶³ãæåŸã®ã³ã¡ã³ãæ¬ã«çºããŸããã®ã§äœµããŠã確èªãã ããã
çæAIã¢ããªã®ã³ã³ã»ããã¯ãAIãšãŒãžã§ã³ãããž
çæAIãå©çšããã¢ããªã±ãŒã·ã§ã³ã®æ§ã ãªãªãã¡ã¬ã³ã¹å®è£ ãããäžãäŒæ¥çšéã§ã¯äžçäžã®ãŠãŒã¶ãŒãRAGãšåŒã°ãããœãªã¥ãŒã·ã§ã³ã«ãã©ãŒã«ã¹ããã®ã2023幎ã2024幎ã ã£ããšæããŸãã
RAGã¯ãå¿çå質ããããªããããLLMã¯ãŠãœãã€ãããªã©ãšèšãããªãããæ¥µããŠæçšãªãœãªã¥ãŒã·ã§ã³ã§ããããšã¯çãããããªããä»åŸããšã³ãã³ã¹ããç¶ãå®çªã®ãœãªã¥ãŒã·ã§ã³ã«ãªãããšã¯ééããããŸããã
â»RAGãšã¯äœã§ããïŒãšããæ¹ã¯ãã¡ãã®èšäºããåç §ãã ããã
ãããŠåããã¯äŒæ¥ã RAGã®æ¬¡ã«æã¡åºããŠããã³ã³ã»ãããæ¬èšäºã®äž»é¡ããAIãšãŒãžã§ã³ããã§ãã
RAGã«éããããããŸã§ã®çæAIã¢ããªã¯ãLLMã«åçãããã ãšããããªãã·ã³ãã«ãªå®è£ ãäžå¿ã ã£ãã®ã«å¯ŸããŠãAIãšãŒãžã§ã³ãã¯ãLLMã«åãããã ãšãããããæè»ã§æ±çšæ§ã®ããå®è£ ã ãšèšããŸãã
ãæ è¡ã«è¡ãããããšAIã«è©±ãããããšããæ è¡å ã®ææ¡ãã¹ã±ãžã¥ãŒã«ã®ç¢ºèªããã©ã€ããããã«ãã¿ã¯ã·ãŒã®äºçŽãªã©ãäŒè©±ããªããå šãŠãAIããã£ãŠããããšããè³ããå°œãããã®ã¢ã¬ã§ãã
ããžãã¹ã®äžçã§ãããšããèªç€Ÿã®äººæ°ååã®å£²ãäžãåæãè¡ãããŒã±ãã£ã³ã°ãåšåº«é©æ£åããããããšAIã«è©±ãããããšãAIãèªåŸçã«SNSã§äººæ°ååã調æ»ãããã調æ»çµæããããŒã¿ãåæãã瀟å ã®SCMã«é£æºããŠåšåº«ã®éäžè¶³ãã³ã³ãããŒã«ããŠããããããªã€ã¡ãŒãžã§ãã
俯ç°ãããšããAIãšãŒãžã§ã³ãããšã¯ãã人éã®ä»£ããã«è€éãªã¿ã¹ã¯ãèªåŸçã«å®è¡ãããã·ã¹ãã ãšå®çŸ©ã§ããçŸåšåããã¯äŒæ¥ã¯ãã®ãããªSFæ ç»ããªããã®äžç芳ãå®çŸããããŒã¹ã®æè¡ãšããŠAIãšãŒãžã§ã³ãã®éçºã«å®å šã«ã·ããããŠããç¶æ³ã§ãã
çŸåšããAIãšãŒãžã§ã³ããã¯ãã以å€ã«ãAgentic AIãããAgentic ã¯ãŒã¯ãããŒããªã©ãšåŒã°ããããšããããåŒç§°ã ãã§ãªãããã®å®çŸ©ã察象ã®è£œåãææ§ã§ããæ¬èšäºã«èšèŒããŠããå®è£ ã¯ãã®äžã€ã§ããããã®ä»ããªã³ãã¬ãã¹ãã¯ã©ãŠã(SaaS/PaaS/IaaS)ã®è£œåãLLMã§ãšã³ãã³ã¹ããæ©èœãç·ç§°ããŠAIãšãŒãžã§ã³ããšåŒãã§ãããããããšããããŸãã
AIãšãŒãžã§ã³ãã®èŠçŽ æè¡
å®ã¯AIãšãŒãžã§ã³ãã§äœ¿ãããèŠçŽ æè¡ã¯LLMãæµè¡ãã ããããªãåæã®ããããæ¢ã«ãããŸããã çŸåšåããã¯äŒæ¥ãéçºããŠããAIãšãŒãžã§ã³ãé¢é£ã®ã©ã€ãã©ãªãã¯ã©ãŠããµãŒãã¹ã¯äž»ã«äžèšã®èŠçŽ æè¡ãããŒã¹ã«ãªã£ãŠããŸãã
ãã¡ãããã以å€ã«ãæ²¢å±±ã®æè¡ãå¿çšãããŠããŸãããäžè¿°ãããããªäžç芳ã®å®çŸã«çŽæ¥çã«åœ±é¿ããŠããä»çµã¿ãäžèšã«ãªããããããçæAIã¢ããªçéã§ã¯ä»¥åããããã§ãŠããããŒã¯ãŒãã§ãã®ã§æ¢ã«ãåãã®æ¹ã ãå€ãã¯ãã
- ãšãŒãžã§ã³ãã»ã·ã¹ãã
- Function Calling(ããã㯠MCP)
- ãã«ããšãŒãžã§ã³ã
ãšãŒãžã§ã³ãã»ã·ã¹ãã
ãšãŒãžã§ã³ãã¯æ¥æ¬èªã§ä»£ç人ãšããæå³ã§ããã€ãŸããšãŒãžã§ã³ãã»ã·ã¹ãã ãšã¯ ãŠãŒã¶ãŒã®ä»£ããã«ãæ§ã ãªåŠç(æ€çŽ¢ã調æ»ãåæãããã°ã©ã ãªã©ãªã©)ãå®è¡ããŠããã代ç人(ããã°ã©ã ) ãšããããšã«ãªããŸãã
ãã®ãšãŒãžã§ã³ããšåŒãã§ããããã°ã©ã ããŠãŒã¶ãŒã®æãåŠçã èªåŸçã«è¡ã£ãŠããããã«èŠããä»çµã¿ã¯ãLLMã«ãã£ãŠãšãŒãžã§ã³ãã«ã圹å²ããäžããããããšã§æãç«ã£ãŠããŸãã
äŸãã°äžå³ã®ãããªäŸã®å ŽåããSNSãæ€çŽ¢ãããŠãŒã¶ãŒã®ããã³ããã«å¿çããããšããã圹å²ããLLMã«ãã£ãŠãšãŒãžã§ã³ãã«äžãããããšããã€ã¡ãŒãžã§ãããã®åœ¹å²ã«ãã£ãŠããŠãŒã¶ãŒã®ããã³ããããâ ã©ã®ãããªåŠçãå¿ èŠãªã®ãããèšç»ãããâ¡ãã®åŠçããå®è¡ãããâ¢ãã®å®è¡çµæããæçµçãªãå¿çãçæã ããŸãã
- èšç»ïŒSNSãæ€çŽ¢ã人æ°ã®ååãæ¢ã
- å®è¡ïŒSNSã®æ€çŽ¢ããã°ã©ã ãå®è¡ãã
- å¿çïŒSNSã®æ€çŽ¢çµæãããšã«å¿çãçæãã
ãã®ããã«ãŠãŒã¶ãŒã®ããã³ããã«å¿ããŠãèªåŸçã«å¿ èŠãªåŠçã倿ããå®è¡ããŠãããä»çµã¿ã®ããŒã¹ãšãªãæè¡ããšãŒãžã§ã³ãã·ã¹ãã ã§ãã
LLMã䜿ã£ãã¢ããªã±ãŒã·ã§ã³ãšããŠããããã¥ã¡ã³ãæ€çŽ¢(RAG)ãããããŒã¿ããŒã¹åæããªã©ããããŸãããå®ã¯ãããäžè¿°ãããããªãšãŒãžã§ã³ãã·ã¹ãã ã®äžçš®ã§ãã
ããã¥ã¡ã³ãæ€çŽ¢(RAG)ã¯ãŠãŒã¶ãŒããã³ããã®å 容ã«é¢ä¿ããææžããã¯ãã«ããŒã¿ããŒã¹ããæ€çŽ¢ãããšãã圹å²ãæã£ããšãŒãžã§ã³ãã§ããããããŒã¿ããŒã¹åæããåæ§ã«ãŠãŒã¶ãŒããã³ããã®å 容ãSQLã«å€æãRDBãæ€çŽ¢(åæ)ãããšãã圹å²ãæã£ããšãŒãžã§ã³ãã ãšããããšã«ãªããŸãã
RAG(ææžæ€çŽ¢)
https://qiita.com/ksonoda/items/9a40c1017613d3ccf1e0
ããŒã¿ããŒã¹åæ
https://qiita.com/ksonoda/items/60ccc2a4fde15906654a
ãŠãŒã¶ãŒããã³ããã®å 容ã«å¿ããŠãæ§ã ãªåŠçãèªåŸçã«å®è¡ããŠããããšãŒãžã§ã³ãã§ããããã® ãæ§ã ãªåŠçãå®è¡ããããšããéšåãã©ã®ãããªä»çµã¿ã§æãç«ã£ãŠããã®ãïŒ ãšãããšãããéåžžã«éèŠãªèŠçŽ æè¡ã«ãªããŸãã
ã€ãŸããäžè¿°ããäŸã§ãããšããâ¡SNSã®æ€çŽ¢ããã°ã©ã ãå®è¡ããããšããéšåãã©ã®ããã«èªåŸçã«å®è¡ãããã®ãïŒãšããããšã§ãããã®ããŒã¹ãšãªãæè¡ãFunction Callingã§ãã
Function Calling(Tool CallingãTool UseãTools)
ChatGPTãGeminiãªã©åºæ¥äžãã£ããµãŒãã¹ã®ã¿ãå©çšããŠããæ¹ã«ã¯æ³åãã«ãããããããŸããããLLMåäœã§ã¯ãäžããããããã¹ãã«åºã¥ããããã¹ãã®çæãããã§ããããŠã§ãæ€çŽ¢ãå®è¡ããããSNSãæ€çŽ¢ããããšããããšã¯ã§ããŸããã
LLMã¯éå»ã®ããŒã¿ãåŠç¿ããæ©æ¢°åŠç¿ã®äºæž¬ã¢ãã«ã®ããçŸåšã®ããŒã¿(ãªã¢ã«ã¿ã€ã ã®ããŒã¿)ã«é¢ããå¿çã¯ã§ããŸãããLLMåäœã§ã¯ä»äœæãªã®ãã§ããçããããšã¯ã§ããªããã§ãã
çŸåšã®ããŒãžã§ã³ã®ChatGPTãGeminiãªã©ããªã¢ã«ã¿ã€ã ã«ãŠã§ãæ€çŽ¢ãå®è¡ããŠãããã®ã¯ãLLM以å€ã«ãã®ãããªããã°ã©ã ã远å ã§å®è£ ãããŠããããã§ãã
äŸãã°äžå³ã®ããã«ã仿¥ã®å€©æ°äºå ±ãšãããªã¢ã«ã¿ã€ã ã®æ å ±ãå«ãã ããã¹ããçæãããå ŽåãOpenWeatherãªã©å€©æ°æ å ±ãæäŸããŠãããµãŒãã¹ã«éœåºŠã¢ã¯ã»ã¹ããå€©æ°æ å ±ãååŸããå®è£ ãå¿ èŠã«ãªããŸãã(äžå³ã®èµ€æ ã®éšå)ãã®ããã«ãLLMãšãLLMã®å€ã®äžçãã飿ºãããããã°ã©ã ãéçºã§ããä»çµã¿ãFunction Callingã§ãã
LLMåäœã§ã¯å®è¡ã§ããªããåç(ãªã¢ã«ã¿ã€ã )ãªæ å ±ååŸãããå€éšã·ã¹ãã ãšã®é£æºããå¯èœã«ãªããçæAIã¢ããªã®é©çšç¯å²ãå€§å¹ ã«æ¡åŒµããããšãã§ããæ¥µããŠéèŠãªä»çµã¿ãšãªããŸãã
ãããŠãããã§ãã ãLLMã®å€ã®äžçã ãšã¯äŸãã°ä»¥äžã®ãããªãã®ã§ãã
-
ã€ã³ã¿ãŒãããã«å ¬éãããŠãããµãŒãã¹ãšã®é£æº
æ¯æ¥ç§éãå©çšãããããªã€ã³ã¿ãŒãããäžã§å ¬éãããŠããæ§ã ãªãµãŒãã¹ã¯APIã§ã¢ã¯ã»ã¹ã§ããããã«ãªã£ãŠãããã®ãå€ãã®ã§ããããå©çšããŠFunction Callingãäœããã¿ãŒã³ -
瀟å ã·ã¹ãã ãšã®é£æº
çŸç¶ããŠãŒã¹ã±ãŒã¹ãšããŠæããããã±ãŒã¹ã¯å°ãªãããã«æããŸãããä»åŸçæAIã¢ããªã®é©çšç¯å²ãåºããã°è²¡åã人äºãçç£ã調éã販売ã·ã¹ãã ãªã©ãFunction Callingã§é£æºãããã¿ãŒã³ -
æ¥åã¢ããªããŠãŒã¶ãŒéçºã¢ããªãšã®é£æº
瀟å ã·ã¹ãã ãšè¿ããã±ãŒã¹ã§ãããRDBãNoSQLãDWHãããŒã¿ã¬ã€ã¯ãETLãBIããŒã«ãªã©ãšé£æºãããã¿ãŒã³
ãã®ããã«æ²¢å±±ã®ãµãŒãã¹ãšé£æºããããšã§ããã䟿å©ã§æ±çšçãªã¢ããªã±ãŒã·ã§ã³ã«ãªãããšã¯ããããã«ãªããšæããŸãããŸããAPI Callã ãã§ãªãã¹ã¯ã¬ã€ãã³ã°ãOSã³ãã³ããªã©æ§ã ãªã¿ã€ãã®åŠçã Function CallingãšããŠå®çŸ©ã§ããŸãããã äºå®äžã飿ºã§ããªããã®ãããŸããã
ç¹ã«ãã瀟å ã·ã¹ãã ãšã®é£æºãããæ¥åã¢ããªããŠãŒã¶ãŒéçºã¢ããªãšã®é£æºãã®å Žåã¯ãFunction Callingã§åçºæ³šã®åŠçãè¡ã£ãããããŒã¿åæãªã©ããŒã¿ã®åŠçãè¡ã£ããããããšãã§ããããã«ãªããŸãããããæå³ãããšããã¯ãåã« ãLLMã®å€ã®äžçããæ å ±ãåŸãã ãšãããããããã ãLLMã®å€ã®äžçãæäœããã ãšããåŠçã«ãªãããŸãã«åé ã«èª¬æããAIãšãŒãžã§ã³ãã®äžç芳ãå®çŸããããã®ä»çµã¿ã ãšèšããŸãã
Function Callingã Tool Callingã¯OpenAIçšèªã§ãããã®ä»ã®è£œåã§ã¯Tools, Tool, Tool Useãªã©ãšããåŒç§°ãããã§ãŠããŸãããåºæ¬çã«åãããšãèšã£ãŠãããšæã£ãŠåé¡ãããŸããã
â»Function Callingã®è©³çްã«ã€ããŠã¯å¥èšäºããããŸãã®ã§ãèå³ã®ããæ¹ã¯ãåç §ãã ããã
ãã®ããã«ãAIãšãŒãžã§ã³ãã®ã¢ããªã±ãŒã·ã§ã³ã§ã¯æ§ã ãªåŠçãFunction CallingãšããŠå®çŸ©ãããšãŒãžã§ã³ãã«é¢é£ä»ããããšã§æçšãªã¢ããªã±ãŒã·ã§ã³ãéçºããããšãã§ããããã«ãªã£ãŠããã®ã§ãããæ²¢å±±ã®Function CallingããšãŒãžã§ã³ãã«é¢é£ä»ãããšããã€ãã®åé¡ãçºçããããšããããŸãã
ãã®äž»ã ã£ããã®ãäžèšã«ãªããŸãã
- ããã³ãããè€éã ã£ããæœè±¡çããããšãšãŒãžã§ã³ããçè§£ã§ããªã
- 沢山ã®Function Callingãå®çŸ©ãããšæ³å®ããFunction Callingãéžæãããªã
- 沢山ã®Function Callingãå®çŸ©ãããšæ³å®ããé åºã§Function Callingãå®è¡ãããªã
ãã®ãããªããšãèµ·ããçç±ã¯ãFunction Callingã®éžæãšå®è¡é åºãæ°ãŸãããªLLMã«ãã£ãŠæ±ºãŸãããã§ãã(LLMãšã¯æ©æ¢°åŠç¿ã§äœãããäºæž¬ã¢ãã«ã§ãããäºæž¬ã¢ãã«ãåºåããçµæã¯ãããŸã§æšè«çµæãã€ãŸãåžžã«100%æ£ãããšããããšã«ã¯ãªããªãããã§ãã)
䟿å©ãªã¢ããªã±ãŒã·ã§ã³ã«ã¯åŸã ã«ããŠè€éãªåŠçãã€ããã®ã§ããã®ããã«æ§ã ãªFunction Callingãå®çŸ©ãããã®ã«ãããããããšæ³å®éãã®åäœã«ãªããªããšããæ¬æ«è»¢åãªç¶æ³ãçºçããŠããŸããŸãã
ãã®ãããªç¶æ³ãå¯èœãªéãåé¿ããææ³ãšããŠãã«ãã»ãšãŒãžã§ã³ãããããŸãã
æè¿ã§ã¯ãFunction Calling ã®ä»£æ¿ææ³ãšã㊠MCPïŒModel Context ProtocolïŒãéåžžã«æ³šç®ãéããŠããŸããLLM ãå€éšãµãŒãã¹ãšé£æºãLLMãåŠç¿ããŠããªãæ å ±ãåŸããå€éšã·ã¹ãã ãæäœã§ãããšããç¹ã§ã¯ Function Calling ãšåæ§ã§ãããMCPã¯äœãšãã£ãŠãAnthropicç€Ÿãæ¥çæšæºã®ãããã³ã«ãç®æããŠéçºããæè¡ã§ããæ§ã ãªäŒæ¥ãèªç€ŸãµãŒãã¹ã®MCP(ããŒã«)ããã®å ±éãããã³ã«ã§éçºããåžå Žã«æäŸããããšã§ãéçºè ã¯ããããç°¡åã«èªç€ŸãµãŒãã¹ã«åã蟌ãããšãã§ããããã«ãªããŸããä»åŸãMCPã®ãããªæ¥çæšæºä»æ§ãäžè¬çã«å©çšãããããšã«ãããããŒã«ã®å¯æ¬æ§ããã³åžå Žã§ã®æµéãæŽ»çºåããããšã¯èšããŸã§ããªãããŸãã«AIãšãŒãžã§ã³ãã®æè¡ãççºçã«æ®åããŠããè¶³ããããšãªãã§ãããã2025幎ããå§ãŸã£ãAIãšãŒãžã§ã³ãã®äžçã¯MCPã«ããæ©ããæ°ããªå±é¢ãè¿ããããšããŠããŸãã
MCPã«ã€ããŠã¯äžèšèšäºã䜵ããŠãåç §ãã ããã
ãã«ãã»ãšãŒãžã§ã³ã
ãã«ãã»ãšãŒãžã§ã³ããšã¯ãã®åã®éããäžè¿°ãããšãŒãžã§ã³ããè€æ°æ§æããææ³ã§ãçŸåšãåãã³ããŒãéçºããŠããAIãšãŒãžã§ã³ãã®äžæ žçãªæè¡ã§ãã
ããããŠãããããã€ã³ããšããŠã¯äžèš3ã€ã§ãã
-
è€æ°ã®ãšãŒãžã§ã³ãã«åœ¹å²ãåããŠãåãšãŒãžã§ã³ãã«ã¯ãã®åœ¹å²ã ãã«å°å¿µãããããšã§LLMã®æšè«ãã¹ã®å¯èœæ§ãæžãããŸããäŸãã°ãäžã®å³ã§ã¯ãäžé±éã®ãšãŒãããæ è¡ãèšç»ããŠãã ãããããšããããã³ããã«å¯ŸããŠãäžèš4ã€ã®åœ¹å²ã«çްååãããã®åœ¹å²ã4ã€ã®åãšãŒãžã§ã³ãã«å²ãåœãŠãŠããŸãã
- ãšãŒãžã§ã³ã1ã®åœ¹å²ïŒã人æ°ã®èгå å°ãæ€çŽ¢ããŠææ¡ããã
- ãšãŒãžã§ã³ã2ã®åœ¹å²ïŒã宿æ³å ã®ææ¡ãšäºçŽã
- ãšãŒãžã§ã³ã3ã®åœ¹å²ïŒã蚪åå ãžã®ç§»åçµè·¯ã®ææ¡ã
- ãšãŒãžã§ã³ã4ã®åœ¹å²ïŒãäºç®ã®èŠç©ãããšä»£æ¿æ¡ã®ææ¡ã
-
åæ§ã«ãåãšãŒãžã§ã³ãã«ã¯ãã®åœ¹å²ã«é¢ä¿ããFunction Callingã®ã¿ãé¢é£ä»ããããšã«ãããFunction Callingã®éžæããã®å®è¡é åºã®æšè«ãã¹ã軜æžããŸããäžå³ã®äŸã§ã¯åãšãŒãžã§ã³ãã®åœ¹å²ã«æ²¿ã£ã以äžã®ãããªfunction callingãå²ãåœãŠãŸãã
- ãšãŒãžã§ã³ã1ã«å²ãåœãŠãfunction calling = ãXã§äººæ°ã®èгå å°ãæ€çŽ¢ããåŠçã
- ãšãŒãžã§ã³ã2ã«å²ãåœãŠãfunction calling = ãairbnbã§å®¿æ³å ãæ€çŽ¢ãææ¡ãäºçŽããåŠçã
- ãšãŒãžã§ã³ã3ã«å²ãåœãŠãfunction calling = ãGoogle Mapã§èšªåå ã®ç§»åçµè·¯ãæ€çŽ¢ããåŠçã
- ãšãŒãžã§ã³ã4ã«å²ãåœãŠãfunction calling = ãç§»åå ã宿æ³è²»ãé£è²»ãªã©æ è¡ã«å¿ èŠãªè²»çšãèšç®ããäºç®å ã§ãªããã°å床ä»ã®ãšãŒãžã§ã³ãã«ä»£æ¿ãææ¡ãããåŠçã
-
ãããŠãã«ãã»ãšãŒãžã§ã³ãã«ãããŠããã®è€æ°ã®ãšãŒãžã§ã³ããã©ã®ããã«é£æºããããïŒ ãšããç¹ãæãéèŠãªèšèšãã€ã³ãã«ãªããŸããäŸãã°ãè€éãªããã³ããã®ã¿ã¹ã¯ãåå²ããŠãåæ ããããããåã圹å²ãæãããŠäžçªè¯ãçµæãéžã¹ããããååãããããããšãŒãžã§ã³ãå士ããç«¶äºã亀æžããããããããããšãŒãžã§ã³ãã®ææ¡å 容ããæ¹å€ããããããšãã£ãå ·åã§ãããäžå³ã®å Žåãããããäžèšã®ãããªé£æºé¢ä¿ã ãšããããšãã§ããŸãã
- ãšãŒãžã§ã³ã1ã«ãã£ãŠèгå å°ãææ¡ããããã®èгå å°ã®è¿ãã®å®¿æ³å ããšãŒãžã§ã³ã2ãææ¡ãäºçŽãããšããã·ããªãªã®ãããåæ ãã«è¿ã飿ºãšèšããŸãã
- ãšãŒãžã§ã³ã1ããšãšãŒãžã§ã³ã2ã®ææ¡å 容ã«ãããšãŒãžã§ã³ã3ãç§»åçµè·¯ãæ€çŽ¢ãããšããã·ããªãªã®ãããã¡ãããåæ ãã«è¿ã飿ºãšèšããŸãã
- ãšãŒãžã§ã³ã1ããšãšãŒãžã§ã³ã2ããšãŒãžã§ã³ã3ã®ææ¡å 容ã«ããæ è¡ã«ãããè²»çšã決ãŸãããã®è²»çšãäºç®å ã§ãªããã°ããçŽãããããšããã·ããªãªã®ããããæ¹è©ãã«è¿ã飿ºãšèšããŸãã
äžè¿°3ã®ãšãŒãžã§ã³ãå士ã®é£æºã®ããžãã¯ããJavaãPythonãªã©ãšãã£ãé«çèšèªã§ãå šãŠã®ãã¿ãŒã³ãèæ ®ããªããå®çŸ©ããããšã¯æ¥µããŠé£ãã(ããããå šãŠã®ãã¿ãŒã³ãæŽãåºãããšãã§ããªã)ãšããããšã«ãªããŸããããããèšèã§å®çŸ©ã§ãããšãããLLMã¢ããªã±ãŒã·ã§ã³ã®æãæçšãªç¹ã§ãããçæAIã¢ããªã®æ¬è³ªã ãšå人çã«ã¯èããŠããŸãã
ãã®ããã«ããŠãè€éãªããã³ãããå®è¡ãããããŸããã®çµæã®ç²ŸåºŠãæŽã«åäžãããããšãã§ããããã«ãªãä»çµã¿ããã«ããšãŒãžã§ã³ãã§ãã
AIãšãŒãžã§ã³ãã®èŠçŽ æè¡ã®äž»ã ã£ãèãæ¹ã¯äžè¿°ãããããªå 容ã«ãªããŸãããããããŒãããèªåã§éçºããã®ã¯ãªããªã骚ãæããäœæ¥ãšããããšã«ãªãã®ã§åœç¶ãæ§ã ãªãããã€ããŒããAIãšãŒãžã§ã³ãéçºçšã®è£œåããªãªãŒã¹ãããŠãããæ¢ã«åºç¯ãªãšã³ã·ã¹ãã ã圢æãããŠããç¶æ³ã§ãã
AIãšãŒãžã§ã³ãã®ãšã³ã·ã¹ãã
çŸåšãAIãšãŒãžã§ã³ããéçºããããã®è£œå(ç¹ã«ãã«ããšãŒãžã§ã³ãã«ãã©ãŒã«ã¹ãã補å)ã¯æ¬åœã«æ§ã ãªãã®ããªãªãŒã¹ãããŠããããã®å šãŠããªã¹ãããããšãããããã綺éºã«ã«ããŽã©ã€ãºããããšãéåžžã«é£ããç¶æ³ã§ããããã®äžã§æåã©ãããããã€ãã玹ä»ããŸãã
Pythonã©ã€ãã©ãª
| åç§° | éçºå | è£œåæŠèŠ |
|---|---|---|
| Autogen | Microsoft Research | ãã«ããšãŒãžã§ã³ãã·ã¹ãã ã®æ§ç¯ã«ãã©ãŒã«ã¹ããOSSã©ã€ãã©ãªãã°ã«ãŒããã£ãããªã©AIãšãŒãžã§ã³ãå士ã®å¯Ÿè©±ãã¿ã¹ã¯åæ ãèªååããããã®ã©ã€ãã©ãªãç¹åŸŽçãOpenAI以å€ã®æ§ã ãªã¢ãã«ãå©çšå¯èœãã€ãLangChainãDockerãªã©ãã®ä»ã®ã©ã€ãã©ãªãšã®é£æºãå¯èœã |
| LangGraph | LangChain Inc. | LLMãã¬ãŒã ã¯ãŒã¯ã§èåãªLangChainã®å§åйã©ã€ãã©ãªãšãªãããã«ããšãŒãžã§ã³ãã·ã¹ãã ã®æ§ç¯ã«ãã©ãŒã«ã¹ããOSSãLangChainã®å¹ åºããšã³ã·ã¹ãã ãšã®é£æºãå¯èœã§æ§ã ãªãããã€ãã®LLMãå©çšå¯èœã |
| Llama Stack | Meta | OSS LLMãããã€ãã®å·šäººMetaãææãããã«ããšãŒãžã§ã³ãã·ã¹ãã æ§ç¯å¯èœãªOSSã©ã€ãã©ãªãMetaã®LLMã®ã¿ãå©çšå¯èœã |
| OpenAI Assistant API | OpenAI | OpenAIã®ãã«ããšãŒãžã§ã³ãã·ã¹ãã éçºçšã®æ©èœãOpenAIã®LLMã®ã¿ãµããŒãããšãŒãžã§ã³ãå士ã®äŒè©±ã¹ã¬ãããOpenAIåŽã§èªåçã«ç®¡çãããããCode InterpreterãRetrieval(ãã¡ã€ã«æ€çŽ¢)ã®ããŒã«ãäºåå®çŸ©ãããŠããããšæåãµãŒãã¹ãããç¹åŸŽããã |
â»LangGraphã«ã€ããŠã¯éå»ã®ã»ãã·ã§ã³ã§åãæ±ããŸããã®ã§ãããããã°äžèšèšäºããåç §ãã ããã
ç·åã¯ã©ãŠããã³ããŒ
| éçºå | åç§° | ãµãŒãã¹æŠèŠ |
|---|---|---|
| Microsoft | Azure AI Agent Service | AIãšãŒãžã§ã³ããéçºããããã®ã¯ã©ãŠããµãŒãã¹ãAzure SDK for Pythonã®AgentTeamã¯ã©ã¹ã䜿çšããŠãã«ããšãŒãžã§ã³ãã®å®çŸ©ãå¯èœãããŒã³ãŒãã§ã®éçºãå¯èœã |
| AWS | Amazon Bedrock Agent | AIãšãŒãžã§ã³ããéçºããããã®ã¯ã©ãŠããµãŒãã¹ãåãµãŒãã¹ã®ãã«ããšãŒãžã§ã³ãã³ã©ãã¬ãŒã·ã§ã³ãšåŒã°ããæ©èœã«ãããã«ããšãŒãžã§ã³ãã®æ§ç¯ãå¯èœãããŒã³ãŒãã§éçºå¯èœã |
| Google Vertex AI Agent Builder | ãã«ããšãŒãžã§ã³ãã®æ§ç¯ãå¯èœãªããŒã³ãŒãéçºãµãŒãã¹ã | |
| Oracle | Oracle Generative AI Agents Platform | ããŒã³ãŒãã§ã®ãšãŒãžã§ã³ãéçºãµãŒãã¹ãOCI Agent Development Kitã«ãããã«ããšãŒãžã§ã³ããå®è£ å¯èœã |
ãã®ä»ããã®åžå Žã§ã®æ§ã ãªãã¬ãŒã€ãŒ(æè¿ã¯ç¹ã«Difyã®ãããªAIã¢ããªéçºããŒã«ã®å°æ¥ãã³ããŒã人æ°ã®ããã§ã)ãAIãšãŒãžã§ã³ããããŒã¯ãŒãã«èªç€Ÿè£œåããµãŒãã¹ããšã³ãã³ã¹ããŠããŸãã
ãã®ãããªç¶æ³ã®äžã以éã®ããŒãã§ã¯å°å ¥ããŒãã«ãäœããªãŒãã³ãœãŒã¹ãœãããŠãšã¢ãã€ãæ¯èŒçæåã§ãã䜿ãããŠããAutoGenãåãäžããããšæããŸãã
AutoGenã®æŠèŠ
Microsoftãšãã³ã·ã«ããã¢å·ç«å€§åŠã®å ±åãããžã§ã¯ããšããŠå§ãŸã2024幎ã«åæãªãªãŒã¹ããã®åŸäœåºŠãã®ãšã³ãã³ã¹ãçµãŠ2025幎2æçŸåšã¯åæã®ãããšæ¯ã¹ããšäœ¿ãåæãããã¶ããããªããŸããã
MicrosoftãšãããšLLMãã¬ãŒã ã¯ãŒã¯ã®Sematic Kernelãæåã§ãæ§ã ãªã¿ã€ãã®çæAIã¢ããªå šè¬ãã¿ãŒã²ããã«ãªãªãŒã¹ãããŠããŸãããAutoGenã¯å®å šã«ãã«ããšãŒãžã§ã³ãã«ãã©ãŒã«ã¹ãããŠããäž¡è ã®ããžã·ã§ãã³ã°ã®æ£²ã¿åãã¯æç¢ºã§ãã
AutoGenåäœã ãã§ã¯ãªããLangChainãDockerãªã©ãã®ä»æ§ã ãªããŒã«ãšé£æºã§ããããã«äœãããŠããã䟿å©ã«éçšã§ããã ãã§ãªããçæAIã«ãããæ§ã ãªèŠä»¶ã«å¯Ÿå¿ã§ããéåžžã«åºç¯ãªãšã³ã·ã¹ãã ãã«ããŒããŠããŸãããã®ç¹ãæšä»ãªãªãŒã¹ãããã©ã€ãã©ãªã«ãããŠã¯éèŠèŠãããé ç®ã§ãã
LangChainã¯ãã«ããšãŒãžã§ã³ã以å€ã®æ±çšçãªãšãŒãžã§ã³ãã·ã¹ãã æ§ç¯ã®ããã®ãã¬ãŒã ã¯ãŒã¯ã§å€ããã人æ°ããããããã®ãšã³ã·ã¹ãã ã¯éåžžã«åºç¯ã§ããAutogenã§ã¯ã«ããŒããŠããªããã®åºç¯ãªãšã³ã·ã¹ãã ãšãã®ãŸãŸé£æºã§ããç¹ã¯éåžžã«å€§ããªã¡ãªããã ãšæããŸãã
LangChainã®ãšã³ã·ã¹ãã
https://qiita.com/ksonoda/items/ba6d7b913fc744db3d79#langchain
AutoGenã®ã³ã³ããŒãã³ã
Autogenã®äžã®ã³ã³ããŒãã³ãæ§æã¯äžå³ã®ããã«ãªã£ãŠãããäž»ã«6ã€ã®ã¯ã©ã¹ã©ã€ãã©ãªçŸ€ããæ§æãããŠããŸãã
åã³ã³ããŒãã³ãã®æŠèŠèª¬æã¯ä»¥äžã®éãã§ãã
| ã³ã³ããŒãã³ã | æŠèŠ |
|---|---|
| Core | ãšãŒãžã§ã³ãã·ã¹ãã ãå®çŸ©ããããã®åºæ¬ãã¬ãŒã ã¯ãŒã¯ãšãªãã©ã€ãã©ãªããšãŒãžã§ã³ãã®ã¡ãã»ãŒãžç®¡çãã¿ã¹ã¯åå²ãããŒã«(Function Calling)ã®å®çŸ©ãªã©ãã¬ãŒã ã¯ãŒã¯ã®äžå¿ãéçºããããã®APIã |
| AgentChat | Coreã§æäŸããŠããåãšãŒãžã§ã³ãã®é£æºãã¿ãŒã³ã®ãã¡ã°ã«ãŒããã£ããæ¹åŒã®å®è£ ãæŽã«æœè±¡åãããAPIã |
| Extension | AutoGen以å€ã®ã³ã³ããŒãã³ããšé£æºããããã®APIãæ§ã ãªãããã€ãã®LLMãããŒã«ã«ã«ãã¹ããããLLMãDockerãšã®é£æºæã«å©çšã |
| Magentic-One | ãŠã§ãæ€çŽ¢ããã¡ã€ã«æäœãã³ãŒãçæã»å®è¡ãå°éãšãããšãŒãžã§ã³ããšãããããææ®ãšãŒãžã§ã³ãã«ãã£ãŠæ§æããããã«ããšãŒãžã§ã³ãã·ã¹ãã ãæ±çšçãªçšéãç®çã«è€éãªã¿ã¹ã¯ã段éçã«è§£æ±ºããŠããAIãšãŒãžã§ã³ãã®ãªãã¡ã¬ã³ã¹å®è£ ã |
| Studio | ãšãŒãžã§ã³ãã®ããŒã³ãŒãéçºããŒã«ãéçºããAIãšãŒãžã§ã³ãã®ã³ãŒããçæããããšãå¯èœãæ¬çªã·ã¹ãã ã§ã¯ãªãç ç©¶çšéãæšå¥šãâ»AutoGenã®å šãŠã®é¢æ°ãå©çšã§ããããã§ã¯ãªãç¹ã«æ³šæ |
| Bench | ãšãŒãžã§ã³ãã®ããã©ãŒãã³ã¹ã枬å®ã»è©äŸ¡ããããã®ãã³ãããŒã¯ã¹ã€ãŒããDockerå¿ é ãäºã決ãããããã³ãããŒã¯ã·ããªãªã«ãããŠç·ã³ã¹ããã¿ã¹ã¯å®äºæéãäŒè©±ã¿ãŒã³æ°ãªã©ãã¹ã³ã¢ãªã³ã°ã |
åºæ¬çãªéçºã®æµããšããŠã¯
- CoreãAgentChat(ãããã¯ãã®äž¡æ¹ã®æ··åš)ãšextensionã䜿ã£ãŠãã«ããšãŒãžã§ã³ãã®ã³ãŒããæžããŠãããŸãã
- åºæ¬ã¯ã³ãŒãã£ã³ã°ããŒã¹ã®éçºã§ãããGUIã§éçºãããå Žåã¯Studioã䜿ããŸãããã ããçŸç¶ã¯æ¬çªãšããŠã®å©çšã¯éæšå¥šã ãšã®ããšããšãŒãžã§ã³ãã®æåã確èªãããããã®å©çšçšéããšæããŸãã
- ãã«ããšãŒãžã§ã³ãã®åäœãè©äŸ¡ãããå Žåã¯Benchãå©çšã
ãšããæãã«ãªããŸãã
ä»åã¯åãããããAgentChatãã¡ã€ã³ã«ãµã³ãã«ã³ãŒããæŠèª¬ããŸãã
AgentChatã®ããã°ã©ãã³ã°ã¢ãã«
AutogenChatã§ã¯ããã®åã®éããç§éãæ®æ®µå©çšããŠããäžè¬çãªã°ã«ãŒããã£ããã®æåããã®ãŸãŸAPIãšããŠå®è£ ããŠããŸãã
ãŸããäžå³ã«èšèŒãããŠããèµ€åã®åç§°ã¯ããããäžèšã®ãã®ãæããŸãã(åç§°ããæ³åã§ãããšæããŸããã)
- Assistant Agent : ãšãŒãžã§ã³ã
- Tool : Function Calling
- Model : LLM
- ã°ã«ãŒããã£ãã(ããŒã )ïŒè€æ°ã®ãšãŒãžã§ã³ãããæ§æãããã°ã«ãŒã
- ãã£ããïŒãšãŒãžã§ã³ãå士ã®äŒè©±
- ã¡ãã»ãŒãžïŒãšãŒãžã§ã³ãã®åºåããã¹ã
- TERMINATEïŒäŒè©±çµäºã®åå³
Model(LLM)ãšTool(Function Calling)ãé¢é£ä»ãããããšãŒãžã§ã³ããAssistant AgentãšåŒãã§ããããã圹å²ããã£ãè€æ°ã®Assistant Agentãã°ã«ãŒãã³ã°ããã°ã«ãŒããã£ãããå®çŸ©ããŸãã
Assistant Agentã®åºåããã¹ãã¯ã¡ãã»ãŒãžãšããŠã°ã«ãŒãå ã®ä»ã®Assistant Agentã«çºä¿¡ããããã®Assistant Agentããã®å 容ã«åŒå¿ããŠã¡ãã»ãŒãžããŸãã°ã«ãŒãå ã«çºä¿¡ãããšããããŸãã«ç§éãæ®æ®µäœ¿ã£ãŠãããã£ããããŒã«ã®ä»çµã¿ããã®ãŸãŸããã°ã©ãã³ã°ã¢ãã«ã«ãªã£ãŠããŸãã
æçµçã«åé¡ã®ãªãå¿çããã¹ããçæããããšãšãŒãžã§ã³ãã¯äŒè©±çµäºã®åå³ã§ããTERMINATEãã°ã«ãŒãã«éä¿¡ãããã£ããå®äºããã®å 容ããŠãŒã¶ãŒã«è¿ããŸããäŒè©±ã®æå€§ã¿ãŒã³æ°ãªã©ããã£ããã®æåã«é¢ããæ§ã ãªãã©ã¡ãŒã¿ãå®çŸ©ããããšãã§ããããã«ãªã£ãŠããŸãã
ãµã³ãã«ã³ãŒãã®æŠèª¬
AutoGenãšAgentChatã«ã€ããŠçè§£ãããšããã§ç°¡åãªãµã³ãã«ã³ãŒãã5ãã¿ãŒã³åãããŠã¿ãããšæããŸãã
â 圹å²åæ
åãã«ããšãŒãžã§ã³ãã®ãµã³ãã«ã³ãŒã
â¡åœ¹å²åæ
åã«Function Callingã远å ãããã¿ãŒã³
â¢ãŠãŒã¶ãŒãã°ã«ãŒããã£ããã«ä»å
¥ãããã¿ãŒã³
â£äº€æžåãã«ããšãŒãžã§ã³ãã®ãµã³ãã«ã³ãŒã
â€OpenAI以å€ã®LLMã䜿ã£ãŠã¿ã(OCI Generative AI Serviceã®Cohere Command R Plus)
â 圹å²åæ åãã«ããšãŒãžã§ã³ãã®ãµã³ãã«ã³ãŒã
ãŸãã¯äžçªããŒã·ãã¯ãªãµã³ãã«ã³ãŒãã§ããæ è¡ããéã«æ çšãææ¡ããŠããããšãŒãžã§ã³ãã®äŸã§ãã4ã€ã®ãšãŒãžã§ã³ãã«åœ¹å²ãåæ ãããã¿ãŒã³ã«ãªããŸãã
ãŸãã¯äžè¿°ãautogenã®agentchatãextensionãªã©ã®ã©ã€ãã©ãªãã€ã³ããŒãããŸãã
from autogen_agentchat.agents import AssistantAgent
from autogen_agentchat.conditions import TextMentionTermination
from autogen_agentchat.teams import RoundRobinGroupChat
from autogen_agentchat.ui import Console
from autogen_ext.models.openai import OpenAIChatCompletionClient
import os
import getpass
OpenAIã®APIããŒãå ¥åããŸãã
os.environ["OPENAI_API_KEY"] = getpass.getpass("Enter your OpenAI API Key: ")
ãšãŒãžã§ã³ããå®çŸ©ããŸããå šäœã®æ çšãç«ãŠããšãŒãžã§ã³ããå°å ã®èгå å°ãã¢ã¯ãã£ããã£ãææ¡ãããšãŒãžã§ã³ãã蚪åå ã§ã®å ¬çšèªã«ã€ããŠæããŠããããšãŒãžã§ã³ããæ çšå šäœããµããªãŒãããšãŒãžã§ã³ãã®4ã€ã«åœ¹å²åæ ããäŸã§ãã
# äžã€ç®ã®ãšãŒãžã§ã³ãïŒäºå®ã®å
šäœããã©ã³ãããšãŒãžã§ã³ãplanner_agentãå®çŸ©
planner_agent = AssistantAgent(
"planner_agent",
model_client=OpenAIChatCompletionClient(model="gpt-4o"),
description="æ
è¡ã®èšç»ãç«ãŠãŠããã䟿å©ãªã¢ã·ã¹ã¿ã³ã",
system_message="ããªãã¯ããŠãŒã¶ãŒã®ãªã¯ãšã¹ãã«åºã¥ããŠæ
è¡ãã©ã³ãææ¡ã§ãã䟿å©ãªã¢ã·ã¹ã¿ã³ãã§ãã",
)
# äºã€ç®ã®ãšãŒãžã§ã³ãïŒèšªåå
ã®èгå
å°ãã¢ã¯ãã£ããã£ãææ¡ãããšãŒãžã§ã³ãlocal_agentãå®çŸ©
local_agent = AssistantAgent(
"local_agent",
model_client=OpenAIChatCompletionClient(model="gpt-4o"),
description="å°å
ã®ã¢ã¯ãã£ããã£ã蚪åå
ãææ¡ã§ããå°å
ã¢ã·ã¹ã¿ã³ã",
system_message="ããªãã¯ãæ¬ç©ã§è峿·±ãå°å
ã®ã¢ã¯ãã£ããã£ã蚪åããå ŽæããŠãŒã¶ãŒã«ææ¡ããæäŸãããã³ã³ããã¹ãæ
å ±ãå©çšã§ãã䟿å©ãªã¢ã·ã¹ã¿ã³ãã§ãã",
)
# äžã€ç®ã®ãšãŒãžã§ã³ãïŒèšªåå
ã®å
¬çšèªã«ã€ããŠæããŠããããšãŒãžã§ã³ãlanguage_agentãå®çŸ©
language_agent = AssistantAgent(
"language_agent",
model_client=OpenAIChatCompletionClient(model="gpt-4o"),
description="ç¹å®ã®ç®çå°ã«é¢ããèšèªã®ãã³ããæäŸã§ãã䟿å©ãªã¢ã·ã¹ã¿ã³ã",
system_message="ããªãã¯ãæ
è¡èšç»ãæ€èšããç¹å®ã®ç®çå°ã§ã®å
¬çšèªãã³ãã¥ãã±ãŒã·ã§ã³ã®èª²é¡ã«å¯ŸåŠããæåã®æ¹æ³ã«é¢ããéèŠãªãã³ãã«ã€ããŠãã£ãŒãããã¯ãæäŸã§ãã䟿å©ãªã¢ã·ã¹ã¿ã³ãã§ããèšç»ã«èšèªã«é¢ãããã³ãããã§ã«å«ãŸããŠããå Žåã¯ããã®èšç»ãæºè¶³ã®ãããã®ã§ããããšãæ ¹æ ãæ·»ããŠèšåã§ããŸãã",
)
# åã€ç®ã®ãšãŒãžã§ã³ãïŒäžèšïŒã€ã®ãšãŒãžã§ã³ãã®ææ¡ããµããªãŒãæçµçãªæ
çšãææ¡ãããšãŒãžã§ã³ãtravel_summary_agentãå®çŸ©
travel_summary_agent = AssistantAgent(
"travel_summary_agent",
model_client=OpenAIChatCompletionClient(model="gpt-4o"),
description="æ
è¡èšç»ããŸãšããã®ã«åœ¹ç«ã€ã¢ã·ã¹ã¿ã³ã",
system_message="ããªãã¯ãä»ã®ãšãŒãžã§ã³ãããã®ææ¡ãã¢ããã€ã¹ããã¹ãŠåãå
¥ããè©³çŽ°ãªæçµçãªæ
è¡èšç»ãæäŸã§ããã圹ã«ç«ã€ã¢ã·ã¹ã¿ã³ãã§ããæçµèšç»ãçµ±åãããå®å
šã§ããããšã確èªããå¿
èŠããããŸããæçµçãªå¯Ÿå¿ã¯å®å
šãªèšç»ã§ãªããã°ãªããŸãããèšç»ãå®äºãããã¹ãŠã®ããŒã¹ãã¯ãã£ããçµ±åãããããTERMINATE ã§å¿çã§ããŸãã",
)
äŒè©±ãçµããterminationã®æ¡ä»¶ãå®çŸ©ããŸãããã®äŸã§ã¯ãšãŒãžã§ã³ãã®åºåã« TERMINATE ãšããæåãå ¥ã£ãŠããå Žåã«äŒè©±çµäºã§ããäžè¿°ããtravel_summary_agentã®system_messageã«ãåŠçãå®äºããã° TERMINATEããšããæšã®ã·ã¹ãã ã¡ãã»ãŒãžãå ¥ããŠããããããšé£åããŠåäœããŸãã
termination = TextMentionTermination("TERMINATE")
次ã«ã°ã«ãŒããã£ããã®å®çŸ©ã§ããä»åã¯RoundRobinGroupChatã䜿ã£ãŠã¿ãŸãããã®å®çŸ©ã§ã¯ããããšãŒãžã§ã³ããåºåããã¡ãã»ãŒãžã¯ã°ã«ãŒããã£ããå ã®ä»ã®å šãŠã®ãšãŒãžã§ã³ãã«éä¿¡ãããŸãã(æåéãã°ã«ãŒããã£ããã§ãã)ãã®ã¡ãã»ãŒãžãåãä»ã®ãšãŒãžã§ã³ããé çªã«(Round Robin)å¿çã¡ãã»ãŒãžãåºåããŸãããã£ããããšã³ãã¬ã¹ã«ãªããªãããã«TERMINATEã®æ¡ä»¶ãå®çŸ©ãããã£ããã®æå€§ã¿ãŒã³æ°ã念ã®ãã10ã«å®çŸ©ããŠããŸãã
group_chat = RoundRobinGroupChat(
[planner_agent, local_agent, language_agent, travel_summary_agent],
termination_condition=termination,
max_turns=10 # æå€§10ã¿ãŒã³ã§çµäº
)
çŸåšã®ããŒãžã§ã³ã§ã¯RoundRobinGroupChat以å€ã«SelectorGroupChatããããŸããSelectorGroupChat
åã¡ãã»ãŒãžã®åŸã«æ¬¡ã®ãšãŒãžã§ã³ããéžæããé çªã«ã¡ãã»ãŒãžãéä¿¡ãããšããå¶åŸ¡ã«ãªããŸãã
Selector Group Chat
https://microsoft.github.io/autogen/stable/user-guide/agentchat-user-guide/selector-group-chat.html
äžèšã®ãããªæ çšã®ãªã¯ãšã¹ããããŠã¿ãŸãã
await Console(group_chat.run_stream(task="ãããŒã«ãžã®3æ¥éã®æ
è¡ãèšç»ããŠãã ããã"))
åºåã¯ãã¡ãã
---------- user ----------
ãããŒã«ãžã®3æ¥éã®æ
è¡ãèšç»ããŠãã ããã
---------- planner_agent ----------
ãããŒã«ãžã®3æ¥éã®æ
è¡ã¯ãçããªãããè±å¯ãªäœéšãã§ããçŽ æŽããããã©ã³ã§ãã以äžã¯ãã®ãµã³ãã«ãã©ã³ã§ãã
### 1æ¥ç®: ã«ããã³ãºæ¢èšª
- **åå:**
- ã«ããã³ãºã«å°çåŸãããã«ã«ãã§ãã¯ã€ã³ã
- ãã·ã¥ããã£ããŒã寺é¢ã蚪åããã³ãºãŒæã®éèŠãªå¯ºé¢ã§ãçŽ æŽããã圫å»ãšå·¡ç€Œè
ã®å§¿ã楜ãããŸãã
- **ååŸ:**
- ãã°ããã£å·æ²¿ãã«ããã¹ã¯ã€ã³ãããŒãïŒã¢ã³ããŒãã³ãã«ïŒã蚪ããŸãã360床ã®ããã©ããã¥ãŒãé
åã§ãã
- **å€:**
- ã¿ã¡ã«å°åºã§å€é£ãå°å
ã®ã¬ã¹ãã©ã³ã§ãããŒã«æçãæ¥œããã§ãã ããã
### 2æ¥ç®: ãã¿ã³ãšãã¯ã¿ãã«èšªå
- **åå:**
- ãã¿ã³ïŒã©ãªããã«ïŒåžã蚪ããŸãããã¿ã³ã»ãã«ããŒã«åºå Žã®çŽ æŽããã建ç¯ç©ãšåç©é€šãèŠåŠããŸãã
- **ååŸ:**
- ãã¯ã¿ãã«ã«ç§»åãäžäžã®é°å²æ°ãæ®ãçºãæ£çãããã¯ã¿ãã«ã»ãã«ããŒã«åºå Žããã€ã¿ãã©å¯ºé¢ã蚪åããŸãã
- ãã¯ã¿ãã«ã§æåãªããã³ã°ã«ãŒãããå³ãããŸãã
- **å€:**
- ã«ããã³ãºã«æ»ããããã«ã§ãªã©ãã¯ã¹ã
### 3æ¥ç®: ãã€ãã£ãŒãšã«ã«ãã£ãŒäœéš
- **åå:**
- ãã¬ã«ã³ãããžæ¥ã®åºãèŠã«åºçºïŒæ©æïŒãããã©ã€ã®çŸããæ¯è²ã楜ããããšãã§ããŸãã
- **ååŸ:**
- ååŸã¯ã«ããã³ãºã«æ»ããæéãããã°ããããŒãã»ã¹ãã¥ãŒãã蚪ããŸãããããã仿ã®è±¡åŸŽã§ãããã®å Žæã§ç¥ãã®æãèŠãããšãã§ããŸãã
- **å€:**
- æåŸã®å€é£ãã¿ã¡ã«å°åºã§åããã«ããã³ãºã®å€ã楜ãã¿ãŸããçŸå°ã®æ°ä¿é³æ¥œã楜ãããå Žæãæ¢ãã®ãè¯ãã§ãããã
### 泚æäºé
:
- 倩åã«ããæ¯èŠ³ãå€ããããšããããŸãã®ã§ãçŸå°ã®æ°è±¡æ
å ±ã確èªããŠãã ããã
- ç§»åã¯ã¿ã¯ã·ãŒãçŸå°ã®ãã¢ãŒã¬ã€ããå©çšãããšäŸ¿å©ã§ãã
- ãããŒã«ã¯é«å°ã«äœçœ®ããŠããã®ã§ãååãªæ°Žåè£çµŠãšäœèª¿ç®¡çãå¿ãããŠãã ããã
ãã®ãã©ã³ãåºã«ãããªãã®èå³ã«åãããŠã«ã¹ã¿ãã€ãºããŠã¿ãŠãã ãããè¯ãæ
ãïŒ
---------- local_agent ----------
ãããŒã«ãžã®3æ¥éã®æ
è¡ã¯ãçæéã§çŽ æŽãããæåãèªç¶ã®é
åãäœéšããçµ¶å¥œã®æ©äŒã§ãã以äžã®ãã©ã³ãåèã«ãããªãã ãã®æ
ãæ¥œããã§ãã ããã
### 1æ¥ç®: ã«ããã³ãºã®æåãšæŽå²ãæ¢çŽ¢
- **åå:**
- ã«ããã³ãºã«å°çåŸãããã«ã«ãã§ãã¯ã€ã³ãã身æ¯åºŠãæŽããŸãããã
- äŒçµ±çã§èå³ãªãã·ã¥ããã£ããŒã寺é¢ã蚪åããŸããããããã¯ã¹ããªãã¥ã¢ã«ãªäœéšãšã寺é¢ã®çŸãã建ç¯ã楜ããããšãã§ããŸãã
- **ååŸ:**
- ã¹ã¯ã€ã³ãããŒãïŒã¢ã³ããŒãã³ãã«ïŒã蚪ããäžã®äžããã«ããã³ãºã®å
šæ¯ã楜ãã¿ãŸããããããã§ã¯ããã©ã€å±±èã®éå€§ãªæ¯è²ãçºããããšãã§ããŸãã
- **å€:**
- ã¿ã¡ã«å°åºã§çŸå°ã®ã¬ã¹ãã©ã³ã蚪ããŠãæ°é®®ãªãããŒã«æçãå ªèœããŸããããè³ãããªéãã§ã®ã·ã§ããã³ã°ããæ¥œãã¿ãã ããã
### 2æ¥ç®: ãã¿ã³ãšãã¯ã¿ãã«ã®äžäžéœåžèšªå
- **åå:**
- ãã¿ã³åžïŒã©ãªããã«ïŒãžåããããã¿ã³ã»ãã«ããŒã«åºå Žãæ£çããŠãã¹ã³ã®äžçéºç£ã«æå®ãããŠãããé
åçãªå»ºç©ãåç©é€šããããããããŸãã
- **ååŸ:**
- ãã¯ã¿ãã«ã«ç§»åããŠãäžäžã®é°å²æ°ã«æµžããŸãããããã¯ã¿ãã«ã»ãã«ããŒã«åºå Žããã€ã¿ãã©å¯ºé¢ã蚪ãããã®å°åã®å·¥èžåãç¹ç£åãæ¥œããã§ãã ããã
- ããã§æåãªããžã¥ãžã¥ã»ããŠïŒçã®ã«ã¹ã¿ãŒãïŒããå³ããããšããå¿ããªãã
- **å€:**
- ã«ããã³ãºã«æ»ãããªã©ãã¯ã¹ããå€ãéãããŸãã
### 3æ¥ç®: èªç¶ãšãªã©ãã¯ã¹
- **æ©æ:**
- æ¥ã®åºåã«ãã¬ã«ã³ããã«åãããçŸããããã©ã€ã®ãè¶ãç¥ãšããæ¯è²ã楜ããæ¥ã®åºèгè³ãäœéšããŠãã ããã
- **ååŸ:**
- ã«ããã³ãºã«æ»ãããããã仿æå€§ã®ããããŒãã»ã¹ãã¥ãŒãã蚪ãããã®å¹³åãªé°å²æ°ã楜ããã§ãã ãããããã¯ã¹ããªãã¥ã¢ã«ãªäœéšãã§ããå Žæã§ãã
- **å€:**
- ã¿ã¡ã«å°åºã§ã®æåŸã®å€é£ã楜ãã¿ãçŸå³ãããããŒã«æçãšå°å
ã®é³æ¥œã楜ããã§ãã ããã
### æ
è¡ã®ãã³ã:
- 倩åã¯å€ãããããã®ã§ãæ
è¡åã«å€©æ°äºå ±ã確èªããŸãããã
- ç§»åã«ã¯ã¿ã¯ã·ãŒãçŸå°ã®ãã¢ãŒãå©çšããã®ã䟿å©ã§ãã
- é«å°ã®ãããäœèª¿ç®¡çãšæ°Žåè£çµŠããã£ããè¡ããŸãããã
ãã®æ
çšãåºã«ãããªãèªèº«ã®èå³ã«åãããã«ã«ã¹ã¿ãã€ãºããŠããã ããŸããçŽ æŽãããæ
ããæ¥œãã¿ãã ããïŒ
---------- language_agent ----------
ãããŒã«ãžã®3æ¥éã®æ
è¡ãã©ã³ã¯ãæåãæŽå²ãèªç¶ãå·§ã¿ã«çµã¿åããã£ãçŽ æŽããããã®ã§ãã以äžã«ããã€ãç¹ã«æ°ãä»ããã¹ãèšèªãšã³ãã¥ãã±ãŒã·ã§ã³ã®ãã€ã³ãããäŒãããŸãã
### èšèªãšã³ãã¥ãã±ãŒã·ã§ã³:
- **å
¬çšèª**: ãããŒã«ã®å
¬çšèªã¯ãããŒã«èªã§ããã芳å
å°ãã«ããã³ãºã®ãããªéœåžéšã§ã¯è±èªãåºãéããŸãã
- **ãã³ãã£ãŒèª**: ã€ã³ããšè¿ãæåçèæ¯ãæã€ãããç¹ã«èгå
é¢é£ã®ãšãªã¢ã§ã¯ãã³ãã£ãŒèªãçè§£ãããããšããããŸãã
- **åºæ¬ãã¬ãŒãº**: ç°¡åãªãããŒã«èªã®ãããã€ãããã¹ãããæè¬ã®èšèããã³ãã£ããŒãããèŠããŠãããšãå°å
ã®äººãšã®äº€æµãããã«ã¹ã ãŒãºã«ãªããŸãã
### ããããã®å¯Ÿå¿ç:
- **ã¬ã€ãããã¯ãã¢ããª**: è±èª-ãããŒã«èªã®ã¬ã€ãããã¯ã翻蚳ã¢ããªãäºåã«ããŠã³ããŒãããŠãããšäŸ¿å©ã§ãã
- **çŸå°ã®ã¬ã€ã**: èšèªã®å£ãã¹ã ãŒãºã«è¶ãããããçŸå°ã®ã¬ã€ããå©çšããã®ãè¯ãéžæã§ããã¬ã€ãã¯èгå
å°ã®è©³çްæ
å ±ãæäŸããŠãããŸãã
ãã®æ
è¡ãã©ã³ã«ã¯å
¬çšèªãšã³ãã¥ãã±ãŒã·ã§ã³ã®ã¿ã€ã ãªãŒãªã¢ããã€ã¹ãå«ãŸããŠãããéåžžã«æºè¶³ã®ããå
容ã§ããæ
è¡ã®éã¯ãããã®ãã€ã³ããæŽ»ãããŠããããŒã«ãããŒã«ã®é
åãååã«æ¥œããã§ãã ãããã
---------- travel_summary_agent ----------
ãããŒã«ãžã®3æ¥éã®æ
è¡èšç»ãæŽããŸãããæåãæŽå²ãèªç¶ããããŠã³ãã¥ãã±ãŒã·ã§ã³ã®ã³ããåããè±ããªäœéšããæ¥œãã¿ãã ããã
---
### 1æ¥ç®: ã«ããã³ãºã®æåãšæŽå²ãæ¢çŽ¢
- **åå:**
- ã«ããã³ãºã«å°çåŸãããã«ã«ãã§ãã¯ã€ã³ã
- ã¹ããªãã¥ã¢ã«ãªãã·ã¥ããã£ããŒã寺é¢ã蚪åããã³ãºãŒæã®æåãäœéšããèŠäºãªåœ«å»ã楜ãã¿ãŸãããã
- **ååŸ:**
- ã¹ã¯ã€ã³ãããŒãïŒã¢ã³ããŒãã³ãã«ïŒãžè¶³ãéã³ãäžã®äžããã«ããã³ãºã®å
šæ¯ã楜ãããŸããããã§ã¯ããã©ã€å±±èã®å£®å€§ãªæ¯è²ãèŠæž¡ããŸãã
- **å€:**
- ã¿ã¡ã«å°åºã§å€é£ãå°å
ã®ã¬ã¹ãã©ã³ã§ãããŒã«æçãå ªèœããè³ãããªéãã§ã·ã§ããã³ã°ã楜ããã§ã¿ãŠãã ããã
### 2æ¥ç®: ãã¿ã³ãšãã¯ã¿ãã«ã®äžäžéœåžãæ¢èšª
- **åå:**
- ãã¿ã³åžïŒã©ãªããã«ïŒã蚪åããã¿ã³ã»ãã«ããŒã«åºå Žã§ãŠãã¹ã³ã®äžçéºç£ã«æå®ããã建ç¯ç©ãåç©é€šãæ£çã
- **ååŸ:**
- ãã¯ã¿ãã«ãžç§»åããã¯ã¿ãã«ã»ãã«ããŒã«åºå Žããã€ã¿ãã©å¯ºé¢ã§äžäžã®é
åãå ªèœãç¹ã«æåãªããžã¥ãžã¥ã»ããŠïŒçã®ã«ã¹ã¿ãŒãïŒãã詊ããŠã¿ãŸãããã
- **å€:**
- ã«ããã³ãºã«æ»ããããã«ã§ãªã©ãã¯ã¹ã
### 3æ¥ç®: èªç¶ãšéå¯ãæ±ããŠ
- **æ©æ:**
- æ¥ã®åºåã®ãã¬ã«ã³ããã§ãçŸããããã©ã€ã®æ¯è²ã楜ããæ¥ã®åºèгè³ãããŸãã
- **ååŸ:**
- ã«ããã³ãºã«æ»ããããããŒãã»ã¹ãã¥ãŒãã蚪åããããã仿ã®å¹³åãªé°å²æ°ã«æµžããŸãããã
- **å€:**
- ã¿ã¡ã«å°åºã§ã®æåŸã®å€é£ãå°å
ã®é³æ¥œãèŽããªãããæ
è¡ã®æåŸã®å€ã楜ããã§ãã ããã
---
### èšèªãšã³ãã¥ãã±ãŒã·ã§ã³:
- **åºæ¬ãã¬ãŒãº**: ç°¡åãªãããŒã«èªã®ãããã¹ããïŒããã«ã¡ã¯ïŒãããã³ãã£ããŒããïŒããããšãïŒãèŠããŠãå°å
ã®äººã
ãšããè¯ã亀æµãïŒ
- **ã¬ã€ãããã¯ãã¢ããª**: è±èª-ãããŒã«èªã®ç¿»èš³ã¢ããªã掻çšããã³ãã¥ãã±ãŒã·ã§ã³ãã¹ã ãŒãºã«ã
---
### æ
è¡ã®ãã³ã:
- **倩å**: é«å°ã®ãããŒã«ã§ã¯å€©åãå€ãããããã®ã§ãæè£
ã«ã¯æ³šæããŠãã ããã
- **ç§»åææ®µ**: ã¿ã¯ã·ãŒãçŸå°ãã¢ãŒã¬ã€ããå©çšããããšã§ãå¹çããç§»åã§ããŸãã
ãã®ãã©ã³ãåèã«ãããªãã®æ
ãåæ§çã§å
å®ãããã®ã«ããŠãã ãããçŽ æŽãããæ
ããæ¥œãã¿ãã ããïŒ
TERMINATE
è€æ°ã®ãšãŒãžã§ã³ãã«ãã£ãŠåœ¹å²åæ ãããããããã°ã«ãŒããã£ããã«ããäŒè©±ããªããæçµçãªæ çšã決å®ããŠããæ§åãããããšæããŸãã
â¡Function Callingã远å ãããã¿ãŒã³
äžèšã®åœ¹å²åæ åã®ã³ãŒãã«Function Callingã远å ããŠã¿ãããšæããŸããæ çšææ¡ã®AIãšãŒãžã§ã³ãã蚪åå ã®é貚ã®çºæ¿ã¬ãŒããã€ããŒãã¡ã€ãã³ã¹ã§äºåã«ãã§ãã¯ããŠããããšããã·ããªãªã§ãã
å¿ èŠãªã©ã€ãã©ãªãã€ã³ããŒãããŸããã€ããŒãã¡ã€ãã³ã¹ã®APIãµãŒãã¹ãCallããŸãã®ã§ãã®ã©ã€ãã©ãªyahooqueryã®ã€ã³ããŒãã远å ããŠããŸãã
from autogen_agentchat.agents import AssistantAgent
from autogen_agentchat.conditions import TextMentionTermination
from autogen_agentchat.teams import RoundRobinGroupChat
from autogen_agentchat.ui import Console
from autogen_ext.models.openai import OpenAIChatCompletionClient
import os
import getpass
from yahooquery import Ticker
OpenAIã®APIããŒãå ¥å
os.environ["OPENAI_API_KEY"] = getpass.getpass("Enter your OpenAI API Key: ")
ã€ããŒãã¡ã€ãã³ã¹ã§çŸåšã®çºæ¿ã¬ãŒããã¯ãšãªãã颿°ãå®çŸ©ããŸãã
def get_exchange_rate(currency_code: str) -> dict:
"""
æå®ããåœã®éè²šãšæ¥æ¬åïŒJPYïŒã®çºæ¿ã¬ãŒããååŸããã
Args:
currency_code (str): é貚ã³ãŒãïŒäŸ: "USD", "EUR", "GBP"ïŒ
Returns:
dict: çºæ¿ã¬ãŒãæ
å ±ïŒé貚ãã¢ãã¬ãŒããååŸæéïŒ
"""
symbol = f"{currency_code}JPY=X" # äŸ: "USDJPY=X"
ticker = Ticker(symbol)
data = ticker.price[symbol]
if "regularMarketPrice" in data:
return {
"currency_pair": f"{currency_code}/JPY",
"exchange_rate": data["regularMarketPrice"],
"timestamp": data["regularMarketTime"]
}
return {"error": "çºæ¿ã¬ãŒããååŸã§ããŸããã§ãã"}
äžè¿°ã®é¢æ°ãå®è¡ããŠåäœç¢ºèªãããŸãã
rate_info = get_exchange_rate("USD") # USD/JPY ã®ã¬ãŒãååŸ
print(rate_info)
åºåã¯ä»¥äžã®éãã
{'currency_pair': 'USD/JPY', 'exchange_rate': 150.542, 'timestamp': '2025-02-20 02:09:08'}
äžè¿°ã®é¢æ°ãFunction CallingãšããŠå®çŸ©ããŸãã
from autogen_core.tools import FunctionTool
get_exchange_rate_tool = FunctionTool(
get_exchange_rate, description="çŸåšã®çºæ¿ã¬ãŒããååŸããŸãã"
)
ãããããšãŒãžã§ã³ãã®å®çŸ©ã§ããå ã®ã³ãŒãã§äœæãããšãŒãžã§ã³ã4ã€ã«çºæ¿ã¬ãŒãã調ã¹ãexchange_agentã远å ããŠããŸããAssistantAgentã®åŒæ°toolsã«äžè¿°ããfunction callingãå®çŸ©ãããšããã·ã³ãã«ãªãã®ã§ãã
planner_agent = AssistantAgent(
"planner_agent",
model_client=OpenAIChatCompletionClient(model="gpt-4o"),
description="æ
è¡ã®èšç»ãç«ãŠãŠããã䟿å©ãªã¢ã·ã¹ã¿ã³ã",
system_message="ããªãã¯ããŠãŒã¶ãŒã®ãªã¯ãšã¹ãã«åºã¥ããŠæ
è¡ãã©ã³ãææ¡ã§ãã䟿å©ãªã¢ã·ã¹ã¿ã³ãã§ãã",
)
local_agent = AssistantAgent(
"local_agent",
model_client=OpenAIChatCompletionClient(model="gpt-4o"),
description="å°å
ã®ã¢ã¯ãã£ããã£ã蚪åå
ãææ¡ã§ããå°å
ã¢ã·ã¹ã¿ã³ã",
system_message="ããªãã¯ãæ¬ç©ã§è峿·±ãå°å
ã®ã¢ã¯ãã£ããã£ã蚪åããå ŽæããŠãŒã¶ãŒã«ææ¡ããæäŸãããã³ã³ããã¹ãæ
å ±ãå©çšã§ãã䟿å©ãªã¢ã·ã¹ã¿ã³ãã§ãã",
)
language_agent = AssistantAgent(
"language_agent",
model_client=OpenAIChatCompletionClient(model="gpt-4o"),
description="ç¹å®ã®ç®çå°ã«é¢ããèšèªã®ãã³ããæäŸã§ãã䟿å©ãªã¢ã·ã¹ã¿ã³ã",
system_message="ããªãã¯ãæ
è¡èšç»ã®äžã«ãã蚪åå
ã§ã®å
¬çšèªã«é¢ããæ
å ±ãæäŸã§ãã䟿å©ãªã¢ã·ã¹ã¿ã³ãã§ãã",
)
# 远å ã®ãšãŒãžã§ã³ãã åŒæ°toolsã§function Callingãå®çŸ©ã
exchange_agent = AssistantAgent(
name = "exchange_agent",
model_client=OpenAIChatCompletionClient(model="gpt-4o"),
description="蚪åå
ã§ã®é貚ã«é¢ããæ
å ±ãæäŸã§ãã䟿å©ãªã¢ã·ã¹ã¿ã³ã",
system_message="ããªãã¯ãæ
è¡èšç»ã®äžã«ãã蚪åå
ã§ã®éè²šãšæ¥æ¬åã®çºæ¿ã¬ãŒããget_exchange_rate_toolã䜿ã£ãŠæäŸã§ãã䟿å©ãªã¢ã·ã¹ã¿ã³ãã§ãã",
tools=[get_exchange_rate_tool]
)
travel_summary_agent = AssistantAgent(
"travel_summary_agent",
model_client=OpenAIChatCompletionClient(model="gpt-4o"),
description="æ
è¡èšç»ããŸãšããã®ã«åœ¹ç«ã€ã¢ã·ã¹ã¿ã³ã",
system_message="ããªãã¯ãä»ã®ãšãŒãžã§ã³ãããã®ææ¡ãã¢ããã€ã¹ããã¹ãŠåãå
¥ããè©³çŽ°ãªæçµçãªæ
è¡èšç»ãæäŸã§ããã圹ã«ç«ã€ã¢ã·ã¹ã¿ã³ãã§ããæçµèšç»ãçµ±åãããå®å
šã§ããããšã確èªããå¿
èŠããããŸããæçµçãªå¯Ÿå¿ã¯å®å
šãªèšç»ã§ãªããã°ãªããŸãããèšç»ãå®äºãããã¹ãŠã®ããŒã¹ãã¯ãã£ããçµ±åãããããTERMINATE ã§å¿çã§ããŸãã",
)
terminationã®æ¡ä»¶ãšã°ã«ãŒããã£ããã®å®çŸ©ã
termination = TextMentionTermination("TERMINATE")
group_chat = RoundRobinGroupChat(
[planner_agent, local_agent, language_agent, exchange_agent, travel_summary_agent],
termination_condition=termination
)
äžèšã®ãããªããã³ããã§æ çšããªã¯ãšã¹ãã
await Console(group_chat.run_stream(task="ãšãŒãããã®3ãåœã蚪ãã3æ¥éã®æ
è¡ãèšç»ããŠãã ããã"))
åºåããã¡ãã
---------- user ----------
ãšãŒãããã®3ãåœã蚪ãã3æ¥éã®æ
è¡ãèšç»ããŠãã ããã
---------- planner_agent ----------
ãšãŒãããã®3ãåœã3æ¥éã§èšªããæ
è¡ã¯é§ãè¶³ã«ãªããŸãããããã€ãã®åœãè¿æ¥ããŠãããããå¯èœã§ãã以äžã«ãå¹ççã«ç§»åã§ãããã©ã³ãææ¡ããŸãã
**1æ¥ç®: ãã©ã³ã¹ (ããª)**
- æ: ããªã«å°çãã·ã£ã«ã«ã»ãã»ãŽãŒã«ç©ºæž¯ãŸãã¯ãªã«ãªãŒç©ºæž¯ã«çéžåŸãåžå
äžå¿éšãžç§»åã
- åå: ãšããã§ã«å¡ã蚪ããããªã®è±¡åŸŽçãªæ¯è²ã楜ãã¿ãŸãããã
- æŒ: ã»ãŒãå·æ²¿ãã§ã©ã³ããã¯ã¬ãŒãããã«ãã³ã¯ãããã§ããããã
- ååŸ: ã«ãŒãŽã«çŸè¡é€šã蚪ããŠã¿ãããšããå§ãããŸããäž»èŠãªäœåãèŠåŠããæéã¯ç¢ºä¿ã§ããã§ãããã
- å€: ã¢ã³ãã«ãã«å°åºãæ£çãããµã¯ã¬ã»ã¯ãŒã«å¯ºé¢ã蚪ããã®ãè¯ãã§ãããã
**2æ¥ç®: ãã«ã®ãŒ (ããªã¥ãã»ã«)**
- æ: é«éåè»Thalysã§ããªã¥ãã»ã«ãžç§»åïŒçŽ1æé30åïŒã
- åå: ã°ã©ã³ãã©ã¹ã蚪ããçŸããåžåºèãèŠåŠãåšå²ã®é°å²æ°ã楜ããããšãã§ããŸãã
- æŒ: ãã«ã®ãŒåç©ã®ã¯ããã«ããã§ã³ã¬ãŒããæ¥œãã¿ãŸãããã
- ååŸ: å°äŸ¿å°å§ãèŠã«è¡ã£ãåŸãçç«çŸè¡é€šã§ã¢ãŒãéè³ãããŠã¿ãŠã¯ãããã§ããããã
- å€: 欧å·è°äŒã®åšèŸºãæ£çããçŸä»£çãªããªã¥ãã»ã«ã®äžé¢ãäœæããŸãã
**3æ¥ç®: ãªã©ã³ã (ã¢ã ã¹ãã«ãã )**
- æ: Thalysã§ã¢ã ã¹ãã«ãã ãžç§»åïŒçŽ2æéïŒã
- åå: ãŽããçŸè¡é€šãŸãã¯åœç«åç©é€šã蚪ãããšãŒãããèžè¡ã®æŽå²ãæããŸãããã
- æŒ: éæ²³æ²¿ãã®ã«ãã§ã§ã©ã³ããåãããªã©ãã¯ã¹ã
- ååŸ: ã¢ã ã¹ãã«ãã ã®çŸããéæ²³ãã¯ã«ãŒãºè¹ã§å·¡ããŸãããã
- 倿¹: ãã åºå Žãæ§åžè¡ãæ£çãããåç£ã賌å
¥ããæéãèšããŸãããã
ãã®ãã©ã³ããåèã«ãªãã°å¹žãã§ããæéã«äœè£ãæã¡ã€ã€ãå®å
šã§æ¥œããæ
ããéãããã ããïŒ
---------- local_agent ----------
ãšãŒãããã®3ãåœã蚪ãã3æ¥éã®æ
è¡ã¯é§ãè¶³ã«ãªããŸãããããã€ãã®åœãè¿æ¥ããŠãããããå®çŸå¯èœã§ãã以äžã«å¹ççã«ç§»åã§ãããã©ã³ãææ¡ããŸãã
**1æ¥ç®: ã€ã¿ãªã¢ (ãã©ã)**
- æ: ãã©ãã»ãã«ãã³ãµç©ºæž¯ã«å°çãåžå
äžå¿éšãžç§»åããŸãã
- åå: ãã¥ãªãŒã¢ããŽã£ãããŒãªãªã»ãšãããšãŒã¬2äžã®ã¬ã¬ãªã¢ãèŠåŠã
- æŒ: å°å
ã®ãªã¹ãã©ã³ãã§ã€ã¿ãªã¢ã³ã»ã©ã³ããæ¥œãã¿ãŸãããã
- ååŸ: ãã¬ã©çŸè¡é€šãã¬ãªãã«ãã»ãã»ãŽã£ã³ãã®ãæåŸã®æ©é€ããèŠåŠã
- 倿¹: ã¹ãã©ã«ãã§ã¹ã³åã蚪ãããã©ãã®æŽå²ã«è§ŠããŸãããã
**2æ¥ç®: ã¹ã€ã¹ (ãã¥ãŒãªãã)**
- æ: ãã©ãããé»è»ã§ãã¥ãŒãªãããžç§»åïŒçŽ3æéïŒã
- åå: ãã³ããŒãéããæ£çããã·ã§ããã³ã°ãã«ãã§ã楜ãã¿ãŸãããã
- æŒ: ã¹ã€ã¹åç©ã®ããŒãºãã©ã³ãã¥ããã·ã¥ãã£ãå ªèœã
- ååŸ: æŽå²ã®ããæ§åžè¡ã蚪ãããã¥ãŒãªããæ¹åšèŸºãæ£çã
- å€: ãªã³ãã³ããŒãã®äžã§çŸãã倿¥ãçºããŸãã
**3æ¥ç®: ãã€ã (ãã¥ã³ãã³)**
- æ: é»è»ã§ãã¥ã³ãã³ãžç§»åïŒçŽ4æéïŒã
- åå: ããªãšã³åºå Žã§æåãªæ°åžåºèã®éãéè³ã
- æŒ: ãã¢ããŒã«ã§ãã¬ããã§ã«ãšãœãŒã»ãŒãžã®ã©ã³ããã
- ååŸ: è±åœåºåãæ£çãããªã©ãã¯ã¹ããæéãã
- 倿¹: ãã©ãŠãšã³æäŒã蚪ãããã€ãã®ãŽã·ãã¯å»ºç¯ãå ªèœã
ãã®æ
çšã§ãšãŒãããã®ç°ãªãæåãšæŽå²ãçæéã§äœéšã§ããŸãããã²ãçŸå°ã®çŸé£ãšçŸãã颚æ¯ã楜ããã§ãã ããïŒ
---------- language_agent ----------
ã圹ã«ç«ãŠãŠå¬ããã§ãã蚪ããåœã
ã®å
¬çšèªããŸãšããŠãããŸãã®ã§ãçŸå°ã§ã®ã³ãã¥ãã±ãŒã·ã§ã³ã®åèã«ããŠãã ããã
- **ã€ã¿ãªã¢ (ãã©ã)**: ã€ã¿ãªã¢èª
- **ã¹ã€ã¹ (ãã¥ãŒãªãã)**: ãã€ãèªããã©ã³ã¹èªãã€ã¿ãªã¢èªãå
¬çšèªã§ããããã¥ãŒãªããã§ã¯äž»ã«ãã€ãèªã話ãããŠããŸãã
- **ãã€ã (ãã¥ã³ãã³)**: ãã€ãèª
ããããã®èšèªã§ã®åºæ¬çãªæšæ¶ããã¬ãŒãºãèŠããŠãããšãããæ¥œããæ
ã«ãªãã§ããããçŽ æŽããããšãŒãããæ
è¡ããæ¥œãã¿ãã ããïŒ
---------- exchange_agent ----------
[FunctionCall(id='call_QNxSHsIOwn4ckkht8RviYxdg', arguments='{"currency_code": "EUR"}', name='get_exchange_rate'), FunctionCall(id='call_fe0WHyCKt3vcRg3GMrD3U5hv', arguments='{"currency_code": "CHF"}', name='get_exchange_rate')]
---------- exchange_agent ----------
[FunctionExecutionResult(content="{'currency_pair': 'EUR/JPY', 'exchange_rate': 157.01, 'timestamp': '2025-02-20 02:27:02'}", call_id='call_QNxSHsIOwn4ckkht8RviYxdg'), FunctionExecutionResult(content="{'currency_pair': 'CHF/JPY', 'exchange_rate': 166.702, 'timestamp': '2025-02-20 02:27:01'}", call_id='call_fe0WHyCKt3vcRg3GMrD3U5hv')]
---------- exchange_agent ----------
{'currency_pair': 'EUR/JPY', 'exchange_rate': 157.01, 'timestamp': '2025-02-20 02:27:02'}
{'currency_pair': 'CHF/JPY', 'exchange_rate': 166.702, 'timestamp': '2025-02-20 02:27:01'}
---------- travel_summary_agent ----------
ãšãŒãããã®3ãåœã蚪ãã3æ¥éã®æ
è¡ãã©ã³ãæçµèª¿æŽããŸããã以äžãè©³çŽ°ãªæ
çšã§ãã
**1æ¥ç®: ã€ã¿ãªã¢ (ãã©ã)**
- **æ**: ãã©ãã»ãã«ãã³ãµç©ºæž¯ã«å°çãåžå
äžå¿éšãžç§»åããŸãã
- **åå**: ãã©ã倧èå ïŒãã¥ãªãŒã¢ïŒããŽã£ãããŒãªãªã»ãšãããšãŒã¬2äžã®ã¬ã¬ãªã¢ãèŠåŠããŸãã
- **æŒ**: å°å
ã®ãªã¹ãã©ã³ãã§ã€ã¿ãªã¢ã³ã»ã©ã³ããæ¥œãã¿ãŸãããã
- **ååŸ**: ãã¬ã©çŸè¡é€šã蚪ããã¬ãªãã«ãã»ãã»ãŽã£ã³ãã®ãæåŸã®æ©é€ããéè³ããŸãã
- **倿¹**: ã¹ãã©ã«ãã§ã¹ã³åã蚪ãããã©ãã®æŽå²ã«è§ŠããŸãããã
**2æ¥ç®: ã¹ã€ã¹ (ãã¥ãŒãªãã)**
- **æ**: ãã©ãããé»è»ã§ãã¥ãŒãªãããžç§»åïŒçŽ3æéïŒã
- **åå**: ãã³ããŒãéããæ£çããã·ã§ããã³ã°ãã«ãã§ã楜ãã¿ãŸãã
- **æŒ**: ã¹ã€ã¹åç©ã®ããŒãºãã©ã³ãã¥ããã·ã¥ãã£ãå ªèœã
- **ååŸ**: æŽå²ããæ§åžè¡ã蚪ãããã¥ãŒãªããæ¹åšèŸºãæ£çããŸãã
- **å€**: ãªã³ãã³ããŒãã®äžã§çŸãã倿¥ã芳è³ããŸãã
**3æ¥ç®: ãã€ã (ãã¥ã³ãã³)**
- **æ**: é»è»ã§ãã¥ã³ãã³ãžç§»åïŒçŽ4æéïŒã
- **åå**: ããªãšã³åºå Žã§æåãªæ°åžåºèã®éãéè³ããŸãã
- **æŒ**: ãã¢ããŒã«ã§ãã¬ããã§ã«ãšãœãŒã»ãŒãžã®ã©ã³ããããã ããŸãã
- **ååŸ**: è±åœåºåãæ£çãããªã©ãã¯ã¹ããæéãéãããŸãããã
- **倿¹**: ãã©ãŠãšã³æäŒã蚪ãããã€ãã®ãŽã·ãã¯å»ºç¯ãå ªèœããŸãã
**ã³ãã¥ãã±ãŒã·ã§ã³**:
- ã€ã¿ãªã¢èªïŒãã©ãïŒ
- ãã€ãèªïŒãã¥ãŒãªããããã¥ã³ãã³ïŒ
**çºæ¿ã¬ãŒã**ïŒåèïŒ:
- 1ãŠãŒã (EUR) = 157.01å (JPY)
- 1ã¹ã€ã¹ãã©ã³ (CHF) = 166.702å (JPY)
ãã®ãã©ã³ããããªãã®æ
ã®åèã«ãªãã°å¹žãã§ããç°ãªãæåãçŸé£ããããŠé
åçãªæŽå²ã«è§ŠããçŽ æŽãããæ
ããæ¥œãã¿ãã ããïŒå®å
šã§æ¥œããæ
ããç¥ãããŠããŸããTERMINATE
exchange_rateãšãŒãžã§ã³ãã«ãã£ãŠfunction callingãå®è¡ããçŸåšã®çºæ¿ã¬ãŒããæçµã®æ çšã«åæ ãããŠããããšãããããŸãã
â¢ãŠãŒã¶ãŒãã°ã«ãŒããã£ããã«ä»å ¥ãããã¿ãŒã³(Human in the loop)
ã°ã«ãŒããã£ããã®æåŸã«ãŠãŒã¶ãŒ(人é)ãä»å ¥ããšãŒãžã§ã³ãã®åããã¡ãã»ãŒãžã§å¶åŸ¡ãããã¿ãŒã³ã§ãã(Human in the loopãšåŒãã§ãããããŸãã)
äžèšã®ãµã³ãã«ã³ãŒãã¯ãããŸã§ãšåãæ çšã決ããã·ããªãªã«ãªããŸããããšãŒãžã§ã³ãã®ææ¡ã«ãŠãŒã¶ãŒã远å ã®ãªã¯ãšã¹ããè¡ãããšãŒãžã§ã³ãããã®ãªã¯ãšã¹ãã«ãã£ãŠæ çšãåææ¡ãããšãã·ããªãªã§ãã
å®ããžãã¹ã ãšãäŸãã°ãµãã©ã€ãã§ãŒã³ã·ã¹ãã ãªã©ã®çºæ³šã·ã¹ãã ã«é£æºããŠAIãšãŒãžã§ã³ããçºæ³šåŠçãå®è¡ããåã«äººéã確èªã»å€æãè¡ãå¿ èŠãããå Žåãªã©ãå šãŠã®å€æããšãŒãžã§ã³ãã«ä»»ããããªããããªã±ãŒã¹ã§ã®å©çšãæ³å®ãããŸãã
å¿ èŠãªã©ã€ãã©ãªãã€ã³ããŒãããŸãã
from autogen_agentchat.agents import AssistantAgent
from autogen_agentchat.conditions import TextMentionTermination
from autogen_agentchat.teams import RoundRobinGroupChat
from autogen_agentchat.ui import Console
from autogen_ext.models.openai import OpenAIChatCompletionClient
import os
import getpass
OpenAIã®APIããŒãå ¥åã
os.environ["OPENAI_API_KEY"] = getpass.getpass("Enter your OpenAI API Key: ")
ãšãŒãžã§ã³ããå®çŸ©ããŸãããããŸã§ã®ã³ãŒããšã»ãŒå€ãããŸããããtravel_summary_agentã®ã·ã¹ãã ã¡ãã»ãŒãžã«TERMINATEã®æ¡ä»¶ã«é¢ããæèšãå ¥ããŸãããããããããŸã§ã®ã³ãŒããšéãç¹ã§ãã
planner_agent = AssistantAgent(
"planner_agent",
model_client=OpenAIChatCompletionClient(model="gpt-4o"),
description="æ
è¡ã®èšç»ãç«ãŠãŠããã䟿å©ãªã¢ã·ã¹ã¿ã³ã",
system_message="ããªãã¯ããŠãŒã¶ãŒã®ãªã¯ãšã¹ãã«åºã¥ããŠæ
è¡ãã©ã³ãææ¡ã§ãã䟿å©ãªã¢ã·ã¹ã¿ã³ãã§ãã",
)
local_agent = AssistantAgent(
"local_agent",
model_client=OpenAIChatCompletionClient(model="gpt-4o"),
description="å°å
ã®ã¢ã¯ãã£ããã£ã蚪åå
ãææ¡ã§ããå°å
ã¢ã·ã¹ã¿ã³ã",
system_message="ããªãã¯ãæ¬ç©ã§è峿·±ãå°å
ã®ã¢ã¯ãã£ããã£ã蚪åããå ŽæããŠãŒã¶ãŒã«ææ¡ããæäŸãããã³ã³ããã¹ãæ
å ±ãå©çšã§ãã䟿å©ãªã¢ã·ã¹ã¿ã³ãã§ãã",
)
language_agent = AssistantAgent(
"language_agent",
model_client=OpenAIChatCompletionClient(model="gpt-4o"),
description="ç¹å®ã®ç®çå°ã«é¢ããèšèªã®ãã³ããæäŸã§ãã䟿å©ãªã¢ã·ã¹ã¿ã³ã",
system_message="ããªãã¯ãæ
è¡èšç»ãæ€èšããç¹å®ã®ç®çå°ã§ã®èšèªãã³ãã¥ãã±ãŒã·ã§ã³ã®èª²é¡ã«å¯ŸåŠããæåã®æ¹æ³ã«é¢ããéèŠãªãã³ãã«ã€ããŠãã£ãŒãããã¯ããŠãã ããã",
)
travel_summary_agent = AssistantAgent(
"travel_summary_agent",
model_client=OpenAIChatCompletionClient(model="gpt-4o"),
description="æ
è¡èšç»ããŸãšããã®ã«åœ¹ç«ã€ã¢ã·ã¹ã¿ã³ã",
system_message="ããªãã¯ãä»ã®ãšãŒãžã§ã³ãããã®ææ¡ãã¢ããã€ã¹ããã¹ãŠåãå
¥ããè©³çŽ°ãªæçµçãªæ
è¡èšç»ãæäŸã§ããã圹ã«ç«ã€ã¢ã·ã¹ã¿ã³ãã§ããæçµèšç»ãçµ±åãããå®å
šã§ããããšã確èªããå¿
èŠããããŸããæçµçãªå¯Ÿå¿ã¯å®å
šãªèšç»ã§ãªããã°ãªããŸããã",
)
ãŠãŒã¶ãŒãã°ã«ãŒããã£ããã«ä»å ¥ããããã®ãšãŒãžã§ã³ããæ°ãã«è¿œå ããŸãããããŸã§ã¯AssistantAgentãšãã颿°ã§ãšãŒãžã§ã³ããå®çŸ©ããŸãããããŠãŒã¶ãŒã«åŠçãæž¡ã(ãŠãŒã¶ãŒã®å ¥åãæ±ãã)å¿ èŠããããããå¥ã®é¢æ°UserProxyAgentã§ãšãŒãžã§ã³ããå®çŸ©ããŸãã
UserProxyAgentã¿ã€ãã®ãšãŒãžã§ã³ããã°ã«ãŒããã£ããã«ååšãããšãã°ã«ãŒããã£ããã®æåŸã«å¿ ããã®UserProxyAgentã«åŠçãæž¡ãããŠãŒã¶ãŒã®å ¥åãæ±ãããšããã·ãŒã±ã³ã¹ã«ãªããŸãã
from autogen_agentchat.agents import UserProxyAgent
user_proxy = UserProxyAgent("user_proxy", input_func=input)
TERMINATIONã®æ¡ä»¶ãå®çŸ©ããŸãã以äžã¯ãŠãŒã¶ãŒãå ¥åããã¡ãã»ãŒãžã«ãAPPROVEãã®æåããã£ãå Žåã«ãã£ããçµäºãšããæ¡ä»¶ã§ã°ã«ãŒããã£ãããå®çŸ©ããŠããŸãã
termination = TextMentionTermination("APPROVE")
group_chat = RoundRobinGroupChat(
[user_proxy, planner_agent, language_agent, travel_summary_agent],
termination_condition=termination,
max_turns=10 # æå€§10ã¿ãŒã³ã§çµäº
)
å®çŸ©ããã°ã«ãŒããã£ãããå®è¡ããŸãã
stream = group_chat.run_stream()
await Console(stream)
UserProxyAgentãååšããã°ã«ãŒããã£ãããªã®ã§ãåãã«ãŠãŒã¶ãŒãå ¥åãæ±ããããŸãã
Enter your response:
ãããŸã§åæ§ããšãŒãããã®3ãåœã蚪ãã3æ¥éã®æ è¡ãèšç»ããŠãã ãããããšå ¥åããŠã¿ãŸãã
Enter your response: ãšãŒãããã®3ãåœã蚪ãã3æ¥éã®æ
è¡ãèšç»ããŠãã ããã
ãã®ã¡ãã»ãŒãžã«åå¿ããä»ã®ãšãŒãžã§ã³ãããã£ãããå§ããŸãã
Enter your response: ãšãŒãããã®3ãåœã蚪ãã3æ¥éã®æ
è¡ãèšç»ããŠãã ããã
---------- user_proxy ----------
ãšãŒãããã®3ãåœã蚪ãã3æ¥éã®æ
è¡ãèšç»ããŠãã ããã
---------- planner_agent ----------
ãšãŒãããã§3æ¥éã®æ
è¡ã¯ãšãŠãçæéã§ãããå¹çããèšç»ããã°3ã€ã®ç°ãªãåœã蚪ããããšãã§ããŸãã以äžã¯ãã¢ã¯ã»ã¹ããããéœåžãéžãã ã¢ãã«ãã©ã³ã§ãã
### 1æ¥ç®: ãã©ã³ã¹ïŒããªïŒ
**åå:**
- ã·ã£ã«ã«ã»ãã»ãŽãŒã«ç©ºæž¯ã«å°çã
- ããã«ã«ãã§ãã¯ã€ã³ã
- æé£åŸããšããã§ã«å¡ã蚪åã芳å
ãã¹ãå©çšãããšæéãç¯çŽã§ããŸãã
**ååŸ:**
- ã«ãŒãã«çŸè¡é€šã蚪åãåäœãå ªèœãã€ã€ãã¬ã€ããã¢ãŒã§å¹ççã«èŠ³èŠ§ã
- æŒé£ã¯ã«ãŒãã«åšèŸºã®ã«ãã§ã§ãã©ã³ã¹æçãæºå«ã
**å€:**
- ã»ãŒãå·ã¯ã«ãŒãºã§å€æ¯ã楜ãã¿ãªããããªã®çŸãããå ªèœã
- ãªã«ã»ãŒçŸè¡é€šã®è¿ãã§ãã£ããŒã
### 2æ¥ç®: ãã«ã®ãŒïŒããªã¥ãã»ã«ïŒ
**åå:**
- ååäžã®æ©ãæéã«ã¿ãªã¹é«éåè»ã§ããªã¥ãã»ã«ãžç§»åïŒçŽ1æéåïŒã
- ã°ã©ã³ãã©ã¹ãèŠåŠããåšèŸºã®èгå
ã¹ããããæ£çã
**ååŸ:**
- æŒé£ã¯ãã«ã®ãŒã¯ããã«ã詊ãã€ã€ãå°å
ã®ããŒã«ã楜ããã
- ã¢ãããŠã ãžèšªããã¢ãŒããšå»ºç¯ã®èåãäœéšã
**å€:**
- ãµã³ãã»ã«ããªãŒãåºå ŽåšèŸºã®ã¬ã¹ãã©ã³ã§å€é£ã
- ããªã¥ãã»ã«åé§
è¿ãã®ããã«ã«å®¿æ³ã
### 3æ¥ç®: ãªã©ã³ãïŒã¢ã ã¹ãã«ãã ïŒ
**åå:**
- ææ©ãåºçºããŠãã€ã³ã¿ãŒã·ãã£ãšã¯ã¹ãã¬ã¹ã§ã¢ã ã¹ãã«ãã ãžç§»åïŒçŽ2æéïŒã
- åžå
ã®äžå¿ããã åºå Žã蚪åããçå®®ã芳å
ã
**ååŸ:**
- ã©ã€ã¯ã¹ãã¥ãŒãžã¢ã ãã¢ã ã¹ãã«ãã åœç«çŸè¡é€šã蚪åãããªã©ã³ãã®èžè¡ãå ªèœã
- åžå
éæ²³æ²¿ãã®ã«ãã§ã§ã©ã³ãã
**å€:**
- ãŽã©ã«ãã«ã¹ãå
¬åã蚪ããèªç¶ã楜ããã
- ãŠããŒã¯ãªããŒãªã³ã°ãã¹ãããŒãã¯ããã«ã詊ãã€ã€ã軜é£ã楜ãã¿ãªããã¢ã ã¹ãã«ãã äžå€®é§
ãžã
- åž°åœã®ããã®ãã©ã€ãã«åããŠã¹ãããŒã«ç©ºæž¯ãžç§»åã
ãã®ãã©ã³ã§ã¯ããªãã¹ãå
Œ
±äº€éæ©é¢ãå©çšããŠæéãç¯çŽããåéœåžã®äž»èŠã¹ããããæ¥œããããã«ããŠããŸããæ»åšæéã¯çãã§ãããããããã®æåãšèгå
å°ãæå€§éã«å ªèœã§ããããšã§ããããæ
è¡ã«å¿
èŠãªãã¶ããã±ããã宿æ³å
ã¯äºåã«äºçŽããŠããã®ããå¿ããªãã
---------- language_agent ----------
æ
è¡èšç»ã«é¢ããŠããšãŒãããã§ã®èšèªãšã³ãã¥ãã±ãŒã·ã§ã³ã®èª²é¡ã«å¯ŸåŠããããã®ããã€ãã®ãã³ããæäŸããŸãã
1. **åºæ¬ãã¬ãŒãºãåŠã¶**: ååœã®åºæ¬çãªãã¬ãŒãºïŒæšæ¶ãæè¬ãå°ããèšèãªã©ïŒããããããåŠãã§ãããšäŸ¿å©ã§ããå°ããªãžã§ã¹ãã£ãŒãå°å
ã®äººã
ãšã®è·é¢ãçž®ããå©ãã«ãªããŸãã
2. **翻蚳ã¢ããªã掻çš**: Google翻蚳ãDeepLã®ãããªç¿»èš³ã¢ããªãã¹ããŒããã©ã³ã«ããŠã³ããŒãããŠããã°ããªã¢ã«ã¿ã€ã ã§ããã¹ããé³å£°ã翻蚳ããããšãã§ããç·æ¥æããµããŒããå¿
èŠãªãšãã«åœ¹ç«ã¡ãŸãã
3. **å°å³ã¢ããªã®ãªãã©ã€ã³å©çš**: ãªãã©ã€ã³ã§äœ¿ããå°å³ã¢ããªãããŠã³ããŒãããŠãããšãéä¿¡ãäžå®å®ãªå Žæã§ãéã«è¿·ããã«æžã¿ãŸããäºåã«äž»èŠå°ç¹ãããŒã¯ããŠãããšäŸ¿å©ã§ãã
4. **éèšèªã³ãã¥ãã±ãŒã·ã§ã³**: å¿
èŠãªæ
å ±ãäŒããéããžã§ã¹ãã£ãŒãæã¶ãã䜿ã£ãŠææçéãå³ãããšãå¯èœã§ããç¹ã«ãæå·®ããæ°éã瀺ããžã§ã¹ãã£ãŒã¯èšèªãè¶
ããŠçè§£ã§ããŸãã
5. **çŸå°ã®èšèªãµããŒãããã¯ãæå**: ç°¡åãªã¬ã€ãããã¯ããã±ããèŸæžãæã£ãŠãããšãçŸå°ã§å¿
èŠãªèšèªãããã«ç¢ºèªã§ããŸãã
6. **宿æ³å
ã®ã¹ã¿ããã«èã**: 宿æ³å
ã®ã¹ã¿ããã«çŸå°ã®æ
å ±ãããããã®ã¹ããããå°ãããšãå°å
ã®èгå
æ
å ±ãåŸãããã³ãã¥ãã±ãŒã·ã§ã³ã®ä»²ä»ãããŠããã£ããã§ããŸãã
ãããã®ãã³ããæŽ»çšããã°ãæ
è¡äžã®ã³ãã¥ãã±ãŒã·ã§ã³ã®èª²é¡ãããã¹ã ãŒãºã«ä¹ãè¶ããããšãã§ããã§ããããæ¥œããæ
ããéãããã ããïŒ
---------- travel_summary_agent ----------
çŽ æŽãããæ
è¡èšç»ãæå€§éã«æŽ»çšããããã«ãèšèªã®ãã³ããåãå
¥ããæçµçãªãšãŒãããæ
è¡èšç»ããæ¡å
ããŸãã
### 1æ¥ç®: ãã©ã³ã¹ïŒããªïŒ
**åå:**
- ã·ã£ã«ã«ã»ãã»ãŽãŒã«ç©ºæž¯ã«å°çåŸãã¿ã¯ã·ãŒãã·ã£ãã«ã§ããã«ã«ãã§ãã¯ã€ã³ã
- ãšããã§ã«å¡ã蚪åãäºåã«ãã±ããäºçŽãããŠãããšåŸ
ã¡æéãççž®ã§ããŸãã芳å
ãã¹ãã¢ãŒãå©çšãããšå¹ççã§ãã
**ååŸ:**
- ã«ãŒãã«çŸè¡é€šã蚪åãåäœãå¹ççã«èŠ³èŠ§ããããã«ã¬ã€ããã¢ãŒãå©çšã通å
ã®çæ¿ã¯å€èšèªå¯Ÿå¿ã§ããã翻蚳ã¢ããªã圹ç«ã€ãšãããããŸãã
- æŒé£ã¯ã«ãŒãã«åšèŸºã®ã«ãã§ã§ãã©ã³ã¹æçãæºå«ã
**å€:**
- Googleç¿»èš³ãæŽ»çšãã€ã€ãã»ãŒãå·ã¯ã«ãŒãºã§å€æ¯ã楜ããïŒé³å£°ã¬ã€ããå€èšèªã§å©çšã§ããå ŽåãããïŒã
- ãªã«ã»ãŒçŸè¡é€šã®è¿ãã§ãã£ããŒãåºæ¬çãªãã©ã³ã¹èªæšæ¶ã詊ããŠã¿ãŠãã ããã
### 2æ¥ç®: ãã«ã®ãŒïŒããªã¥ãã»ã«ïŒ
**åå:**
- ååäžã®ã¿ãªã¹é«éåè»ã§ããªã¥ãã»ã«ãžç§»åïŒçŽ1æéåïŒãåè»ã«ã¯å€èšèªæ¡å
ãããã翻蚳ã¢ããªãè£å©ã«ãªããŸãã
- ã°ã©ã³ãã©ã¹ã蚪ããåšèŸºãæ£çãåºæ¬çãªãªã©ã³ãèªããã©ã³ã¹èªã®ãã¬ãŒãºã䜿ã£ãŠã¿ãŸãããã
**ååŸ:**
- ãã«ã®ãŒã¯ããã«ãšããŒã«ã楜ããã§ã©ã³ãã
- ã¢ãããŠã ã蚪åã翻蚳ã¢ããªã§æ¡å
ãçè§£ãã€ã€ãå±ç€ºã楜ããã
**å€:**
- ãµã³ãã»ã«ããªãŒãåºå ŽåšèŸºã§å€é£ãå°å³ã¢ããªã掻çšããªããã¬ã¹ãã©ã³ãæ¢ããŠã¿ãŸãããã
- ããªã¥ãã»ã«åé§
è¿ãã®ããã«ã«ãã§ãã¯ã€ã³ã
### 3æ¥ç®: ãªã©ã³ãïŒã¢ã ã¹ãã«ãã ïŒ
**åå:**
- æ©æã«ã€ã³ã¿ãŒã·ãã£ãšã¯ã¹ãã¬ã¹ã§ã¢ã ã¹ãã«ãã ãžïŒçŽ2æéïŒãé§
ã§ã®æ¡å
ã¯å€èšèªå¯Ÿå¿ã§ãã
- ãã åºå Žã芳å
ããçå®®å
ãæ£çãè±èªã§ã®æ¡å
ãå€ããã³ãã¥ãã±ãŒã·ã§ã³ã¯å®¹æã§ãã
**ååŸ:**
- ã©ã€ã¯ã¹ãã¥ãŒãžã¢ã ã蚪åãåäœãéè³ãã翻蚳æ©èœã䜿çšããªãã説æãçè§£ã
- éæ²³æ²¿ãã®ã«ãã§ã§ã©ã³ããå°å³ã¢ããªã§çŸå°æ
å ±ã確èªãã€ã€ç§»åã
**å€:**
- ãŽã©ã«ãã«ã¹ãå
¬åã§èªç¶ã楜ããã
- ããŒãªã³ã°ãã¹ãããŒãã¯ããã«ã詊ããªãããã¢ã ã¹ãã«ãã äžå€®é§
ãžãåž°åœã®ãã©ã€ãæºåãšããŠã¹ãããŒã«ç©ºæž¯ã«åãããŸãã
3æ¥éãšã¯ãããäºåæºåãšãã¯ãããžãŒã®æŽ»çšãé§äœ¿ããããšã§ã3ã€ã®åœã®é
åããã£ããæ¢çŽ¢ã§ããŸããååœã®åºæ¬ãã¬ãŒãºããããã€ã€ãã¢ããªã䜿ãããªããŠãçŽ æŽãããæ
ããæ¥œãã¿ãã ããã
Enter your response:
äžéãã®ãšãŒãžã§ã³ãããã£ãããçµããåŠçãUserProxyAgentã«æ»ããååºŠå ¥åãæ±ããããŸããããã§å 容ã«åé¡ããªããã°ãAPPROVEããšå ¥åããã°ãã£ããå®äºã§ãã
ä»åã¯ã蚪åå ã®äžéšãå¥ã®åœã«å€æŽãããããªããã³ãããå ¥åããŠã¿ãŸãã
Enter your response: ãã«ã®ãŒãå¥ã®åœã«å€æŽããŠãã ããã
äžè¿°ã®ããã³ãããåãã以éãã°ã«ãŒããã£ããã®ããçŽããšããç¶æ³ã«ãªããŸãã
---------- user_proxy ----------
ãã«ã®ãŒãå¥ã®åœã«å€æŽããŠãã ããã
---------- planner_agent ----------
ããããŸããŸãããã§ã¯ããã«ã®ãŒã®ä»£ããã«ãã€ããæ
çšã«çµã¿èŸŒã¿ãŸãã以äžã¯ããã€ããå«ã3æ¥éã®æ
è¡ãã©ã³ã§ãã
### 1æ¥ç®: ãã©ã³ã¹ïŒããªïŒ
**åå:**
- ã·ã£ã«ã«ã»ãã»ãŽãŒã«ç©ºæž¯ã«å°çã
- ããã«ã«ãã§ãã¯ã€ã³ã
- æé£åŸããšããã§ã«å¡ã蚪åã芳å
ãã¹ãå©çšãããšæéãç¯çŽã§ããŸãã
**ååŸ:**
- ã«ãŒãã«çŸè¡é€šã蚪åãåäœãå ªèœãã€ã€ãã¬ã€ããã¢ãŒã§å¹ççã«èŠ³èŠ§ã
- æŒé£ã¯ã«ãŒãã«åšèŸºã®ã«ãã§ã§ãã©ã³ã¹æçãæºå«ã
**å€:**
- ã»ãŒãå·ã¯ã«ãŒãºã§å€æ¯ã楜ãã¿ãªããããªã®çŸãããå ªèœã
- ãªã«ã»ãŒçŸè¡é€šã®è¿ãã§ãã£ããŒã
### 2æ¥ç®: ãã€ãïŒã±ã«ã³ïŒ
**åå:**
- ååäžã«ã¿ãªã¹é«éåè»ãŸãã¯ICEã§ããªããã±ã«ã³ãžç§»åïŒçŽ3æéïŒã
- ã±ã«ã³å€§èå ã蚪åãã±ã«ã³ã®è±¡åŸŽçãªå»ºç¯ç©ã§ãã¬ã€ããã¢ãŒãããã®ã§å©çšããã®ãããããã§ãã
**ååŸ:**
- ã©ã€ã³å·æ²¿ããæ£çããªãããªã©ãã¯ã¹ãå°å
ã®ã¬ã¹ãã©ã³ã§ã©ã³ãã
- ã±ã«ã³åžç«çŸè¡é€šãå¿çšå·¥èžçŸè¡é€šã蚪åãå°æ¹ã®æåãæŽå²ãå ªèœã
**å€:**
- ã±ã«ã³ã®æ§åžè¡ã§å€é£ãäŒçµ±çãªãã€ãæçãæ¥œããã§ã¿ãŸãããã
- ã±ã«ã³ã®ããã«ã«å®¿æ³ã
### 3æ¥ç®: ãªã©ã³ãïŒã¢ã ã¹ãã«ãã ïŒ
**åå:**
- ææ©ãåºçºããŠãã€ã³ã¿ãŒã·ãã£ãšã¯ã¹ãã¬ã¹ã§ã¢ã ã¹ãã«ãã ãžç§»åïŒçŽ3æéïŒã
- åžå
ã®äžå¿ããã åºå Žã蚪åããçå®®ã芳å
ã
**ååŸ:**
- ã©ã€ã¯ã¹ãã¥ãŒãžã¢ã ãã¢ã ã¹ãã«ãã åœç«çŸè¡é€šã蚪ãããªã©ã³ãã®èžè¡ãå ªèœã
- åžå
éæ²³æ²¿ãã®ã«ãã§ã§ã©ã³ãã
**å€:**
- ãŽã©ã«ãã«ã¹ãå
¬åã蚪ããèªç¶ã楜ããã
- ãŠããŒã¯ãªããŒãªã³ã°ãã¹ãããŒãã¯ããã«ã詊ãã€ã€ã軜é£ã楜ããã§ãã¢ã ã¹ãã«ãã äžå€®é§
ãžã
ãã®ãã©ã³ã§ã¯ãåéœåžã®äž»èŠã¹ããããå¹ççã«æ¥œããããšãéèŠããŠããŸãããã€ããç¹ã«ã±ã«ã³ã®æŽå²ç建é ç©ãçŸè¡é€šããçãæ»åšã§ãå°è±¡ã«æ®ã芳å
å°ã§ããæ
è¡ã®æºåã«ã¯ãåéœåžã§ã®å®¿æ³ãäº€éæ©é¢ã®äºçŽãå¿ããã«è¡ã£ãŠãã ãããæ¥œããæ
ããéãããã ããïŒ
---------- language_agent ----------
èšèªã®ãã³ããæŽ»çšããªããã®æ
è¡èšç»ã以äžã«ãæ¡å
ããŸãã
### 1æ¥ç®: ãã©ã³ã¹ïŒããªïŒ
**åå:**
- ã·ã£ã«ã«ã»ãã»ãŽãŒã«ç©ºæž¯ã«å°çåŸãããã«ã«ãã§ãã¯ã€ã³ãå°çæã«ãã©ã³ã¹èªã®åºæ¬ãã¬ãŒãºã䜿ããšå¥œå°è±¡ã
- ãšããã§ã«å¡ã蚪åãäºåã«ãªã³ã©ã€ã³ã§ãã±ããäºçŽãããããã§ãã
**ååŸ:**
- ã«ãŒãã«çŸè¡é€šãžãã¬ã€ããã¢ãŒã¯å€èšèªå¯Ÿå¿ããã©ã³ã¹èªã®æ¡å
ã翻蚳ã¢ããªã§è£å®ã§ããŸãã
- æŒé£ã«ã¯ããã©ã³ã¹æçãå ªèœããã¡ãã¥ãŒã翻蚳ã¢ããªã§ç¢ºèªã
**å€:**
- ã»ãŒãå·ã®ã¯ã«ãŒãºã§å€æ¯ã楜ããéãé³å£°ã¬ã€ããå€èšèªå¯Ÿå¿ã確èªã
- ããªã®ã«ãã§ã§ãã£ããŒæã«ç°¡åãªæšæ¶ãç·Žç¿ããŠã
### 2æ¥ç®: ãã€ãïŒã±ã«ã³ïŒ
**åå:**
- ãã€ãã«åããåœéåè»å
ã§ã¯ããã€ãèªã®åºæ¬ãã¬ãŒãºãå匷ãè»å
æ¡å
ã¯å€èšèªãåºæ¬ã
- ã±ã«ã³å€§èå ã蚪åã芳å
æ
å ±ã¯è±èªã§ãåºãæäŸãããŠããã®ã§äŸ¿å©ã§ãã
**ååŸ:**
- ã©ã€ã³å·æ²¿ããžãæ¯èŠ³ãšæŽå²ã楜ãã¿ãªããæŒé£ã翻蚳ã¢ããªã§ã¡ãã¥ãŒã確èªã
- ã±ã«ã³åžå
çŸè¡é€šã蚪ããåã«ãå±ç€ºæ
å ±ããªã³ã©ã€ã³ã§ç¢ºèªã
**å€:**
- ãã€ãã®ãã¢ããŒã«ã§å€é£ããå°å
æçãæ¥œãã¿ã€ã€ãåºå¡ã«ãã€ãèªã§ã®æ³šæã詊ã¿ãŸãã
- ã±ã«ã³ã®äžå¿å°ã«å®¿æ³ã
### 3æ¥ç®: ãªã©ã³ãïŒã¢ã ã¹ãã«ãã ïŒ
**åå:**
- ã¢ã ã¹ãã«ãã ã«åããåè»ã§ã¯ããªã©ã³ãèªã®åºæ¬çãªæšæ¶ããã¹ã¿ãŒãå°çæã«åœ¹ç«ã¡ãŸãã
- ãã åºå Žã«å°çãæŽå²çãªå°ç¹ã芳å
ããçå®®å
éšãèŠåŠã
**ååŸ:**
- ã©ã€ã¯ã¹ãã¥ãŒãžã¢ã ããŽããçŸè¡é€šãå·¡ãããªã©ã³ãã®èžè¡ã楜ããã§ãã ãããå±ç€ºæ¡å
ã¯å€èšèªå¯Ÿå¿ãå€ãã§ãã
- ã«ãã§ã§ã©ã³ãã翻蚳ã¢ããªã§éåžžã®ã¡ãã¥ãŒã確èªå¯èœã
**å€:**
- ãŽã©ã«ãã«ã¹ãå
¬åã§å€æ¹ããªã©ãã¯ã¹ãããŒã±ããã§å°å
ã®ãèåã詊é£ã
- ã¢ã ã¹ãã«ãã äžå€®é§
ããã¹ãããŒã«ç©ºæž¯ãžè¡ããåž°åœæºåã
翻蚳ã¢ããªãšåºæ¬çãªèšèªã¹ãã«ãé§äœ¿ããããšã§ãåœå¢ãè¶ããçæéã®æ
è¡ã§ããã£ãããšããæåäœéšãåŸãããã¯ãã§ããå®å
šã§æ¥œããæ
ããæ¥œãã¿ãã ããïŒ
---------- travel_summary_agent ----------
æçµãã©ã³ãšããŠãèšèªã®ãã³ããçã蟌ãã 3æ¥éã®ãšãŒãããæ
è¡ããæ¡å
ããŸãã
### 1æ¥ç®: ãã©ã³ã¹ïŒããªïŒ
**åå:**
- ã·ã£ã«ã«ã»ãã»ãŽãŒã«ç©ºæž¯ã«å°çåŸãã¿ã¯ã·ãŒãã·ã£ãã«ã§ããã«ã«ãã§ãã¯ã€ã³ããã©ã³ã¹èªã®åºæ¬ãã¬ãŒãºïŒãBonjourãã§æšæ¶ããMerciãã§æè¬ïŒã詊ããŠã¿ãŠãã ããã
- ãšããã§ã«å¡ã蚪åãäºåã«ãªã³ã©ã€ã³ã§ãã±ããäºçŽããã芳å
ãã¹ãã¢ãŒãå©çšãããšå¹ççã§ãã
**ååŸ:**
- ã«ãŒãã«çŸè¡é€šã蚪åãã¬ã€ããã¢ãŒãå€èšèªã«å¯Ÿå¿ããŠããã翻蚳ã¢ããªã§è£è¶³æ
å ±ã確èªã§ããŸãã
- æŒé£ã¯ã«ãŒãã«åšèŸºã®ã«ãã§ã§ãã©ã³ã¹æçãæ¥œãã¿ãŸãããã翻蚳ã¢ããªã§ã¡ãã¥ãŒã確èªãããšã¹ã ãŒãºã§ãã
**å€:**
- ã»ãŒãå·ã¯ã«ãŒãºã§çŸãã倿¯ã楜ãããé³å£°ã¬ã€ãã¯å€èšèªå¯Ÿå¿ã
- ãªã«ã»ãŒçŸè¡é€šè¿ãã®ã«ãã§ã§ãã£ããŒãåºå¡ã«ãã©ã³ã¹èªã®ç°¡åãªæšæ¶ãšãã¬ãŒãºã詊ããŠã¿ãŠãã ããã
### 2æ¥ç®: ãã€ãïŒã±ã«ã³ïŒ
**åå:**
- ãã€ãã®ã±ã«ã³ãžã®ç§»åã¯ã¿ãªã¹é«éåè»ãŸãã¯ICEã§ãè»å
ã¢ããŠã³ã¹ã¯å€èšèªå¯Ÿå¿ãç°¡åãªãã€ãèªã®ãã¬ãŒãºïŒãHalloãã§æšæ¶ããDankeãã§æè¬ïŒã掻çšããŠã¿ãŸãããã
- ã±ã«ã³å€§èå ã蚪åã芳å
æ
å ±ãæ¡å
æ¿ã¯è±èªã«ã察å¿ããŠããŸãã
**ååŸ:**
- ã©ã€ã³å·æ£çãšå°å
ã¬ã¹ãã©ã³ã§ã®ã©ã³ãããã€ãæçãå ªèœã翻蚳ã¢ããªã§ã¡ãã¥ãŒç¢ºèªã䟿å©ã
- ã±ã«ã³åžç«çŸè¡é€šã蚪åãå±ç€ºæ
å ±ãHPã§ç¢ºèªããèŠåŠãå¹çããã
**å€:**
- æ§åžè¡ã§ã®å€é£ããã¢ããŒã«ã§ã®æ³šæã§ç°¡åãªãã€ãèªã詊ã¿ãŠã¿ãŸãããã
- ã±ã«ã³åžå
ã®ããã«ã«å®¿æ³ã
### 3æ¥ç®: ãªã©ã³ãïŒã¢ã ã¹ãã«ãã ïŒ
**åå:**
- ã¢ã ã¹ãã«ãã ãžã¯ã€ã³ã¿ãŒã·ãã£ãšã¯ã¹ãã¬ã¹ã§ç§»åãè»å
ã§ãªã©ã³ãèªã®åºæ¬ãã¬ãŒãºïŒãHoiãã§æšæ¶ããDank jeãã§æè¬ïŒãåŠãã§ã¿ãŸãããã
- ãã åºå Žèšªåãçå®®ãèŠåŠãæ¡å
ã¯è±èªã§ããããŸãã
**ååŸ:**
- ã©ã€ã¯ã¹ãã¥ãŒãžã¢ã ã蚪åããªã©ã³ãã®èžè¡ã楜ãã¿ã翻蚳ã¢ããªã§å±ç€ºèª¬æã確èªã
- åžå
éæ²³æ²¿ãã®ã«ãã§ã§ã©ã³ããã¡ãã¥ãŒã翻蚳ã¢ããªã§ãã§ãã¯ã
**å€:**
- ãŽã©ã«ãã«ã¹ãå
¬åã§ãªã©ãã¯ã¹ãå°å
ã®ããŒã±ããã§ã¹ãããŒãã¯ããã«ãªã©ã®ãèåã詊é£ã
- ã¢ã ã¹ãã«ãã äžå€®é§
ããã¹ãããŒã«ç©ºæž¯ãžç§»åããåž°åœæºåã
ãã®æ
è¡ãã©ã³ã¯ãååœã®äž»èŠãªèгå
ã¹ãããã蚪ãã€ã€ãããããã®åœã§ã®åºæ¬çãªèšèªã¹ãã«ãå®è·µããæ©äŒãæäŸããŸãããã¯ãããžãŒãå©çšããŠã³ãã¥ãã±ãŒã·ã§ã³ããµããŒãããªãããå
å®ããæåäœéšãæºå«ããŠãã ãããè¯ãæ
ããéãããã ããïŒ
Enter your response:
äžéããšãŒãžã§ã³ãã®ãã£ãããåŠçãããã®ã§ãå床User Proxy Agentã«åŠçãæž¡ããå ¥åãæ±ããããŸãããApproveããå ¥åãããšãã£ããçµäºã§ãã
Enter your response: APPROVE
---------- user_proxy ----------
APPROVE
ãšãŒãžã§ã³ãã®äŒè©±ã«ãŠãŒã¶ãŒãä»å ¥ããæ§åãããããããã ããã®ã§ã¯ãªãã§ããããã
â£äº€æžåãã«ããšãŒãžã§ã³ãã®ãµã³ãã«ã³ãŒã
äžåç£ã®å£²ãæãšãŒãžã§ã³ããšäžåç£ã®è²·ãæãšãŒãžã§ã³ãã亀æžãè¡ãã亀æžä»²ä»ãšãŒãžã§ã³ãããããçºãããšãã亀æžåãã«ããšãŒãžã§ã³ãã®ã·ããªãªã§ãã
äžåç£ã®è²·ãæãšãŒãžã§ã³ãã«ã®ã¿ãäžåç£ã®åžå ŽäŸ¡æ Œæ å ±ãæ€çŽ¢ã§ããFunction Callingãå®çŸ©ããŠã¿ãŸããã
å¿ èŠãªã©ã€ãã©ãªã®ã€ã³ããŒã
from autogen_agentchat.agents import AssistantAgent
from autogen_agentchat.conditions import TextMentionTermination
from autogen_agentchat.teams import RoundRobinGroupChat
from autogen_agentchat.ui import Console
from autogen_ext.models.openai import OpenAIChatCompletionClient
from autogen_core.tools import FunctionTool
from typing import List
import os
import getpass
OpenAIã®APIããŒã®å ¥å
os.environ["OPENAI_API_KEY"] = getpass.getpass("Enter your OpenAI API Key: ")
äžåç£äŸ¡æ Œæ å ±ãšããŠæ¶ç©ºã®åžå ŽããŒã¿å®çŸ©ããŸããæ¬æ¥ã§ããã°ãã®éšåã¯äžåç£æ å ±ã©ã€ãã©ãª(åœå亀éç)ãªã©ã®ãµãŒãã¹ã«API Callããfunction callingãäœæãã¹ãã§ããä»åã¯ç°¡æçã«äžèšã®ããŒã¿ãæ€çŽ¢ããfunction callingãå®çŸ©ããŸãã
real_estate_data = {
"æ°å®¿é§
": [
{"äŸ¡æ ŒïŒäžåïŒ": 8500, "åºãïŒã¡ïŒ": 60, "é§
åŸæ©ïŒåïŒ": 5},
{"äŸ¡æ ŒïŒäžåïŒ": 10500, "åºãïŒã¡ïŒ": 80, "é§
åŸæ©ïŒåïŒ": 10},
{"äŸ¡æ ŒïŒäžåïŒ": 15000, "åºãïŒã¡ïŒ": 100, "é§
åŸæ©ïŒåïŒ": 10},
],
"æžè°·é§
": [
{"äŸ¡æ ŒïŒäžåïŒ": 9200, "åºãïŒã¡ïŒ": 55, "é§
åŸæ©ïŒåïŒ": 15},
{"äŸ¡æ ŒïŒäžåïŒ": 15500, "åºãïŒã¡ïŒ": 75, "é§
åŸæ©ïŒåïŒ": 10},
{"äŸ¡æ ŒïŒäžåïŒ": 9200, "åºãïŒã¡ïŒ": 55, "é§
åŸæ©ïŒåïŒ": 4},
],
"åå·é§
": [
{"äŸ¡æ ŒïŒäžåïŒ": 9700, "åºãïŒã¡ïŒ": 60, "é§
åŸæ©ïŒåïŒ": 5},
{"äŸ¡æ ŒïŒäžåïŒ": 14000, "åºãïŒã¡ïŒ": 90, "é§
åŸæ©ïŒåïŒ": 10},
{"äŸ¡æ ŒïŒäžåïŒ": 13000, "åºãïŒã¡ïŒ": 80, "é§
åŸæ©ïŒåïŒ": 15},
],
}
äžåç£äŸ¡æ Œæ å ±ã®ããŒã¿ãæ€çŽ¢ãã颿°ãå®çŸ©ã(ãããåŸã®ã¹ãããã§Function Callingã«ããŸãã
def search_real_estate_info(station_name: str) -> List:
"""
æå®ãããé§
ã®äžåç£æ
å ±ïŒäŸ¡æ Œã»åºãã»é§
åŸæ©ïŒããã¹ãŠãªã¹ãåã§è¿ãã
Args:
station_name (str): æ€çŽ¢ããé§
åã
Returns:
List[Dict[str, Any]]: æå®é§
ã®äžåç£æ
å ±ãªã¹ãã
- äŸ: [{"äŸ¡æ ŒïŒäžåïŒ": 8500, "åºãïŒã¡ïŒ": 60, "é§
åŸæ©ïŒåïŒ": 5}, {...}]
- ããŒã¿ããªãå Žå: [{"ãšã©ãŒ": "ããŒã¿ãªã"}]
"""
return real_estate_data.get(station_name, [{"ãšã©ãŒ": "ããŒã¿ãªã"}])
å®çŸ©ãã颿°ã®åäœç¢ºèªãåå·é§ ã§æ€çŽ¢ããŠã¿ãã
search_real_estate_info("åå·é§
")
äžèšãåºåçµæãåå·é§ ã®3ä»¶ãæ€çŽ¢ã§ããŠããã
[{'äŸ¡æ ŒïŒäžåïŒ': 9700, 'åºãïŒã¡ïŒ': 60, 'é§
åŸæ©ïŒåïŒ': 5},
{'äŸ¡æ ŒïŒäžåïŒ': 14000, 'åºãïŒã¡ïŒ': 90, 'é§
åŸæ©ïŒåïŒ': 10},
{'äŸ¡æ ŒïŒäžåïŒ': 13000, 'åºãïŒã¡ïŒ': 80, 'é§
åŸæ©ïŒåïŒ': 15}]
å®çŸ©ãã颿°ã Function CallingãšããŠå®çŸ©ã
search_real_estate_tool = FunctionTool(
search_real_estate_info, description="æå®ãããé§
ã®äžåç£äŸ¡æ Œæ
å ±ã調æ»ããŸãã"
)
ãšãŒãžã§ã³ããå®çŸ©ã
äžåç£ã®å£²ãæãšãŒãžã§ã³ããè²·ãæãšãŒãžã§ã³ããäž¡è
ããšããã€äº€æžãšãŒãžã§ã³ããå®çŸ©ã
# 売ãæãšãŒãžã§ã³ãïŒã§ããã ãé«ãäŸ¡æ Œãæç€ºïŒ
seller_agent = AssistantAgent(
"seller_agent",
model_client=OpenAIChatCompletionClient(model="gpt-3.5-turbo"),
description="ã§ããã ãé«ãäŸ¡æ Œã§å£²ãããäžåç£ã®å£²ãæãšãŒãžã§ã³ã",
system_message=(
"ããªãã¯ãŠãŒã¶ãŒã®äŸé Œãåããäžåç£ã売åŽãã売ãæãšãŒãžã§ã³ãã§ããæåã«é«ãã®äŸ¡æ Œãæç€ºããã§ããã ãé«ãäŸ¡æ Œã§å£²ãããšãç®æããŠãã ããã "
"ãã ããããŸãã«ã匷æ°ããããšè²·ãæãé¢ããå¯èœæ§ããããŸãã®ã§æ³šæããŠãã ããã"
)
)
# è²·ãæãšãŒãžã§ã³ãïŒã§ããã ãäœãäŸ¡æ Œãæç€ºïŒ
buyer_agent = AssistantAgent(
"buyer_agent",
model_client=OpenAIChatCompletionClient(model="gpt-3.5-turbo"),
description="ã§ããã ãäœãäŸ¡æ Œã§è²·ãããäžåç£ã®è²·ãæãšãŒãžã§ã³ã",
system_message=(
"ããªãã¯äžåç£ã®è²·ãæãšãŒãžã§ã³ãã§ãã"
"賌å
¥ãåžæããé§
ã®äžåç£æ
å ±ãããŒã« 'search_real_estate_info' ã§æ€çŽ¢ããäŸ¡æ Œã»åºãã»é§
åŸæ©ãèæ
®ããŠäº€æžããŠãã ããã"
),
tools=[search_real_estate_tool]
)
# 亀æžãšãŒãžã§ã³ãïŒåæå¯èœãªäŸ¡æ Œã決å®ïŒ
negotiation_agent = AssistantAgent(
"negotiation_agent",
model_client=OpenAIChatCompletionClient(model="gpt-3.5-turbo"),
description="売ãæãšè²·ãæã®æèŠã調æŽãã亀æžããŸãšãããšãŒãžã§ã³ã",
system_message=(
"ããªãã¯äº€æžã®é²è¡åœ¹ã§ããäž¡è
ã®æç€ºäŸ¡æ Œãåºããé§
åŸæ©ãèæ
®ããå
¬å¹³ãªåæäŸ¡æ Œãææ¡ããŠãã ããã\n"
"亀æžã決ãŸã£ãããäº€æžæç«: æçµäŸ¡æ Œã¯ââäžåã§ã ããšåºåããŠãã ããã\n"
"亀æžã決è£ããå Žåã¯ãäº€æžæ±ºè£ããšåºåããŠãã ããã"
)
)
äŒè©±çµäºã®æ¡ä»¶ãšã°ã«ãŒããã£ããã®å®çŸ©ã
# çµäºæ¡ä»¶ïŒãäº€æžæç«ããŸãã¯ãäº€æžæ±ºè£ã
termination = TextMentionTermination("äº€æžæç« | äº€æžæ±ºè£")
group_chat = RoundRobinGroupChat(
[seller_agent, buyer_agent, negotiation_agent],
termination_condition=termination,
max_turns=10 # æå€§10ã¿ãŒã³ã§çµäº
)
äžèšã®ããã³ããã§äº€æžã¹ã¿ãŒãã
await Console(group_chat.run_stream(task="æ±äº¬éœå
ã§ãããªããç·è±ããªçºæãè¿é£ã«ã¯å€ãã®ã¬ã¹ãã©ã³ãã·ã§ããã³ã°æœèšãå
¬åãªã©ããããåå·é§
ããåŸæ©10åãåºã70ã¡ã®ãã³ã·ã§ã³ã売åŽãããã§ãã"))
åºåçµæã¯äžèšã®éãã
---------- user ----------
æ±äº¬éœå
ã§ãããªããç·è±ããªçºæãè¿é£ã«ã¯å€ãã®ã¬ã¹ãã©ã³ãã·ã§ããã³ã°æœèšãå
¬åãªã©ããããåå·é§
ããåŸæ©10åãåºã70ã¡ã®ãã³ã·ã§ã³ã売åŽãããã§ãã
---------- seller_agent ----------
ããã¯çŽ æŽãããç©ä»¶ã§ãããåæ§ã®ç©ä»¶ã¯åžå Žã§é«ãéèŠããããŸãããã®ãããªé
åçãªæ¡ä»¶ãèæ
®ããŠãäŸ¡æ Œèšå®ã§ããã ãé«ãã«èšå®ããããšãéèŠã§ãããŸãã¯åšèŸºã®é¡äŒŒç©ä»¶ã®äŸ¡æ Œã売ãåºãäŸ¡æ Œã調æ»ããçžå Žãææ¡ããããšã倧åã§ãããããŠããã®äžã§70ã¡ã®ãã³ã·ã§ã³ãšããŠç¹ã«é
åçãªç¹ã匷調ããé«ãã®äŸ¡æ Œã§æç€ºããããšããå§ãããŸããè²·ãæãå©ç¹ãçè§£ããé
åã«åŒãããããšã§ãããé«ãäŸ¡æ Œã§ååŒãæç«ããå¯èœæ§ãé«ãŸããŸãã
---------- buyer_agent ----------
[FunctionCall(id='call_AIO4RmaVL2lZPSAwrpZxQdO5', arguments='{"station_name":"åå·é§
"}', name='search_real_estate_info')]
---------- buyer_agent ----------
[FunctionExecutionResult(content="[{'äŸ¡æ ŒïŒäžåïŒ': 9700, 'åºãïŒã¡ïŒ': 60, 'é§
åŸæ©ïŒåïŒ': 5}, {'äŸ¡æ ŒïŒäžåïŒ': 14000, 'åºãïŒã¡ïŒ': 90, 'é§
åŸæ©ïŒåïŒ': 10}, {'äŸ¡æ ŒïŒäžåïŒ': 13000, 'åºãïŒã¡ïŒ': 80, 'é§
åŸæ©ïŒåïŒ': 15}]", call_id='call_AIO4RmaVL2lZPSAwrpZxQdO5')]
---------- buyer_agent ----------
[{'äŸ¡æ ŒïŒäžåïŒ': 9700, 'åºãïŒã¡ïŒ': 60, 'é§
åŸæ©ïŒåïŒ': 5}, {'äŸ¡æ ŒïŒäžåïŒ': 14000, 'åºãïŒã¡ïŒ': 90, 'é§
åŸæ©ïŒåïŒ': 10}, {'äŸ¡æ ŒïŒäžåïŒ': 13000, 'åºãïŒã¡ïŒ': 80, 'é§
åŸæ©ïŒåïŒ': 15}]
---------- negotiation_agent ----------
äžèšã®é¡äŒŒç©ä»¶äŸ¡æ Œãåèã«ãã€ã€ãããªãã®ãã³ã·ã§ã³ã®ç¹é·ãèžãŸããŠäŸ¡æ Œãèšå®ããããšãéèŠã§ããçŽ æŽãããçºæãåšèŸºæœèšã®é
åãåå·é§
ããã®ã¢ã¯ã»ã¹ã®è¯ããªã©ã匷調ããä¿¡é Œæ§ã®ããæ»å®äŸ¡æ Œãµã€ããªã©ã§æ¯èŒæ€èšãè¡ãããšããå§ãããŸããããã«åºã¥ããäŸ¡æ Œé¢ã§è³Œå
¥åžæè
ãšåæã«éããããšãèèŠã§ããäŸ¡æ Œäº€æžãé²ãããšãã«ã¯ãçžæã®æç€ºäŸ¡æ Œãæ¡ä»¶ãååã«ææ¡ããæè»ãªäº€æžãå¿æããŸãããã
æç€ºäŸ¡æ Œ: 11000äžå
åºã: 70ã¡
é§
åŸæ©: 10å
ãããã®æ¡ä»¶ãèžãŸãã11000äžåã§ã®å£²åŽããæ€èšããã ããŸãã§ããããããæ
åœè
ããŸã®ãææ¡ããåŸ
ã¡ããŠãããŸãã
---------- seller_agent ----------
æç€ºäŸ¡æ Œã¯äžéçã§ãããç«¶åç©ä»¶ã®äŸ¡æ Œã«äŸæ ããåæã«é«ãã®äŸ¡æ Œãæç€ºããŠããŸããæè»ãªäŸ¡æ Œèšå®ããã亀æžãé²ããããšã§ãè²·ãæãšã®åæãåŸãããå¯èœæ§ãé«ããŠããŸããè²·ãæãšãŒãžã§ã³ãããã®åå¿ã«æ³šç®ããŸãããã
---------- buyer_agent ----------
äŸ¡æ Œäº€æžã®é²å±ãé¡ã£ãŠããŸããå¿
èŠã«å¿ããŠãæ»å®ãµã€ããäžåç£ãšãŒãžã§ã³ãã®ã¢ããã€ã¹ãªã©ã掻çšããŠãåæ»ãªååŒãé²ãããšãæåŸ
ããŠããŸãã
---------- negotiation_agent ----------
äº€æžæç«: æçµäŸ¡æ Œã¯11000äžåã§ã
---------- seller_agent ----------
äº€æžæç«ããã§ãšãããããŸãïŒ11000äžåã§ã®å£²åŽãæç«ããåæ»ãªååŒãè¡ãããŸãããè²·ãæãšãŒãžã§ã³ãã®ææ¡ã«åæã§ããæ¡ä»¶ãæŽããäžæãåæã«éããããã§ãããä»åŸã®æç¶ããåŒãæž¡ãã«åããŠãè²·ãæãšãŒãžã§ã³ããšå
±ã«ã¹ã ãŒãºãªé²è¡ãå³ãããšã倧åã§ããäœããäžæç¹ããæç¶ãã®æ¯æŽãå¿
èŠãªå Žåã¯ãã€ã§ããç¥ãããã ããã
---------- buyer_agent ----------
åæ»ãªååŒæç«ããã§ãšãããããŸãïŒåŒãç¶ãè²·ãæãšãŒãžã§ã³ãããã³é¢ä¿è
ãšã®ååãéããŠãæç¶ããåæ»ã«é²ããŠããããšãéèŠã§ããäœããæäŒãã§ããããšãããã°ãç¥ãããã ããã
---------- negotiation_agent ----------
ããããšãããããŸãïŒåæ»ã«ååŒãæç«ããŠå€§å€åã°ããã§ããåŒãç¶ãã®æç¶ããåé¡è§£æ±ºã«ãããŠãå¿
èŠã«å¿ããŠãµããŒããããŠããã ããŸãããããããé¡ãããããŸãã
---------- seller_agent ----------
åæ»ãªååŒæç«ãããã§ãšãããããŸãïŒä»åŸã®æç¶ããã¹ã ãŒãºã«é²ãããšãé¡ã£ãŠãããŸããåŒãç¶ããååãããŠããã ããŸãã®ã§ãäœããå°ãã®ããšããçžè«ãããããŸããããã€ã§ããç¥ãããã ãããããããšãããããŸããã
äžèšã¯äº€æžæç«ã®ãã¿ãŒã³ã§ãããäœåºŠãå®è¡ããŠãããšäº€æžæ±ºè£ã®ãã¿ãŒã³ãçŸããŸãã
â€OpenAI以å€ã®LLMã䜿ã£ãŠã¿ã(OCI Generative AI Serviceã®Cohere Command R Plus)
AutoGenã¯OpenAI以å€ã®ã¢ãã«ãåãããããã«ãªã£ãŠããŸãããã®éã¯LLMãLangChainã®ã«ã¹ã¿ã LLMãšããŠå®çŸ©ããå¿ èŠããããŸããAutoGenãçŽæ¥ãµããŒãããŠããLLMãããã°ãOllamaãLangChainã§å®çŸ©ãããŠããã«ã¹ã¿ã ã¢ãã«ãå©çšããããšãã§ããŸãã
以äžã®ã³ãŒãã¯Oracle Cloudã§æäŸãããŠããGenerative AI Serviceã®LLMãLangChainã®ã«ã¹ã¿ã ã¢ãã«ãšããŠå®çŸ©ããAutoGenã«ã«èªèããããã¿ãŒã³ã§ãããšãŒãžã§ã³ãã®æ§æãšããŠã¯æ çšææ¡ã®ã·ããªãªã«ãªããŸãã
ãŸãã¯Generative AI Serviceã®LLMãLangChainã®ã«ã¹ã¿ã LLMãšããŠå®çŸ©ããŸãããã®éãOracle Cloudã®Accelerated Data ScienceãšããããŒã¿ãµã€ãšã³ãã£ã¹ãåãã®ã©ã€ãã©ãªãå©çšãããšäžèšã®ããã«å®çŸ©ãã·ã³ãã«ã«ãªããŸãã
import ads
from ads.llm.chat_template import ChatTemplates
from ads.llm.autogen.client_v02 import LangChainModelClient, register_custom_client
# ã«ã¹ã¿ã LLMã®å®çŸ©
register_custom_client(LangChainModelClient)
# OCI Generative AIã®LLMã®èšå®ãAutogenã®config_list圢åŒã«å€æ
config_list_custom = [
{
"model_client_cls": "LangChainModelClient",
"langchain_cls": "langchain_community.chat_models.oci_generative_ai.ChatOCIGenAI",
"client_params": {
"model_id": "cohere.command-r-plus-08-2024",
"compartment_id": "<ã³ã³ããŒãã¡ã³ãã®OCID>",
"model_kwargs": {
"temperature": 0,
"max_tokens": 4000
},
"service_endpoint": "https://inference.generativeai.us-chicago-1.oci.oraclecloud.com",
"auth_type": "API_KEY",
"auth_profile": "DEFAULT",
},
}
]
# LLMã®ãã©ã¡ãŒã¿
llm_config={
"seed": 0,
"config_list": config_list_custom,
"temperature": 0,
}
ãŠãŒã¶ãŒä»å ¥åã®UserProxyAgentãå®çŸ©ããŸãããä»åã¯human_input_mode="NEVER"ãšãããŠãŒã¶ãŒã®å ¥åã¯æ±ãããå šãŠãšãŒãžã§ã³ãã ãã§ããåã£ãŠããããŸãã
ãŸããæ³šæãã¹ãç¹ãšããŠã¯ãä»åã®LLMã®ã±ãŒã¹ã§ã¯ AgentChatããµããŒãããŠããªãã®ã§Autogen Coreã®ã»ãã®ã©ã€ãã©ãªãå©çšããŸããåŸã£ãŠãagentchatã§ã¯ãªããautogençŽäžã®UserProxyAgentã¯ã©ã¹ã䜿ã£ãŠãšãŒãžã§ã³ããå®çŸ©ããŸãã
from autogen import UserProxyAgent
user_proxy = UserProxyAgent(
name="User_proxy",
system_message="A human admin.",
code_execution_config=False,
human_input_mode="NEVER",
max_consecutive_auto_reply=0,
is_termination_msg=lambda msg: "TERMINATE" in msg["content"],
)
AssistantAgentãåæ§ã«autogençŽäžã®ã¯ã©ã¹ãå©çšããŠå®çŸ©ããŸããããã«ãllm_configãšããåŒæ°ã§äºåã«å®çŸ©ããOCI Generative AIã®LLMãã«ã¹ã¿ã LLMãšããŠæå®ããããšã§LLMã®å®çŸ©ã¯å®äºã§ãã
from autogen import AssistantAgent
planner_agent = AssistantAgent(
name = "planner_agent",
llm_config=llm_config,
description="æ
è¡ã®èšç»ãç«ãŠãŠããã䟿å©ãªã¢ã·ã¹ã¿ã³ã",
system_message="ããªãã¯ããŠãŒã¶ãŒã®ãªã¯ãšã¹ãã«åºã¥ããŠæ
è¡èšç»ãææ¡ã§ããã¢ã·ã¹ã¿ã³ãã§ãã",
)
local_agent = AssistantAgent(
name = "local_agent",
llm_config=llm_config,
description="蚪åå
ã§ã®èгå
åæãææ¡ã§ãã䟿å©ãªã¢ã·ã¹ã¿ã³ã",
system_message="ããªãã¯ãæ
è¡èšç»ã®äžã«ãã蚪åå
ã®æåãªèгå
åæãšãã®èŠã©ããããŠãŒã¶ãŒã«ææ¡ã§ããã¢ã·ã¹ã¿ã³ãã§ãã",
)
language_agent = AssistantAgent(
name = "language_agent",
llm_config=llm_config,
description="蚪åå
ã§ã®å
¬çšèªã«é¢ããæ
å ±ãæäŸã§ãã䟿å©ãªã¢ã·ã¹ã¿ã³ã",
system_message="ããªãã¯ãæ
è¡èšç»ã®äžã«ãã蚪åå
ã§ã®å
¬çšèªã«é¢ããæ
å ±ãæäŸã§ãã䟿å©ãªã¢ã·ã¹ã¿ã³ãã§ãã",
)
travel_summary_agent = AssistantAgent(
name = "travel_summary_agent",
llm_config=llm_config,
description="æ
è¡èšç»ããŸãšããã®ã«åœ¹ç«ã€ã¢ã·ã¹ã¿ã³ã",
system_message="ããªãã¯ãä»ã®ãšãŒãžã§ã³ãããã®ææ¡ãã¢ããã€ã¹ããã¹ãŠåãå
¥ããè©³çŽ°ãªæçµçãªæ
è¡èšç»ãæäŸã§ããã䟿å©ãªã¢ã·ã¹ã¿ã³ãã§ããæçµèšç»ãåãçºãããããå®å
šã§ããããšã確èªããå¿
èŠããããŸããæçµçãªå¯Ÿå¿ã¯å®å
šãªèšç»ã§ãªããã°ãªããŸãããèšç»ãå®äºãããš TERMINATE ã§å¿çã§ããŸãã",
)
次ã«ãšãŒãžã§ã³ãã®å®è¡é åºãå®çŸ©ããŸããä»åã®ã¿ã€ãã®LLMã§ã¯agentchatã®RoundRobinGroupChatã¯ã©ã¹ã¯å©çšã§ããªãããäžèšã®ããã«autogenã®ã°ã©ãã®ã¯ã©ã¹ã䜿ã£ãŠæå¹å·¡åã°ã©ãã®åœ¢åŒã§å®çŸ©ããŸãã
from autogen.graph_utils import visualize_speaker_transitions_dict
agents = [user_proxy, planner_agent, local_agent, language_agent, travel_summary_agent]
# ãšãŒãžã§ã³ããé çªã«é·ç§»ã§ããããã«å®çŸ©
agent_graph = {
user_proxy: [planner_agent],
planner_agent: [local_agent],
local_agent: [language_agent],
language_agent: [travel_summary_agent],
travel_summary_agent: [user_proxy],
}
# ãšãŒãžã§ã³ãã®é åºãå¯èŠå
visualize_speaker_transitions_dict(agent_graph, agents)
次ã«ã°ã«ãŒããã£ãããå®çŸ©ããŸãããäžè¿°ããéããä»åã®LLMã§ã¯AgentChatã®RoundRobinGroupChatã¯ãµããŒããããŠããŸããã®ã§ãcoreã®GroupChat颿°ãå©çšããŸãããã®å Žåãå®çŸ©ããGroupChatãGroupChatManagerã«æž¡ãããšã§ãã°ã«ãŒããã£ãããå¶åŸ¡ããããããªä»çµã¿ã«ãªã£ãŠããŸãã
from autogen import GroupChat
group_chat = GroupChat(
agents=agents,
messages=[],
max_round=20,
allowed_or_disallowed_speaker_transitions=agent_graph,
speaker_transitions_type="allowed"
)
from autogen import GroupChatManager
chat_manager = GroupChatManager(
groupchat=group_chat, llm_config=llm_config, code_execution_config=False
)
äžèšããã³ããã§ãã£ãããéå§ããŠã¿ãŸãã
user_proxy.initiate_chat(
chat_manager, message="ãšãŒãããã®3ãåœã®æ
è¡ãèšç»ããŠãã ããã"
)
åºåã¯ãã¡ãã
User_proxy (to chat_manager):
ãšãŒãããã®3ãåœã®æ
è¡ãèšç»ããŠãã ããã
--------------------------------------------------------------------------------
Next speaker: planner_agent
planner_agent (to chat_manager):
ãšãŒãããã®3ãåœãžã®æ
è¡ãã©ã³ããææ¡ããŸãïŒãã®æ
ã§ã¯ãæåãæŽå²ããããŠçŸããæ¯è²ãæºå«ã§ããã§ãããã
**1. ãã©ã³ã¹ (ããª)**
- ãšããã§ã«å¡ã蚪ããïŒããªã®è±¡åŸŽçãªã©ã³ãããŒã¯ã§ãããšããã§ã«å¡ã¯å¿
èŠã§ããå¡ã«ç»ããè¡ã®çŽ æŽãããæ¯è²ãçºããŸãããã
- ã«ãŒãŽã«çŸè¡é€šïŒäžççã«æåãªã«ãŒãŽã«çŸè¡é€šã§ã¯ãã¢ãã»ãªã¶ããŽã£ãŒãã¹ã»ãã»ãããªã©ã®èžè¡äœåãéè³ã§ããŸãã
- ããŒãã«ãã 倧èå ïŒãŽã·ãã¯æ§åŒã®åäœã§ãã倧èå ãæ¢çŽ¢ãããã®å»ºç¯ã®çŸããã«æåããŸãããã
- ã»ãŒãå·ã¯ã«ãŒãºïŒããã³ããã¯ãªã»ãŒãå·ã¯ã«ãŒãºã§ãããªã®æ¯è²ãç°ãªãèŠç¹ããæ¥œãã¿ãŸãããã
**2. ã€ã¿ãªã¢ (ããŒã)**
- ã³ããã»ãªïŒå€ä»£ããŒãã®å圢éæå Žã§ããã³ããã»ãªã¯ãæŽå²ç䟡å€ã®ããèŠã©ããã§ãããã®å£®å€§ãªæ§é ãšæŽå²ã«æµžããŸãããã
- ããŒãæçåºïŒããã«ã³åžåœã蚪ããã·ã¹ãã£ãŒã瀌æå ãšãµã³ã»ããšãã倧èå ã®çŽ æŽãããèžè¡ãšå»ºç¯ãäœéšããŸãããã
- ãã¬ãŽã£ã®æ³ïŒäŒèª¬ã®ãã¬ãŽã£ã®æ³ã§ã³ã€ã³ãæããåã³ããŒãã蚪ããããšãé¡ããŸãããã
- ããŒãã®ãã©ãã»ãããŒãïŒå€ä»£ããŒãã®éºè·¡ãæ£çãããã®æŽå²çãªéèŠæ§ã宿ããŸãããã
**3. ã¹ãã€ã³ (ãã«ã»ãã)**
- ãµã°ã©ãã»ãã¡ããªã¢ïŒã¢ã³ããã»ã¬ãŠãã£ã®æªå®ã®åäœã§ãããµã°ã©ãã»ãã¡ããªã¢ã¯ããã®ç¬ç¹ãªå»ºç¯æ§åŒã§æåã§ãã
- ã°ãšã«å
¬åïŒã¬ãŠãã£ãèšèšããããäžã€ã®çŽ æŽãããäœåã§ãè²åœ©è±ãã§ãŠããŒã¯ãªå
¬åã§ãã
- ã©ã³ãã©ã¹éãïŒæŽ»æ°æº¢ããã©ã³ãã©ã¹éããæ£çããã¹ããªãŒãããã©ãŒããŒãåžå Žã楜ãã¿ãŸãããã
- ãã«ã»ãããŒã¿ããŒãïŒå°äžæµ·ã®çŸããããŒãã§ãªã©ãã¯ã¹ããããŒã沿ãã®ã¬ã¹ãã©ã³ã§é£äºã楜ãã¿ãŸãããã
æ
çšã¯ãããªã§3æ¥éãããŒãã§2æ¥éããã«ã»ããã§3æ¥éæ»åšããããšããå§ãããŸããåéœåžéã®ç§»åã¯ãé£è¡æ©ãŸãã¯é«éééãå©çšã§ããŸãããšãŒãããã®éœåžéãç§»åããéã«ã¯ãäºåã«åè»ã®ãã±ãããäºçŽããããæ Œå®èªç©ºåžããã§ãã¯ããããšããå§ãããŸãã
å®¿æ³æœèšã«é¢ããŠã¯ãåéœåžã®äžå¿éšã«ããããã«ãã¢ããŒãã¡ã³ããæ€èšããŠãã ãããäºåã«äºçŽããããšã§ã奜ã¿ã®å®¿æ³æœèšã確ä¿ãããããªããŸãã
é£äºã«é¢ããŠã¯ããã©ã³ã¹æçãã€ã¿ãªã¢æçãã¹ãã€ã³æçãååã«å³ãããã§ããããåéœåžã§å°å
ã®ã¬ã¹ãã©ã³ãã«ãã§ã蚪ããäŒçµ±çãªæçãã¯ã€ã³ã楜ããã§ãã ããã
ãã®æ
è¡ãã©ã³ã¯ããšãŒãããã®æåãšæŽå²ã®è±ãããäœéšããã®ã«æé©ã§ããèžè¡ã建ç¯ããããŠçŽ æŽãããé£äºãæºå«ã§ããã§ããããæ
ã®è©³çްã«ã€ããŠã¯ãåéœåžã®èгå
å±ãæ
è¡ã¬ã€ããã芧ã«ãªãããšããå§ãããŸãã
--------------------------------------------------------------------------------
Next speaker: local_agent
local_agent (to chat_manager):
çŽ æŽãããã§ããïŒãã®æ
è¡ãã©ã³ã§ããšãŒãããã®é
åã«è§Šããæ
ãã§ãããã§ããã
## ãã©ã³ã¹ (ããª)
ããªã¯ãèžè¡ããã¡ãã·ã§ã³ãçŸé£ã®éœãšããŠäžççã«æåã§ãã
- **屿é**ïŒããªã®æåãªå±æéã¯ãããã¬ãªã³æä»£ã®æ å
ãèšå¿µããŠå»ºãŠãããŸãããé äžããã®çºãã¯èŠéããŸããã
- **ãªã«ã»ãŒçŸè¡é€š**ïŒå°è±¡æŽŸããã¹ãå°è±¡æŽŸã®äœåãè±å¯ãªçŸè¡é€šã§ããã¢ããã«ãã¯ãŒã«ããŽãããªã©ã®åäœãéè³ã§ããŸãã
- **ã·ã£ã³ãŒãªãŒéã**ïŒããªã§æãæåãªéãã®äžã€ã§ãé«çŽããã£ãã¯ãã«ãã§ã䞊ã³ãŸããæ£çããªããã·ã§ããã³ã°ã楜ãããŸãã
- **ã¢ã³ãã«ãã«**ïŒèžè¡å®¶ã®è¡ãšããŠç¥ãããã¢ã³ãã«ãã«ã¯ããµã¯ã¬ã¯ãŒã«å¯ºé¢ããã«ãã«åºå Žã§æåãªãšãªã¢ã§ãã
## ã€ã¿ãªã¢ (ããŒã)
ããŒãã¯ãå€ä»£ã®æŽå²ãšçŸä»£ã®é
åãèåããéœåžã§ãã
- **ãã³ããªã³**ïŒå€ä»£ããŒãã®å»ºç¯ã®åäœã§ãããã³ããªã³ã¯ããã®å·šå€§ãªããŒã ãç¹åŸŽçã§ããå
éšã«ã¯ã©ãã¡ãšãã®å¢ããããŸãã
- **ã¹ãã€ã³åºå Ž**ïŒçŸããéæ®µãšåŽæ°Žã§ç¥ãããåºå Žã§ããæ ç»ãããŒãã®äŒæ¥ãã§æåã«ãªããŸããã
- **ãã«ã²ãŒãŒå
¬å**ïŒç·è±ããªå
¬åã§ãæ£æ©ããã¯ããã¯ã«æé©ã§ããå
¬åå
ã«ã¯ãã«ã²ãŒãŒçŸè¡é€šããããèžè¡äœåãéè³ã§ããŸãã
- **ãã©ã¹ããŽã§ã¬å°åº**ïŒããŒãã®äŒçµ±çãªé°å²æ°ãæ®ããšãªã¢ã§ãå°å
æçãã¯ã€ã³ããŒã人æ°ã§ãã
## ã¹ãã€ã³ (ãã«ã»ãã)
ãã«ã»ããã¯ãã¬ãŠãã£ã®äœåãšå°äžæµ·ã®é
åãæº¢ããéœåžã§ãã
- **ã«ãµã»ãããªã§**ïŒã¬ãŠãã£ãèšèšãããŠããŒã¯ãªå»ºç©ã§ãæ³¢æã€ãããªå€èгãå°è±¡çã§ãã
- **ãã«ã»ãã倧èå **ïŒãŽã·ãã¯æ§åŒã®å€§èå ã§ããã®èå³ãªå
è£
ã¯å¿
èŠã§ãã
- **ãã±ãªã¢åžå Ž**ïŒæŽ»æ°æº¢ããåžå Žã§ãæ°é®®ãªé£æãå°å
ã®é£ã¹ç©ã楜ãããŸãã
- **ã¢ã³ã»ã©ãã**ïŒãã«ã»ããéå€ã«ããå±±ã§ãç¬ç¹ãªåœ¢ã®å²©å±±ãšã¢ã³ã»ã©ããä¿®éé¢ãæåã§ãã
ããªãããŒãããã«ã»ããã¯ããããèŠã©ããæºèŒã®éœåžã§ãã®ã§ãæ
çšã«äœè£ãããã°ãåéœåžã§ããã«æ»åšæéãå»¶é·ããŠãå
å®ããæ
ã«ãªãã§ããããç§»åææ®µãå®¿æ³æœèšã¯ããäºç®ããåžæã«å¿ããŠéžæã§ããŸãã
ãšãŒãããã®é£æåãäœéšããã®ãæ
ã®ééå³ã§ããåéœåžã§å°å
ã®ã¬ã¹ãã©ã³ãã«ãã§ã蚪ãããã©ã³ã¹æçãã€ã¿ãªã¢æçãã¹ãã€ã³æçã®å³èŠã®æ
ããæ¥œãã¿ãã ããã
ããè©³çŽ°ãªæ
å ±ãããããã®ã¬ã¹ãã©ã³ãªã©ã«ã€ããŠã¯ãåéœåžã®èгå
ã¬ã€ããæ
è¡ããã°ããåç
§ãã ãããçŽ æŽãããæ
ã«ãªããŸãããã«ïŒ
--------------------------------------------------------------------------------
Next speaker: language_agent
language_agent (to chat_manager):
çŽ æŽãããæ
çšãããã«å
å®ãããããã«ãåéœåžã§ã®äœéšãããã€ã远å ããŸããïŒ
## ãã©ã³ã¹ (ããª)
- **ã»ãŒãå·ãã£ããŒã¯ã«ãŒãº**ïŒããã³ããã¯ãªã»ãŒãå·ã§ã®ãã£ããŒã¯ã«ãŒãºã¯ãããªã®å€æ¯ã楜ããã®ã«æé©ã§ããçŸå³ããé£äºãšã¯ã€ã³ã楜ãã¿ãªããããšããã§ã«å¡ãããŒãã«ãã 倧èå ã®ã©ã€ãã¢ãããããå§¿ã«æåããŸãããã
- **ã«ãŒãŽã«çŸè¡é€šã¬ã€ããã¢ãŒ**ïŒèšå€§ãªã³ã¬ã¯ã·ã§ã³ãæã€ã«ãŒãŽã«çŸè¡é€šãå¹ççã«åãã«ã¯ãã¬ã€ããã¢ãŒããå§ãã§ããå°éã®ã¬ã€ããã¢ãã»ãªã¶ããã®ä»ã®æåãªäœåã«ã€ããŠè§£èª¬ããçŸè¡é€šã®æŽå²ãè£è©±ãæããŠãããŸãã
- **ãã«ãµã€ãŠå®®æ®¿**ïŒããªéå€ã«ãããã«ãµã€ãŠå®®æ®¿ã¯ããã©ã³ã¹çã«ã€14äžã®æ è¯ãç©èªã£ãŠããŸãã豪è¯ãªå®®æ®¿ãšçŸããåºåã¯å¿
èŠã§ãã
## ã€ã¿ãªã¢ (ããŒã)
- **ããã«ã³çŸè¡é€šãšã·ã¹ãã£ãŒã瀌æå **ïŒããã«ã³åžåœã«ããããã«ã³çŸè¡é€šã¯ãèšå€§ãªèžè¡äœåãåèµããŠããŸãããã±ã©ã³ãžã§ãã®å€©äºç»ã§æåãªã·ã¹ãã£ãŒã瀌æå ã¯ããã®çŸããã«å§åãããã§ãããã
- **ã³ããã»ãªå°äžãšäžå±€éãã¢ãŒ**ïŒã³ããã»ãªã®äžè¬å
¬éãããŠããªããšãªã¢ãæ¢çŽ¢ãããã¢ãŒã«åå ããŸããããå°äžãäžå±€éãããå€ä»£ããŒãã®éæå Žã®è£åŽãèŠãèŠãããšãã§ããŸãã
- **ããŒãã®äŒçµ±æçæå®€**ïŒå°å
ã®ã·ã§ãããããŒãã®äŒçµ±æçãåŠã¶æçæå®€ã¯ãããã§ãããïŒ ãã¬ãã·ã¥ãã¹ã¿ããã£ã©ãã¹ãªã©ã®æçãäœããã€ã¿ãªã¢ã®é£æåãäœéšã§ããŸãã
## ã¹ãã€ã³ (ãã«ã»ãã)
- **ã¬ãŠãã£å»ºç¯ãã¢ãŒ**ïŒãã«ã»ããã«ã¯ã¬ãŠãã£ã®äœåãæ°å€ããããŸãããµã°ã©ãã»ãã¡ããªã¢ãã«ãµã»ãããªã§ãã«ãµã»ãã©ãªã©ãã¬ãŠãã£ã®å»ºç¯ãã¢ãŒã«åå ããŠããã®ç¬ç¹ãªäžçèŠ³ãæ·±ãçè§£ããŸãããã
- **ã¿ãã¹ããŒå·¡ã**ïŒãã«ã»ããã®ã¿ãã¹ããŒãã¯ã€ã³ããŒãå·¡ãé£ã¹æ©ããã¢ãŒã¯ãå°å
ã®ã°ã«ã¡ãäœéšããã®ã«æé©ã§ããæ§ã
ãªã¿ãã¹ãã¯ã€ã³ã楜ãã¿ãªããããã«ã»ããã®é£æåã«è§ŠããŸãããã
- **ã¢ã³ã»ã©ãã忥ãã¢ãŒ**ïŒãã«ã»ããããæ¥åž°ãã§ã¢ã³ã»ã©ããã蚪ãããã¢ãŒã¯äººæ°ã§ããç¬ç¹ãªæ¯èгã®ã¢ã³ã»ã©ããå±±ãæ¥œãã¿ãã¢ã³ã»ã©ããä¿®éé¢ã§ã¯é»äººèæ¯åãèŠåŠããŸãããã
ãããã®è¿œå ã¢ã¯ãã£ããã£ã¯ãåéœåžã®æåãæŽå²ãããæ·±ãäœéšããã®ã«åœ¹ç«ã¡ãŸããé£äºãèžè¡ãæŽå²ããããŠãŠããŒã¯ãªäœéšãçµã¿åãããããšã§ãå¿ããããªããšãŒãããã®æ
ã«ãªãã§ãããã
æ
ã®èšç»ãç«ãŠãéã¯ãåéœåžã®èгå
å±ãæ
è¡ããã°ã§è©³çŽ°ãªæ
å ±ãå
¥æãããèªèº«ã®å¥œã¿ã«åãããŠæ
çšãã«ã¹ã¿ãã€ãºããããšããå§ãããŸãã
--------------------------------------------------------------------------------
Next speaker: travel_summary_agent
travel_summary_agent (to chat_manager):
## æçµçãªæ
è¡èšç»
### ãã©ã³ã¹ (ããª)
**æ»åšæéïŒ4æ¥é**
- ãšããã§ã«å¡
- ã«ãŒãŽã«çŸè¡é€šã¬ã€ããã¢ãŒ
- ã»ãŒãå·ãã£ããŒã¯ã«ãŒãº
- 屿é
- ãªã«ã»ãŒçŸè¡é€š
- ã·ã£ã³ãŒãªãŒéãã§ã®ã·ã§ããã³ã°
- ã¢ã³ãã«ãã«æ£ç
- ãã«ãµã€ãŠå®®æ®¿èŠåŠ
### ã€ã¿ãªã¢ (ããŒã)
**æ»åšæéïŒ3æ¥é**
- ã³ããã»ãªãšã³ããã»ãªå°äžãã¢ãŒ
- ããŒãæçåºãšã·ã¹ãã£ãŒã瀌æå
- ãã³ããªã³
- ã¹ãã€ã³åºå Ž
- ãã«ã²ãŒãŒå
¬åãšçŸè¡é€š
- ãã©ã¹ããŽã§ã¬å°åºã§å°å
æçãå ªèœ
- ããŒãã®äŒçµ±æçæå®€
### ã¹ãã€ã³ (ãã«ã»ãã)
**æ»åšæéïŒ4æ¥é**
- ãµã°ã©ãã»ãã¡ããªã¢
- ã°ãšã«å
Œ
- ã«ãµã»ãããªã§
- ãã«ã»ãã倧èå
- ã©ã³ãã©ã¹éã
- ãã±ãªã¢åžå Ž
- ãã«ã»ãããŒã¿ããŒãã§ã®ãªã©ãã¯ã¹
- ã¬ãŠãã£å»ºç¯ãã¢ãŒ
- ã¿ãã¹ããŒå·¡ã
- ã¢ã³ã»ã©ãã忥ãã¢ãŒ
**æ
çšæŠèŠïŒ**
1. ããªã«4æ¥éæ»åšãããšããã§ã«å¡ãã«ãŒãŽã«çŸè¡é€šãã»ãŒãå·ã¯ã«ãŒãºãªã©ã®åæãæºå«ããŸãã
2. é«éééãé£è¡æ©ã§ããŒãã«ç§»åãã3æ¥éæ»åšãã³ããã»ãªãããã«ã³åžåœãã¹ãã€ã³åºå Žãªã©ã蚪ããŸãã
3. åã³é«éééãé£è¡æ©ã§ãã«ã»ãããžã4æ¥éæ»åšãããµã°ã©ãã»ãã¡ããªã¢ãã°ãšã«å
¬åãã©ã³ãã©ã¹éããã¢ã³ã»ã©ãããªã©ãã¬ãŠãã£ã®äœåãšå°äžæµ·ã®é
åãæºå«ããŸãã
**ç§»åææ®µïŒ**
ããªãšããŒããããŒããšãã«ã»ããã®éã¯ãé«éééãæ Œå®èªç©ºåžãå©çšããŠç§»åããŸããäºåã«åè»ã®ãã±ãããäºçŽããããèªç©ºåžããã§ãã¯ããŠãããšã¹ã ãŒãºã§ãã
**å®¿æ³æœèšïŒ**
åéœåžã®äžå¿éšã«ããããã«ãã¢ããŒãã¡ã³ããäºçŽããŸããäºåã«äºçŽããããšã§ã奜ã¿ã®å®¿æ³æœèšã確ä¿ãããããªããŸãã
**é£äºïŒ**
ãã©ã³ã¹æçãã€ã¿ãªã¢æçãã¹ãã€ã³æçãååã«å³ãããŸããããåéœåžã§å°å
ã®ã¬ã¹ãã©ã³ãã«ãã§ã蚪ããäŒçµ±çãªæçãã¯ã€ã³ã楜ãã¿ãŸããããç¹ã«ãããªã®ã»ãŒãå·ãã£ããŒã¯ã«ãŒãºãããŒãã®äŒçµ±æçæå®€ããã«ã»ããã®ã¿ãã¹ããŒå·¡ãã¯ããããã§ãã
**è¿œå æ
å ±ïŒ**
- ãã«ãµã€ãŠå®®æ®¿ã¯ããªéå€ã«ãããŸãããèŠåŠã«ã¯åæ¥çšåºŠå¿
èŠã§ãã
- ããŒãã®æçæå®€ã§ã¯ãäºåã«äºçŽãå¿
èŠãªå ŽåããããŸãã
- ãã«ã»ããã®ã¢ã³ã»ã©ãã忥ãã¢ãŒã¯äººæ°ããããããäºåã«äºçŽããããšããå§ãããŸãã
ãã®æ
è¡èšç»ã§ã¯ããšãŒãããã®3éœåžã§èžè¡ãæŽå²ã飿åãæºå«ã§ããŸããåéœåžã®èŠã©ãããå¹ççã«åããªãããå
å®ããæéãéãããã§ãããã
TERMINATE
--------------------------------------------------------------------------------
ã«ã¹ã¿ã LLMã䜿ãå Žåã¯AgentChatãšå€å°ã³ãŒããç°ãªããŸããããšãŒãžã§ã³ããå®çŸ©ããŠã°ã«ãŒããã£ãããšããæµãã¯å€ãããªããšããããšãããããããã ããã®ã§ã¯ãªãã§ããããã
ãã«ããšãŒãžã§ã³ããã¶ã€ã³ãã¿ãŒã³ã¯AutoGenã®ããã¥ã¢ã«ã«ããã€ããæ²èŒãããŠããŸãã®ã§æ¯éãåèã«ã
https://microsoft.github.io/autogen/stable/user-guide/core-user-guide/design-patterns/intro.html
æ¬èšäºã«æ²èŒããå 容ããµã³ãã«ã³ãŒãã¯AutoGenã®ããäžéšã«ãªããŸããããã以å€ã«ãæ§ã ãªå®è£ ãã§ããŸããããŸãšããšããŠç¹åŸŽçãªç¹ãæãããšãããš
- ã°ã«ãŒããã£ãããšããç§éãæ®æ®µæ £ã芪ããã ä»çµã¿ããã®ãŸãŸããã°ã©ãã³ã°ã¢ãã«ãšããŠAPIã«èœãšã蟌ãã§ããã®ã§çè§£ãããã
- ã©ã€ãã©ãªã®æœè±¡åºŠãéåžžã«é«ããè€éãªåŠçãã·ã³ãã«ã«ã³ãŒãã£ã³ã°ã§ãã
- ãã¥ãŒããªã¢ã«ããªãã¡ã¬ã³ã¹å®è£ ãæ²¢å±±ãããããã¥ã¢ã«ããããããã
- èåãªã©ã€ãã©ãªã®ããã€ã³ã¿ãŒãããã«æ å ±ãå€ã
- LangChainãšã®é£æºãå¯èœ(LangChainã®AgentãToolãšé£æºå¯èœ)
ãšãããšããã§ãããããåäœãæªããç¹ã¯ãŸã ãããŸããéåžžã«å©çšããããããã«ããšãŒãžã§ã³ãå ¥éãšããŠã¯çŸç¶ãæé©ãªã©ã€ãã©ãªã§ã¯ãªãããšããå°è±¡ã§ãã
ãããã«
å€§èŠæš¡èšèªã¢ãã«ã¯ä»ã®ãšãã人é¡ãäœãåºããæãé ã®è¯ã人工ç¥èœã ãšèšããŸãããã®ãããªç¥èœãæã£ãè€æ°ã®ãšãŒãžã§ã³ãããäºãã®ç¥èœãã¶ã€ãåã£ãŠçæããããŒã¿ã人éã®äºæ³ãè¶ ããŠããŸãããšã¯æ³åã«æããããã¯ãŸãã«ãã«ããšãŒãžã§ã³ãã®æè¡ãAIã·ã³ã®ã¥ã©ãªãã£ã®éããããããšããŠããæŽå²çãªç¬éãªã®ãããããŸããã








