从零构建你的第一个AI Agent:架构设计与实战
ä»é¶æå»ºä½ ç第ä¸ä¸ªAI Agentï¼æ¶æè®¾è®¡ä¸å®æéç大è¯è¨æ¨¡åï¼LLMï¼çå¿«éåå±ï¼AI Agentï¼æºè½ä½ï¼å·²æä¸º2024-2025å¹´æçé¨çææ¯æ¹åä¹ä¸ãä»AutoGPTå°LangChainçAgent模åï¼åå°åç±»åç´é¢åçæºè½å©æï¼AI Agentæ£å¨éå¡äººæºäº¤äºçæ¹å¼ãæ¬æå°ä»æ¶æè®¾è®¡åºåï¼å¸¦ä½ æ·±å ¥çè§£Agentçæ ¸å¿åçï¼å¹¶äº²æç¼åä¸ä¸ªå¯è¿è¡çPython Agentãä¸ãä»ä¹æ¯AI Agentï¼AI Agentæ¯ä¸ç§è½å¤æç¥ç¯å¢ãèªä¸»å³çãæ§è¡è¡å¨çæºè½ç³»ç»ãä¸ä¼ ç»çåè½®å¯¹è¯æ¨¡åä¸åï¼Agentå ·å¤ä»¥ä¸æ ¸å¿ç¹å¾ï¼èªä¸»æ§ï¼è½å¤å¨æ²¡æäººå·¥å¹²é¢çæ åµä¸æç»è¿è¡æç¥è½åï¼æ¥æ¶å¹¶çè§£å¤é¨ç¯å¢çä¿¡æ¯è¾å ¥æ¨çè½åï¼åºäºå½åç¶æè¿è¡é»è¾åæåå³çè¡å¨è½åï¼éè¿å·¥å ·è°ç¨æAPIæ§è¡å ·ä½æä½è®°å¿è½åï¼ä¿ååå©ç¨åå²äº¤äºä¿¡æ¯ä¸ä¸ªç»å ¸çAI Agentå¯ä»¥ç±»æ¯ä¸ºèªå¨é©¾é©¶ç³»ç»ï¼ä¼ æå¨ï¼æç¥ï¼â ä¸å¤®å¤çå¨ï¼æèï¼â æ²¹é¨/å¹è½¦/æ¹åçï¼è¡å¨ï¼ãäºãæ ¸å¿æ¶æï¼æç¥-æè-è¡å¨å¾ªç¯AI Agentçç»å ¸æ¶æéµå¾ªPerception-Thought-Action Loopï¼æç¥-æè-è¡å¨å¾ªç¯ï¼ï¼è¿æ¯æºè½ä½æç»è¿è½¬çåºæ¬å·¥ä½æµã2.1 æç¥ï¼Perceptionï¼æç¥å±è´è´£ä»å¤é¨ç¯å¢æ¥æ¶è¾å ¥ï¼å æ¬ä½ä¸éäºï¼ç¨æ·èªç¶è¯è¨è¾å ¥ç³»ç»ç¶æä¿¡æ¯ï¼æ¶é´ãæä»¶ãæ°æ®åºï¼ä¼ æå¨æ°æ®æAPIè¿åç»æå ¶ä»Agentçæ¶æ¯# æç¥å±ç¤ºä¾ï¼æ¥æ¶å¹¶è§£æç¨æ·è¾å ¥ class PerceptionModule: def __init__(self): self.sensors [user_input, system_clock, file_system] def perceive(self, raw_input: str, context: dict None) - dict: å°åå§è¾å ¥è½¬æ¢ä¸ºç»æåçæç¥ä¿¡æ¯ return { user_query: raw_input, timestamp: datetime.now().isoformat(), available_tools: context.get(tools, []), history_summary: context.get(history, ) }2.2 æèï¼Thoughtï¼æè屿¯Agentç大èï¼é常ç±å¤§è¯è¨æ¨¡åæ ä»»ãå®è´è´£ï¼çè§£ç¨æ·æå¾åæå½åä»»å¡ç¶æéæ©ä¸ä¸æ¥è¡å¨çç¥çæå·¥å ·è°ç¨åæ°# æèå±ç¤ºä¾ï¼åºäºLLMçå³çæ¨ç class ThoughtModule: def __init__(self, llm_client): self.llm llm_client self.system_prompt ä½ æ¯ä¸ä¸ªæºè½å©æã请æä»¥ä¸æ ¼å¼æèï¼ Thought: åæå½åæ åµ Action: éæ©å·¥å ·åç§° Action Input: å·¥å ·åæ° def think(self, perception: dict) - dict: åºäºæç¥ä¿¡æ¯çæå³ç prompt self._build_prompt(perception) response self.llm.complete(prompt, systemself.system_prompt) return self._parse_decision(response) def _build_prompt(self, perception: dict) - str: return fç¨æ·é®é¢ï¼{perception[user_query]} å¯ç¨å·¥å ·ï¼{perception[available_tools]} åå²è®°å½ï¼{perception[history_summary]} 请å³å®ä¸ä¸æ¥è¡å¨ã2.3 è¡å¨ï¼Actionï¼è¡å¨å±è´è´£æ§è¡å ·ä½çå¤é¨æä½ï¼å æ¬ï¼è°ç¨æç´¢å¼æè¯»åæä»¶åéHTTP请æ±è°ç¨æ°æ®åºæ¥è¯¢ä¸å ¶ä»Agentéä¿¡# è¡å¨å±ç¤ºä¾ï¼å·¥å ·æ§è¡å¨ class ActionModule: def __init__(self): self.tools { search: self.web_search, read_file: self.read_file, write_file: self.write_file, calculate: self.calculate