以编程方式使用文档

>Parallel 是一个专为 LLM 和 AI 应用构建的实时网络搜索和内容提取平台。

ParallelMonitor 调用 Parallel 的 Monitor API 按重复周期(1小时到30天)安排查询,并通过 webhook 或轮询在相关新内容出现时通知您。适用于持续的竞争情报、监管跟踪或主题监控。

概述

集成详情

可序列化JS 支持包最新版本
ParallelMonitorlangchain-parallel<a href="https://pypi.org/project/langchain-parallel/" target="_blank"><img src="https://img.shields.io/pypi/v/langchain-parallel?style=flat-square&label=%20&color=orange" alt="PyPI - Latest version" noZoom height="100" class="rounded" /></a>

设置

集成位于 langchain-parallel package.

    pip install -U langchain-parallel
    
    uv add langchain-parallel
    

凭证

前往 Parallel 注册并生成 API 密钥。在您的环境中设置 PARALLEL_API_KEY

if not os.environ.get("PARALLEL_API_KEY"):
    os.environ["PARALLEL_API_KEY"] = getpass.getpass("Parallel API key:\n")

实例化

from langchain_parallel import ParallelMonitor

client = ParallelMonitor()

创建监控器

frequency is <n><unit> 其中 unit 为 h, d, or w,结果持续时间位于 [1h, 30d] (e.g. "1h", "6h", "3d", "1w", "2w").

from langchain_parallel import MonitorWebhook

monitor = client.create(
    query="Latest peer-reviewed papers on net-energy-gain fusion",
    frequency="1d",
    metadata={"label": "fusion-watch"},
    # Optional: receive new events on a webhook endpoint.
    # webhook=MonitorWebhook(
    #     url="https://example.com/parallel/webhook",
    #     event_types=["monitor.event.detected"],
    # ),
)

print(monitor["monitor_id"], "—", monitor["status"])

有效的 event_typesmonitor.event.detected, monitor.execution.completedmonitor.execution.failed。省略该字段以接收全部三个。

检索、列出、删除

got = client.retrieve(monitor["monitor_id"])

monitors = client.list(limit=20)

deleted = client.delete(monitor["monitor_id"])

列出事件

list_events() 返回一个扁平 {"events": [...]} 列表。新创建的监控器通常在首次计划执行之前没有任何事件;调用方式对两种情况都适用。

events = client.list_events(monitor["monitor_id"], lookback_period="7d")
for ev in events.get("events", []):
    print(ev["type"], ev.get("event_date"))

要检查单个事件组:

group = client.get_event_group(monitor["monitor_id"], event_group_id="...")

模拟事件

在配置 webhook 处理器时很有用。 simulate_event() 发送一个请求类型的合成事件(默认: monitor.event.detected)到监控器的 webhook。

client.simulate_event(monitor["monitor_id"], event_type="monitor.event.detected")

异步

每个 CRUD 和事件方法都有一个以 a:

monitor = await client.acreate(query="...", frequency="6h")
events = await client.alist_events(monitor["monitor_id"], lookback_period="7d")
await client.adelete(monitor["monitor_id"])

Webhook 签名验证

Webhook 投递使用 Standard Webhooks 方案进行签名(基于 <webhook-id>.<webhook-timestamp>.<body>的 HMAC-SHA256,base64 编码, v1,<sig> 格式,带有重放保护)。使用 verify_webhook:

from langchain_parallel import verify_webhook

ok = verify_webhook(
    body,
    webhook_id=request.headers["webhook-id"],
    webhook_timestamp=request.headers["webhook-timestamp"],
    webhook_signature=request.headers["webhook-signature"],
    secret=os.environ["PARALLEL_WEBHOOK_SECRET"],
)

签名密钥在 Parallel 仪表板的组织 webhook 端点级别配置,而非按监控器配置。请参阅 webhook 设置 了解完整的投递协议。

响应格式

create()retrieve() 返回一个监控器字典。 list_events() 返回一个扁平的事件包装。

# create() / retrieve()
{
    "monitor_id": "mon_abc",
    "status": "active",
    "query": "...",
    "frequency": "1d",
    "metadata": {...},
    "webhook": {"url": "...", "event_types": [...]},
    "created_at": "2026-04-15T10:30:00Z",
    # ... additional API-side fields
}

# list_events()
{
    "events": [
        {
            "type": "event",            # or "completion" / "error"
            "event_date": "2026-04-15T10:30:00Z",
            "event_group_id": "...",
            # ... event-type-specific fields
        },
    ],
}

API 参考

有关详细文档,请访问 ParallelMonitor API 参考或 监控 API 指南.