如何同时调用OpenAI、Anthropic等多个大模型?2026年Abso库使用推荐
AIAI Summary (BLUF)
Abso是一款轻量级、兼容OpenAI的JavaScript库,为调用多个大模型提供商(如OpenAI、Anthropic、Groq、Ollama等)提供统一接口,并具备完整类型安全性。
Introduction
Abso 提供了一个统一的接口来调用多种大语言模型(LLM),并保持完整的类型安全性。它是 OpenAI SDK 的直接替换方案,让您能以最少的代码变更在不同提供商之间切换。
Features
- Smart routing (soon) (智能路由,即将推出)
Provider Support
| Provider | Chat | Streaming | Tool Calling | Embeddings | Tokenizer | Cost Calculation |
|---|---|---|---|---|---|---|
| OpenAI | ✅ | ✅ | ✅ | ✅ | 🚧 | 🚧 |
| Anthropic | ✅ | ✅ | ✅ | ❌ | 🚧 | 🚧 |
| xAI Grok | ✅ | ✅ | ✅ | ❌ | 🚧 | 🚧 |
| Mistral | ✅ | ✅ | ✅ | ❌ | 🚧 | 🚧 |
| Groq | ✅ | ✅ | ✅ | ❌ | ❌ | 🚧 |
| Ollama | ✅ | ✅ | ✅ | ❌ | ❌ | 🚧 |
| OpenRouter | ✅ | ✅ | ✅ | ❌ | ❌ | 🚧 |
| Voyage | ❌ | ❌ | ❌ | ✅ | ❌ | ❌ |
| Azure | 🚧 | 🚧 | 🚧 | 🚧 | ❌ | 🚧 |
| Bedrock | 🚧 | 🚧 | 🚧 | 🚧 | ❌ | 🚧 |
| Gemini | ✅ | ✅ | ✅ | ❌ | 🚧 | ❌ |
| DeepSeek | ✅ | ✅ | ✅ | ❌ | 🚧 | ❌ |
| Perplexity | ✅ | ✅ | ❌ | ❌ | 🚧 | ❌ |
Installation
Install the package via npm:
npm install abso-ai
通过 npm 安装包。
Usage
import { abso } from "abso-ai"
const result = await abso.chat.completions.create({
messages: [{ role: "user", content: "Say this is a test" }],
model: "gpt-4o",
})
console.log(result.choices[0].message.content)
最快速的方式是导入预配置的 abso 实例,然后发起一次聊天补全调用。
Manually Selecting a Provider
const result = await abso.chat.completions.create({
messages: [{ role: "user", content: "Say this is a test" }],
model: "openai/gpt-4o",
provider: "openrouter",
})
console.log(result.choices[0].message.content)
Abso 会自动为给定模型推断正确的提供商,但您也可以通过请求中的 provider 字段手动指定。
Streaming
const stream = await abso.chat.completions.create({
messages: [{ role: "user", content: "Say this is a test" }],
model: "gpt-4o",
stream: true,
})
for await (const chunk of stream) {
console.log(chunk)
}
// Helper to get the final result
const fullResult = await stream.finalChatCompletion()
console.log(fullResult)
流式响应与相同 API 无缝集成。使用 stream: true 选项,然后迭代数据块。使用 finalChatCompletion() 辅助方法获取完整响应。
Embeddings
const embeddings = await abso.embeddings.create({
model: "text-embedding-3-small",
input: ["A cat was playing with a ball on the floor"],
})
console.log(embeddings.data[0].embedding)
通过简单调用为文本输入生成嵌入向量。
Tokenizers (Coming Soon)
const tokens = await abso.chat.tokenize({
messages: [{ role: "user", content: "Hello, world!" }],
model: "gpt-4o",
})
console.log(`${tokens.count} tokens`)
分词器 API 即将推出,可让您统计任意支持模型的 token 数量。
Custom Providers
import { Abso } from "abso-ai"
const abso = new Abso({
openai: { apiKey: "your-openai-key" },
anthropic: { apiKey: "your-anthropic-key" },
// add other providers as needed
})
const result = await abso.chat.completions.create({
model: "gpt-4o",
messages: [{ role: "user", content: "Hello!" }],
})
console.log(result.choices[0].message.content)
您可以在实例化 Abso 时通过传递配置对象来配置内置提供商。另外,也可以通过向构造函数传递自定义 providers 数组来更改加载的提供商。
Observability
Abso 可与 Lunary 集成,让您立即获得 LLM 使用的可观测性。注册 Lunary 获取公钥,然后设置 LUNARY_PUBLIC_KEY 环境变量即可启用监控。
Contributing
欢迎贡献!更多详情请参阅我们的贡献指南。
Roadmap
- More providers – 更多提供商支持
- Built-in caching – 内置缓存
- Tokenizers – 分词器
- Cost calculation – 成本计算
- Smart routing – 智能路由
路线图:更多提供商支持、内置缓存、分词器、成本计算、智能路由。
常见问题(FAQ)
Abso支持哪些 LLM 提供商?如何在不同提供商间切换?
Abso 支持 OpenAI、Anthropic、Groq、Ollama 等十余个提供商,自动根据模型推断提供商。也可在请求中通过 provider 字段手动指定,例如 provider: 'openrouter'。
Abso 是否支持流式输出?怎么用?
支持。将 stream 参数设为 true,即可迭代流式数据块。还可以调用 finalChatCompletion() 方法获取完整的最终响应结果。
Abso 的嵌入功能怎么调用?
版权与免责声明:本文仅用于信息分享与交流,不构成任何形式的法律、投资、医疗或其他专业建议,也不构成对任何结果的承诺或保证。
文中提及的商标、品牌、Logo、产品名称及相关图片/素材,其权利归各自合法权利人所有。本站内容可能基于公开资料整理,亦可能使用 AI 辅助生成或润色;我们尽力确保准确与合规,但不保证完整性、时效性与适用性,请读者自行甄别并以官方信息为准。
若本文内容或素材涉嫌侵权、隐私不当或存在错误,请相关权利人/当事人联系本站,我们将及时核实并采取删除、修正或下架等处理措施。也请勿在评论或联系信息中提交身份证号、手机号、住址等个人敏感信息。



