Skip to main content

LangChain integration for PubNub real-time messaging

Project description

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.

Links

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

langchain_pubnub-0.1.4.tar.gz (17.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

langchain_pubnub-0.1.4-py3-none-any.whl (8.1 kB view details)

Uploaded Python 3

File details

Details for the file langchain_pubnub-0.1.4.tar.gz.

File metadata

  • Download URL: langchain_pubnub-0.1.4.tar.gz
  • Upload date:
  • Size: 17.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for langchain_pubnub-0.1.4.tar.gz
Algorithm Hash digest
SHA256 2dcfd1d712c7a15e3a38338d1d53b1dc659e32d309169fd01be87b7aa88d948a
MD5 c567e07f996ba9cf1810cc3b47a3f6df
BLAKE2b-256 cfdeaefd6b202df82272953417ba1de544a7469947c68faa2766c9d4d7f87bd9

See more details on using hashes here.

Provenance

The following attestation bundles were made for langchain_pubnub-0.1.4.tar.gz:

Publisher: publish.yml on pubnub/langchain-pubnub

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file langchain_pubnub-0.1.4-py3-none-any.whl.

File metadata

File hashes

Hashes for langchain_pubnub-0.1.4-py3-none-any.whl
Algorithm Hash digest
SHA256 05f83af54df10fd344223f63426554d76c0ef41ff0653685bae56afef24cbb19
MD5 5b35c1852066570fd6ca5a5fa0d77907
BLAKE2b-256 b431cb204cb22ec39a76a39f264ad2a37eb0ff7ac681f7f08ec36b2238f885dd

See more details on using hashes here.

Provenance

The following attestation bundles were made for langchain_pubnub-0.1.4-py3-none-any.whl:

Publisher: publish.yml on pubnub/langchain-pubnub

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page