构建一个能干活的 AI Agent,真的没你想的那么难!
手把手构建一个 AI Agent,教它自动预订会议室,让它真正帮我们'干活'
在上一篇文章中,我们拆解了 AI Agent 背后的 Function Call 机制,让大模型不止能聊天,还能动手执行任务。
今天,就让我们进入实战环节:手把手构建一个 AI Agent,教它自动预订会议室,让它真正帮我们”干活”!
这不是一个理论 Demo,而是一个能落地用的原型系统——未来你可以把它接到钉钉、企业微信,真正解放你的日常办公时间。
💡 AI Agent 能做什么?一个典型场景
想象一下你是某家公司的员工,临时要找个会议室开会。
传统方式 👇
- 打开日历查空闲时间;
- 手动对比各会议室的预订状态;
- 在系统里一顿操作点点点。
现在有了 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