ð Auto-Analyst 2.0: AIãåãéãããŒã¿åæã®æ°å¢å°
ã¯ããã« ð
ããŒã¿åæã£ãŠããžãã¹ã®äžçã§ã¯ããé¿ããŠéããªãéã§ããããã§ããããŒã¿éãèšå€§ãããŠãåŸæ¥ã®ããæ¹ã§ã¯ã¡ãã£ãšéçãæããããšãããããããããªäžã§ãAIã掻çšããæ°ããããŒã¿åæããŒã«ã泚ç®ãããŠããŸãïŒä»åã¯ããã®äžã§ãç¹ã«ããããªãAuto-Analyst 2.0ããã玹ä»ããŸããFireBird Technologiesã®Arslan Shahidãããéçºãããã®ããŒã«ãã©ããªé åãããã®ãäžç·ã«èŠãŠãããŸãããïŒâš
Auto-Analyst 2.0ãšã¯ïŒð€
ãAuto-Analyst 2.0ãã¯ãçŽæçã§å¹ççãªããŒã¿åæãã§ããããã«ãã¶ã€ã³ãããAIã·ã¹ãã ã§ãããã®ã·ã¹ãã ããŠãŒã¶ãŒããããããããïŒãã£ãŠæã£ãããšãããŒã¿ã«åºã¥ããŠè§£æããããããªèŠèŠçã«èŠããŠãããŸãããŸãã«æªæ¥ãæããããããŒã«ã§ãïŒããããã¯ããã®ç¹åŸŽãšããã³ã·ã£ã«ãæãäžããŠãããŸãã
çŽæçã§äœ¿ããããUI âš
Auto-Analyst 2.0ã®ãŠãŒã¶ãŒã€ã³ã¿ãŒãã§ãŒã¹ïŒUIïŒã¯ãã·ã³ãã«ã§äœ¿ãããããStreamlitãããŒã¹ã«ããŠããŸããStreamlitã£ãŠããã®ã¯ãããã«ãããã¿ã€ããäœã£ãããããŒã¿ã察話圢åŒã§æäœã§ãããããããŒã³ãŒãããŒã«ã§ãããã®UIã§ã¯ãCSVãã¡ã€ã«ãã¢ããããŒãããŠãçæãããPythonã³ãŒãã®çµæããªã¢ã«ã¿ã€ã ã§ç¢ºèªã§ããŸãããããŠèŠèŠåãããããŒã¿ã¯ãPlotlyã䜿ã£ãŠã«ãã³ãã衚瀺ããããã§ãïŒð
ããã«ããã®UIã¯ãã çµæãèŠããã ããããªããã©ããã£ãŠãã®çµæãçãŸããã®ããã³ãŒãã®çæããã»ã¹ãŸã§èŠããŠããããã§ããã€ãŸããã·ã¹ãã ãã©ãåããŠããã®ããçŽæçã«ç解ã§ããããã«ãªã£ãŠãããã§ãã
# ããŒã¿èŠèŠåãšãŒãžã§ã³ãã®äŸ
import dspy
# DSPy signature for the data_viz_agent
class data_viz_agent(dspy.Signature):
"""
ããªãã¯AIãšãŒãžã§ã³ãã§ãããç®æšã«åºã¥ããŠPlotlyã䜿çšããŠããŒã¿èŠèŠåãçæããŸãã
æäŸãããããŒã¿ã»ããã50000è¡ãè¶
ããå Žåã¯ããµã³ãã«ã䜿çšããŠèŠèŠåãè¡ããŸãã
{dataset}
{styling_index}
åºåã¯ã³ãŒãã®ã¿ãå«ãå¿
èŠããããŸããããŒã¿ã»ãããã¹ã¿ã€ãªã³ã°ã€ã³ããã¯ã¹ã¯åºåã«å«ããªãã§ãã ããã
"""
goal = dspy.InputField(desc="ãŠãŒã¶ãŒãå®çŸ©ããç®æš")
dataset = dspy.InputField(desc="ããŒã¿ã»ããæ
å ±")
styling_index = dspy.InputField(desc='ã¹ã¿ã€ãªã³ã°æ瀺')
code= dspy.OutputField(desc="Plotlyã³ãŒã")
commentary = dspy.OutputField(desc="çæãããã³ãŒãã®è§£èª¬")
# ããŒã¿èŠèŠåãšãŒãžã§ã³ããåŒã³åºã
query = "XãšYã®èŠèŠåãè¡ã"
data_viz_ai = dspy.ChainOfThought(data_viz_agent)ãã®ã³ãŒãã¯ãdata_viz_agentãšåŒã°ãããšãŒãžã§ã³ãã®åºæ¬çãªæ§é ã瀺ããŠããŸãããã®ãšãŒãžã§ã³ãã¯ãæå®ãããããŒã¿ã䜿ã£ãŠPlotlyã§ããžã¥ã¢ã«ãäœæããããã®ã³ãŒããçæããŠãããŸããAuto-Analyst 2.0ã¯ãã«ã¹ã¿ãã€ãºæ§ãé«ããæè»ã«å¯Ÿå¿ã§ãããã§ããããªãã®ããŒãºã«ããã¿ãªåã£ãããŒã¿åæããµããŒãããŠãããŸããïŒðª
é«åºŠãªããã¯ãšã³ããšãŒãžã§ã³ãæ§é ð§
Auto-Analyst 2.0ã®ãã¯ãŒã®æºã¯ããã®ããã¯ãšã³ãã«ãããšãŒãžã§ã³ãæ§é ã§ãããã®ã·ã¹ãã ã«ã¯ãããã€ãã®ãšãŒãžã§ã³ããçµã¿èŸŒãŸããŠããŠããããããç¹å®ã®ã¿ã¹ã¯ãããªããŸãããDoerãšãŒãžã§ã³ãããšãHelperãšãŒãžã§ã³ãããšãã2ã€ã®ã¿ã€ãããããã§ããããããããæãã«é£æºããŠåããŠãããŸãã
DoerãšãŒãžã§ã³ã: ããŒã¿åæã®ãšã³ãžã³ âïž
DoerãšãŒãžã§ã³ãã¯ãå®éã«ããŒã¿ãåæããŠPythonã³ãŒããçæãã圹å²ãæã£ãŠããŸããäŸãã°ãdata_viz_agentã¯ãæå®ãããããŒã¿ã»ãããèŠèŠåããããã®ã³ãŒããçæãããã®çµæãã°ã©ãããã£ãŒããšããŠè¡šç€ºããŸãããŠãŒã¶ãŒãäœãæ±ããŠããã®ãã«å¿ããŠãæ§ã ãªåæãå®è¡ã§ããããã«ãªã£ãŠããŸãã
HelperãšãŒãžã§ã³ã: åæããã»ã¹ã®é ŒãããµããŒã圹 ð ïž
HelperãšãŒãžã§ã³ãã¯ãDoerãšãŒãžã§ã³ããã¿ã¹ã¯ãå¹ççã«ããªãããããµããŒããã圹å²ãæã£ãŠããŸããäŸãã°ãcode_fix_agentã¯ãä»ã®ãšãŒãžã§ã³ããçæããã³ãŒãã«ãšã©ãŒãçºçãããšãããã®ãšã©ãŒãä¿®æ£ããããã«ç»å ŽããŸãããã®ãšãŒãžã§ã³ãã¯ããšã©ãŒã®åå ãåæããŠä¿®æ£æ¡ãåºããŠããããé Œããååšãªãã§ãïŒ
# ã³ãŒãä¿®æ£ãšãŒãžã§ã³ãã®äŸ
class code_fix(dspy.Signature):
"""
ããªãã¯AIã§ãããä»ã®ãšãŒãžã§ã³ããçæããããŒã¿åæã³ãŒãã®ä¿®æ£ãè¡ããŸãã
ãšã©ãŒãçºçããã³ãŒããåãåãããããä¿®æ£ããŸãã
"""
faulty_code = dspy.InputField(desc="ãšã©ãŒãçºçããã³ãŒã")
previous_code_fixes = dspy.InputField(desc="以åã®ä¿®æ£å±¥æŽ")
error = dspy.InputField(desc="çºçãããšã©ãŒ")
fixed_code= dspy.OutputField(desc="ä¿®æ£ãããã³ãŒã")
ãã®code_fix_agentããããããã§ãããŒã¿åæäžã«ãšã©ãŒãçºçããŠãå¿é ãããŸããïŒããã«åé¡ã解決ããŠãããã®ã§ãã¹ã ãŒãºãªåæãå¯èœã«ãªããŸããAuto-Analyst 2.0ã¯ããã®ããã«è€æ°ã®ãšãŒãžã§ã³ããé£æºããŠãé«åºŠãªèªååãšæ£ç¢ºããå®çŸããŠãããã§ããð€ð¡
ã¯ãšãªã®ã€ã³ããªãžã§ã³ããªã«ãŒãã£ã³ã° ð
Auto-Analyst 2.0ã§ã¯ããŠãŒã¶ãŒãéä¿¡ããã¯ãšãªãæé©ãªãšãŒãžã§ã³ãã«ç¢ºå®ã«å±ããããã€ã³ããªãžã§ã³ããªã«ãŒãã£ã³ã°ã·ã¹ãã ãçµã¿èŸŒãŸããŠããŸããã¯ãšãªãç¹å®ã®ãšãŒãžã§ã³ããæåããŠããå Žåã¯ããã®ãšãŒãžã§ã³ãã«çŽæ¥ã«ãŒãã£ã³ã°ãããŸãããæå®ããªãå Žåã¯ãŸãplanner_agentã«éä¿¡ãããŸãããã®planner_agentãã¯ãšãªã解æããŠãé©åãªãšãŒãžã§ã³ãã«æ¯ãåããŠããããã§ããããã«ãããã¯ãšãªãå¹ççã«åŠçãããããã«ãªã£ãŠããŸãã
Auto-Analyst 2.0ã®æªæ¥ ð
Arslan Shahidããã¯ãAuto-Analyst 2.0ããªãŒãã³ãœãŒã¹ãããžã§ã¯ããšããŠå ¬éããŠãããä»åŸã®çºå±ã«åããå ·äœçãªèšç»ãçºè¡šããŠããŸããããã«ãããã·ã¹ãã ã¯ãŸããŸãé²åãããã£ãšå€ãã®ãŠãŒã¶ãŒã«åœ¹ç«ã€ããŒã«ãšãªãã§ãããïŒ
çŽè¿ã®éçºèšç» ð§
ããã³ããæé©å: DSPyã䜿ã£ãŠããã³ããã®æé©åãé²ããŠããŸãããããã«å¹æçãªããã³ãããçæããããã®æ°ãããã€ãã©ã€ã³ãéçºäžã§ãã
ã³ãŒãä¿®æ£æ©èœã®åŒ·å: çŸåšã®ã³ãŒãä¿®æ£ãã€ãã©ã€ã³ã«RAGãã€ãã©ã€ã³ãè¿œå ããŠãäžè¬çãªãšã©ãŒã«å¯ŸåŠã§ããããã«ããŸãã
UIã®æ¹åãšæ¡åŒµ: StreamlitããŒã¹ã®UIãããã«æ¹åããŠã倧èŠæš¡ããŒã¿ã®åæã§ãã¹ã ãŒãºã«åäœããããã«ããŠããèšç»ã§ãã
æ°ãããšãŒãžã§ã³ãã®è¿œå : ããå€ãã®ãšãŒãžã§ã³ããå°å ¥ããŠãAuto-Analyst 2.0ã®æ©èœãããã«æ¡åŒµããäºå®ã§ãã
é·æçãªèª²é¡ãšãã®è§£æ±ºã«åã㊠ð®
Auto-Analyst 2.0ã®éçºã«ãããŠã¯ãããã€ãã®é·æçãªèª²é¡ããããŸãããããã®èª²é¡ã«åãçµãããšã§ãã·ã¹ãã ã¯ãã匷åã§äœ¿ãããããªããåºã掻çšãããããã«ãªãã§ãããã
ãšãŒãžã§ã³ãã®æé©ãªæ§é ã®æ¢æ±: çŸåšã®ãšãŒãžã§ã³ãæ§é ãæé©ãã©ãããèŠæ¥µãããã£ãšå¹æçãªæ§é ã暡玢ããŠããŸãã
æ¥çå¥ã®å¯Ÿå¿: éèãããŒã±ãã£ã³ã°ããµãã©ã€ãã§ãŒã³ãªã©ãåæ¥çã«ç¹åãããšãŒãžã§ã³ããããŒã«ãã©ãå°å ¥ãããã課é¡ã§ãã
æé©ãªãŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ã®æäŸ: ãã£ããããã圢åŒã®UIããã¹ããªã®ãããããšãããã·ã¥ããŒã圢åŒãè¯ãã®ããæé©ãªãŠãŒã¶ãŒäœéšãè¿œæ±ããŠãããŸãã
çµè« ð
ãAuto-Analyst 2.0ãã¯ãAIã掻çšããããŒã¿åæã®æªæ¥ãæããããé©æ°çãªã·ã¹ãã ã§ãããã®ã·ã¹ãã ã®ç¹åŸŽãå°æ¥ã®å±æãç解ããããšã§ãAIãããŒã¿åæã«ããããå¯èœæ§ã«ã¯ã¯ã¯ã¯ããããšééããªãïŒããããããAuto-Analyst 2.0ã®é²åã«ãã²æ³šç®ããŠãããŸãããïŒ
ãã®èšäºãæ°ã«å ¥ã£ãããµããŒããããŠã¿ãŸãããïŒ