单个智能体可以执行一个或多个动作,那是不是一直使用一个智能体即可呢?存在以下两个问题:

  • Prompt 依赖:动作越多,要求 Prompt 越精细,才能准确控制其动作,尤其是有相似动作时
  • 动作选择上限:Openai 建议一个 agent 绑定不超过 20 个动作,动作太多,agent 选择工具能力下降 Function calling - OpenAI API
  • SOP (标准作业流程) 问题:在现实工作中,常常存在一个标准流程,如果每次节点都依赖 llm 去选择后续的逻辑分支,软件变得不可控
阅读全文 »

在构建 rag 应用时,读取文档后的下一步是对文档进行分块,之所以分块。理由如下:

  • llms 一次输入有限:prompt 无法接受太多输入,拿 4 K 大小的模型来说,大概可以输入 4 K*1.5=6000 左右的汉字,过长的上下文不仅会出现截断问题,还导致推理耗时增加
  • 语义混乱:一次性输入过长的上下文,llms 可能回答不准确,通过语义筛选相关文档后,使得上下文的语义更集中

一个合理的切分方式,每个 chunk 语义完整,长度适中,过长:虽然 chunk 减少,使得向量数据库检索更快,但是 llm 推理成本上升,过短:语义被切割,一些精准的问题无法召回 chunk

阅读全文 »

在 crewai 中,使用记忆系统可以给 Agent 或者 Crew 可以赋予一个角色、团队临时性或者经历过的知识,对于团队外部即时的、更加庞大的外部知识,将无法使用,因此给 Agent、Crew 引入 knowledge 的概念,以供 Agent、Crew 在执行 Task 时,查看这些知识

阅读全文 »