使用Zapier Natural Language Actions与LangChain集成实现自动化工作流

技术背景介绍

Zapier Natural Language Actions(NLA)提供了一种通过自然语言接口访问Zapier平台上5000多个应用和20000多个操作的方法。通过NLA,你可以将自然语言翻译成具体的API调用并获取简化的输出。这使得在复杂的多应用环境中进行自动化操作变得更加轻松。然而需要注意的是,Zapier NLA将在2023年11月17日停用。

核心原理解析

NLA的核心思想是通过类似OAuth的设置窗口暴露一组操作,用户可以通过REST API调用这些操作。它支持API Key和OAuth两种形式的认证方式:

  • API Key:适用于开发者账户的快速启动和测试。
  • OAuth:适合用户面对的应用场景,需要终端用户授权访问其连接的账户。

本文将重点介绍如何在服务端使用API Key进行操作。

代码实现演示

下面的示例代码展示了如何使用LangChain与Zapier NLA集成,通过简单的顺序链处理工作流。

import os
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

# 设置OpenAI和Zapier API的密钥
os.environ["OPENAI_API_KEY"] = "your-openai-api-key"  # 请替换为你的OpenAI API Key
os.environ["ZAPIER_NLA_API_KEY"] = "your-zapier-nla-api-key"  # 请替换为你的Zapier NLA API Key

# 初始化Zapier NLA Wrapper
zapier = ZapierNLAWrapper()
actions = zapier.list()

# Gmail邮件查找操作
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
SLACK_HANDLE = "@YourName"

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,
)

# 执行完整的顺序链
GMAIL_SEARCH_INSTRUCTIONS = "Grab the latest email from Silicon Valley Bank"
overall_chain = SimpleSequentialChain(
    chains=[gmail_chain, reply_chain, slack_chain], verbose=True
)
overall_chain.run(GMAIL_SEARCH_INSTRUCTIONS)

应用场景分析

这种整合方式非常适合在企业环境中实现自动化工作流。例如,自动处理客户邮件,并在Slack中通知相关小组成员。这不仅提高了效率,还确保了信息的及时传递。

实践建议

  • 安全性:API密钥应妥善保管,不随源码一起发布。
  • 扩展性:可以根据具体业务需求,扩展支持更多操作。
  • 调试:使用‘verbose=True’选项可以帮助调试工作流问题。

如果遇到问题欢迎在评论区交流。

—END—

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值