Skip to content

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

typescript
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

NovelAI

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

typescript
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

typescript
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

typescript
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

typescript
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

typescript
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

typescript
const count = await client.openai.tokenCount({
  prompt: 'Hello, world!',
  model: 'llama-3-erato-v1',
});
console.log(`Token count: ${count}`);

基于 MIT 许可证发布