ä»é¶æå»ºä½ ç第ä¸ä¸ª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, system=self.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