譯者 | 核子可樂
審校 | 重樓
Portkey AI網(wǎng)關允許應用開發(fā)者輕松整合生成式AI模型,在多個模型間無縫切換,并添加條件路由等功能且無需更改現(xiàn)有代碼。
開源AI框架的爆發(fā)式增長,為開發(fā)者在部署AI模型方面提供了前所未有的靈活性。Portkey是一款開源AI網(wǎng)關,能夠為多家AI服務商提供統(tǒng)一API以簡化大模型編排,顯著減少在應用程序中集成模型的障礙。除了大語言模型(LLM)之外,Portkey還支持視覺、音頻(文生音頻和語音轉(zhuǎn)文本)、圖像生成及其他多模態(tài)生成式AI模型。
項目概述——Portkey AI Gateway
Portkey AI網(wǎng)關屬于開源項目及托管服務,旨在簡化多模型集成體驗。它提供靈活的API,允許開發(fā)者在不同服務商的商業(yè)模型間輕松切換,包括OpenAI、Anthropic、Azure OpenAI、開源推理服務(如 Hugging Face、Groq和Fireworks AI)以及在Ollama上運行的本地模型。
作為統(tǒng)一的中間件,Portkey可實現(xiàn):
- 跨多服務商無縫切換AI模型;
- 高效速率限制與緩存,優(yōu)化API調(diào)用;
- 實現(xiàn)大規(guī)模AI驅(qū)動應用程序的可擴展性;
- 簡化多AI后端的請求管理。
Portkey特別適合強調(diào)靈活性與成本效益的AI驅(qū)動類應用程序,成為其與不同AI模型交互的優(yōu)選項。
Portkey解決了什么問題?
對于從事AI應用程序的開發(fā)者來說,多模型的集成和管理一直是個挑戰(zhàn)。傳統(tǒng)方法往往涉及以下幾個痛點:
- 特定大模型服務商鎖定;
- 難以對不同模型的性能進行比較;
- 缺乏內(nèi)置的負載均衡和故障轉(zhuǎn)移機制;
- 不同服務商間的API不一致。
目前的大模型集成環(huán)境往往支離破碎且效率低下,導致開發(fā)者面臨多重挑戰(zhàn):
- 管理多家服務商的身份驗證與API密鑰;
- 實現(xiàn)自定義負載均衡邏輯;
- 確保不同模型間的響應格式保持一致;
- 在保持性能的同時優(yōu)化成本。
這些限制尤其影響到開發(fā)人員、AI研究人員和構(gòu)建大模型驅(qū)動應用程序的企業(yè)。對組織來說,管理多家大模型服務商往往涉及極高的集成復雜性,且缺乏內(nèi)置優(yōu)化功能。
深入了解Portkey AI網(wǎng)關
Portkey AI網(wǎng)關是一套開源庫,可簡化Python開發(fā)者的大模型集成。它提供一個擁有統(tǒng)一API的強大框架,可實現(xiàn)與多家大模型服務商的無縫交互。
Portkey的核心功能,在于抽象出各大模型服務商間的差異。它允許開發(fā)者輕松在模型間切換,或?qū)崿F(xiàn)負載均衡等高級功能,且無需更改現(xiàn)有應用程序代碼。
該網(wǎng)關目前支持多家大模型服務商:
- Anthropic
- Azure OpenAI
- 谷歌
- Groq
- OpenAI
Portkey AI網(wǎng)關還擁有以下幾項獨特功能:
- 跨服務商的統(tǒng)一API;
- 內(nèi)置負載均衡;
- 輕松切換服務商;
- 一致的響應格式。
Portkey AI網(wǎng)關主要用例
- 多服務商集成:Portkey AI網(wǎng)關允許開發(fā)者輕松將多家大模型服務商集成至自己的應用程序當中,使得應用程序能夠:
a.使用OpenAI的GPT-4執(zhí)行復雜推理任務;
b.利用Groq的Llama3-70B-8192縮短響應時間;
c.實現(xiàn)回退機制以確保高可用性。
d.根據(jù)自定義權重在多家服務商間分配請求;
e.出現(xiàn)錯誤時,自動故障轉(zhuǎn)移至替代服務商;
f.將請求路由至最具成本效益的服務商以優(yōu)化成本。
g.為不同大模型服務商提供一致的API;
h.可在測試與比較模型間輕松切換;
i.簡化API密鑰與身份驗證管理。
- 負載均衡與優(yōu)化:這套庫允許開發(fā)者實現(xiàn)復雜的負載均衡策略,例如:
- 簡化開發(fā)流程:Portkey AI網(wǎng)關通過以下方式簡化了開發(fā)流程:
如何集成Portkey AI Gateway
下面我們通過代碼示例具體介紹Portkey的功能。
單服務商基礎用法:
from portkey_ai import Portkey
import os
client = Portkey(
provider="openai",
Authorization=os.environ["OPENAI_API_KEY"]
)
response = client.chat.completions.create(
messages=[{"role": "user", "content": "What's the meaning of life?"}],
model="gpt-4o-mini"
)
print(response.choices[0].message.content)
多服務商用法:
from portkey_ai import Portkey
import os
# OpenAI client
openai_client = Portkey(
provider="openai",
Authorization=os.environ["OPENAI_API_KEY"]
)
response = openai_client.chat.completions.create(
messages=[{"role": "user", "content": "What's the meaning of life?"}],
model="gpt-4o-mini"
)
print("From OpenAI:")
print(response.choices[0].message.content)
# Groq client
groq_client = Portkey(
provider="groq",
Authorization=os.environ["GROQ_API_KEY"]
)
response = groq_client.chat.completions.create(
messages=[{"role": "user", "content": "What's the meaning of life?"}],
model="llama3-70b-8192"
)
print("From Groq:")
print(response.choices[0].message.content)
實現(xiàn)負載均衡:
from portkey_ai import Portkey
import os
lb_config = {
"strategy": { "mode": "loadbalance" },
"targets": [{
"provider": 'openai',
"api_key": os.environ["OPENAI_API_KEY"],
"weight": 0.1
},{
"provider": 'groq',
"api_key": os.environ["GROQ_API_KEY"],
"weight": 0.9,
"override_params": {
"model": 'llama3-70b-8192'
},
}],
}
client = Portkey(config=lb_config)
response = client.chat.completions.create(
messages=[{"role": "user", "content": "What's the meaning of life?"}],
model="gpt-4o-mini"
)
print(response.choices[0].message.content)
實現(xiàn)條件路由:
from portkey_ai import Portkey
import os
openai_api_key = os.environ["OPENAI_API_KEY"]
groq_api_key = os.environ["GROQ_API_KEY"]
pk_config = {
"strategy": {
"mode": "conditional",
"conditions": [
{
"query": {"metadata.user_plan": {"$eq": "pro"}},
"then": "openai"
},
{
"query": {"metadata.user_plan": {"$eq": "basic"}},
"then": "groq"
}
],
"default": "groq"
},
"targets": [
{
"name": "openai",
"provider": "openai",
"api_key": openai_api_key
},
{
"name": "groq",
"provider": "groq",
"api_key": groq_api_key,
"override_params": {
"model": "llama3-70b-8192"
}
}
]
}
metadata = {
"user_plan": "pro"
}
client = Portkey(config=pk_config, metadata=metadata)
response = client.chat.completions.create(
messages=[{"role": "user", "content": "What's the meaning of life?"}]
)
print(response.choices[0].message.content)
上述示例使用元數(shù)據(jù)值user_plan以確定使用哪個模型進行查詢。這對通過免費增值計劃提供AI功能的SaaS服務商特別適用。
使用Portkey AI網(wǎng)關進行大模型集成
Portkey代表大模型集成的一項重大創(chuàng)新。它解決了管理多家服務商及優(yōu)級性能等方面的關鍵挑戰(zhàn)。通過提供一個能夠與多家服務商無縫交互的開源框架,該項目填補了當前AI開發(fā)流程中的重大空白。
該項目依托社區(qū)協(xié)作實現(xiàn)了蓬勃發(fā)展,并歡迎來自世界各地的開發(fā)者做出貢獻。憑借活躍的GitHub社區(qū)與開放討論空間,Portkey鼓勵開發(fā)者參與并擴展其功能。Portkey項目的透明開發(fā)方法與開源許可,也向個人及企業(yè)團隊使用敞開了懷抱。
Portkey還提供其AI網(wǎng)關的商業(yè)實現(xiàn),可為企業(yè)提供管理大模型集成的強大解決方案。其主要功能包括針對250多家服務商的統(tǒng)一API、負載均衡、條件路由、自動重試與回退、語義緩存及多模態(tài)支持等。
總結(jié)
Portkey AI網(wǎng)關將易用性、完備的功能與積極的社區(qū)支持融為一體,對于希望將多家大模型服務商集成至應用程序中的開發(fā)者來說極具價值。它能夠以托管服務的形式交付,起價為每月49美元,并提供免費層用于原型設計和測試。通過促進與各服務商的無縫交互,Portkey為更靈活、更強大的AI驅(qū)動應用程序奠定了重要基礎。
原文標題:Portkey: An open-source AI gateway for easy LLM orchestration,作者:Janakiram MSV