AutoGPT vs LangChain Agent:两大Agent框架深度对比与选型指南
AutoGPT vs LangChain Agentï¼ä¸¤å¤§Agentæ¡æ¶æ·±åº¦å¯¹æ¯ä¸éåæåå¼è¨ï¼AI Agent浪潮ä¸çæ¡æ¶ä¹äº2023年以æ¥ï¼ä»¥AutoGPTåLangChain为代表çAI Agentæ¡æ¶è¿ éå´èµ·ï¼æä¸ºå¤§æ¨¡ååºç¨è½å°çæ ¸å¿åºç¡è®¾æ½ãæ ¹æ®GitHubæ°æ®ï¼AutoGPTå¨åå¸çç两个æå ææ æ°çªç ´15ä¸ï¼åä¸åå²çºªå½ï¼èLangChainä½ä¸ºææ©ç³»ç»åå°è£ LLMåºç¨å¼åæµç¨çæ¡æ¶ï¼å·²æä¸ºä¼ä¸çº§Agentå¼åçé»è®¤éæ©ã对äºå¼åè èè¨ï¼å¦ä½å¨è¿ä¸¤å¤§æ¡æ¶ä¸ååºæ£ç¡®éåï¼ç´æ¥å½±å项ç®çææ¯è·¯çº¿åé¿æç»´æ¤ææ¬ãæ¬æå°ä»æ¶æè®¾è®¡ãæ ¸å¿è½åã代ç å®è·µãéç¨åºæ¯ç维度ï¼å¯¹ä¸¤è è¿è¡æ·±åº¦å¯¹æ¯åæãä¸ãæ¶æè®¾è®¡ç念对æ¯1.1 AutoGPTï¼èªä¸»ä»£ççèå¼é©å½AutoGPTçæ¶ææ ¸å¿å´ç»èªä¸»ä»£çï¼Autonomous Agentï¼è¿ä¸ç念æå»ºã宿¨¡æäººç±»è§£å³é®é¢çæç»´è¿ç¨ï¼èµäºå¤§è¯è¨æ¨¡åæç»å¾ªç¯çå³çè½åââæ¥æ¶ç®æ ãæè§£ä»»å¡ãæ§è¡æä½ãè§å¯ç»æãåæä¿®æ£ï¼ç´è³ç®æ è¾¾æãå ¶æ ¸å¿æ¶æå å«ä»¥ä¸ç»ä»¶ï¼ä»»å¡éåï¼Task Queueï¼ï¼éç¨ä¼å 级éå管çå¾ æ§è¡çä»»å¡ï¼æ¯æä»»å¡çå¨ææ·»å ä¸è°åº¦é¿æè®°å¿ï¼Long-term Memoryï¼ï¼éè¿åéæ°æ®åºï¼å¦ChromaãPineconeï¼åå¨åå²ä¸ä¸æï¼çªç ´å次对è¯çTokenéå¶å·¥å ·éï¼Toolsï¼ï¼éææç´¢å¼æãæä»¶æä½ãä»£ç æ§è¡ãAPIè°ç¨çå¤é¨å·¥å ·èªå¾ªç¯æºå¶ï¼Self-loopï¼ï¼éè¿whileå¾ªç¯æç»è¿ä»£ï¼ç´å°æ»¡è¶³ç»æ¢æ¡ä»¶# AutoGPTæ ¸å¿å¾ªç¯ä¼ªä»£ç 示æ class AutoGPT: def run(self, goal: str): while not self.should_terminate(): # 1. ä»è®°å¿åä»»å¡éåè·åä¸ä¸æ context self.memory.get_relevant_context(goal) # 2. çææèï¼Thoughtï¼ thought self.llm.generate_thought(goal, context) # 3. çæè¡å¨ï¼Actionï¼ action self.llm.generate_action(thought) # 4. æ§è¡è¡å¨å¹¶è·åè§å¯ç»æ observation self.execute_action(action) # 5. å°è§å¯ç»æåå ¥è®°å¿ self.memory.add(fAction: {action}\nObservation: {observation}) # 6. è¯ä¼°æ¯å¦å®æç®æ if self.is_goal_achieved(goal, observation): break1.2 LangChain Agentï¼é¾å¼ç¼æçå·¥ç¨åæ¹æ¡LangChainçAgentæ¶æåä½ç°äºç»åä¼äºç»§æ¿ç设计å²å¦ãå®ä¸è¿½æ±å®å ¨èªä¸»ç代çï¼èæ¯å°å¤§æ¨¡ååºç¨æå为å¯å¤ç¨çé¾ï¼Chainï¼åå·¥å ·ï¼Toolï¼ï¼éè¿æç¡®çé ç½®åç¼æå®ç°ç¹å®åè½ãå ¶æ¶æå屿¸ æ°ï¼æ¨¡åå±ï¼Modelsï¼ï¼ç»ä¸å°è£ åç§LLMæ¥å£ï¼OpenAIãAnthropicãæ¬å°æ¨¡åçï¼æç¤ºå±ï¼Promptsï¼ï¼æä¾æç¤ºæ¨¡æ¿ç®¡çãå°æ ·æ¬ç¤ºä¾ãè¾åºè§£æçåè½æ°æ®å±ï¼Data Connectionsï¼ï¼å è½½å¨ãåå²å¨ãåµå ¥ãåéåå¨ç宿´RAGæµæ°´çº¿é¾å±ï¼Chainsï¼ï¼å°å¤ä¸ªç»ä»¶ä¸²è为å¯å¤ç¨ç工使µä»£çå±ï¼Agentsï¼ï¼å¨é¾çåºç¡ä¸å¢å å·¥å ·éæ©åå³çé»è¾# LangChain Agentæ ¸å¿æ¶æç¤ºæ from langchain import OpenAI, LLMChain, PromptTemplate from langchain.agents import initialize_agent, Tool from langchain.tools import DuckDuckGoSearchRun # å®ä¹å·¥å · search DuckDuckGoSearchRun() tools [ Tool( nameweb_search, funcsearch.run, descriptionç¨äºæç´¢äºèç½è·åææ°ä¿¡æ¯ ) ] # åå§åAgentï¼ä½¿ç¨ReActæ¡æ¶ï¼ llm OpenAI(temperature0) agent initialize_agent( tools, llm, agentzero-shot-react-description, verboseTrue ) # æ§è¡ï¼ä¸æ¬¡è°ç¨ï¼ä¸æ¬¡å³çé¾ï¼ agent.run(2024å¹´ææ°ç人工æºè½ææ¯è¶å¿æ¯ä»ä¹ï¼)äºãæ ¸å¿è½å对æ¯2.1 ä»»å¡åè§£ä¸è§åè½å| 维度 | AutoGPT | LangChain Agent | |------|---------|-----------------| | ä»»å¡åè§£ | èªå¨éå½åè§£ï¼çæåä»»å¡å表 | ä¾èµå¼åè æ¾å¼å®ä¹ChainæAgentç±»å | | è§åçç¥ | å ç½®ç®æ 导åçè§åå¨ | éè¿ä¸åçAgentç±»åï¼ReActãPla