大脑升级:Memory 和 Knowledge
大脑升级:记忆与知识
Section titled “大脑升级:记忆与知识”默认情况下,大型语言模型是无状态的——一旦上下文窗口关闭,它们就不会记住你五分钟前说过的话。为了让Agent真正有效,它需要上下文。CrewAI提供了两个主要的系统来处理这个问题:记忆(用于回忆交互)和知识(用于基于数据提供答案)。
CrewAI实现了一个复杂的记忆系统,能够跨不同的执行运行存储和检索信息。它分为三种类型:
- Short-Term Memory(短期记忆): 使用RAG(检索增强生成)来存储当前执行流程的即时上下文。它帮助Agent跟踪刚刚发生的事情。
- Long-Term Memory(长期记忆): 存储在本地数据库(如SQLite/Chroma)中。这允许Agent从过去的执行中学习。如果一个Agent昨天学习了用户的偏好,它今天就能回忆起来。
- Entity Memory(实体记忆): 专注于记忆实体(人、地点、概念)的特定细节,以保持一致性。
启用记忆很简单。你只需在Crew配置中切换该标志:
my_crew = Crew( agents=[...], tasks=[...], memory=True, # 这会启用短期、长期和实体记忆 verbose=True)知识:将Agent置于现实之中
Section titled “知识:将Agent置于现实之中”记忆关乎交互,而知识则关乎信息所有权。你经常需要Agent根据你的特定业务数据(PDF文件、电子表格或内部文档)来回答问题,而不是基于LLM的通用训练数据。
CrewAI通过将数据源视为可以附加到Agent的“知识”,简化了RAG(检索增强生成)。系统会处理文本分块、创建嵌入和执行向量搜索等复杂工作。
你可以从crewai.knowledge.source导入各种源加载器。常见的源包括文本字符串、文本文件、PDF文件和Excel/CSV表格。
from crewai import Agent, Crew, Taskfrom crewai.knowledge.source.string_knowledge_source import StringKnowledgeSourcefrom crewai.knowledge.source.text_file_knowledge_source import TextFileKnowledgeSource
# 1. 创建知识源
# 一个简单的字符串源content_source = StringKnowledgeSource( content="CrewAI was created in 2024 to simplify multi-agent orchestration.",)
# 一个文件源(本地PDF、TXT等)file_source = TextFileKnowledgeSource( file_paths=["specs.txt", "user_manual.pdf"])
# 2. 将知识分配给Agentsupport_agent = Agent( role="Support Specialist", goal="Answer questions based strictly on provided manuals", backstory="You are the first line of support.", knowledge_sources=[content_source, file_source] # Agent现在“知道”这些数据)
# 3. 创建需要该知识的任务task = Task( description="When was CrewAI created according to your knowledge?", expected_output="The creation date.", agent=support_agent)通过明确定义知识源,你可以确保你的Agent提供准确的、特定领域内的答案,同时减少幻觉。