文档

Agentic 工作流

文本嵌入

分词

管理模型

模型信息

API 参考

文本补全

使用 llm.complete(...) 从已加载的语言模型生成文本补全。文本补全指的是向模型发送未格式化的字符串,期望模型完成文本。

这与多轮聊天对话不同。有关聊天补全的更多信息,请参阅 聊天补全

1. 实例化模型

首先,你需要加载一个模型以生成补全。这可以使用 llm 句柄上的 model 方法完成。

import { LMStudioClient } from "@lmstudio/sdk";

const client = new LMStudioClient();
const model = await client.llm.model("qwen2.5-7b-instruct");

2. 生成补全

一旦你加载了模型,就可以通过将字符串传递给 llm 句柄上的 complete 方法来生成补全。

const completion = model.complete("My name is", {
  maxTokens: 100,
});

for await (const { content } of completion) {
  process.stdout.write(content);
}

console.info(); // Write a new line for cosmetic purposes

3. 打印预测统计信息

你还可以打印预测元数据,例如用于生成的模型、生成的令牌数、首个令牌时间以及停止原因。

console.info("Model used:", completion.modelInfo.displayName);
console.info("Predicted tokens:", completion.stats.predictedTokensCount);
console.info("Time to first token (seconds):", completion.stats.timeToFirstTokenSec);
console.info("Stop reason:", completion.stats.stopReason);

示例:使用 LLM 模拟终端

这是一个如何使用 complete 方法来模拟终端的示例。

import { LMStudioClient } from "@lmstudio/sdk";
import { createInterface } from "node:readline/promises";

const rl = createInterface({ input: process.stdin, output: process.stdout });
const client = new LMStudioClient();
const model = await client.llm.model();
let history = "";

while (true) {
  const command = await rl.question("$ ");
  history += "$ " + command + "\n";

  const prediction = model.complete(history, { stopStrings: ["$"] });
  for await (const { content } of prediction) {
    process.stdout.write(content);
  }
  process.stdout.write("\n");

  const { content } = await prediction.result();
  history += content;
}