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 带来了负载均衡、回退、实验和金丝雀测试等功能。
让我们以一个示例为例,我们可能希望在 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 上联系我们 或发送电子邮件至我们的 支持邮箱。