Skip to main content

langchain-pubnub

PyPI version Python Version

LangChain integration for PubNub real-time messaging platform. This package provides tools that allow LangChain agents to publish messages, fetch message history, and subscribe to real-time updates.

Installation

pip install langchain-pubnub langchain-core langchain langgraph-prebuilt langgraph langchain-openai

Quick Start

Using the Toolkit

from langchain_pubnub import PubNubToolkit

# Initialize the toolkit
toolkit = PubNubToolkit(
    publish_key="your-publish-key",  # or "demo" for testing
    subscribe_key="your-subscribe-key",  # or "demo" for testing
    user_id="my-langchain-agent"
)

# Get all tools
tools = toolkit.get_tools()

# Or access individual tools
publish_tool = toolkit.publish_tool
history_tool = toolkit.history_tool
subscribe_tool = toolkit.subscribe_tool

Using the Factory Function

from langchain_pubnub import create_pubnub_tools

tools = create_pubnub_tools(
    publish_key="demo",
    subscribe_key="demo",
    user_id="my-agent"
)

With a LangChain Agent

from langchain_pubnub import create_pubnub_tools
from langchain_openai import ChatOpenAI
from langchain.agents import AgentExecutor, create_react_agent
from langchain_core.prompts import PromptTemplate

# Create tools
tools = create_pubnub_tools(
    publish_key="your-publish-key",
    subscribe_key="your-subscribe-key",
    user_id="my-agent"
)

# Initialize LLM
llm = ChatOpenAI(model="gpt-5")

# Create agent
prompt = PromptTemplate.from_template("""...""")
agent = create_react_agent(llm, tools, prompt)
agent_executor = AgentExecutor(agent=agent, tools=tools, verbose=True)

# Use the agent
agent_executor.invoke({
    "input": "Send a greeting to the 'announcements' channel"
})

Available Tools

PubNubPublishTool

Publish messages to a PubNub channel.

result = publish_tool.invoke({
    "channel": "my-channel",
    "message": {"text": "Hello, World!"},
    "meta": {"priority": "high"}  # optional
})

Parameters:

  • channel (str, required): The channel to publish to
  • message (str | dict, required): The message payload (must be JSON-serializable)
  • meta (dict, optional): Metadata for message filtering

PubNubHistoryTool

Fetch historical messages from PubNub channels.

result = history_tool.invoke({
    "channels": ["channel-1", "channel-2"],
    "count": 25,
    "include_meta": True
})

Parameters:

  • channels (list[str], required): Channels to fetch history from
  • count (int, optional): Number of messages per channel (default: 25, max: 100)
  • include_meta (bool, optional): Include message metadata (default: False)
  • start (int, optional): Start timetoken for pagination
  • end (int, optional): End timetoken for pagination

PubNubSubscribeTool

Subscribe to a channel and collect real-time messages.

result = subscribe_tool.invoke({
    "channel": "my-channel",
    "timeout": 300,
    "max_messages": 10
})

Parameters:

  • channel (str, required): The channel to subscribe to
  • timeout (int, optional): Max seconds to wait (default: 300)
  • max_messages (int, optional): Max messages to collect (default: 10)

Configuration Options

The PubNubToolkit accepts additional configuration options:

toolkit = PubNubToolkit(
    publish_key="your-publish-key",
    subscribe_key="your-subscribe-key",
    user_id="my-agent",
    ssl=True,  # Enable SSL (default: True)
    # Additional PNConfiguration options...
)

Development

Setup

# Clone the repository
git clone https://github.com/pubnub/langchain-pubnub.git
cd langchain-pubnub

# Install dependencies
pip install -e ".[dev]"

# Install test dependencies
pip install -e ".[test]"

Running Tests

# Run unit tests
pytest tests/unit_tests/ -v

# Run integration tests (requires network)
pytest tests/integration_tests/ -v

# Run all tests with coverage
pytest --cov=langchain_pubnub --cov-report=term-missing

Linting

# Run ruff linter
ruff check .

# Run ruff formatter
ruff format .

Type Checking

mypy langchain_pubnub

Requirements

  • Python >= 3.9
  • langchain-core >= 0.2.0
  • pubnub >= 10.0.0
  • pydantic >= 2.0.0

License

MIT License - see LICENSE for details.

Contributing

Contributions are welcome! Please read our contributing guidelines and submit pull requests to our repository.

Metadata

Release files for langchain-pubnub 0.1.4

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for langchain-pubnub 0.1.4
File Size Uploaded
langchain_pubnub-0.1.4.tar.gz 17.1 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for langchain-pubnub 0.1.4
File Interpreter ABI Platform
langchain_pubnub-0.1.4-py3-none-any.whl Python 3 none any Details

Total release size: 25.3 kB

Release files / langchain_pubnub-0.1.4.tar.gz

Download URL langchain_pubnub-0.1.4.tar.gz
Size 17.1 kB
Tags Source
SHA-256 checksum
How to use checksums
2dcfd1d712c7a15e3a38338d1d53b1dc659e32d309169fd01be87b7aa88d948a
BLAKE2b-256 checksum
How to use checksums
cfdeaefd6b202df82272953417ba1de544a7469947c68faa2766c9d4d7f87bd9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Dec 8, 2025.

Transparency log

Release files / langchain_pubnub-0.1.4-py3-none-any.whl

Download URL langchain_pubnub-0.1.4-py3-none-any.whl
Size 8.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
05f83af54df10fd344223f63426554d76c0ef41ff0653685bae56afef24cbb19
BLAKE2b-256 checksum
How to use checksums
b431cb204cb22ec39a76a39f264ad2a37eb0ff7ac681f7f08ec36b2238f885dd
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Dec 8, 2025.

Transparency log

Release history Release notifications | RSS feed

This release

0.1.4 This release

2 release files

0.1.2

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page