Quickstart
This guide walks you through making your first query with the Chaos AI SDK.
Installation
npm install @chaoslabs/ai-sdkConfiguration
Create a client with your API key:
import { Chaos, WALLET_MODEL } from '@chaoslabs/ai-sdk';
const chaos = new Chaos({
apiKey: process.env.CHAOS_API_KEY!,
baseUrl: 'https://ai-staging.chaoslabs.co', // optional
timeout: 120000, // optional, defaults to 2 minutes
});| Option | Required | Default | Description |
|---|---|---|---|
apiKey | Yes | - | Your Chaos API key |
baseUrl | No | https://ai-staging.chaoslabs.co | API endpoint |
timeout | No | 120000 | Request timeout in ms |
Models
Choose the model based on your use case:
| Model | Use Case | Examples |
|---|---|---|
WALLET_MODEL | DeFi operations | "Swap 1 ETH for USDC", "Supply to Aave" |
ASK_MODEL | Research queries | "What is Uniswap TVL?", "Compare lending rates" |
Request Metadata
Every request requires metadata to identify the user and wallet:
const metadata = {
user_id: 'your-user-id', // Your app's user identifier
session_id: `session-${Date.now()}`, // Unique per conversation
wallet_id: '0x...', // Wallet address to query
};Making Requests
const response = await chaos.chat.responses.create({
model: WALLET_MODEL,
input: [{ type: 'message', role: 'user', content: "What's in my portfolio?" }],
metadata: walletConfig,
});Processing Responses
Always check the response status, then extract content:
import { extractText, extractBlocks, isTableBlock, isChartBlock } from '@chaoslabs/ai-sdk';
// Always check status first
if (response.status === 'failed') {
console.error('Error:', response.error);
return;
}
// Extract plain text response
const text = extractText(response);
console.log('Response:', text);
// Extract structured data blocks
const blocks = extractBlocks(response);
console.log(`Received ${blocks.length} blocks`);Working with Blocks
Use type guards to safely process different block types:
for (const block of blocks) {
if (isTableBlock(block)) {
console.log(`Table: ${block.title}`);
console.log(`Headers: ${block.tableHeaders.join(', ')}`);
}
if (isChartBlock(block)) {
console.log(`Chart: ${block.title} (${block.chartType})`);
}
}See Block Types for complete documentation on all block types.
Next Steps
- Response Handling - Status checking and content extraction
- Block Types - Tables, charts, transactions, and more
- DeFi Swap Operations - Execute token swaps
- Error Handling - Production-ready patterns