谷歌日历工具包
Google 日历是 Google Workspace 的产品,允许用户组织日程和事件。它是一个基于云的日历,允许用户创建、编辑和删除事件。它还允许用户与他人共享日历。
概述
本笔记本将帮助您开始使用 Google 日历工具包。该工具包与 Google 日历 API 交互,以对日历执行各种操作。它允许您:
- 创建事件。
- 搜索事件。
- 更新事件。
- 在不同日历之间移动事件。
- 删除事件。
- 列出事件。
设置
要使用此工具包,您需要:
- 拥有一个可访问 Google 日历的 Google 帐户。
- 按照Google 日历 API 文档中说明的方式设置您的凭据。下载 `credentials.json` 文件后,即可开始使用 Google 日历 API。
为了启用单个工具的自动追踪,请设置您的 LangSmith API 密钥
# os.environ["LANGSMITH_TRACING"] = "true"
# os.environ["LANGSMITH_API_KEY"] = getpass.getpass("Enter your LangSmith API key: ")
安装
该工具包位于 langchain-google 仓库的 `langchain-google-community` 包中。我们需要 `calendar` 额外功能。
%pip install -qU langchain-google-community\[calendar\]
实例化
默认情况下,工具包读取本地的 `credentials.json` 文件。您也可以手动提供一个 `Credentials` 对象。
from langchain_google_community import CalendarToolkit
toolkit = CalendarToolkit()
API 参考:CalendarToolkit
自定义身份验证
在后台,使用以下方法创建 `googleapi` 资源。您可以手动构建 `googleapi` 资源以获得更多身份验证控制。
from langchain_google_community import CalendarToolkit
from langchain_google_community.calendar.utils import (
build_resource_service,
get_google_credentials,
)
# Can review scopes here: https://developers.google.com/calendar/api/auth
# For instance, readonly scope is https://www.googleapis.com/auth/calendar.readonly
credentials = get_google_credentials(
token_file="token.json",
scopes=["https://www.googleapis.com/auth/calendar"],
client_secrets_file="credentials.json",
)
api_resource = build_resource_service(credentials=credentials)
toolkit = CalendarToolkit(api_resource=api_resource)
工具
查看可用工具
tools = toolkit.get_tools()
tools
[CalendarCreateEvent(api_resource=<googleapiclient.discovery.Resource object at 0x10ad13fb0>),
CalendarSearchEvents(api_resource=<googleapiclient.discovery.Resource object at 0x10ad13fb0>),
CalendarUpdateEvent(api_resource=<googleapiclient.discovery.Resource object at 0x10ad13fb0>),
GetCalendarsInfo(api_resource=<googleapiclient.discovery.Resource object at 0x10ad13fb0>),
CalendarMoveEvent(api_resource=<googleapiclient.discovery.Resource object at 0x10ad13fb0>),
CalendarDeleteEvent(api_resource=<googleapiclient.discovery.Resource object at 0x10ad13fb0>),
GetCurrentDatetime(api_resource=<googleapiclient.discovery.Resource object at 0x10ad13fb0>)]
- CalendarCreateEvent
- CalendarSearchEvents
- CalendarUpdateEvent
- GetCalendarsInfo
- CalendarMoveEvent
- CalendarDeleteEvent
- GetCurrentDatetime
调用
直接使用参数调用
您可以通过字典格式传递所需参数来直接调用该工具。以下是使用 `CalendarCreateEvent` 工具创建新事件的示例。
from langchain_google_community.calendar.create_event import CalendarCreateEvent
tool = CalendarCreateEvent()
tool.invoke(
{
"summary": "Calculus exam",
"start_datetime": "2025-07-11 11:00:00",
"end_datetime": "2025-07-11 13:00:00",
"timezone": "America/Mexico_City",
"location": "UAM Cuajimalpa",
"description": "Event created from the LangChain toolkit",
"reminders": [{"method": "popup", "minutes": 60}],
"conference_data": True,
"color_id": "5",
}
)
API 参考:CalendarCreateEvent
'Event created: https://www.google.com/calendar/event?eid=amoxdjVsM2UzMW51Yjk2czc4ajhvaGdkcGcgam9yZ2VhbmczM0Bt'
在代理中使用
下面我们将展示如何将该工具包集成到智能体中。
我们需要一个 LLM 或聊天模型
选择 聊天模型
pip install -qU "langchain[google-genai]"
import getpass
import os
if not os.environ.get("GOOGLE_API_KEY"):
os.environ["GOOGLE_API_KEY"] = getpass.getpass("Enter API key for Google Gemini: ")
from langchain.chat_models import init_chat_model
llm = init_chat_model("gemini-2.0-flash", model_provider="google_genai")
from langgraph.prebuilt import create_react_agent
agent_executor = create_react_agent(llm, tools)
API 参考:create_react_agent
example_query = "Create a green event for this afternoon to go for a 30-minute run."
events = agent_executor.stream(
{"messages": [("user", example_query)]},
stream_mode="values",
)
for event in events:
event["messages"][-1].pretty_print()
================================[1m Human Message [0m=================================
Create a green event for this afternoon to go for a 30-minute run.
==================================[1m Ai Message [0m==================================
Tool Calls:
get_current_datetime (call_drHRRhm6pdvcAuqagONUEKs5)
Call ID: call_drHRRhm6pdvcAuqagONUEKs5
Args:
=================================[1m Tool Message [0m=================================
Name: get_current_datetime
Time zone: America/Mexico_City, Date and time: 2025-04-02 19:07:30
==================================[1m Ai Message [0m==================================
Tool Calls:
create_calendar_event (call_p60zSVMmmjTy5Ctezzmlb9zD)
Call ID: call_p60zSVMmmjTy5Ctezzmlb9zD
Args:
summary: Run
start_datetime: 2025-04-02 19:30:00
end_datetime: 2025-04-02 20:00:00
timezone: America/Mexico_City
color_id: 2
=================================[1m Tool Message [0m=================================
Name: create_calendar_event
Event created: https://www.google.com/calendar/event?eid=czZyZHVpcG43ajNiY241dmJmNWwycjE0NWsgam9yZ2VhbmczM0Bt
==================================[1m Ai Message [0m==================================
I have created a green event for your run this afternoon. You can view it [here](https://www.google.com/calendar/event?eid=czZyZHVpcG43ajNiY241dmJmNWwycjE0NWsgam9yZ2VhbmczM0Bt). Enjoy your run!
API 参考
- 有关 Google 日历 API 的更多详细信息,请参阅Google 日历 API 概述。
- 有关 Google 日历工具包所有功能和配置的详细文档,请前往日历文档。