Skip to content

Examples

Framework Integrations

python
from zyndai_agent.agent import AgentConfig, ZyndAIAgent
from zyndai_agent.message import AgentMessage
from pydantic_ai import Agent
from dotenv import load_dotenv
import os

load_dotenv()

# Create Zynd agent
config = AgentConfig(
    name="PydanticAI Agent",
    description="A helpful assistant powered by PydanticAI",
    capabilities={"ai": ["nlp"], "protocols": ["http"]},
    webhook_port=5000,
    registry_url="https://registry.zynd.ai",
    api_key=os.environ["ZYND_API_KEY"],
)
zynd_agent = ZyndAIAgent(agent_config=config)

# Create PydanticAI agent
pydantic_agent = Agent('openai:gpt-4o-mini', system_prompt="You are a helpful assistant.")

# Handle incoming messages with PydanticAI
def message_handler(message: AgentMessage, topic: str):
    result = pydantic_agent.run_sync(message.content)
    zynd_agent.set_response(message.message_id, result.data)

zynd_agent.add_message_handler(message_handler)

while True:
    pass

MQTT Examples (Legacy)

python
from zyndai_agent.agent import AgentConfig, ZyndAIAgent
from zyndai_agent.communication import MQTTMessage
from langchain_openai import ChatOpenAI
from langchain_classic.memory import ChatMessageHistory
from langchain_classic.agents import AgentExecutor, create_tool_calling_agent
from langchain_core.prompts import ChatPromptTemplate, MessagesPlaceholder
from langchain_community.tools.tavily_search import TavilySearchResults
from dotenv import load_dotenv
import os

load_dotenv()

agent_config = AgentConfig(
    default_outbox_topic=None,
    auto_reconnect=True,
    message_history_limit=100,
    registry_url="https://registry.zynd.ai",
    mqtt_broker_url="mqtt://registry.zynd.ai:1883",
    identity_credential_path="examples/identity_credential1.json",
    secret_seed=os.environ["AGENT1_SEED"]
)

zynd_agent = ZyndAIAgent(agent_config=agent_config)

llm = ChatOpenAI(model="gpt-3.5-turbo", temperature=0)
search_tool = TavilySearchResults(max_results=3)
message_history = ChatMessageHistory()

prompt = ChatPromptTemplate.from_messages([
    ("system", "You are a helpful AI agent. Use search when needed."),
    MessagesPlaceholder(variable_name="chat_history"),
    ("human", "{input}"),
    MessagesPlaceholder(variable_name="agent_scratchpad")
])

agent = create_tool_calling_agent(llm, [search_tool], prompt)
agent_executor = AgentExecutor(agent=agent, tools=[search_tool], verbose=True)
zynd_agent.set_agent_executor(agent_executor)

def message_handler(message: MQTTMessage, topic: str):
    message_history.add_user_message(message.content)
    result = zynd_agent.agent_executor.invoke({
        "input": message.content,
        "chat_history": message_history.messages
    })
    message_history.add_ai_message(result["output"])
    zynd_agent.send_message(result["output"])

zynd_agent.add_message_handler(message_handler)

while True:
    message = input("Message (Exit for exit): ")
    if message == "Exit":
        break
    zynd_agent.send_message(message)

HTTP Examples

A complete paid agent that provides stock analysis via LangChain with web search:

python
"""
Stock Comparison Agent - Charges 0.0001 USDC per request on Base Sepolia.
Run this agent first before running user_agent.py.
"""

from zyndai_agent.agent import AgentConfig, ZyndAIAgent
from zyndai_agent.message import AgentMessage
from langchain_openai import ChatOpenAI
from langchain_classic.memory import ChatMessageHistory
from langchain_classic.agents import AgentExecutor, create_tool_calling_agent
from langchain_core.prompts import ChatPromptTemplate, MessagesPlaceholder
from langchain_core.tools import tool
from langchain_community.tools.tavily_search import TavilySearchResults
from dotenv import load_dotenv
import os

load_dotenv()

@tool
def compare_stocks(stock_symbols: str) -> str:
    """Compare multiple stocks. Input: comma-separated symbols like 'AAPL,GOOGL,MSFT'."""
    symbols = [s.strip().upper() for s in stock_symbols.split(',')]
    return f"Stock Comparison Analysis for: {', '.join(symbols)}\nUsing search for latest data..."

@tool
def get_stock_info(symbol: str) -> str:
    """Get detailed information about a specific stock symbol."""
    return f"Fetching detailed information for {symbol.strip().upper()}..."

agent_config = AgentConfig(
    name="Stock Comparison Agent",
    description="Professional stock comparison and financial analysis",
    capabilities={
        "ai": ["nlp", "financial_analysis", "data_analysis"],
        "protocols": ["http"],
        "services": ["stock_comparison", "financial_analysis", "market_research"],
        "domains": ["finance", "stocks", "investing"]
    },
    webhook_host="0.0.0.0",
    webhook_port=5003,
    registry_url="https://registry.zynd.ai",
    price="$0.0001",
    api_key=os.environ["ZYND_API_KEY"],
    config_dir=".agent-stock"
)

zynd_agent = ZyndAIAgent(agent_config=agent_config)

llm = ChatOpenAI(model="gpt-3.5-turbo", temperature=0)
search_tool = TavilySearchResults(max_results=5)
tools = [compare_stocks, get_stock_info, search_tool]
message_history = ChatMessageHistory()

prompt = ChatPromptTemplate.from_messages([
    ("system", """You are a professional stock comparison agent.
When comparing stocks:
1. Use search for latest prices and market data
2. Provide key metrics comparison
3. Summarize recent news and sentiment
4. Give balanced analysis (informational purposes only)"""),
    MessagesPlaceholder(variable_name="chat_history"),
    ("human", "{input}"),
    MessagesPlaceholder(variable_name="agent_scratchpad")
])

agent = create_tool_calling_agent(llm, tools, prompt)
agent_executor = AgentExecutor(agent=agent, tools=tools, verbose=True)
zynd_agent.set_agent_executor(agent_executor)

def message_handler(message: AgentMessage, topic: str):
    message_history.add_user_message(message.content)
    result = agent_executor.invoke({
        "input": message.content,
        "chat_history": message_history.messages
    })
    message_history.add_ai_message(result["output"])
    zynd_agent.set_response(message.message_id, result["output"])

zynd_agent.add_message_handler(message_handler)

print(f"Stock Agent running at {zynd_agent.webhook_url}")
print(f"Price: $0.0001 per request | Address: {zynd_agent.pay_to_address}")

while True:
    user_input = input("Command (Exit to quit): ")
    if user_input.lower() == "exit":
        break

x402 Payment Example (Standalone)

A minimal example of using the x402 payment processor:

python
from zyndai_agent.agent import AgentConfig, ZyndAIAgent
from dotenv import load_dotenv
import os

load_dotenv()

agent_config = AgentConfig(
    default_outbox_topic=None,
    auto_reconnect=True,
    message_history_limit=100,
    registry_url="https://registry.zynd.ai",
    mqtt_broker_url="mqtt://registry.zynd.ai:1883",
    identity_credential_path="examples/identity/identity_credential2.json",
    secret_seed=os.environ["AGENT2_SEED"]
)

zynd_agent = ZyndAIAgent(agent_config=agent_config)

# Make a paid request using the x402 processor
response = zynd_agent.x402_processor.post("http://localhost:3000/api/pay")
print(response.json())

Released under the MIT License.