novelai-sdk-unofficial / OpenAIGeneration
Class: OpenAIGeneration
Defined in: src/client.ts:487
High-level OpenAI-compatible generation interface
Provides user-friendly methods for OpenAI-compatible text generation with automatic parameter validation and camelCase to snake_case conversion.
Example
const client = new NovelAI({ apiKey: 'your-api-key' });
// Text completion
const response = await client.openai.completion({
prompt: 'Once upon a time',
maxTokens: 100,
});
// Chat completion
const chat = await client.openai.chatCompletion({
messages: [{ role: 'user', content: 'Hello!' }],
maxTokens: 100,
});
// Streaming
for await (const chunk of client.openai.chatCompletionStream({
messages: [{ role: 'user', content: 'Tell me a story' }],
})) {
const content = chunk.choices[0]?.delta?.content;
if (content) process.stdout.write(content);
}Constructors
Constructor
new OpenAIGeneration(
client):OpenAIGeneration
Defined in: src/client.ts:490
Parameters
client
Returns
OpenAIGeneration
Methods
chatCompletion()
chatCompletion(
params):Promise<OAIChatCompletionResponse>
Defined in: src/client.ts:576
Chat completion with validation (OpenAI-compatible)
Parameters
params
User-friendly chat completion parameters (camelCase)
bestOf?
number = ...
Number of completions to generate server-side and return the best
echo?
boolean = ...
Echo back the prompt in addition to the completion
enableThinking?
boolean = ...
Enable thinking/reasoning mode
frequencyPenalty?
number = ...
Frequency penalty (-2.0 to 2.0)
logitBias?
Record<string, number> = ...
Logit bias for specific tokens
logprobs?
number = ...
Number of log probabilities to return
maxTokens?
number = ...
Maximum tokens to generate (1-2048)
messages
object[] = ...
Array of chat messages
minP?
number = ...
Min-P sampling threshold (0-1)
model?
"llama-3-erato-v1" | "kayra-v1" | "clio-v1" = ...
Model to use for generation
n?
number = ...
Number of completions to generate
presencePenalty?
number = ...
Presence penalty (-2.0 to 2.0)
seed?
number = ...
Random seed for reproducibility
stop?
string | string[] = ...
Stop sequences - generation stops when any is encountered
stream?
boolean = ...
Enable streaming response
suffix?
string = ...
Suffix to append after the completion
temperature?
number = ...
Sampling temperature (0-2). Higher = more random
topK?
number = ...
Top-K sampling. 0 = disabled
topP?
number = ...
Nucleus sampling threshold (0-1)
unifiedCubic?
number = ...
Unified cubic sampling parameter
unifiedIncreaseLinearWithEntropy?
number = ...
Unified increase linear with entropy parameter
unifiedLinear?
number = ...
Unified linear sampling parameter
unifiedQuadratic?
number = ...
Unified quadratic sampling parameter
user?
string = ...
User identifier for tracking
Returns
Promise<OAIChatCompletionResponse>
Chat completion response with generated message
Throws
ZodError if parameters fail validation
Example
const response = await client.openai.chatCompletion({
messages: [
{ role: 'system', content: 'You are a helpful assistant.' },
{ role: 'user', content: 'Hello!' },
],
maxTokens: 100,
});
console.log(response.choices[0].message.content);chatCompletionStream()
chatCompletionStream(
params,signal?):AsyncGenerator<OAIChatCompletionChunk,void,unknown>
Defined in: src/client.ts:609
Chat completion with streaming and validation
Parameters
params
User-friendly chat completion parameters (camelCase)
bestOf?
number = ...
Number of completions to generate server-side and return the best
echo?
boolean = ...
Echo back the prompt in addition to the completion
enableThinking?
boolean = ...
Enable thinking/reasoning mode
frequencyPenalty?
number = ...
Frequency penalty (-2.0 to 2.0)
logitBias?
Record<string, number> = ...
Logit bias for specific tokens
logprobs?
number = ...
Number of log probabilities to return
maxTokens?
number = ...
Maximum tokens to generate (1-2048)
messages
object[] = ...
Array of chat messages
minP?
number = ...
Min-P sampling threshold (0-1)
model?
"llama-3-erato-v1" | "kayra-v1" | "clio-v1" = ...
Model to use for generation
n?
number = ...
Number of completions to generate
presencePenalty?
number = ...
Presence penalty (-2.0 to 2.0)
seed?
number = ...
Random seed for reproducibility
stop?
string | string[] = ...
Stop sequences - generation stops when any is encountered
stream?
boolean = ...
Enable streaming response
suffix?
string = ...
Suffix to append after the completion
temperature?
number = ...
Sampling temperature (0-2). Higher = more random
topK?
number = ...
Top-K sampling. 0 = disabled
topP?
number = ...
Nucleus sampling threshold (0-1)
unifiedCubic?
number = ...
Unified cubic sampling parameter
unifiedIncreaseLinearWithEntropy?
number = ...
Unified increase linear with entropy parameter
unifiedLinear?
number = ...
Unified linear sampling parameter
unifiedQuadratic?
number = ...
Unified quadratic sampling parameter
user?
string = ...
User identifier for tracking
signal?
AbortSignal
Optional AbortSignal for cancellation
Returns
AsyncGenerator<OAIChatCompletionChunk, void, unknown>
Yields
Chat completion chunks as they are generated
Example
const controller = new AbortController();
for await (const chunk of client.openai.chatCompletionStream({
messages: [{ role: 'user', content: 'Tell me a story' }],
maxTokens: 200,
}, controller.signal)) {
const content = chunk.choices[0]?.delta?.content;
if (content) process.stdout.write(content);
}completion()
completion(
params):Promise<OAICompletionResponse>
Defined in: src/client.ts:511
Text completion with validation (OpenAI-compatible)
Parameters
params
User-friendly completion parameters (camelCase)
bestOf?
number = ...
Number of completions to generate server-side and return the best
echo?
boolean = ...
Echo back the prompt in addition to the completion
frequencyPenalty?
number = ...
Frequency penalty (-2.0 to 2.0)
logitBias?
Record<string, number> = ...
Logit bias for specific tokens
logprobs?
number = ...
Number of log probabilities to return
maxTokens?
number = ...
Maximum tokens to generate (1-2048)
minP?
number = ...
Min-P sampling threshold (0-1)
model?
"llama-3-erato-v1" | "kayra-v1" | "clio-v1" = ...
Model to use for generation
n?
number = ...
Number of completions to generate
presencePenalty?
number = ...
Presence penalty (-2.0 to 2.0)
prompt
string | number[] | number[][] | string[] = OAIPromptSchema
Input prompt - string, array of strings, or array of token arrays
seed?
number = ...
Random seed for reproducibility
stop?
string | string[] = ...
Stop sequences - generation stops when any is encountered
stream?
boolean = ...
Enable streaming response
suffix?
string = ...
Suffix to append after the completion
temperature?
number = ...
Sampling temperature (0-2). Higher = more random
topK?
number = ...
Top-K sampling. 0 = disabled
topP?
number = ...
Nucleus sampling threshold (0-1)
unifiedCubic?
number = ...
Unified cubic sampling parameter
unifiedIncreaseLinearWithEntropy?
number = ...
Unified increase linear with entropy parameter
unifiedLinear?
number = ...
Unified linear sampling parameter
unifiedQuadratic?
number = ...
Unified quadratic sampling parameter
user?
string = ...
User identifier for tracking
Returns
Promise<OAICompletionResponse>
Completion response with generated text
Throws
ZodError if parameters fail validation
Example
const response = await client.openai.completion({
prompt: 'The quick brown fox',
maxTokens: 50,
temperature: 0.7,
});
console.log(response.choices[0].text);completionStream()
completionStream(
params,signal?):AsyncGenerator<OAICompletionChunk,void,unknown>
Defined in: src/client.ts:543
Text completion with streaming and validation
Parameters
params
User-friendly completion parameters (camelCase)
bestOf?
number = ...
Number of completions to generate server-side and return the best
echo?
boolean = ...
Echo back the prompt in addition to the completion
frequencyPenalty?
number = ...
Frequency penalty (-2.0 to 2.0)
logitBias?
Record<string, number> = ...
Logit bias for specific tokens
logprobs?
number = ...
Number of log probabilities to return
maxTokens?
number = ...
Maximum tokens to generate (1-2048)
minP?
number = ...
Min-P sampling threshold (0-1)
model?
"llama-3-erato-v1" | "kayra-v1" | "clio-v1" = ...
Model to use for generation
n?
number = ...
Number of completions to generate
presencePenalty?
number = ...
Presence penalty (-2.0 to 2.0)
prompt
string | number[] | number[][] | string[] = OAIPromptSchema
Input prompt - string, array of strings, or array of token arrays
seed?
number = ...
Random seed for reproducibility
stop?
string | string[] = ...
Stop sequences - generation stops when any is encountered
stream?
boolean = ...
Enable streaming response
suffix?
string = ...
Suffix to append after the completion
temperature?
number = ...
Sampling temperature (0-2). Higher = more random
topK?
number = ...
Top-K sampling. 0 = disabled
topP?
number = ...
Nucleus sampling threshold (0-1)
unifiedCubic?
number = ...
Unified cubic sampling parameter
unifiedIncreaseLinearWithEntropy?
number = ...
Unified increase linear with entropy parameter
unifiedLinear?
number = ...
Unified linear sampling parameter
unifiedQuadratic?
number = ...
Unified quadratic sampling parameter
user?
string = ...
User identifier for tracking
signal?
AbortSignal
Optional AbortSignal for cancellation
Returns
AsyncGenerator<OAICompletionChunk, void, unknown>
Yields
Completion chunks as they are generated
Example
const controller = new AbortController();
for await (const chunk of client.openai.completionStream({
prompt: 'Once upon a time',
maxTokens: 100,
}, controller.signal)) {
process.stdout.write(chunk.choices[0]?.text ?? '');
}listModels()
listModels():
Promise<OAIModel[]>
Defined in: src/client.ts:636
List available models
Returns
Promise<OAIModel[]>
Array of available model objects
Example
const models = await client.openai.listModels();
for (const model of models) {
console.log(`${model.id} (owned by ${model.owned_by})`);
}tokenCount()
tokenCount(
params):Promise<number>
Defined in: src/client.ts:656
Count tokens in text
Parameters
params
Token count parameters
model?
"llama-3-erato-v1" | "kayra-v1" | "clio-v1" = ...
Model to use for tokenization
prompt
string | number[] | number[][] | string[] = OAIPromptSchema
Prompt to count tokens for - string, array of strings, or array of token arrays
Returns
Promise<number>
Number of tokens in the text
Example
const count = await client.openai.tokenCount({
prompt: 'Hello, world!',
model: 'llama-3-erato-v1',
});
console.log(`Token count: ${count}`);