23-Agent和普通聊天机器人有什么区别
·
Agent 和普通聊天机器人到底有什么区别?
系列:Python + FastAPI 大模型应用基础(第 23 篇)
1. 区别不在界面,而在控制权
两者都可以显示聊天窗口,真正区别是模型是否参与动作选择并影响外部系统。
| 维度 | 普通聊天机器人 | Agent |
|---|---|---|
| 主要输出 | 文本回答 | 动作与最终回答 |
| 外部能力 | 可无工具 | 通常有一个或多个工具 |
| 状态 | 对话历史 | 任务状态、步骤和观察 |
| 风险 | 错误信息 | 错误信息 + 错误操作 |
| 控制方式 | 单次生成 | 循环、工作流、终止条件 |
RAG 聊天机器人即使查询知识库,也不一定是 Agent;如果查询步骤由程序固定,它更接近检索流水线。
2. 用路由器明确选择
from dataclasses import dataclass
from typing import Literal
Mode = Literal["chat", "workflow", "agent"]
@dataclass(frozen=True)
class TaskProfile:
needs_external_action: bool
steps_are_known: bool
risk: Literal["low", "medium", "high"]
def choose_mode(profile: TaskProfile) -> Mode:
"""优先选择自由度更低、可验证性更高的结构。"""
if not profile.needs_external_action:
return "chat"
if profile.steps_are_known or profile.risk == "high":
return "workflow"
return "agent"
例如“解释退款政策”可用聊天/RAG;“按固定规则生成并审批退款单”适合工作流;“在多个只读来源中自主查找故障原因”才可能适合 Agent。
3. 统一响应契约
from pydantic import BaseModel, Field
class AssistantResponse(BaseModel):
mode: Mode
answer: str = Field(min_length=1)
action_ids: list[str] = Field(default_factory=list)
needs_human: bool = False
def build_response(
profile: TaskProfile,
answer: str,
action_ids: list[str] | None = None,
) -> AssistantResponse:
mode = choose_mode(profile)
ids = action_ids or []
if mode == "chat" and ids:
raise ValueError("聊天模式不应产生外部动作")
return AssistantResponse(
mode=mode,
answer=answer,
action_ids=ids,
needs_human=profile.risk == "high",
)
4. 可复验测试
def test_high_risk_task_uses_workflow() -> None:
profile = TaskProfile(True, False, "high")
assert choose_mode(profile) == "workflow"
def test_chat_cannot_claim_actions() -> None:
profile = TaskProfile(False, True, "low")
try:
build_response(profile, "已完成", ["refund-1"])
except ValueError:
pass
else:
raise AssertionError("聊天回答不能伪装成已执行动作")
5. 什么时候不要做 Agent
- 步骤固定且可枚举;
- 审批和合规要求严格;
- 工具错误代价高;
- 无法建立可靠评测;
- 业务只需要总结、分类或抽取;
- 团队没有可观测性和人工接管能力。
Agent 不是技术成熟度的象征。用确定性流程解决确定性问题,通常更便宜、更稳定。
6. 对抗性审查
- 页面写着“智能 Agent”不代表架构真是 Agent;
- 模型说“已操作”不代表工具执行成功,必须检查动作记录;
- 多轮聊天也不自动等于 Agent;
- Agent 的成功率要按完整任务计算,不能只看最后一句是否流畅;
- 引入 Agent 前先评估最坏错误动作。
7. 总结
普通聊天机器人产生内容,Agent 还会选择动作。企业系统应从风险和流程不确定性出发选择架构,而不是为了追热点增加自主性。
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐



所有评论(0)