LangChain integration for PubNub real-time messaging
Project description
langchain-pubnub
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 tomessage(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 fromcount(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 paginationend(int, optional): End timetoken for pagination
PubNubSubscribeTool
Subscribe to a channel and collect real-time messages.
result = subscribe_tool.invoke({
"channel": "my-channel",
"timeout": 5,
"max_messages": 10
})
Parameters:
channel(str, required): The channel to subscribe totimeout(int, optional): Max seconds to wait (default: 5)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
# Skip integration tests
SKIP_INTEGRATION_TESTS=true pytest
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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file langchain_pubnub-0.1.2.tar.gz.
File metadata
- Download URL: langchain_pubnub-0.1.2.tar.gz
- Upload date:
- Size: 17.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
14f02306071234b75fa754fe68f12f8d2671fdc1bfc626a41bf026f9eb5d16fc
|
|
| MD5 |
3b72b5de98bdbb379d8c22fb2a948d00
|
|
| BLAKE2b-256 |
7cdde875904225f3e457862bd2cd6c4b8766b86c7b468a5a884d45235b9264a2
|
Provenance
The following attestation bundles were made for langchain_pubnub-0.1.2.tar.gz:
Publisher:
publish.yml on pubnub/langchain-pubnub
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
langchain_pubnub-0.1.2.tar.gz -
Subject digest:
14f02306071234b75fa754fe68f12f8d2671fdc1bfc626a41bf026f9eb5d16fc - Sigstore transparency entry: 744078551
- Sigstore integration time:
-
Permalink:
pubnub/langchain-pubnub@131575b46a94bdc24744077572e60cca37e7beff -
Branch / Tag:
refs/tags/v0.1.2 - Owner: https://github.com/pubnub
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@131575b46a94bdc24744077572e60cca37e7beff -
Trigger Event:
push
-
Statement type:
File details
Details for the file langchain_pubnub-0.1.2-py3-none-any.whl.
File metadata
- Download URL: langchain_pubnub-0.1.2-py3-none-any.whl
- Upload date:
- Size: 8.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6c518a8762506466e8e91d5786a161b38f969ad8e5400e9e127e07a072790f28
|
|
| MD5 |
1fb77041ce4737cec08cbd966895aa06
|
|
| BLAKE2b-256 |
d3f642c96919b78a08be25b29ac3cfaa206065c145059357df8d5dacedfb3d47
|
Provenance
The following attestation bundles were made for langchain_pubnub-0.1.2-py3-none-any.whl:
Publisher:
publish.yml on pubnub/langchain-pubnub
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
langchain_pubnub-0.1.2-py3-none-any.whl -
Subject digest:
6c518a8762506466e8e91d5786a161b38f969ad8e5400e9e127e07a072790f28 - Sigstore transparency entry: 744078557
- Sigstore integration time:
-
Permalink:
pubnub/langchain-pubnub@131575b46a94bdc24744077572e60cca37e7beff -
Branch / Tag:
refs/tags/v0.1.2 - Owner: https://github.com/pubnub
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@131575b46a94bdc24744077572e60cca37e7beff -
Trigger Event:
push
-
Statement type: