Skip to main content
Google 日历 是 Google Workspace 的产品,允许用户管理日程和事件。它是一个基于云端的日历,支持创建、编辑和删除事件,并允许用户与他人共享日历。

概述

本笔记本帮助您快速上手 Google 日历工具包。该工具包与 Google Calendar API 交互,执行各种日历操作,包括:
  • 创建事件
  • 搜索事件
  • 更新事件
  • 在不同日历之间移动事件
  • 删除事件
  • 列出事件

配置

使用此工具包需要:
  1. 拥有可访问 Google 日历的 Google 账户。
  2. 按照 Google Calendar API 文档中的说明设置凭据。下载 credentials.json 文件后,即可开始使用 Google Calendar 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()

自定义身份验证

在底层,系统会使用以下方法创建 googleapi 资源。您可以手动构建 googleapi 资源以获得更多身份验证控制。
from langchain_google_community import CalendarToolkit
from langchain_google_community.calendar.utils import (
    build_resource_service,
    get_google_credentials,
)

# 可在此处查看权限范围:https://developers.google.com/calendar/api/auth
# 例如,只读权限范围为 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 工具创建新事件的示例。
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'

在 Agent 中使用

以下演示如何将工具包集成到 Agent 中。 需要一个 LLM 或聊天模型:
# | output: false
# | echo: false

from langchain_openai import ChatOpenAI

llm = ChatOpenAI(model="gpt-4.1-mini", temperature=0)
from langchain.agents import create_agent


agent_executor = create_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 参考