CrewAI 基础 07-Knowledge
在 crewai 中,使用记忆系统可以给 Agent 或者 Crew 可以赋予一个角色、团队临时性或者经历过的知识,对于团队外部即时的、更加庞大的外部知识,将无法使用,因此给 Agent、Crew 引入 knowledge 的概念,以供 Agent、Crew 在执行 Task 时,查看这些知识
相比较 memory, knowledge 有以下优势:
- 类似 RAG,可以使用领域内特定的知识
- 即时的知识
让我们深入 crewai,看看 knowledge 的构建、使用
classDiagram
BaseKnowledgeSource <|-- BaseFileKnowledgeSource
BaseKnowledgeSource <|-- StringKnowledgeSource
BaseFileKnowledgeSource <|-- ExcelKnowledgeSource
class BaseKnowledgeSource{
chunk_size:int=4000
chunk_overlap: int = 200
chunks: List[str]
chunk_embeddings: List[np.ndarray]
model_config
storage: KnowledgeStorage
metadata: Dict[str, Any]
collection_name: Optional[str]
load_content(): Dict[Path, str]
add()
get_embeddings()
_chunk_text(text: str): List[str]
save_documents(metadata)
}
class BaseFileKnowledgeSource{
file_path:
content: Dict[Path, str]
storage: KnowledgeStorage
load_content(): Dict[Path, str]
save_documents(metadata)
}
class StringKnowledgeSource{
content: str
collection_name: Optional[str]
add()
_chunk_text(text: str): List[str]
}
class ExcelKnowledgeSource{
load_content()
add()
_chunk_text()
}
从代码中可以看出,CrewAI 支持两大类知识源,即:1)文本源,如字符串、文本文件、PDF 文件、Markdown 文件;2)结构化数据源,如 csv、excle、json 等
1 | from crewai import Agent,Task,Crew,Process,LLM |
不仅可以给团队设置外部知识,还可以给 agent 设置外部知识
1 | string_source=StringKnowledgeSource( |
除了以上使用 creawai 官方的知识源外,还可以自定义知识源,以下例子我们将百度百科的相关词条整理为外部知识源
1 | # 利用https://baike.deno.dev/获取百度百科查询地址 |
输出: