> ## Documentation Index
> Fetch the complete documentation index at: https://docs.coze.cn/llms.txt
> Use this file to discover all available pages before exploring further.

扣子罗盘 SDK 支持调用预定义的 Prompt 来与 AI 模型交互，文档介绍如何通过 Node.js SDK 实现这一功能。
## 场景介绍 {#8ffecc24}
通过扣子罗盘 Node.js SDK 调用预定义的 Prompt 模板时，可以选择以下两种调用方式：

* **非流式调用（nonStream）**：一次性获取完整的 AI 响应结果。
* **流式调用（stream）**：逐段获取 AI 的响应内容，类似实时对话的打字效果。

## 准备工作 {#7e29668c}

* 已集成 v0.0.9 及以上版本的扣子罗盘 Node.js SDK。
* 已创建 Prompt 模板并提交版本。操作步骤可参考[开发提示词](/cozeloop/create-prompt)。
* 获取以下配置信息：
   * **workspaceId**：扣子罗盘 Prompt 所在工作空间的 ID。你可以在 Prompt 详情页 URL 的 space 关键词之后获取工作空间 ID，例如 `https://loop.coze.cn/console/enterprise/personal/space/73917415734092****/pe/prompts/75115667262537****` 中，`73917415734092****`为工作空间 ID。
   * **token**：扣子罗盘访问密钥，应具备 `executePrompt` 权限。获取密钥及授权方式可参考[SDK 鉴权](/cozeloop/authentication-for-sdk)。

## 示例代码 {#07b6e6a1}
以下示例代码演示如何通过扣子罗盘 Node.js SDK 调用一个预定义的 Prompt 模板。调用模板时传入具体参数，然后获取 AI 模型对 "解释机器学习" 这个问题的简短回答，同时演示了同步获取完整结果和异步流式获取结果两种方式。
关于调用 Prompt 的更多使用示例，例如指定版本标识执行 Prompt、多模态 Prompt、传递 Prompt 变量、超时设置等，可参考 [Github](https://github.com/coze-dev/cozeloop-js/blob/main/examples/cozeloop-ai-node/src/prompt/ptaas.ts)。 
```TypeScript
import { ApiClient, PromptAsAService } from '@cozeloop/ai';

const apiClient = new ApiClient({
  token: 'pat_xxx',
});

const model = new PromptAsAService({
  // or set it as process.env.COZELOOP_WORKSPACE_ID,
  workspaceId: 'your_workspace_id',
  // prompt to invoke as a service
  prompt: {
    prompt_key: 'ptaas_demo',
    version: '0.0.1',
  },
  apiClient,
});

// invoke
const reply = await model.invoke({
  messages: [{ role: 'user', content: 'Keep the answer brief.' }],
  variables: {
    topic: 'artificial intelligence',
    user_request: 'explain what is machine learning',
  },
});

console.info(reply);

// stream
const replyStream = await model.stream({
  messages: [{ role: 'user', content: 'Keep the answer brief.' }],
  variables: {
    topic: 'artificial intelligence',
    user_request: 'explain what is machine learning',
  },
});

for await (const chunk of replyStream) {
 console.info(chunk);
}
```

