项目介绍:openai-fetch
openai-fetch 是一个精简且适用于 fetch 的 OpenAI 客户端。其设计旨在简化和优化在不同环境中调用 OpenAI 服务的过程。
为什么选择使用 openai-fetch?
-
性能卓越且体积小巧:openai-fetch 提供了快速且轻量级的客户端体验,并且不会对 fetch 进行任何修改。相比之下,官方的 openai 包在功能上较为庞大且对 fetch 的修改可能会引起问题。
-
广泛的环境支持:openai-fetch 能在多种环境中运行,包括支持原生 fetch 的 Node 18+、浏览器、Deno 和 Cloudflare Workers 等。
-
基本功能覆盖:openai-fetch 可以满足在聊天、文本补全、嵌入生成、内容审核以及文本转语音(TTS)方面的需求。
-
优秀的包体积:openai-fetch 的包大小仅为约 14kb,而 openai 包则约为 152kb,为开发者节省了更多资源。
何时选择使用官方的 openai 包?
- 需要在不支持原生 fetch 的运行环境中使用。
- 应用程序无法处理原生 ESM 代码。
- 超出了 openai-fetch 提供的功能范围,如需要更多端点。
- 不关心库的大小或 fetch 的修改问题。
安装方式
要安装 openai-fetch,您只需在命令行输入:
npm install openai-fetch
注意,该包要求 Node 版本不低于 18 或支持 fetch 的运行环境。此外,该包采用 ESM 输出,如果您的项目使用的是 CommonJS,您可以考虑切换到 ESM,或使用动态 import()
函数。
使用方法
首先需要在代码中导入 OpenAIClient,然后使用 API 密钥进行实例化:
import { OpenAIClient } from 'openai-fetch';
const client = new OpenAIClient({ apiKey: '<your api key>' });
如果 apiKey
未提供,该客户端会尝试从环境变量 process.env.OPENAI_API_KEY
中获取。
API 功能
openai-fetch 的 API 设计与 OpenAI 官方的 API 十分接近,开发者可以参考 OpenAI 的官方文档进行使用。以下是一些核心的 API 功能:
- 创建聊天补全:生成单次聊天补全。
- 流式聊天补全:通过 ReadableStream 流式传输单次补全。
- 生成多次补全:可以生成一个或多个文本补全。
- 流式生成补全:通过 ReadableStream 流式传输生成的补全。
- 生成嵌入:生成一个或多个嵌入。
- 审核内容:检测潜在有害内容。
- 文本转换语音:进行文本到语音的转换。
类型定义
类型定义通过 TSServer 提供,可以在项目的类型文件中找到。这帮助开发者在使用过程中,能实时通过 TypeScript 获取类型错误提示,从而减少错误。
开源许可
openai-fetch 采用 MIT 许可协议,由 Dexa 提供支持,适用于对项目进行修改和再分发。
总体来说,openai-fetch 是一款适合对接 OpenAI 轻量级功能需求的优秀工具,是偏向小巧和高效的开发者的理想选择。