Portkey
Portkey 是 AI 應用程式的控制面板。憑藉其熱門的 AI 閘道和可觀測性套件,數百個團隊交付可靠、具成本效益且快速的應用程式。
Langchain 的 LLMOps
Portkey 為 Langchain 帶來生產就緒性。透過 Portkey,您可以
- 透過統一的 API 連接到 150 多個模型,
- 檢視所有請求的 42 多個指標與日誌,
- 啟用語義快取以減少延遲與成本,
- 為失敗的請求實作自動重試與回退,
- 為請求新增自訂標籤,以實現更佳的追蹤與分析,以及更多功能。
快速入門 - Portkey 與 Langchain
由於 Portkey 完全相容於 OpenAI 簽章,您可以透過 ChatOpenAI
介面連接到 Portkey AI 閘道。
- 將
base_url
設定為PORTKEY_GATEWAY_URL
- 新增
default_headers
以使用createHeaders
輔助方法來取用 Portkey 所需的標頭。
若要開始使用,請在此註冊以取得您的 Portkey API 金鑰。(按一下左下角的個人資料圖示,然後按一下「複製 API 金鑰」),或在您自己的環境中部署開源 AI 閘道。
接下來,安裝 Portkey SDK
pip install -U portkey_ai
我們現在可以透過更新 Langchain 中的 ChatOpenAI
模型來連接到 Portkey AI 閘道
from langchain_openai import ChatOpenAI
from portkey_ai import createHeaders, PORTKEY_GATEWAY_URL
PORTKEY_API_KEY = "..." # Not needed when hosting your own gateway
PROVIDER_API_KEY = "..." # Add the API key of the AI provider being used
portkey_headers = createHeaders(api_key=PORTKEY_API_KEY,provider="openai")
llm = ChatOpenAI(api_key=PROVIDER_API_KEY, base_url=PORTKEY_GATEWAY_URL, default_headers=portkey_headers)
llm.invoke("What is the meaning of life, universe and everything?")
請求會透過您的 Portkey AI 閘道路由到指定的 provider
。Portkey 也會開始記錄您帳戶中的所有請求,這使得偵錯變得極其簡單。
透過 AI 閘道使用 150 多個模型
當您能夠使用上述程式碼片段連接到 AI 閘道支援的 20 多個供應商的 150 多個模型時,AI 閘道的強大功能就體現出來了。
讓我們修改上面的程式碼,以呼叫 Anthropic 的 claude-3-opus-20240229
模型。
Portkey 支援 虛擬金鑰,這是一種在安全保管庫中儲存和管理 API 金鑰的簡便方法。讓我們嘗試使用虛擬金鑰來進行 LLM 呼叫。您可以導覽至 Portkey 中的「虛擬金鑰」標籤,並為 Anthropic 建立一個新金鑰。
virtual_key
參數設定了所用 AI 供應商的身份驗證和供應商。在我們的案例中,我們使用的是 Anthropic 虛擬金鑰。
請注意,
api_key
可以留空,因為不會使用該身份驗證。
from langchain_openai import ChatOpenAI
from portkey_ai import createHeaders, PORTKEY_GATEWAY_URL
PORTKEY_API_KEY = "..."
VIRTUAL_KEY = "..." # Anthropic's virtual key we copied above
portkey_headers = createHeaders(api_key=PORTKEY_API_KEY,virtual_key=VIRTUAL_KEY)
llm = ChatOpenAI(api_key="X", base_url=PORTKEY_GATEWAY_URL, default_headers=portkey_headers, model="claude-3-opus-20240229")
llm.invoke("What is the meaning of life, universe and everything?")
Portkey AI 閘道將驗證對 Anthropic 的 API 請求,並以 OpenAI 格式取回回應供您使用。
AI 閘道擴展了 Langchain 的 ChatOpenAI
類別,使其成為呼叫任何供應商和任何模型的單一介面。
進階路由 - 負載平衡、回退、重試
Portkey AI 閘道透過優先配置的方法,為 Langchain 帶來了負載平衡、回退、實驗和 Canary 測試等功能。
讓我們以一個範例來說明,我們可能希望在 gpt-4
和 claude-opus
之間分配 50:50 的流量,以測試這兩個大型模型。此閘道配置如下所示
config = {
"strategy": {
"mode": "loadbalance"
},
"targets": [{
"virtual_key": "openai-25654", # OpenAI's virtual key
"override_params": {"model": "gpt4"},
"weight": 0.5
}, {
"virtual_key": "anthropic-25654", # Anthropic's virtual key
"override_params": {"model": "claude-3-opus-20240229"},
"weight": 0.5
}]
}
然後,我們可以在從 langchain 發出的請求中使用此配置。
portkey_headers = createHeaders(
api_key=PORTKEY_API_KEY,
config=config
)
llm = ChatOpenAI(api_key="X", base_url=PORTKEY_GATEWAY_URL, default_headers=portkey_headers)
llm.invoke("What is the meaning of life, universe and everything?")
當調用 LLM 時,Portkey 將按照定義權重的比例將請求分發到 gpt-4
和 claude-3-opus-20240229
。
您可以在此處找到更多配置範例。
追蹤鏈與代理程式
Portkey 的 Langchain 整合讓您可以完全掌握代理程式的執行情況。讓我們以一個熱門的代理工作流程為例。
我們只需要修改 ChatOpenAI
類別以使用如上的 AI 閘道即可。
from langchain import hub
from langchain.agents import AgentExecutor, create_openai_tools_agent
from langchain_openai import ChatOpenAI
from langchain_core.tools import tool
from portkey_ai import PORTKEY_GATEWAY_URL, createHeaders
prompt = hub.pull("hwchase17/openai-tools-agent")
portkey_headers = createHeaders(
api_key=PORTKEY_API_KEY,
virtual_key=OPENAI_VIRTUAL_KEY,
trace_id="uuid-uuid-uuid-uuid"
)
@tool
def multiply(first_int: int, second_int: int) -> int:
"""Multiply two integers together."""
return first_int * second_int
@tool
def exponentiate(base: int, exponent: int) -> int:
"Exponentiate the base to the exponent power."
return base**exponent
tools = [multiply, exponentiate]
model = ChatOpenAI(api_key="X", base_url=PORTKEY_GATEWAY_URL, default_headers=portkey_headers, temperature=0)
# Construct the OpenAI Tools agent
agent = create_openai_tools_agent(model, tools, prompt)
# Create an agent executor by passing in the agent and tools
agent_executor = AgentExecutor(agent=agent, tools=tools, verbose=True)
agent_executor.invoke({
"input": "Take 3 to the fifth power and multiply that by thirty six, then square the result"
})
您可以在 Portkey 儀表板上看到請求的日誌以及追蹤 ID:
更多文檔可在此處取得
- 可觀測性 - https://portkey.ai/docs/product/observability-modern-monitoring-for-llms
- AI 閘道 - https://portkey.ai/docs/product/ai-gateway-streamline-llm-integrations
- Prompt Library - https://portkey.ai/docs/product/prompt-library
您可以在此處查看我們熱門的開源 AI 閘道 - https://github.com/portkey-ai/gateway
如需每個功能的詳細資訊以及如何使用它,請參閱 Portkey 文檔。如果您有任何問題或需要進一步協助,請在 Twitter 上聯繫我們。 或我們的支援電子郵件。