基础概念¶
什么是 Agent¶
AI Agent(智能体)是一个能自主调用工具来完成任务的语言模型。不同于普通的"一问一答"聊天机器人,Agent 会:
- 理解用户意图
- 决定需要哪些工具
- 调用工具获取信息或执行操作
- 根据工具结果继续推理
- 最终给出完整回复
FaustBot 内部实现了一个Agent.
OpenAI Chat Completions API¶
OpenAI API是一套简单的程序使用大模型的规范。
FaustBot 使用 OpenAI 兼容的 API 接口 (即Openai Chat Completions)。你只需要一个 API Key ,模型id,和对应的 Base URL。
API Key¶
API Key 是你的身份凭证,类似"密码"。从 LLM 服务商获取后填入配置文件:
在 FaustBot 的 配置中心(Configer)→ AI 服务商 → 主对话密钥 中填入即可。
格式基本上是sk-{一大串随机字符}
Base URL¶
不同服务商的 API 地址不同:
这一项应该是一个https://开头的链接
在 Configer 的 AI 服务商 → 主对话接口地址 中填入。
常见服务商的 Base URL:
| 服务商 | Base URL |
|---|---|
| OpenAI | https://api.openai.com/v1 |
| DeepSeek | https://api.deepseek.com/v1 |
| 硅基流动 | https://api.siliconflow.cn/v1 |
| OpenRouter | https://openrouter.ai/api/v1 |
| 本地 Ollama | http://localhost:11434/v1 |
Embedding API¶
Embedding模型用于FaustBot记忆库。
Embedding模型可以把一段文本编码为一串数字(向量),程序可以通过计算向量间的相似性来找出相关的文本。
在FaustBot中,记忆库的搜索使用了Embedding模型
Embedding API的配置同样包括 Base URL,API和Model
工具调用¶
工具(Tool)是 AI的"手和脚"——让模型不仅能"说",还能"做"。
工具的能力,实际上决定了一个LLM模型能够进行什么样的操作
工作原理¶
用户: "帮我写一个贪吃蛇游戏"
│
▼
Agent 推理: 需要 write 工具
│
▼
Agent 调用: write("snake.py", "...代码...")
│
▼
工具返回: "已写入 snake.py"
│
▼
Agent 回复: "已为你创建了贪吃蛇游戏,保存在 snake.py"
FaustBot 的主要工具集¶
| 工具 | 功能 |
|---|---|
read |
读取文件 |
write |
创建/修改文件 |
edit |
精确代码编辑 (diff) |
execute |
运行 Python/系统命令 |
search |
网页搜索 |
find |
项目内文件搜索 |
minecraft |
Minecraft 机器人控制 |
nimble |
灵动交互窗口 |
browser |
浏览器自动化 |
memory |
记忆库读写 |
trigger |
定时任务管理 |
工具输出截断¶
为防止工具输出过长消耗大量 Token,FaustBot 对长输出自动截断:
- 短输出(≤120 字符单行)→ 原样返回
- 长输出 → 截断为 500 字符摘要 +
[完整输出: artifact://<id>] - Agent 可调用
read("artifact://<id>")获取完整内容
模型思维链¶
思维链(Chain of Thought)是模型在给出最终答案前的内部推理过程。
普通对话 vs 思维链¶
普通: 用户问 → 模型答
思维链:
用户问 → 模型: "我需要先理解这个问题..."
→ 模型: "让我考虑几种方案..."
→ 模型: "方案A的问题是...方案B更合适..."
→ 最终答案
为什么重要¶
- 复杂任务: 数学计算、代码调试需要分步推理
- 透明性: 你可以看到模型"在想什么"
- 可纠正: 发现推理错误时可以纠正方向
- 工具决策: Agent 选择哪个工具时,思维链解释了为什么
在 FaustBot 中¶
FaustBot 支持两类模型:
| 类型 | 说明 | 示例 |
|---|---|---|
| 普通模型 | 一次生成最终答案 | gpt-4o, deepseek-chat |
| 推理模型 | 先输出思维链再输出答案 | deepseek-r1, o1, o3 |
推理模型会先进行内部推理(你可以在界面中看到思考过程),然后再执行工具调用或给出回复。这让 Agent 在复杂任务上表现更可靠。
上下文窗口¶
每次对话,Agent 能看到的内容包括:
- 系统提示: Agent 的角色设定和行为规范
- 对话历史: 之前的所有用户消息和助手回复
- 工具调用记录: 工具名称、参数、返回结果
- 记忆: 从记忆库中检索的相关信息
这些内容一起构成上下文窗口(Context Window)。窗口大小由模型决定(如 128K tokens),超出部分会被截断。
记忆系统¶
FaustBot 的记忆不是简单的"聊天记录",而是三层检索系统:
| 层级 | 技术 | 用途 |
|---|---|---|
| 向量搜索 | nano-vectordb | 语义相似匹配 |
| 关键词搜索 | BM25 | 精确词匹配 |
| 知识图谱 | networkx | 实体关系推理 |
Agent 在回复前会自动检索记忆库,找到相关信息注入上下文。
MCP 扩展¶
MCP(Model Context Protocol)让 Agent 连接外部工具服务器:
FaustBot ──stdio/sse──→ MCP Server (如 Playwright)
│
├── browser_navigate
├── browser_click
└── browser_snapshot
一个 MCP Server 可以提供多个工具。FaustBot 自动将它们注册为可用工具,Agent 调用时完全透明。详见 MCP Server 教程。