Skip to content

Latest commit

 

History

History
220 lines (172 loc) · 10.2 KB

README.cn.md

File metadata and controls

220 lines (172 loc) · 10.2 KB

English | 中文 | 日本語

AI Gateway

通过一个快速友好的API链接超过100个大型语言模型。

License Discord Twitter npm version



Portkey的AI网关 是您的应用程序与托管的大型语言模型(LLMs)之间的接口。它通过统一的API简化了对OpenAI、Anthropic、Mistral、LLama2、Anyscale、Google Gemini等的API请求。

✅ 极速响应(快9.9倍),占用空间极小(安装后约45kb)
✅ 跨多个模型、提供商和密钥进行负载均衡
✅ 通过备用方案确保应用程序的稳定性
✅ 默认提供具有指数级备用方案的自动重试
✅ 根据需要插入中间件
✅ 经过超过1000亿令牌的实战测试

入门指南

安装

如果您熟悉Node.js和npx,您可以在本地运行您的私有AI网关。(其它部署选项)

npx @portkey-ai/gateway

您的AI网关现在运行在 http://localhost:8787 🚀

使用方法

让我们尝试通过AI网关向OpenAI发起一个聊天请求:

bashCopy codecurl '127.0.0.1:8787/v1/chat/completions' \
  -H 'x-portkey-provider: openai' \
  -H "Authorization: Bearer $OPENAI_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"messages": [{"role": "user","content": "Say this is test."}], "max_tokens": 20, "model": "gpt-4"}'

支持的SDK完整列表


支持的AI厂商

AI厂商 支持 流式 支持的端点
OpenAI /completions, /chat/completions,/embeddings, /assistants, /threads, /runs
Azure OpenAI /completions, /chat/completions,/embeddings
Anyscale /chat/completions
Google Gemini & Palm /generateMessage, /generateText, /embedText
Anthropic /messages, /complete
Cohere /generate, /embed, /rerank
Together AI /chat/completions, /completions, /inference
Perplexity /chat/completions
Mistral /chat/completions, /embeddings

在这里查看支持的100多个模型的完整列表


特点

使用OpenAI的API签名连接100多个LLM。AI网关处理请求、响应和错误转换,因此您无需对代码进行任何更改。您可以使用OpenAI SDK本身连接到任何支持的LLM。

              

           

       

不要让失败阻止您。备用功能允许您按优先顺序指定语言模型API(LLMs)列表。如果主LLM无法响应或遇到错误,Portkey将自动备用到列表中的下一个LLM,确保您的应用程序的稳定性和可靠性。

临时问题不应该意味着手动重新运行。AI网关可以自动重试失败的请求多达5次。我们采用指数退避策略,间隔重试尝试以防止网络过载。

根据自定义权重在多个API密钥或提供商之间有效分配负载。这确保了您的生成式AI应用程序的高可用性和最佳性能,防止任何单一LLM成为性能瓶颈。


配置 AI 网关

AI 网关支持配置,以实现如后备(fallbacks)负载均衡(load balancing)、**重试(retries)**等多样化的路由策略。

您可以在通过 x-portkey-config 头部进行 OpenAI 调用时使用这些配置

// 使用 OpenAI JS SDK
const client = new OpenAI({
  baseURL: "http://127.0.0.1:8787", // 网关 URL
  defaultHeaders: {
    'x-portkey-config': {.. 你的配置在这里 ..}, 
  }
});

这里有一个示例配置,在回退到 Gemini Pro 之前会重试 OpenAI 请求 5 次
{
  "retry": { "count": 5 },
  "strategy": { "mode": "fallback" },
  "targets": [{
      "provider": "openai",
      "api_key": "sk-***"
    },{
      "provider": "google",
      "api_key": "gt5***",
      "override_params": {"model": "gemini-pro"}
  }]
}
此配置将使得在 2 个 OpenAI 密钥之间实现等量的负载均衡
{
  "strategy": { "mode": "loadbalance" },
  "targets": [{
      "provider": "openai",
      "api_key": "sk-***",
      "weight": "0.5"
    },{
      "provider": "openai",
      "api_key": "sk-***",
      "weight": "0.5"
    }
  ]
}
了解更多关于配置对象。

支持的SDKs

语言 支持的SDKs
Node.js / JS / TS Portkey SDK
OpenAI SDK
LangchainJS
LlamaIndex.TS
Python Portkey SDK
OpenAI SDK
Langchain
LlamaIndex
Go go-openai
Java openai-java
Rust async-openai
Ruby ruby-openai

部署 AI 网关

查看文档了解如何在本地安装 AI 网关或者在流行的平台上部署它。


路线图

  1. 支持更多的提供商。如果缺少某个提供商或 LLM 平台,请提出功能请求
  2. 增强的负载均衡功能,以优化不同模型和提供商之间的资源使用。
  3. 更加健壮的后备和重试策略,以进一步提高请求的可靠性。
  4. 增加统一 API 签名的可定制性,以满足更多样化的使用案例。

💬 在这里参与路线图讨论。


贡献

最简单的贡献方式是选择任何带有 good first issue 标签的问题 💪。在这里阅读贡献指南。

发现 Bug?在这里提交 | 有功能请求?在这里提交


社区

加入我们不断增长的全球社区,寻求帮助,分享想法,讨论 AI。

Rubeus Social Share (4)