@aparte/provider-openai-compat

中文文档
1.0.0发布于 2026/11/07MITTypeScriptES Module零依赖构建来源已验证近 30 天下载 6106

一个OpenAI兼容的聊天-完成任何/v1端点的适配器——OpenAI,Mistral,OpenRouter,Z.ai,Groq,LM Studio,Ollama和好友,通过预设或平面配置.

中文使用文档
文档目录3 节
  1. 上下文窗口
  2. 来源和引文
  3. 错误和结束原因

@ aparte/ provider-openai-compat (英语)

一个 每个 OpenAI 兼容的适配器 /chat/completions 端点 — OpenAI, Mistral, OpenRouter, Z.ai, Groq, 在一起, LM Studio, Ollama (英语:/v1朋友都这么说 电线格式,所以他们共享一个单, 零依赖性 格式适配器。 供应商只有差异 通过数据(基准 URL、 认证头、 品牌),通过配置或从中选择 presets。 。 。 .

npm install @aparte/provider-openai-compat @aparte/core

@aparte/core 是唯一一个 同伴依赖;这个适配器本身没有.

import { createOpenAICompatProvider, presets } from '@aparte/provider-openai-compat';
import { aparteGlobalConfig } from '@aparte/core';

aparteGlobalConfig.registerAIProvider(createOpenAICompatProvider(presets.OPENROUTER));
// …or any compat endpoint, no preset needed:
aparteGlobalConfig.registerAIProvider(createOpenAICompatProvider({ id: 'groq', baseURL: 'https://api.groq.com/openai/v1' }));

@aparte/core 是一个 同伴依赖. 适用于OpenAI-compat家族以外的供应商 (Anthropic,双子座, @aparte/provider-ai-sdk 换句话说.

也在服务器上工作. 这里什么也碰不到DOM,核心解决了它的DOM无 在节点的导出条件下输入 —— 这样您就可以从后端重用这个适配器, a 电子主进程或SSR通过,而不是重写一个. 对 buildRequest 编号 : parseStream 与你自己 fetch 当您已经拥有此请求时( 您的) AbortSignal, (中文(简体) ), 或把它交给 createAparteChatHandler 从核心.

部分 独立 单相机 仅限无害环境管理. 见 供应商 用于全部使用的文档中的指南.

上下文窗口

fetchModels 填充每个模型的 contextWindow,这是标志度量仪和 紧固度量相. 它读取了第一个正整数 context_length (开放路透,共同), max_model_len (vLLM), (英语), context_window (希腊语)和 max_context_length (伊斯兰教) GET /models 输入。 本地服务器也需要 说哪一个,因为他们大半不开窗 /models数字 :

createOpenAICompatProvider({ id: 'my-box', baseURL: 'http://localhost:8080/v1', isLocal: true, server: 'llamacpp' });

与 server 设置中,一个额外的请求会到端点的出处( /v1 路径 (被剥去) 有效 窗口胜过训练后的最大值,因为那是 服务器截图 :

预设server读取页:1
LMSTUDIOlmstudio/api/v1/models: 装入的型号 config.context_length一个已卸载的型号没有
OLLAMAollama/api/ps: 加载跑者 context_length未加载的模型获得无
LLAMACPPllamacpp/props数字 : default_generation_settings.n_ctx每个插槽,服务模式的一个值
VLLMvllmmax_model_len 打开 /v1/models无额外请求

一个被卸载的模型没有窗口,而只得到它训练的极限:这个数字不是什么 服务器将运行。 失败的探测器( CORS, 旧服务器, 关闭端口) 离开 没有窗口的模型并记录一个警告; 它永远不会失败模型列表.

您声明的模型 models 带有 contextWindow 胜过读取的任何东西 服务器.

LLAMACPP (单位:千美元)http://localhost:8080/v1和 VLLM (单位:千美元)http://localhost:8000/v1)是预设 像其他人一样:本地的,密钥可选.

来源和引文

一份引用其来源的回信会带他们来: 提供者以一个结束转弯 sources 事件之前 done在答复中列出资料来源,并列出 每一个引用的芯片 。 没有要配置的东西——一个不会发出引用的结束点 溪流的原样.

import { createOpenAICompatProvider, presets } from '@aparte/provider-openai-compat';
import { aparteGlobalConfig } from '@aparte/core';

// Perplexity's Sonar models search the web and cite what they read.
aparteGlobalConfig.registerAIProvider(createOpenAICompatProvider(presets.PERPLEXITY));
// OpenRouter's `:online` models and the OpenAI search models cite through annotations.
aparteGlobalConfig.registerAIProvider(createOpenAICompatProvider(presets.OPENROUTER));

两个形状读作:

  • url_citation 说明 (开放AI,开放路透) delta.annotations,或打开 message.annotations 用于流出整个消息形状的服务器。 他们携带 他们支持的段落被抵消,成为引用的 start 编号 : end; 一个 将文字的末尾带入其中.
  • 困惑的 citations 财务报告和审定财务报表 search_results在块的根部,没有 抵消: 文本带 [1], (中文(简体) ), [2],因此文本中发现的每个标记成为 引用(marker: true芯片在那个来源上占据了标记的位置 一个标记 名称没有来源作为文本.

引用的同一页有1个来源(由URL复制),1个来源有两个来源 光泡显示为“+1”。 一个 URL 作为终点传递 寄出: 核心的渲染器只链接到它的消毒器允许的图案, 所以 javascript: 網址 显示为文本,而不是链接.

这个 PERPLEXITY 预设声明其模型( q)sonar, (中文(简体) ), sonar-pro, (中文(简体) ), sonar-reasoning-pro, (中文(简体) ), sonar-deep-research因为困惑没有 GET /models 询问;通过自己的 models 以更改列表.

非流化答案( :stream: false)的读取方式相同 parseSources: 当 引用任何东西,它解决了流 流的答案是,它的文本,它的源,它的 结束——通过直接运输,并通过你的后端.

错误和结束原因

响应的服务器 200 然后流出 data: {"error": {...}} (LM Studio on a) (英语) 上下文溢出、 OpenAI 和 vLLM 中游) 以一个 error 包含的事件 它的信息, 不是一个空的完整回复 。 最后一个 finish_reason 流量 编辑 done 事件为 finishReason (单位:千美元)stop, (中文(简体) ), length, (中文(简体) ), tool-calls, (中文(简体) ), content-filter, (中文(简体) ), other) (中文(简体) ).

版本与发布记录

@aparte/provider-openai-compat 共发布 66 个版本,首次发布于 2026/07/24;过去 12 个月发布了 66 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
1.0.0latest2026/11/07今天
0.32.12026/11/025 天前
0.32.02026/11/025 天前
0.31.02026/11/026 天前
0.30.12026/11/016 天前
0.30.02026/11/016 天前

其他发布通道:alpha → 0.17.0。

关于 @aparte/provider-openai-compat 的常见问题

@aparte/provider-openai-compat 是什么?

一个OpenAI兼容的聊天-完成任何/v1端点的适配器——OpenAI,Mistral,OpenRouter,Z.ai,Groq,LM Studio,Ollama和好友,通过预设或平面配置.

如何安装 @aparte/provider-openai-compat?

在项目目录运行 npm install @aparte/provider-openai-compat,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:@aparte/core(>=1.0.0 <2.0.0)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。

@aparte/provider-openai-compat 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@aparte/provider-openai-compat 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@aparte/provider-openai-compat 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >=18。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@aparte/provider-openai-compat 可以商用吗?

@aparte/provider-openai-compat 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@aparte/provider-openai-compat 的下载量有多少?

根据 npm 官方下载统计,@aparte/provider-openai-compat 在 2026/10/06 – 2026/11/04 这 30 天内被下载 6,106 次,日均约 204 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@aparte/provider-openai-compat 还在维护吗?

最新版本 1.0.0 发布于 2026/11/07(今天);至今共发布 66 个版本,其中过去 12 个月发布了 66 个;首次发布于 2026/07/24。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。