OpenAI Fetch Client
一个由 fetch 驱动的极简且有主见的 OpenAI 客户端。
不幸的是,官方的 openai-node 包在某些问题上修补了 fetch,且非常臃肿。
考虑使用 openai-fetch
的原因:
- 你想要一个快速且小巧的客户端,不会修补 fetch
- 支持所有拥有 fetch 原生支持的环境:Node 18+、浏览器、Deno、Cloudflare Workers 等
- 包大小:
openai-fetch
大约 ~14kb 而openai
大约 ~142kb - 你只需要聊天、完成和嵌入功能
如果你需要使用 openai-node
:
- 你的运行环境没有 fetch 原生支持
- 你的应用程序无法处理原生 ESM 代码
- 聊天、完成和嵌入之外的端点
- 不关心库大小或 fetch 修补
安装
npm install openai-fetch
这个包需要 node >= 18
或带有 fetch
支持的环境。
这个包导出了 ESM。如果你的项目使用 CommonJS,考虑切换到 ESM 或使用 dynamic import()
函数。
使用方法
import { OpenAIClient } from 'openai-fetch';
const client = new OpenAIClient({ apiKey: '<your api key>' });
apiKey
是可选项,如果存在的话,将从 process.env.OPENAI_API_KEY
读取。
API
API 非常接近 OpenAI,所以他们的 参考文档 一般可以使用。所有内容都强类型化,因此当 TypeScript 解析代码时,你会知道任何不同之处。
// 生成单个聊天完成
client.createChatCompletion(params: ChatParams): Promise<ChatResponse>;
// 通过 ReadableStream 流式传输单个完成
client.streamChatCompletion(params: ChatStreamParams): Promise<ChatStreamResponse>;
// 生成一个或多个完成
client.createCompletions(params: CompletionParams): Promise<CompletionResponse>;
// 通过 ReadableStream 流式传输单个完成
client.streamCompletion(params: CompletionStreamParams): Promise<CompletionStreamResponse>;
// 生成一个或多个嵌入
client.createEmbeddings(params: EmbeddingParams): Promise<EmbeddingResponse>
类型定义
类型定义可以通过 TSServer 获取,可以在这里找到:类型定义。
许可证
MIT © Dexa