Skip to main content
Open In ColabOpen on GitHub

Google 日历工具包

Google Calendar 是 Google Workspace 的一款产品,允许用户组织自己的日程和活动。它是一个基于云的日历,允许用户创建、编辑和删除事件。此外,它还允许用户与他人共享他们的日历。

概览

这本笔记本将帮助你开始使用Google日历工具包。此工具包与Google日历API交互,以执行各种操作。它允许你:

  • 创建事件。
  • 搜索事件。
  • 更新事件。
  • 将事件在不同的日历之间移动。
  • 删除事件。
  • 列出事件。

设置

要使用此工具包,您需要:<br/>

  1. 拥有Google帐户并可以访问Google日历。
  2. 按照在Google日历API文档中说明的步骤设置您的凭证。下载完credentials.json文件后,您就可以开始使用Google日历API了。

要启用单个工具的自动跟踪,请设置您的LangSmithAPI密钥:

# os.environ["LANGSMITH_TRACING"] = "true"
# os.environ["LANGSMITH_API_KEY"] = getpass.getpass("Enter your LangSmith API key: ")

安装

这个工具包位于langchain-google-community包中的langchain-google仓库中。我们需要calendar额外依赖项:

%pip install -qU langchain-google-community\[calendar\]

Instantiation

默认情况下,工具包会读取本地的 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>)]

Invocation

使用参数直接调用

您可以直接调用工具,通过以字典格式传递所需的参数。以下是如何使用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",
}
)
'Event created: https://www.google.com/calendar/event?eid=amoxdjVsM2UzMW51Yjk2czc4ajhvaGdkcGcgam9yZ2VhbmczM0Bt'

使用于代理

下方我们将展示如何将工具包集成到一个代理中。

我们需要一个大语言模型或聊天模型:

pip install -qU "langchain[openai]"
import getpass
import os

if not os.environ.get("OPENAI_API_KEY"):
os.environ["OPENAI_API_KEY"] = getpass.getpass("Enter API key for OpenAI: ")

from langchain.chat_models import init_chat_model

llm = init_chat_model("gpt-4o-mini", model_provider="openai")
from langgraph.prebuilt import create_react_agent

agent_executor = create_react_agent(llm, tools)
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()
================================ Human Message =================================

Create a green event for this afternoon to go for a 30-minute run.
================================== Ai Message ==================================
Tool Calls:
get_current_datetime (call_drHRRhm6pdvcAuqagONUEKs5)
Call ID: call_drHRRhm6pdvcAuqagONUEKs5
Args:
================================= Tool Message =================================
Name: get_current_datetime

Time zone: America/Mexico_City, Date and time: 2025-04-02 19:07:30
================================== Ai Message ==================================
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
================================= Tool Message =================================
Name: create_calendar_event

Event created: https://www.google.com/calendar/event?eid=czZyZHVpcG43ajNiY241dmJmNWwycjE0NWsgam9yZ2VhbmczM0Bt
================================== Ai Message ==================================

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 参考