文章

构建一个能干活的 AI Agent,真的没你想的那么难!

手把手构建一个 AI Agent,教它自动预订会议室,让它真正帮我们'干活'

构建一个能干活的 AI Agent,真的没你想的那么难!

在上一篇文章中,我们拆解了 AI Agent 背后的 Function Call 机制,让大模型不止能聊天,还能动手执行任务。

今天,就让我们进入实战环节:手把手构建一个 AI Agent,教它自动预订会议室,让它真正帮我们”干活”!

这不是一个理论 Demo,而是一个能落地用的原型系统——未来你可以把它接到钉钉、企业微信,真正解放你的日常办公时间。


💡 AI Agent 能做什么?一个典型场景

想象一下你是某家公司的员工,临时要找个会议室开会。

传统方式 👇

  1. 打开日历查空闲时间;
  2. 手动对比各会议室的预订状态;
  3. 在系统里一顿操作点点点。

现在有了 AI Agent,只要一句话:”帮我订明天上午10点的会议室”,就能完成全流程。

  • ✅ 查空闲时间
  • ✅ 列出可选会议室
  • ✅ 引导你确认时间和房间
  • ✅ 调用接口完成预订
  • ✅ 回复你”预订成功”

整套流程不需要你再去动鼠标,全靠 AI 自动完成。

这,才是 AI Agent 真正的价值所在——动口不动手,办公更轻松


🧠 AI Agent 如何”思考”并动手?

大模型自己不会预订会议室,它得靠调用”外部工具”来实现功能。

这些工具其实就是我们提前定义好的函数(function),Agent 会按需调用它们完成任务。

本项目共设计了三个核心工具函数:

1. 获取会议室列表

1
2
def get_all_rooms():
    return ["Room 1", "Room 2", "Room 3", "888 多媒体会议室"]

2. 查询时间段内空闲会议室

1
2
def get_available_rooms(start_time, end_time):
    return ["Room 1", "Room 2"]

3. 提交预订请求

1
2
def book_room(name, start_time, end_time):
    return "预订成功"  # 简化返回

这些函数一旦注册给大模型,配合系统提示词,就变成了 Agent 的”动手能力”。它可以在理解用户意图后,自动调用正确的函数,并根据结果继续对话或确认信息。


🤖 Agent 是如何组装起来的?

整个 AI Agent 的运行逻辑可以用几行代码完成初始化:

1
2
3
4
5
6
7
8
9
10
11
12
13
tools = [get_all_rooms, get_available_rooms, book_room]
llm = ChatOpenAI(model="qwen-max")
memory = InMemorySaver()

prompt = SystemMessage(
    f"你是一个智能助手。当前时间是:{datetime.now().strftime('%Y-%m-%d %H:%M')}"
    f"请逐步确认会议时间和会议室信息,协助用户预订会议室。"
    f"请尽可能简洁地表达。\n"
    f"最重要的是,在使用 book_room 工具之前,一定要最后一次向用户确认所有信息是否正确。"
    f"只有在用户确认无误后,才能执行 book_room,不要跳过这个步骤。"
)

agent = create_react_agent(llm, tools, checkpointer=memory, prompt=prompt)

简单解释一下这段代码的含义:

  • tools:注册我们定义的会议室查询与预订工具;
  • llm:加载所用大模型(这里用的是「qwen-max」);
  • memory:保存对话过程的记忆状态;
  • prompt:为 Agent 设置角色和行为准则(重点强调必须确认关键信息后才能预订);
  • create_react_agent:创建具备交互能力的 Agent,支持多轮对话 + 工具调用。

🧭 对话驱动逻辑:Agent 是怎么一步步完成预订的?

我们设计了一个多轮会话流程,大致如下:

用户发出请求 → Agent 获取时间信息 → 查询可用会议室 → 用户选择 → Agent 确认信息 → 提交预订

这里最关键的一点:AI 会在真正提交预订前,自动做最后确认。

这是为了保证安全性和可控性,就像你请了个靠谱助理,凡事都帮你复核一遍,避免误操作。


🎬 实战演示:AI 预订会议室全过程

🗣 用户发话:

帮我订个会议室

🤖 AI 回复:

请告诉我会议的开始和结束时间(例如 10:00 到 11:00)

🗣 用户说:

明天上午10点到11点

🤖 AI 自动调用工具,查询空闲会议室:

返回结果:[“Room 1”, “Room 2”]

🤖 AI 继续问:

以下会议室可用:Room 1、Room 2。您想预订哪一间?

🗣 用户回答:

第一个

🤖 AI 做最后确认:

确认信息如下:Room 1,明天上午10点到11点。信息正确吗?

🗣 用户答:

确认

🤖 AI 调用预订接口,返回结果:

预订成功!

是不是感觉像跟一个懂事、效率高的助理在对话?这就是 Function Call + 多轮交互结合后的魅力。


🧪 更多使用案例:不同说法它都能理解

我们还测试了不同风格的输入指令,Agent 表现都很稳定 👇

✅ 情况 1:直接给出完整信息

用户:”帮我订明天上午10点到11点 1 号会议室”

AI 会直接提取出时间和会议室信息,然后确认后提交预订。

✅ 情况 2:信息不全时主动追问

用户:”帮我订 1 号会议室”

AI 会自动问你需要什么时间段。

✅ 情况 3:冲突检测与推荐

如果用户选了已被占的会议室,AI 会主动说明原因,并让你重新选择或修改时间。

这不是传统的”关键词匹配机器人”,而是真正理解上下文并能灵活应对的 AI Agent。


🚀 更进一步:对接真实系统

值得一提的是,AI Agent 的能力远不止调用你手动写好的函数。

我们完全可以让它接入真实数据库或系统接口,像人一样实时获取系统状态,比如:

  • 查询数据库中有哪些会议室;
  • 动态判断哪些时间段有空;
  • 自动比对预约冲突;
  • 实时写入预约记录或同步到企业日历。

只需提供一个查询入口(比如数据库 API),并告诉模型使用方式,它就可以自己”去查、去比、再决策”。


🔧 AI Agent 本质是”任务执行器”

如果说大模型是”大脑”,Function Call 是”手脚”,那 Agent 就是”协调员”,负责把它们串起来做一件具体的事。

你越清楚这个任务的流程结构,就越能做出好用的 AI。

今天的会议室预订只是最简单的案例,未来你可以做:

  • 自动填写表单;
  • 智能客服工单流转;
  • 邮件助手;

只要你能把流程拆成”对话 + 工具”,AI 就能帮你自动执行。


📚 项目源码

如果你想看看完整代码实现或亲自运行一遍,这里是项目的 GitHub 地址👇:

🔗 https://github.com/zhengjie9510/learn-langchain/tree/main/Examples


推荐阅读: AI Agent 能动手的秘密:Function Call 机制解析

本文由作者按照 CC BY 4.0 进行授权