实战案例
三个由浅入深的例子:纯查询引擎、带工具的 FunctionAgent、以及 Context 多轮。LLM 用 gpt-4o-mini(历史默认曾是 gpt-3.5-turbo,以官方为准)。先 export OPENAI_API_KEY,并准备 data/。
更偏 Agent harness 的写法对照 LangChain 实战;角色班组对照 CrewAI;概念对照 RAG。
案例 1:目录问答 + 持久化
目标: 对公司 data/ 做问答,第二次启动不再 embedding。
验证: 问文档里独有的专有名词;删掉 OPENAI_API_KEY 应失败;删 storage/ 应重新建索引。生产可把 storage/ 换成 Chroma。
案例 2:检索工具 + 计算器的 FunctionAgent
目标: 模型自己决定搜文档还是做乘法(官方 starter 的完整形态)。
验证: 单问数学不应搜库;单问制度应调用 search_documents。可用 QueryEngineTool.from_defaults 代替手写 async 函数,见 查询引擎。
案例 3:Context 记住用户名字
目标: 同一会话里第二轮能回答「我叫什么」。
验证: 不传 ctx 的第二轮不应知道名字。每个终端用户使用独立 Context(或官方文档中的持久化方式),不要全站共用一个。
需要固定「检索 → 质检 → 重写」循环时,用 Workflows 的 @step,不要把所有控制流塞进一个巨大 system prompt。