@chainai/core
v1.0.4
Published
Core client library for Chain AI - Natural language blockchain assistant
Maintainers
Readme
@chainai/core
Core client library for Chain AI - Natural language blockchain assistant powered by the Internet Computer.
Installation
npm install @chainai/coreQuick Start
import { ChainAIClient } from '@chainai/core';
// Initialize the client with your API key
const client = new ChainAIClient({
apiKey: 'sk_dev_123_...',
host: 'https://icp0.io', // optional
});
// Send a chat message
const response = await client.chat({
text: 'What is the price of Bitcoin?',
conversationId: 'my-conversation-id', // optional
});
console.log(response.data?.response);Features
- ✅ API Key Authentication - Secure usage tracking per developer
- ✅ Response Customization - Personalize AI responses (style, length, templates)
- ✅ Streaming Support - Real-time word-by-word response streaming
- ✅ Multi-Chain Support - Works with BTC, ETH, SOL, ICP
- ✅ TypeScript - Full type safety with TypeScript definitions
API Reference
ChainAIClient
Constructor
new ChainAIClient(config: ChainAIConfig)Config Options:
apiKey(required): Your Chain AI API keyhost(optional): IC host URL (default: 'https://icp0.io')nlpEdgeCanisterId(optional): Custom NLP canister IDdeveloperManagerCanisterId(optional): Custom developer manager canister ID
Methods
validateApiKey()
await client.validateApiKey(): Promise<ValidationResult>Validate your API key and get tier information.
chat(request)
await client.chat({
text: string,
conversationId?: string,
userContext?: any,
language?: string,
}): Promise<ChatResponse>Send a chat message and get AI response.
streamChat(request, callbacks)
await client.streamChat(
{ text: string, ... },
{
onChunk?: (chunk: string) => void,
onDone?: (data: AIResponse) => void,
onError?: (error: string) => void,
}
): Promise<void>Stream chat response word-by-word for better UX.
getCustomization()
await client.getCustomization(): Promise<ResponseCustomization | null>Get current response customization settings for your API key.
updateCustomization(customization)
await client.updateCustomization({
style?: 'professional' | 'casual' | 'technical' | 'friendly' | 'concise',
length?: 'short' | 'medium' | 'detailed',
actionTemplates?: {...},
dataFormat?: {...},
}): Promise<{ok: boolean, message?: string}>Update response customization settings.
resetCustomization()
await client.resetCustomization(): Promise<{ok: boolean, message?: string}>Reset customization to defaults.
Response Customization
Customize how Chain AI responds to queries:
Style Options
- professional: Formal, complete sentences (default)
- casual: Conversational, friendly tone
- technical: Concise, data-focused
- friendly: Enthusiastic language
- concise: Short, minimal responses
Length Options
- short: 1-2 sentences max
- medium: 1 paragraph (default)
- detailed: Multiple paragraphs with context
Example
// Set casual, short responses
await client.updateCustomization({
style: 'casual',
length: 'short',
});
// Now responses will be brief and conversational
const response = await client.chat({
text: 'Send 0.1 ETH to vitalik.eth',
});
// Response: "Done! Transaction sent."Error Handling
try {
const response = await client.chat({
text: 'What is the price of Bitcoin?',
});
if (response.ok) {
console.log(response.data?.response);
} else {
console.error('Error:', response.error);
}
} catch (error) {
console.error('Network error:', error);
}License
MIT
