23-Agent和普通聊天机器人有什么区别

Agent 和普通聊天机器人到底有什么区别?

系列:Python + FastAPI 大模型应用基础(第 23 篇)

1. 区别不在界面,而在控制权

两者都可以显示聊天窗口,真正区别是模型是否参与动作选择并影响外部系统。

维度 普通聊天机器人 Agent
主要输出 文本回答 动作与最终回答
外部能力 可无工具 通常有一个或多个工具
状态 对话历史 任务状态、步骤和观察
风险 错误信息 错误信息 + 错误操作
控制方式 单次生成 循环、工作流、终止条件

RAG 聊天机器人即使查询知识库,也不一定是 Agent;如果查询步骤由程序固定,它更接近检索流水线。

2. 用路由器明确选择

python 复制代码
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. 统一响应契约

python 复制代码
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. 可复验测试

python 复制代码
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 还会选择动作。企业系统应从风险和流程不确定性出发选择架构,而不是为了追热点增加自主性。

相关推荐
_张一凡4 小时前
【论文解读】VLN-R1:让大视觉语言模型直接吃第一人称视频走出连续动作,用 GRPO 强化微调和时间衰减奖励把“导航“做成 LVLM 的可验证后训练任务
机器人·具身智能·vla·世界模型
M-Robots echo12 小时前
轻量化裁剪方案解析:M-Robots 模块化构建,适配高低端各类机器人硬件平台
java·机器人·ros·开源社区·atomgit·m-robots
tianxuanjg13 小时前
0.005mm 高精度 CNC 加工:机器人薄壁复杂零件变形控制与全维度品控方案
经验分享·机器人·无人机·制造·材质
企鹅的企14 小时前
2027北京AI数字健康与智慧医疗展官方:超两成展品亚洲首秀
人工智能·科技·机器人
消失的旧时光-194316 小时前
第 7 篇:服务机器人为什么需要处理多种控制入口?LOCAL、REMOTE、AUTO 与 MAINTENANCE
机器人·remote·controlarbiter
airobotcn19 小时前
空地一体化巡检机器人系统落地实战指南
安全·机器人·无人机·智慧园区·巡逻
zcmodeltech19 小时前
智能制造教学实训沙盘模型多系统协同控制系统设计:基于STM32与Modbus RTU的工业机器人-智慧工厂-数字孪生全场景联动方案
数据库·stm32·嵌入式硬件·机器人·制造·多分类
airobotcn20 小时前
智能巡检平台容器化部署:Docker+K8s在工业边缘的实践
人工智能·docker·容器·kubernetes·机器人·自动化
tianxuanjg20 小时前
机器人精密零件:为何样品合格,批量却频频超差?
人工智能·经验分享·机器人·无人机·制造·材质