Portkey
Portkey 是 AI 应用的控制面板。凭借其流行的 AI 网关和可观测性套件,成百上千的团队交付了 可靠、成本高效 且 快速 的应用。
Langchain的LLMOps
Portkey 为 Langchain 带来了生产就绪的能力。通过 Portkey,您可以
- 通过统一的API连接到150多种模型,
- 查看 42+指标与日志适用于所有请求,
- 启用语义缓存以减少延迟和成本,
- 实现自动化重试与回退对于失败的请求,
- 添加自定义标签以更好地跟踪和分析请求,并更多.
快速入门 - Portkey 和 Langchain
由于Portkey完全兼容OpenAI签名,您可以通过ChatOpenAI接口连接到Portkey AI网关。
- 将
base_url设置为PORTKEY_GATEWAY_URL - 使用
createHeaders辅助方法将default_headers添加到 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 网关的强大之处在于,您能够使用上述代码片段,通过 AI 网关连接到 20 多个提供商支持的 150 多个模型。
让我们修改上面的代码,调用Anthropic的claude-3-opus-20240229模型。
Portkey 支持 虚拟密钥,这是一种在安全保管库中存储和管理 API 密钥的简便方法。让我们尝试使用虚拟密钥来进行 LLM 调用。您可以导航到 Portkey 中的虚拟密钥选项卡,并为 Anthropic 创建一个新密钥。
virtual_key 参数用于设置所使用的AI提供者的身份验证和提供者。在我们的例子中,我们使用的是Anthropic虚拟密钥。
Notice that the
api_keycan be left blank as that authentication won't be used.
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 带来了负载均衡、回退、实验和金丝雀测试等功能。
让我们举一个例子,假设我们希望以50:50的比例在gpt-4和claude-opus之间分流流量,以此来测试这两个大型模型。网关的配置如下所示:
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
- 提示库 - https://portkey.ai/docs/product/prompt-library
您可以在这里查看我们流行的开源AI网关 - https://github.com/portkey-ai/gateway
有关每个功能的详细信息以及如何使用它,请参阅Portkey文档。如果您有任何问题或需要进一步帮助,请在Twitter上联系我们或通过我们的支持邮箱联系我们。