@jeremysnr/snug-openai
v0.1.1
Published
snug for the OpenAI SDK. Fit chat messages into a token budget, ready to pass to client.chat.completions.create.
Maintainers
Readme
@jeremysnr/snug-openai
Fit OpenAI chat messages into a token budget. Pass the result directly to client.chat.completions.create.
import { fitMessages } from '@jeremysnr/snug-openai';
const { messages } = fitMessages(conversationHistory, {
model: 'gpt-4o',
budget: 8192,
reserve: 1024,
});
const response = await client.chat.completions.create({ model: 'gpt-4o', messages });System messages are always kept. Other messages are prioritised by recency — older messages are dropped first when the budget is tight.
Install
npm install @jeremysnr/snug-openaiopenai must be installed as a peer dependency.
API
fitMessages(messages, options)
| Option | Type | Default | Description |
|--------|------|---------|-------------|
| budget | number | — | Token limit |
| reserve | number | 0 | Tokens to hold back for the model's reply |
| model | TiktokenModel | 'gpt-4o' | Used to select the tiktoken encoding |
Returns
{
messages: ChatCompletionMessageParam[]; // ready to send
dropped: ChatCompletionMessageParam[]; // what didn't fit
tokensUsed: number;
tokensRemaining: number;
}Part of the snug ecosystem
@jeremysnr/snug— zero-dependency core primitive@jeremysnr/snug-tiktoken— snug with tiktoken, model-agnostic@jeremysnr/snug-anthropic— snug for the Anthropic SDK
Licence
MIT
