# 掌握Zapier自然语言API:集成与应用指南
随着Zapier Natural Language Actions(NLA)API的即将停用,对于开发者来说,深入了解如何高效地使用现有API变得尤为重要。本文将向您展示如何利用Zapier NLA API,通过自然语言轻松地与5000多个应用程序进行交互,并讨论在不同使用场景中的实践技巧。
## 引言
Zapier NLA API是一种强大的工具,允许开发者通过自然语言接口访问Zapier平台上的20,000余个操作。本篇文章旨在帮助您理解如何在不同场景下集成和使用Zapier NLA API,并提供一些代码示例。
## 主要内容
### API的使用模式
1. **服务器端(API Key)**:适合快速上手、测试,以及在开发者自己的Zapier账户中使用特定操作的生产场景。
2. **用户界面(OAuth)**:适用于面向最终用户的应用程序,允许访问用户在Zapier.com上公开的操作和账户。
### 示例一:使用Agent
以下代码展示了如何使用Zapier工具与一个Agent集成,从而实现自动化处理电子邮件和发送Slack消息。
```python
import os
from langchain.agents import AgentType, initialize_agent
from langchain_community.agent_toolkits import ZapierToolkit
from langchain_community.utilities.zapier import ZapierNLAWrapper
from langchain_openai import OpenAI
# 使用API代理服务提高访问稳定性
os.environ["OPENAI_API_KEY"] = os.environ.get("OPENAI_API_KEY", "")
os.environ["ZAPIER_NLA_API_KEY"] = os.environ.get("ZAPIER_NLA_API_KEY", "")
llm = OpenAI(temperature=0)
zapier = ZapierNLAWrapper()
toolkit = ZapierToolkit.from_zapier_nla_wrapper(zapier)
agent = initialize_agent(
toolkit.get_tools(), llm, agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION, verbose=True
)
agent.run(
"Summarize the last email I received regarding Silicon Valley Bank. Send the summary to the #test-zapier channel in slack."
)
示例二:使用SimpleSequentialChain
使用SimpleSequentialChain可以更精细地控制步骤,比如处理电子邮件和发送Slack直接消息。
from langchain.chains import LLMChain, SimpleSequentialChain, TransformChain
from langchain_community.tools.zapier.tool import ZapierNLARunAction
from langchain_community.utilities.zapier import ZapierNLAWrapper
from langchain_core.prompts import PromptTemplate
from langchain_openai import OpenAI
actions = ZapierNLAWrapper().list()
GMAIL_SEARCH_INSTRUCTIONS = "Grab the latest email from Silicon Valley Bank"
def nla_gmail(inputs):
action = next(
(a for a in actions if a["description"].startswith("Gmail: Find Email")), None
)
return {
"email_data": ZapierNLARunAction(
action_id=action["id"],
zapier_description=action["description"],
params_schema=action["params"],
).run(inputs["instructions"])
}
gmail_chain = TransformChain(
input_variables=["instructions"],
output_variables=["email_data"],
transform=nla_gmail,
)
template = """You are an assistant who drafts replies to an incoming email. Output draft reply in plain text (not JSON).
Incoming email:
{email_data}
Draft email reply:"""
prompt_template = PromptTemplate(input_variables=["email_data"], template=template)
reply_chain = LLMChain(llm=OpenAI(temperature=0.7), prompt=prompt_template)
SLACK_HANDLE = "@Ankush Gola"
def nla_slack(inputs):
action = next(
(
a
for a in actions
if a["description"].startswith("Slack: Send Direct Message")
),
None,
)
instructions = f'Send this to {SLACK_HANDLE} in Slack: {inputs["draft_reply"]}'
return {
"slack_data": ZapierNLARunAction(
action_id=action["id"],
zapier_description=action["description"],
params_schema=action["params"],
).run(instructions)
}
slack_chain = TransformChain(
input_variables=["draft_reply"],
output_variables=["slack_data"],
transform=nla_slack,
)
overall_chain = SimpleSequentialChain(
chains=[gmail_chain, reply_chain, slack_chain], verbose=True
)
overall_chain.run(GMAIL_SEARCH_INSTRUCTIONS)
常见问题和解决方案
-
网络访问问题:由于某些地区的网络限制,开发者可能需要考虑使用API代理服务确保访问的稳定性。
-
OAuth授权管理:处理OAuth认证时,需要妥善管理访问令牌和刷新令牌,确保应用能够持续访问用户操作。
总结和进一步学习资源
Zapier NLA API 提供了一个强大的自然语言接口来简化与各种应用的交互。通过正确的配置和工具使用,您可以大大提升工作效率并自动化复杂任务。
进一步学习资源
参考资料
- Zapier 官方网站: https://zapier.com
- LangChain GitHub: https://github.com/langchain-ai/langchain
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
---END---