@personize/sdk 0.5.3 → 0.6.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +131 -6
- package/dist/types.d.ts +27 -4
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -110,10 +110,32 @@ console.log(ctx.data.compiledContext);
|
|
|
110
110
|
### Prompt Execution
|
|
111
111
|
|
|
112
112
|
```typescript
|
|
113
|
-
// Simple prompt
|
|
113
|
+
// Simple prompt (defaults to 'pro' tier)
|
|
114
114
|
const response = await client.ai.prompt({
|
|
115
115
|
prompt: 'Summarize our Q4 sales strategy',
|
|
116
116
|
});
|
|
117
|
+
console.log(response.data?.metadata?.creditsCharged); // credits used
|
|
118
|
+
|
|
119
|
+
// With explicit tier
|
|
120
|
+
const fast = await client.ai.prompt({
|
|
121
|
+
prompt: 'Quick summary of today',
|
|
122
|
+
tier: 'basic', // cheapest, fastest
|
|
123
|
+
});
|
|
124
|
+
|
|
125
|
+
const premium = await client.ai.prompt({
|
|
126
|
+
prompt: 'Deep analysis of market trends',
|
|
127
|
+
tier: 'ultra', // highest quality model
|
|
128
|
+
});
|
|
129
|
+
|
|
130
|
+
// BYOK — use your own API key + model + provider (Pro/Enterprise plans only)
|
|
131
|
+
const byok = await client.ai.prompt({
|
|
132
|
+
prompt: 'Generate a report',
|
|
133
|
+
openrouterApiKey: 'sk-or-v1-...', // your OpenRouter key
|
|
134
|
+
model: 'anthropic/claude-sonnet-4-20250514',
|
|
135
|
+
provider: 'openrouter',
|
|
136
|
+
});
|
|
137
|
+
// BYOK billing: time-based (10 credits base + 10/extra minute) instead of per-token
|
|
138
|
+
// Without BYOK, model/provider are rejected — use tier to control quality level
|
|
117
139
|
|
|
118
140
|
// Multi-step instructions with evaluation
|
|
119
141
|
const result = await client.ai.prompt({
|
|
@@ -130,7 +152,6 @@ const analysis = await client.ai.prompt({
|
|
|
130
152
|
attachments: [
|
|
131
153
|
{ name: 'dashboard.png', mimeType: 'image/png', data: base64EncodedImage },
|
|
132
154
|
],
|
|
133
|
-
model: 'anthropic/claude-sonnet-4-20250514',
|
|
134
155
|
});
|
|
135
156
|
|
|
136
157
|
// Multimodal — PDF extraction via URL
|
|
@@ -168,14 +189,15 @@ console.log(research.data?.evaluation?.finalScore);
|
|
|
168
189
|
|
|
169
190
|
```typescript
|
|
170
191
|
// Memorize content (dual extraction: structured + free-form)
|
|
171
|
-
//
|
|
172
|
-
await client.memory.memorize({
|
|
173
|
-
content: '
|
|
192
|
+
// Response includes recordId for immediate use in recall/digest calls
|
|
193
|
+
const memorized = await client.memory.memorize({
|
|
194
|
+
content: 'Meeting notes: John prefers email contact. He is VP of Sales at Acme Corp.',
|
|
174
195
|
speaker: 'Sales Rep',
|
|
175
196
|
enhanced: true,
|
|
176
197
|
tags: ['meetings'],
|
|
177
198
|
email: 'john@example.com',
|
|
178
199
|
});
|
|
200
|
+
console.log(memorized.data?.recordId); // REC#<hex> — deterministic, use for recall/digest
|
|
179
201
|
|
|
180
202
|
// Smart recall — advanced recall with reflection
|
|
181
203
|
const results = await client.memory.smartRecall({
|
|
@@ -186,11 +208,12 @@ const results = await client.memory.smartRecall({
|
|
|
186
208
|
generate_answer: true,
|
|
187
209
|
});
|
|
188
210
|
|
|
189
|
-
// Fast recall — low-latency mode (~500ms)
|
|
211
|
+
// Fast recall — low-latency mode (~500ms), guaranteed min 10 results
|
|
190
212
|
const fast = await client.memory.smartRecall({
|
|
191
213
|
query: 'contact info for John',
|
|
192
214
|
email: 'john@example.com',
|
|
193
215
|
fast_mode: true,
|
|
216
|
+
// min_results: 10 (default in fast_mode — always returns top N even below score threshold)
|
|
194
217
|
});
|
|
195
218
|
|
|
196
219
|
// Direct recall — DynamoDB lookup: properties + freeform memories (no AI, type required)
|
|
@@ -296,6 +319,95 @@ const evaluation = await client.evaluate.memorizationAccuracy({
|
|
|
296
319
|
console.log(evaluation.data.summary.propertiesOptimized);
|
|
297
320
|
```
|
|
298
321
|
|
|
322
|
+
## Tiers & Pricing
|
|
323
|
+
|
|
324
|
+
### Generate Tiers (Prompt)
|
|
325
|
+
|
|
326
|
+
| Tier | Input Credits/1K tokens | Output Credits/1K tokens | Best For |
|
|
327
|
+
| :--- | :--- | :--- | :--- |
|
|
328
|
+
| `basic` | 0.2 | 0.4 | High-volume, simple tasks |
|
|
329
|
+
| `pro` | 0.5 | 1.0 | Balanced quality & cost (default) |
|
|
330
|
+
| `ultra` | 1.0 | 2.5 | Complex reasoning, highest quality |
|
|
331
|
+
|
|
332
|
+
### Memorize Tiers
|
|
333
|
+
|
|
334
|
+
| Tier | Credits/1K tokens | Best For |
|
|
335
|
+
| :--- | :--- | :--- |
|
|
336
|
+
| `basic` | 1.0 | Bulk imports, simple data |
|
|
337
|
+
| `pro` | 2.5 | General use (default) |
|
|
338
|
+
| `pro_fast` | 3.5 | Pro quality, lower latency |
|
|
339
|
+
| `ultra` | 7.0 | Maximum extraction quality |
|
|
340
|
+
|
|
341
|
+
### Retrieval (Recall & Smart Guidelines)
|
|
342
|
+
|
|
343
|
+
| Operation | Mode | Credits/Call |
|
|
344
|
+
| :--- | :--- | :--- |
|
|
345
|
+
| Smart Recall | `fast_mode: true` | 0.1 |
|
|
346
|
+
| Smart Recall | `fast_mode: false` (deep) | 0.2 |
|
|
347
|
+
| Smart Guidelines | `mode: 'fast'` | 0.1 |
|
|
348
|
+
| Smart Guidelines | `mode: 'deep'` | 0.5 |
|
|
349
|
+
|
|
350
|
+
1 credit = $0.01.
|
|
351
|
+
|
|
352
|
+
### Direct Providers
|
|
353
|
+
|
|
354
|
+
### BYOK (Bring Your Own Key)
|
|
355
|
+
|
|
356
|
+
Pro and Enterprise plans can pass their own API key. Billing switches to time-based: **10 credits base + 10 credits per additional minute**.
|
|
357
|
+
|
|
358
|
+
When using BYOK, you **must** provide both `model` and `provider`. Without BYOK, `model` and `provider` are rejected — use `tier` to control quality level.
|
|
359
|
+
|
|
360
|
+
```typescript
|
|
361
|
+
// BYOK: must specify all three
|
|
362
|
+
await client.ai.prompt({
|
|
363
|
+
prompt: '...',
|
|
364
|
+
openrouterApiKey: 'sk-or-v1-...',
|
|
365
|
+
model: 'anthropic/claude-sonnet-4-20250514',
|
|
366
|
+
provider: 'openrouter',
|
|
367
|
+
});
|
|
368
|
+
|
|
369
|
+
// Without BYOK: use tier (model/provider auto-selected)
|
|
370
|
+
await client.ai.prompt({
|
|
371
|
+
prompt: '...',
|
|
372
|
+
tier: 'pro', // basic, pro (default), ultra
|
|
373
|
+
});
|
|
374
|
+
```
|
|
375
|
+
|
|
376
|
+
**Error cases:**
|
|
377
|
+
- `model`/`provider` without `openrouterApiKey` → `400 BYOK required`
|
|
378
|
+
- `openrouterApiKey` without `model`/`provider` → `400 model and provider required`
|
|
379
|
+
- BYOK on a plan that doesn't allow it → `403 byok_not_allowed`
|
|
380
|
+
|
|
381
|
+
Response metadata includes `byok: true` and `creditsCharged` reflecting time-based billing.
|
|
382
|
+
|
|
383
|
+
## Best Practices: Query Crafting for smartRecall
|
|
384
|
+
|
|
385
|
+
The `smartRecall` endpoint uses vector similarity search. Query quality directly impacts result relevance. When building AI pipelines that call `smartRecall`, the **AI agent is responsible for crafting embedding-friendly queries**.
|
|
386
|
+
|
|
387
|
+
**Do:**
|
|
388
|
+
- Use specific, descriptive queries that match the language of stored data
|
|
389
|
+
- Include entity names, property names, or domain-specific terms
|
|
390
|
+
- Example: `"John Smith role title company background"` instead of `"Tell me about this contact"`
|
|
391
|
+
|
|
392
|
+
**Don't:**
|
|
393
|
+
- Use vague meta-queries like `"What do we know?"` or `"Tell me everything"`
|
|
394
|
+
- Use task-oriented queries like `"open tasks pending action items"` when only profile data was memorized
|
|
395
|
+
|
|
396
|
+
**Example — AI pipeline pattern:**
|
|
397
|
+
```typescript
|
|
398
|
+
// BAD: vague query → low similarity scores → few or no results
|
|
399
|
+
const bad = await client.memory.smartRecall({ query: 'Tell me about this contact', email });
|
|
400
|
+
|
|
401
|
+
// GOOD: specific query targeting stored data types
|
|
402
|
+
const good = await client.memory.smartRecall({
|
|
403
|
+
query: `${contactName} role company background interests preferences`,
|
|
404
|
+
email,
|
|
405
|
+
fast_mode: true,
|
|
406
|
+
});
|
|
407
|
+
```
|
|
408
|
+
|
|
409
|
+
**Guaranteed minimum results:** In `fast_mode`, `smartRecall` guarantees at least 10 results (configurable via `min_results`) even when scores fall below the threshold. This ensures your AI workflow always has context to reason about — it can then decide whether the data is sufficient or not.
|
|
410
|
+
|
|
299
411
|
## Configuration
|
|
300
412
|
|
|
301
413
|
| Option | Type | Required | Description |
|
|
@@ -315,6 +427,19 @@ const client = new Personize({
|
|
|
315
427
|
});
|
|
316
428
|
```
|
|
317
429
|
|
|
430
|
+
## Migration from 0.5.x
|
|
431
|
+
|
|
432
|
+
**New in 0.6.0:**
|
|
433
|
+
|
|
434
|
+
| Feature | Details |
|
|
435
|
+
| :--- | :--- |
|
|
436
|
+
| `tier` on `PromptOptions` | Select generate tier: `basic`, `pro` (default), `ultra` |
|
|
437
|
+
| `tier` on `MemorizeOptions` / `BatchMemorizeOptions` | Select memorize tier: `basic`, `pro`, `pro_fast`, `ultra` |
|
|
438
|
+
| `openrouterApiKey` on `PromptOptions` | BYOK — use your own API key (Pro/Enterprise plans). Requires `model` + `provider`. |
|
|
439
|
+
| `model` / `provider` on `PromptOptions` | Custom model/provider selection. **Requires BYOK** (`openrouterApiKey`). Without BYOK, use `tier`. |
|
|
440
|
+
| `creditsCharged` in response metadata | Credits consumed by the request |
|
|
441
|
+
| SmartGuidelines `mode: 'full'` → `mode: 'deep'` | Renamed for consistency. `'full'` still accepted for backward compatibility. |
|
|
442
|
+
|
|
318
443
|
## Migration from 0.3.x
|
|
319
444
|
|
|
320
445
|
**Breaking changes in 0.4.0:**
|
package/dist/types.d.ts
CHANGED
|
@@ -245,8 +245,8 @@ export interface SmartGuidelinesOptions {
|
|
|
245
245
|
tags?: string[];
|
|
246
246
|
excludeTags?: string[];
|
|
247
247
|
model?: string;
|
|
248
|
-
/** Routing mode: "fast" for instant embedding-only (~200ms), "
|
|
249
|
-
mode?: 'fast' | 'full' | 'auto';
|
|
248
|
+
/** Routing mode: "fast" for instant embedding-only (~200ms), "deep" for LLM routing (~3s), "auto" to let the system decide. "full" is accepted as alias for "deep". Default: "auto". */
|
|
249
|
+
mode?: 'fast' | 'deep' | 'full' | 'auto';
|
|
250
250
|
/** Minimum cosine similarity score (0-1) for fast mode results. Lower values return more results. Default: 0.4 for supplementary, 0.7 for critical. */
|
|
251
251
|
minScore?: number;
|
|
252
252
|
/** Session ID for conversation continuity. */
|
|
@@ -290,8 +290,10 @@ export interface SmartGuidelinesUsage {
|
|
|
290
290
|
export type SmartContextUsage = SmartGuidelinesUsage;
|
|
291
291
|
export interface SmartGuidelinesResponse {
|
|
292
292
|
success: boolean;
|
|
293
|
-
/** Which routing mode was actually used. */
|
|
294
|
-
mode: 'fast' | 'full';
|
|
293
|
+
/** Which routing mode was actually used. "full" may appear for backward compat (equivalent to "deep"). */
|
|
294
|
+
mode: 'fast' | 'deep' | 'full';
|
|
295
|
+
/** Credits charged for this request. */
|
|
296
|
+
creditsCharged?: number;
|
|
295
297
|
/** LLM analysis of the task. Null in fast mode. */
|
|
296
298
|
analysis?: SmartGuidelinesAnalysis | null;
|
|
297
299
|
selection: SmartGuidelinesSelection[];
|
|
@@ -389,8 +391,14 @@ export interface PromptOptions {
|
|
|
389
391
|
maxSteps?: number;
|
|
390
392
|
}>;
|
|
391
393
|
stream?: boolean;
|
|
394
|
+
/** LLM model. Requires BYOK (`openrouterApiKey`). Without BYOK, use `tier` instead — model is auto-selected. */
|
|
392
395
|
model?: string;
|
|
396
|
+
/** LLM provider: 'openai' | 'anthropic' | 'google' | 'xai' | 'deepseek' | 'openrouter'. Requires BYOK (`openrouterApiKey`). Without BYOK, provider is auto-selected by tier. */
|
|
393
397
|
provider?: string;
|
|
398
|
+
/** Generate tier: 'basic' (fast/cheap), 'pro' (balanced, default), 'ultra' (highest quality). Determines default model and credit rate. Used when no BYOK key is provided. */
|
|
399
|
+
tier?: 'basic' | 'pro' | 'ultra';
|
|
400
|
+
/** Bring Your Own Key: pass your own OpenRouter (or direct provider) API key. When provided, `model` and `provider` are required. Time-based billing instead of per-token. Requires Pro or Enterprise plan. */
|
|
401
|
+
openrouterApiKey?: string;
|
|
394
402
|
context?: string;
|
|
395
403
|
sessionId?: string;
|
|
396
404
|
/**
|
|
@@ -441,6 +449,12 @@ export interface PromptResponse {
|
|
|
441
449
|
metadata?: {
|
|
442
450
|
model: string;
|
|
443
451
|
provider: string;
|
|
452
|
+
/** Generate tier used for billing. */
|
|
453
|
+
tier?: 'basic' | 'pro' | 'ultra';
|
|
454
|
+
/** Credits charged for this request. 1 credit = $0.01. */
|
|
455
|
+
creditsCharged?: number;
|
|
456
|
+
/** True when BYOK (Bring Your Own Key) billing was applied. */
|
|
457
|
+
byok?: boolean;
|
|
444
458
|
usage?: {
|
|
445
459
|
promptTokens: number;
|
|
446
460
|
completionTokens: number;
|
|
@@ -521,6 +535,8 @@ export interface AgentRunOptions {
|
|
|
521
535
|
export interface MemorizeOptions {
|
|
522
536
|
/** Content to memorize. */
|
|
523
537
|
content: string;
|
|
538
|
+
/** Memorize tier: 'basic' (fast), 'pro' (balanced, default), 'pro_fast' (pro speed), 'ultra' (highest extraction). */
|
|
539
|
+
tier?: 'basic' | 'pro' | 'pro_fast' | 'ultra';
|
|
524
540
|
/** Speaker/source label. */
|
|
525
541
|
speaker?: string;
|
|
526
542
|
/** Timestamp of the content. */
|
|
@@ -594,6 +610,11 @@ export interface SmartRecallOptions {
|
|
|
594
610
|
* In fast_mode, defaults to 0.3 if not specified.
|
|
595
611
|
*/
|
|
596
612
|
min_score?: number;
|
|
613
|
+
/**
|
|
614
|
+
* Guarantee at least this many results even if they fall below min_score.
|
|
615
|
+
* In fast_mode, defaults to 10. Set to 0 to disable (strict score cutoff).
|
|
616
|
+
*/
|
|
617
|
+
min_results?: number;
|
|
597
618
|
/** Metadata filters for narrowing results. */
|
|
598
619
|
filters?: Record<string, unknown>;
|
|
599
620
|
}
|
|
@@ -642,6 +663,8 @@ export interface BatchMemorizeMapping {
|
|
|
642
663
|
export interface BatchMemorizeOptions {
|
|
643
664
|
/** Source system label (e.g. 'Hubspot', 'Salesforce') */
|
|
644
665
|
source: string;
|
|
666
|
+
/** Memorize tier: 'basic' | 'pro' | 'pro_fast' | 'ultra'. Default: 'pro'. */
|
|
667
|
+
tier?: 'basic' | 'pro' | 'pro_fast' | 'ultra';
|
|
645
668
|
/** Mapping configuration for the sync */
|
|
646
669
|
mapping: BatchMemorizeMapping;
|
|
647
670
|
/** Array of source data rows (key-value objects matching sourceField names) */
|