Sardis

SDK v0.2.0: LangChain, OpenAI, and LlamaIndex Support

SDK v0.2.0 adds native integrations for LangChain, OpenAI function calling, and LlamaIndex, plus batch payments, transaction webhooks, and improved TypeScript types.

Our latest SDK release adds native integrations for all major AI frameworks. Now you can add Sardis payments to any LangChain agent, OpenAI function caller, or LlamaIndex tool in minutes.

What's New in v0.2.0

LangChain Integration

The new @sardis/langchain package provides a drop-in toolkit for LangChain agents:

import { SardisToolkit } from '@sardis/langchain';
import { ChatOpenAI } from '@langchain/openai';
import { AgentExecutor, createToolCallingAgent } from 'langchain/agents';

const tools = new SardisToolkit({
  walletId: 'wallet_xxx',
  policy: { maxPerTransaction: 50 }
}).getTools();

const agent = createToolCallingAgent({
  llm: new ChatOpenAI({ model: 'gpt-4' }),
  tools,
  prompt: yourPromptTemplate
});

const executor = new AgentExecutor({ agent, tools });
await executor.invoke({
  input: "Pay $25 for the monthly API subscription"
});

OpenAI Functions

import { sardisTools, executeSardisTool } from '@sardis/openai';
import OpenAI from 'openai';

const client = new OpenAI();

const response = await client.chat.completions.create({
  model: 'gpt-4-turbo',
  messages: [{ role: 'user', content: 'Pay $30 for hosting' }],
  tools: sardisTools,
  tool_choice: 'auto'
});

for (const toolCall of response.choices[0].message.tool_calls) {
  const result = await executeSardisTool(toolCall);
  console.log(result);
}

LlamaIndex Tools

from sardis.llama_index import SardisPaymentTool

payment_tool = SardisPaymentTool(
    wallet_id="wallet_xxx",
    policy={"max_per_transaction": 50}
)

agent = OpenAIAgent.from_tools(
    [payment_tool],
    system_prompt="You are a helpful assistant that can make payments."
)

Breaking Changes

  • REMOVED: wallet.sendPayment() -- Use wallet.pay() instead
  • CHANGED: Policy configuration now uses camelCase (maxPerTransaction) instead of snake_case
  • RENAMED: SardisClient is now SardisWallet to better reflect its purpose

New Features

Batch Payments

await wallet.payBatch([
  { amount: 10, vendor: 'service-a.com' },
  { amount: 15, vendor: 'service-b.com' },
  { amount: 20, vendor: 'service-c.com' }
]);

Transaction Webhooks

wallet.on('transaction:completed', (tx) => {
  console.log(`Payment of $${tx.amount} to ${tx.vendor} completed`);
});

wallet.on('transaction:failed', (tx, error) => {
  console.error(`Payment failed: ${error.message}`);
});

Improved TypeScript Types

Full type safety with discriminated unions for transaction results:

const result = await wallet.pay({ amount: 25, vendor: 'test.com' });

if (result.status === 'success') {
  console.log(result.txHash);
} else {
  console.error(result.error.code, result.error.message);
}

Getting Started

# TypeScript/JavaScript
npm install @sardis/sdk@0.2.0

# Python
pip install sardis-sdk==0.2.0

Check out our updated documentation for full API reference and examples.