@just-every/ensemble 0.1.15 → 0.1.17
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 +115 -9
- package/dist/index.d.ts +11 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +23 -1
- package/dist/index.js.map +1 -1
- package/dist/openai-compat.d.ts +79 -0
- package/dist/openai-compat.d.ts.map +1 -0
- package/dist/openai-compat.js +581 -0
- package/dist/openai-compat.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/utils/stream_converter.d.ts +2 -2
- package/dist/utils/stream_converter.d.ts.map +1 -1
- package/dist/utils/stream_converter.js +1 -1
- package/dist/utils/stream_converter.js.map +1 -1
- package/dist/validation.d.ts +12 -12
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -32,6 +32,23 @@ Perhaps most importantly, the ensemble approach future-proofs your application.
|
|
|
32
32
|
npm install @just-every/ensemble
|
|
33
33
|
```
|
|
34
34
|
|
|
35
|
+
### Migration from OpenAI SDK
|
|
36
|
+
|
|
37
|
+
If you're currently using the OpenAI SDK, migration is simple:
|
|
38
|
+
|
|
39
|
+
```typescript
|
|
40
|
+
// Before:
|
|
41
|
+
import OpenAI from 'openai';
|
|
42
|
+
const client = new OpenAI({ apiKey: process.env.OPENAI_API_KEY });
|
|
43
|
+
|
|
44
|
+
// After:
|
|
45
|
+
import OpenAIEnsemble from '@just-every/ensemble/openai-compat';
|
|
46
|
+
const client = OpenAIEnsemble;
|
|
47
|
+
|
|
48
|
+
// Your existing code works unchanged!
|
|
49
|
+
const completion = await client.chat.completions.create({ /* ... */ });
|
|
50
|
+
```
|
|
51
|
+
|
|
35
52
|
## Quick Start
|
|
36
53
|
|
|
37
54
|
```typescript
|
|
@@ -143,6 +160,36 @@ type EnsembleStreamEvent =
|
|
|
143
160
|
| { type: 'error', error: Error };
|
|
144
161
|
```
|
|
145
162
|
|
|
163
|
+
#### `embed(text, options?)`
|
|
164
|
+
|
|
165
|
+
Generate an embedding vector for the given text using any supported embedding model.
|
|
166
|
+
|
|
167
|
+
**Parameters:**
|
|
168
|
+
- `text` (string): Text to embed
|
|
169
|
+
- `options` (object): Optional configuration
|
|
170
|
+
- `model` (string): Specific model to use (e.g., 'text-embedding-3-small')
|
|
171
|
+
- `modelClass` (ModelClassID): Model class to use (default: 'embedding')
|
|
172
|
+
- `agentId` (string): Agent identifier for tracking
|
|
173
|
+
- `opts` (EmbedOpts): Provider-specific embedding options
|
|
174
|
+
|
|
175
|
+
**Returns:** `Promise<number[]>` - The embedding vector
|
|
176
|
+
|
|
177
|
+
```typescript
|
|
178
|
+
// Simple embedding
|
|
179
|
+
const embedding = await embed('Hello, world!');
|
|
180
|
+
console.log(`Dimension: ${embedding.length}`);
|
|
181
|
+
|
|
182
|
+
// With specific model
|
|
183
|
+
const embedding = await embed('Search query', {
|
|
184
|
+
model: 'text-embedding-3-large'
|
|
185
|
+
});
|
|
186
|
+
|
|
187
|
+
// With provider options (e.g., for Gemini)
|
|
188
|
+
const embedding = await embed('Document text', {
|
|
189
|
+
opts: { taskType: 'RETRIEVAL_DOCUMENT' }
|
|
190
|
+
});
|
|
191
|
+
```
|
|
192
|
+
|
|
146
193
|
|
|
147
194
|
### Working with Models
|
|
148
195
|
|
|
@@ -488,17 +535,29 @@ if (quotaTracker.canMakeRequest('gpt-4o', 'openai')) {
|
|
|
488
535
|
```typescript
|
|
489
536
|
import { convertStreamToMessages, chainRequests } from '@just-every/ensemble';
|
|
490
537
|
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
{ type: 'message', role: 'user', content: '
|
|
494
|
-
]
|
|
538
|
+
let currentMessages = [
|
|
539
|
+
{ type: 'message', role: 'user', content: 'Write a haiku about coding' },
|
|
540
|
+
{ type: 'message', role: 'user', content: 'Make it really long' }
|
|
541
|
+
];
|
|
542
|
+
|
|
543
|
+
let messages = [
|
|
544
|
+
{ type: 'message', role: 'developer', content: 'You are a helpful coding assistant' },
|
|
545
|
+
{ type: 'message', role: 'user', content: 'How do I center a div in CSS?' },
|
|
546
|
+
];
|
|
547
|
+
messages = [...messages, ...(await convertStreamToMessages(request('claude-4-sonnet', messages))).messages];
|
|
548
|
+
messages = [...messages, ...(await convertStreamToMessages(request(getModelFromClass('reasoning_mini'), messages))).messages];
|
|
549
|
+
messages = [...messages, ...(await convertStreamToMessages(request('gemini-2.5-flash', messages))).messages];
|
|
550
|
+
|
|
495
551
|
|
|
496
|
-
const result = await convertStreamToMessages(stream);
|
|
497
552
|
console.log(result.messages); // Full conversation history
|
|
498
553
|
console.log(result.fullResponse); // Just the assistant's response
|
|
499
554
|
|
|
500
555
|
// Chain multiple models for multi-step tasks
|
|
501
|
-
const analysis = await chainRequests(
|
|
556
|
+
const analysis = await chainRequests(
|
|
557
|
+
[
|
|
558
|
+
{ type: 'message', role: 'user', content: codeToAnalyze }
|
|
559
|
+
],
|
|
560
|
+
[
|
|
502
561
|
{
|
|
503
562
|
model: getModelFromClass('code'),
|
|
504
563
|
systemPrompt: 'Analyze this code for bugs and security issues',
|
|
@@ -508,11 +567,9 @@ const analysis = await chainRequests([
|
|
|
508
567
|
systemPrompt: 'Prioritize the issues found and suggest fixes',
|
|
509
568
|
},
|
|
510
569
|
{
|
|
511
|
-
model: 'gpt-
|
|
570
|
+
model: 'gpt-4.1-mini',
|
|
512
571
|
systemPrompt: 'Summarize the analysis in 3 bullet points',
|
|
513
572
|
}
|
|
514
|
-
], [
|
|
515
|
-
{ type: 'message', role: 'user', content: codeToAnalyze }
|
|
516
573
|
]);
|
|
517
574
|
```
|
|
518
575
|
|
|
@@ -605,6 +662,55 @@ if (process.env.NODE_ENV === 'development') {
|
|
|
605
662
|
|
|
606
663
|
## Advanced Topics
|
|
607
664
|
|
|
665
|
+
### OpenAI SDK Compatibility
|
|
666
|
+
|
|
667
|
+
Ensemble provides a drop-in replacement for the OpenAI SDK, allowing you to use any supported model with OpenAI's familiar API:
|
|
668
|
+
|
|
669
|
+
```typescript
|
|
670
|
+
import OpenAIEnsemble from '@just-every/ensemble/openai-compat';
|
|
671
|
+
// Or named imports: import { chat, completions } from '@just-every/ensemble';
|
|
672
|
+
|
|
673
|
+
// Replace OpenAI client
|
|
674
|
+
const openai = OpenAIEnsemble; // Instead of: new OpenAI({ apiKey: '...' })
|
|
675
|
+
|
|
676
|
+
// Use exactly like OpenAI SDK - but with any model!
|
|
677
|
+
const completion = await openai.chat.completions.create({
|
|
678
|
+
model: 'claude-3.5-sonnet', // or 'gpt-4o', 'gemini-2.0-flash', etc.
|
|
679
|
+
messages: [
|
|
680
|
+
{ role: 'system', content: 'You are a helpful assistant.' },
|
|
681
|
+
{ role: 'user', content: 'Hello!' }
|
|
682
|
+
],
|
|
683
|
+
temperature: 0.7
|
|
684
|
+
});
|
|
685
|
+
|
|
686
|
+
console.log(completion.choices[0].message.content);
|
|
687
|
+
|
|
688
|
+
// Streaming
|
|
689
|
+
const stream = await openai.chat.completions.create({
|
|
690
|
+
model: 'gpt-4o-mini',
|
|
691
|
+
messages: [{ role: 'user', content: 'Tell me a story' }],
|
|
692
|
+
stream: true
|
|
693
|
+
});
|
|
694
|
+
|
|
695
|
+
for await (const chunk of stream) {
|
|
696
|
+
process.stdout.write(chunk.choices[0].delta.content || '');
|
|
697
|
+
}
|
|
698
|
+
|
|
699
|
+
// Legacy completions API also supported
|
|
700
|
+
const legacyCompletion = await openai.completions.create({
|
|
701
|
+
model: 'deepseek-chat',
|
|
702
|
+
prompt: 'Once upon a time',
|
|
703
|
+
max_tokens: 100
|
|
704
|
+
});
|
|
705
|
+
```
|
|
706
|
+
|
|
707
|
+
This compatibility layer supports:
|
|
708
|
+
- All chat.completions.create parameters (temperature, tools, response_format, etc.)
|
|
709
|
+
- Streaming and non-streaming responses
|
|
710
|
+
- Tool/function calling
|
|
711
|
+
- Legacy completions.create API
|
|
712
|
+
- Proper TypeScript types matching OpenAI's SDK
|
|
713
|
+
|
|
608
714
|
### Custom Model Providers
|
|
609
715
|
|
|
610
716
|
```typescript
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
export * from './types.js';
|
|
2
2
|
export { getModelProvider, getProviderFromModel, getModelFromClass, isProviderKeyValid, ModelProvider, EmbedOpts } from './model_providers/model_provider.js';
|
|
3
|
+
export { chat, completions, responses, default as OpenAIEnsemble } from './openai-compat.js';
|
|
4
|
+
export type { ResponsesCreateParams, ResponsesCreateResponse, ResponsesCreateChunk } from './openai-compat.js';
|
|
5
|
+
export type { ChatCompletion, ChatCompletionChunk, ChatCompletionCreateParams, OpenAIMessage, OpenAITool, CompletionCreateParams } from './openai-compat.js';
|
|
3
6
|
export { registerExternalModel, getExternalModel, getAllExternalModels, getExternalProvider, isExternalModel, clearExternalRegistrations, overrideModelClass, getModelClassOverride } from './external_models.js';
|
|
4
7
|
export { MODEL_REGISTRY, MODEL_CLASSES, findModel, ModelProviderID, ModelUsage, TieredPrice, TimeBasedPrice, ModelEntry } from './model_data.js';
|
|
5
8
|
export * from './model_providers/claude.js';
|
|
@@ -19,6 +22,13 @@ export * from './utils/image_utils.js';
|
|
|
19
22
|
export * from './utils/llm_logger.js';
|
|
20
23
|
export declare const costTracker: import("./utils/cost_tracker.js").CostTracker;
|
|
21
24
|
export declare const quotaTracker: import("./utils/quota_tracker.js").QuotaTracker;
|
|
22
|
-
import type { RequestOptions, ResponseInput, EnsembleStreamEvent } from './types.js';
|
|
25
|
+
import type { RequestOptions, ResponseInput, ModelClassID, EnsembleStreamEvent } from './types.js';
|
|
26
|
+
import { type EmbedOpts } from './model_providers/model_provider.js';
|
|
23
27
|
export declare function request(model: string, messages: ResponseInput, options?: RequestOptions): AsyncGenerator<EnsembleStreamEvent>;
|
|
28
|
+
export declare function embed(text: string, options?: {
|
|
29
|
+
model?: string;
|
|
30
|
+
modelClass?: ModelClassID;
|
|
31
|
+
agentId?: string;
|
|
32
|
+
opts?: EmbedOpts;
|
|
33
|
+
}): Promise<number[]>;
|
|
24
34
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AACA,cAAc,YAAY,CAAC;AAG3B,OAAO,EACH,gBAAgB,EAChB,oBAAoB,EACpB,iBAAiB,EACjB,kBAAkB,EAClB,aAAa,EACb,SAAS,EACZ,MAAM,qCAAqC,CAAC;AAG7C,OAAO,EACH,qBAAqB,EACrB,gBAAgB,EAChB,oBAAoB,EACpB,mBAAmB,EACnB,eAAe,EACf,0BAA0B,EAC1B,kBAAkB,EAClB,qBAAqB,EACxB,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EACH,cAAc,EACd,aAAa,EACb,SAAS,EACT,eAAe,EACf,UAAU,EACV,WAAW,EACX,cAAc,EACd,UAAU,EACb,MAAM,iBAAiB,CAAC;AAIzB,cAAc,6BAA6B,CAAC;AAC5C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,kCAAkC,CAAC;AACjD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,iCAAiC,CAAC;AAChD,cAAc,oCAAoC,CAAC;AAGnD,cAAc,wBAAwB,CAAC;AACvC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,yBAAyB,CAAC;AACxC,cAAc,yBAAyB,CAAC;AACxC,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AAKtC,eAAO,MAAM,WAAW,+CAAe,CAAC;AACxC,eAAO,MAAM,YAAY,iDAAgB,CAAC;AAG1C,OAAO,KAAK,EACR,cAAc,EACd,aAAa,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AACA,cAAc,YAAY,CAAC;AAG3B,OAAO,EACH,gBAAgB,EAChB,oBAAoB,EACpB,iBAAiB,EACjB,kBAAkB,EAClB,aAAa,EACb,SAAS,EACZ,MAAM,qCAAqC,CAAC;AAG7C,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,SAAS,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAC7F,YAAY,EACR,qBAAqB,EACrB,uBAAuB,EACvB,oBAAoB,EACvB,MAAM,oBAAoB,CAAC;AAG5B,YAAY,EACR,cAAc,EACd,mBAAmB,EACnB,0BAA0B,EAC1B,aAAa,EACb,UAAU,EACV,sBAAsB,EACzB,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EACH,qBAAqB,EACrB,gBAAgB,EAChB,oBAAoB,EACpB,mBAAmB,EACnB,eAAe,EACf,0BAA0B,EAC1B,kBAAkB,EAClB,qBAAqB,EACxB,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EACH,cAAc,EACd,aAAa,EACb,SAAS,EACT,eAAe,EACf,UAAU,EACV,WAAW,EACX,cAAc,EACd,UAAU,EACb,MAAM,iBAAiB,CAAC;AAIzB,cAAc,6BAA6B,CAAC;AAC5C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,kCAAkC,CAAC;AACjD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,iCAAiC,CAAC;AAChD,cAAc,oCAAoC,CAAC;AAGnD,cAAc,wBAAwB,CAAC;AACvC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,yBAAyB,CAAC;AACxC,cAAc,yBAAyB,CAAC;AACxC,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AAKtC,eAAO,MAAM,WAAW,+CAAe,CAAC;AACxC,eAAO,MAAM,YAAY,iDAAgB,CAAC;AAG1C,OAAO,KAAK,EACR,cAAc,EACd,aAAa,EAGb,YAAY,EAEZ,mBAAmB,EAEtB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAuC,KAAK,SAAS,EAAE,MAAM,qCAAqC,CAAC;AAsF1G,wBAAuB,OAAO,CAC1B,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,aAAa,EACvB,OAAO,GAAE,cAAmB,GAC7B,cAAc,CAAC,mBAAmB,CAAC,CAyLrC;AAmCD,wBAAsB,KAAK,CACvB,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE;IACL,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,YAAY,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,SAAS,CAAC;CACf,GACP,OAAO,CAAC,MAAM,EAAE,CAAC,CA0CnB"}
|
package/dist/index.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
export * from './types.js';
|
|
2
2
|
export { getModelProvider, getProviderFromModel, getModelFromClass, isProviderKeyValid } from './model_providers/model_provider.js';
|
|
3
|
+
export { chat, completions, responses, default as OpenAIEnsemble } from './openai-compat.js';
|
|
3
4
|
export { registerExternalModel, getExternalModel, getAllExternalModels, getExternalProvider, isExternalModel, clearExternalRegistrations, overrideModelClass, getModelClassOverride } from './external_models.js';
|
|
4
5
|
export { MODEL_REGISTRY, MODEL_CLASSES, findModel } from './model_data.js';
|
|
5
6
|
export * from './model_providers/claude.js';
|
|
@@ -21,7 +22,7 @@ import { costTracker as _costTracker } from './utils/cost_tracker.js';
|
|
|
21
22
|
import { quotaTracker as _quotaTracker } from './utils/quota_tracker.js';
|
|
22
23
|
export const costTracker = _costTracker;
|
|
23
24
|
export const quotaTracker = _quotaTracker;
|
|
24
|
-
import { getModelProvider } from './model_providers/model_provider.js';
|
|
25
|
+
import { getModelProvider, getModelFromClass } from './model_providers/model_provider.js';
|
|
25
26
|
function hasToolCalls(event) {
|
|
26
27
|
return event && Array.isArray(event.tool_calls) && event.tool_calls.length > 0;
|
|
27
28
|
}
|
|
@@ -182,4 +183,25 @@ export async function* request(model, messages, options = {}) {
|
|
|
182
183
|
}
|
|
183
184
|
}
|
|
184
185
|
}
|
|
186
|
+
const embeddingCache = new Map();
|
|
187
|
+
export async function embed(text, options = {}) {
|
|
188
|
+
const { model, modelClass = 'embedding', agentId = 'ensemble', opts } = options;
|
|
189
|
+
const modelToUse = model || await getModelFromClass(modelClass);
|
|
190
|
+
const cacheKey = `${modelToUse}:${text}`;
|
|
191
|
+
if (embeddingCache.has(cacheKey)) {
|
|
192
|
+
const cached = embeddingCache.get(cacheKey);
|
|
193
|
+
return cached.embedding;
|
|
194
|
+
}
|
|
195
|
+
const provider = getModelProvider(modelToUse);
|
|
196
|
+
if (!provider.createEmbedding) {
|
|
197
|
+
throw new Error(`Provider for model ${modelToUse} does not support embeddings`);
|
|
198
|
+
}
|
|
199
|
+
const result = await provider.createEmbedding(modelToUse, text, opts);
|
|
200
|
+
const embedding = Array.isArray(result[0]) ? result[0] : result;
|
|
201
|
+
embeddingCache.set(cacheKey, {
|
|
202
|
+
embedding,
|
|
203
|
+
timestamp: new Date(),
|
|
204
|
+
});
|
|
205
|
+
return embedding;
|
|
206
|
+
}
|
|
185
207
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AACA,cAAc,YAAY,CAAC;AAG3B,OAAO,EACH,gBAAgB,EAChB,oBAAoB,EACpB,iBAAiB,EACjB,kBAAkB,EAGrB,MAAM,qCAAqC,CAAC;AAG7C,OAAO,EACH,qBAAqB,EACrB,gBAAgB,EAChB,oBAAoB,EACpB,mBAAmB,EACnB,eAAe,EACf,0BAA0B,EAC1B,kBAAkB,EAClB,qBAAqB,EACxB,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EACH,cAAc,EACd,aAAa,EACb,SAAS,EAMZ,MAAM,iBAAiB,CAAC;AAIzB,cAAc,6BAA6B,CAAC;AAC5C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,kCAAkC,CAAC;AACjD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,iCAAiC,CAAC;AAChD,cAAc,oCAAoC,CAAC;AAGnD,cAAc,wBAAwB,CAAC;AACvC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,yBAAyB,CAAC;AACxC,cAAc,yBAAyB,CAAC;AACxC,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AAGtC,OAAO,EAAE,WAAW,IAAI,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACtE,OAAO,EAAE,YAAY,IAAI,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzE,MAAM,CAAC,MAAM,WAAW,GAAG,YAAY,CAAC;AACxC,MAAM,CAAC,MAAM,YAAY,GAAG,aAAa,CAAC;AAa1C,OAAO,EAAE,gBAAgB,EAAE,MAAM,qCAAqC,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import OpenAI from 'openai';
|
|
2
|
+
export type OpenAIMessage = OpenAI.Chat.ChatCompletionMessageParam;
|
|
3
|
+
export type OpenAITool = OpenAI.Chat.ChatCompletionTool;
|
|
4
|
+
export type ChatCompletion = OpenAI.Chat.ChatCompletion;
|
|
5
|
+
export type ChatCompletionChunk = OpenAI.Chat.ChatCompletionChunk;
|
|
6
|
+
export type ChatCompletionCreateParams = OpenAI.Chat.ChatCompletionCreateParams;
|
|
7
|
+
export type CompletionCreateParams = OpenAI.Completions.CompletionCreateParams;
|
|
8
|
+
export declare const chat: {
|
|
9
|
+
completions: {
|
|
10
|
+
create(params: OpenAI.Chat.ChatCompletionCreateParams): Promise<OpenAI.Chat.ChatCompletion | AsyncIterable<OpenAI.Chat.ChatCompletionChunk>>;
|
|
11
|
+
};
|
|
12
|
+
};
|
|
13
|
+
export interface ResponsesCreateParams {
|
|
14
|
+
model: string;
|
|
15
|
+
input: string | OpenAI.Chat.ChatCompletionMessageParam[];
|
|
16
|
+
instructions?: string;
|
|
17
|
+
previous_response_id?: string;
|
|
18
|
+
tools?: Array<{
|
|
19
|
+
name: 'web_search' | 'file_search' | 'computer_use' | string;
|
|
20
|
+
config?: Record<string, any>;
|
|
21
|
+
}>;
|
|
22
|
+
temperature?: number;
|
|
23
|
+
max_tokens?: number;
|
|
24
|
+
stream?: boolean;
|
|
25
|
+
metadata?: Record<string, any>;
|
|
26
|
+
}
|
|
27
|
+
export interface ResponsesCreateResponse {
|
|
28
|
+
id: string;
|
|
29
|
+
object: 'response';
|
|
30
|
+
created: number;
|
|
31
|
+
model: string;
|
|
32
|
+
content: string;
|
|
33
|
+
tool_uses?: Array<{
|
|
34
|
+
name: string;
|
|
35
|
+
input: any;
|
|
36
|
+
output: any;
|
|
37
|
+
}>;
|
|
38
|
+
usage: {
|
|
39
|
+
prompt_tokens: number;
|
|
40
|
+
completion_tokens: number;
|
|
41
|
+
total_tokens: number;
|
|
42
|
+
};
|
|
43
|
+
metadata?: Record<string, any>;
|
|
44
|
+
}
|
|
45
|
+
export interface ResponsesCreateChunk {
|
|
46
|
+
id: string;
|
|
47
|
+
object: 'response.chunk';
|
|
48
|
+
created: number;
|
|
49
|
+
delta: {
|
|
50
|
+
content?: string;
|
|
51
|
+
tool_uses?: Array<{
|
|
52
|
+
index: number;
|
|
53
|
+
name?: string;
|
|
54
|
+
input?: string;
|
|
55
|
+
output?: string;
|
|
56
|
+
}>;
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
export declare const responses: {
|
|
60
|
+
create(params: ResponsesCreateParams): Promise<ResponsesCreateResponse | AsyncIterable<ResponsesCreateChunk>>;
|
|
61
|
+
};
|
|
62
|
+
export declare const completions: {
|
|
63
|
+
create(params: OpenAI.Completions.CompletionCreateParams): Promise<any>;
|
|
64
|
+
};
|
|
65
|
+
declare const OpenAIEnsemble: {
|
|
66
|
+
chat: {
|
|
67
|
+
completions: {
|
|
68
|
+
create(params: OpenAI.Chat.ChatCompletionCreateParams): Promise<OpenAI.Chat.ChatCompletion | AsyncIterable<OpenAI.Chat.ChatCompletionChunk>>;
|
|
69
|
+
};
|
|
70
|
+
};
|
|
71
|
+
completions: {
|
|
72
|
+
create(params: OpenAI.Completions.CompletionCreateParams): Promise<any>;
|
|
73
|
+
};
|
|
74
|
+
responses: {
|
|
75
|
+
create(params: ResponsesCreateParams): Promise<ResponsesCreateResponse | AsyncIterable<ResponsesCreateChunk>>;
|
|
76
|
+
};
|
|
77
|
+
};
|
|
78
|
+
export default OpenAIEnsemble;
|
|
79
|
+
//# sourceMappingURL=openai-compat.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"openai-compat.d.ts","sourceRoot":"","sources":["../openai-compat.ts"],"names":[],"mappings":"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"}
|