GitHub - samestrin/llm-interface: 一个简单的 NPM 接口,用于无缝与 36 个大语言模型(LLM)提供商交互
GitHub - samestrin/llm-interface: 一个简单的 NPM 接口,用于无缝与 36 个大语言模型(LLM)提供商交互
LLM Interface 是一个 npm 模块,可简化您在 Node.js 应用程序中与各种大语言模型(LLM)提供商的交互。它提供统一的接口,简化了在不同提供商及其模型之间切换的过程。
LLM Interface 包广泛支持各种语言模型提供商,涵盖 36 个不同的提供商和数百个模型。这种广泛覆盖确保您能灵活选择最适合您特定需求的模型。
LLM Interface 支持:AI21 Studio、AiLAYER、AIMLAPI、Anyscale、Anthropic、Cloudflare AI、Cohere、Corcel、DeepInfra、DeepSeek、Fireworks AI、Forefront AI、FriendliAI、Google Gemini、GooseAI、Groq、Hugging Face Inference、HyperBee AI、Lamini、LLaMA.CPP、Mistral AI、Monster API、Neets.ai、Novita AI、NVIDIA AI、OctoAI、Ollama、OpenAI、Perplexity AI、Reka AI、Replicate、Shuttle AI、TheB.ai、Together AI、Voyage AI、Watsonx AI、Writer 和 Zhipu AI。
- 统一接口:
LLMInterface.sendMessage是一个单一且一致的接口,用于与 36 个不同的 LLM API(34 个托管的 LLM 提供商和 2 个本地 LLM 提供商)交互。 - 聊天补全、流式传输和嵌入:支持聊天补全、流式传输和嵌入(包含故障切换)。
- 动态模块加载:仅在调用 LLM 接口时自动加载并管理,最大限度地减少资源占用。
- 错误处理:强大的错误处理机制,确保可靠的 API 交互。
- 可扩展:易于扩展以支持更多需要的 LLM 提供商。
- 响应缓存:高效缓存 LLM 响应,以降低成本并提升性能。
- 优雅重试:自动重试失败的提示,并递增延迟以确保成功响应。
- JSON 输出:简单易用的原生 JSON 输出,支持 OpenAI、Fireworks AI、Google Gemini 等多个 LLM 提供商。
- JSON 修复:检测并修复无效的 JSON 响应。
v2.0.14
- 恢复模式(Beta):自动修复 HTTP 400 响应错误中的无效 JSON 对象。目前此功能仅适用于 Groq。
v2.0.11
- 新增 LLM 提供商:Anyscale、Bigmodel、Corcel、Deepseek、Hyperbee AI、Lamini、Neets AI、Novita AI、NVIDIA、Shuttle AI、TheB.AI 和 Together AI。
- 缓存:支持多种缓存:
simple-cache、flat-cache和cache-manager。flat-cache现在是一个可选的包。 - 日志:通过
loglevel改进了日志记录。 - 改进文档:改进了文档,添加了新示例、词汇表和提供商详情。更新了 API 密钥详情、模型别名分解和使用信息。
- 更多示例:LangChain.js RAG、Mixture-of-Agents (MoA) 以及更多。
- 移除依赖:不再需要
@anthropic-ai/sdk。
依赖项
该项目依赖多个 npm 包和 API。以下是主要依赖项:
axios:用于发出 HTTP 请求(用于各种 HTTP AI API)。@google/generative-ai:用于与 Google Gemini API 交互的 SDK。dotenv:用于管理环境变量。由测试用例使用。jsonrepair:用于修复无效的 JSON 响应。loglevel:一个最小化、轻量级的日志库,支持基于级别的日志记录和过滤。
以下可选包可以添加以扩展 LLMInterface 的缓存能力:
flat-cache:一个简单的基于 JSON 的缓存。cache-manager:一个可扩展的缓存模块,支持多种后端,包括 Redis、MongoDB、文件系统、Memcached、Sqlite 等。
安装
要安装 LLM Interface npm 模块,可以使用 npm:
npm install llm-interface
- 正在寻找 API 密钥?此文档提供了有用的链接。
- 详细的用法文档可在此处找到。
- 各种示例也可帮助您快速上手。
- 模型别名的分解说明可在此处找到。
- 嵌入模型别名的分解说明可在此处找到。
- 如果您还需要更多示例,可以查看测试用例以获取更多示例。
快速开始
首先导入 LLMInterface。您可以使用 CommonJS 的 require 语法:
const { LLMInterface } = require('llm-interface');
然后将您的提示发送给 LLM 提供商:
LLMInterface.setApiKey({ openai: process.env.OPENAI_API_KEY });
try {
const response = await LLMInterface.sendMessage(
'openai',
'Explain the importance of low latency LLMs.',
);
} catch (error) {
console.error(error);
}
如果您愿意,也可以在一行内传递提供商和 API 密钥,从而跳过 LLMInterface.setApiKey() 步骤。
const response = await LLMInterface.sendMessage(
['openai', process.env.OPENAI_API_KEY],
'Explain the importance of low latency LLMs.',
);
传递更复杂的消息对象也同样简单。规则相同:
const message = {
model: 'gpt-4o-mini',
messages: [
{ role: 'system', content: 'You are a helpful assistant.' },
{ role: 'user', content: 'Explain the importance of low latency LLMs.' },
],
};
try {
const response = await LLMInterface.sendMessage('openai', message, {
max_tokens: 150,
});
} catch (error) {
console.error(error);
}
LLMInterfaceSendMessage 和 LLMInterfaceStreamMessage 仍然可用,并将一直保留到版本 3。
测试
该项目包含每个 LLM 处理器的测试。要运行测试,请使用以下命令:
npm test
测试套件:跳过 9 个,通过 93 个,总共 102 个中通过 93 个
测试用例:跳过 86 个,通过 784 个,总共 870 个
快照:总数 0
时间:630.029 秒
注意:由于 API 问题,目前跳过了 NVIDIA 测试用例;由于性能问题,跳过了 Ollama 测试用例。
- 提供商 > 模型 > Azure AI
- 提供商 > 模型 > Grok
- 提供商 > 模型 > SiliconFlow
- 提供商 > 嵌入 > Nomic
- 特性 > 图像生成?
请提交您的建议!
贡献
欢迎对此项目做出贡献。请 fork 该仓库并提交 pull request,附带您的更改或改进。
许可证
该项目根据 MIT 许可证授权 - 有关详细信息,请参见 LICENSE 文件。