构建一个智能日程助理机器人,支持以下能力:
模块 | 技术 |
---|---|
LangChain Agent | 实现多轮动态推理与任务决策 |
Tool | 自定义工具(如添加日程、查看日程) |
Memory | 对话历史记忆,用于上下文关联 |
OpenAI / LLM | 用于自然语言理解与指令解析 |
pip install langchain openai python-dotenv
可选:
pip install dateparser # 处理自然语言时间表达
pip install gradio # 构建简单对话界面
将你的 key 写入 .env
文件中:
OPENAI_API_KEY=你的OpenAI密钥
然后在代码中加载:
from dotenv import load_dotenv
load_dotenv()
calendar_agent/
├── tools/
│ ├── calendar_tools.py # 自定义工具
├── agent_calendar.py # Agent 主体
├── calendar_data.py # 模拟数据库
├── app.py # UI入口(Gradio)
├── .env
我们先建立一个简单的日程管理系统,以列表模拟数据库。
# calendar_data.py
calendar_db = []
def add_event(date, description):
calendar_db.append({"date": date, "description": description})
return f"已添加:{date} - {description}"
def view_events():
if not calendar_db:
return "目前暂无任何日程安排。"
return "\n".join([f"{item['date']}: {item['description']}" for item in calendar_db])
def remove_event(description):
for i, item in enumerate(calendar_db):
if description in item['description']:
calendar_db.pop(i)
return f"已删除日程:{item['description']}"
return "未找到相关日程。"
LangChain 中的 Agent 可以调用 Tool,我们定义三个 Tool:添加日程、查看日程、删除日程。
# tools/calendar_tools.py
from langchain.tools import Tool
from calendar_data import add_event, view_events, remove_event
import dateparser
# 添加日程
def add_event_tool(input: str):
# 解析时间和描述
dt = dateparser.parse(input)
if dt:
return add_event(str(dt), input)
else:
return "无法解析时间,请尝试更清晰的描述。"
# 查看日程
def view_events_tool(_: str = ""):
return view_events()
# 删除日程
def remove_event_tool(input: str):
return remove_event(input)
tools = [
Tool(
name="Add Calendar Event",
func=add_event_tool,
description="用于添加新的日程,用户会描述内容与时间"
),
Tool(
name="View Calendar",
func=view_events_tool,
description="查看所有日程"
),
Tool(
name="Delete Calendar Event",
func=remove_event_tool,
description="删除指定的日程内容"
),
]
使用 LangChain 的 initialize_agent 创建智能助理。
# agent_calendar.py
from langchain.chat_models import ChatOpenAI
from langchain.agents import initialize_agent, AgentType
from langchain.memory import ConversationBufferMemory
from tools.calendar_tools import tools
import os
from dotenv import load_dotenv
load_dotenv()
llm = ChatOpenAI(temperature=0)
memory = ConversationBufferMemory(memory_key="chat_history", return_messages=True)
agent_executor = initialize_agent(
tools=tools,
llm=llm,
agent=AgentType.CONVERSATIONAL_REACT_DESCRIPTION,
memory=memory,
verbose=True
)
def ask_agent(query):
return agent_executor.run(query)
AgentType.CONVERSATIONAL_REACT_DESCRIPTION
:可以根据上下文使用 Tool
memory_key="chat_history"
:使用多轮记忆
verbose=True
:调试时可打印执行过程
使用 Gradio 快速构建对话界面。
# app.py
import gradio as gr
from agent_calendar import ask_agent
def chat(input_text, history):
output = ask_agent(input_text)
history.append((input_text, output))
return "", history
gr.ChatInterface(fn=chat).launch()
运行:
python app.py
体验界面:
用户:
请帮我安排一个周五早上9点的英语口语课。
输出:
已添加:2025-04-11 09:00:00 - 请帮我安排一个周五早上9点的英语口语课。
用户:
我有哪些安排?
输出:
2025-04-11 09:00:00: 请帮我安排一个周五早上9点的英语口语课。
用户:
改成10点吧
输出:
已删除日程:请帮我安排一个周五早上9点的英语口语课。
已添加:2025-04-11 10:00:00 - 改成10点吧
LangChain Agent 会:
例如:
用户输入 → LLM 生成 Thought → 判断 Action → 调用 Tool → Observation → LLM 生成回答
ConversationBufferMemory
保存上下文对话
用 spaCy
或 Rasa
提前解析时间、地点等信息,增强理解力。
替换 calendar_data.py
为调用 Google Calendar API,变成真正的智能日程助理。
结合语音、微信推送、钉钉机器人,提醒用户即将到来的日程。
将机器人扩展为语音助手:输入为语音,输出为语音+文字。
支持选择 LLaMA2、ChatGLM 等本地模型。
本教程带你构建了一个具备真实智能行为的 日程规划机器人,涵盖了:
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有