Skip to main content

Portkey (传送门)

LLMOps for Langchain (Langchain的LLMOps)

Portkey为Langchain带来了生产就绪性。使用Portkey,您可以:

  • 查看所有请求的详细指标和日志
  • 启用语义缓存以减少延迟和成本,
  • 对失败的请求实现自动重试和回退
  • 为请求添加自定义标签以进行更好的跟踪和分析,以及更多功能

使用Portkey与Langchain

使用Portkey非常简单,只需选择您想要的Portkey功能,通过headers=Portkey.Config启用它们,并在您的LLM调用中传递它们。

首先,通过在此处注册获取您的Portkey API密钥。(点击左上角的个人资料图标,然后点击“复制API密钥”)

对于OpenAI,一个简单的与日志功能集成的示例如下:

from langchain.llms import OpenAI
from langchain.utilities import Portkey

# 添加来自您的帐户的Portkey API密钥
headers = Portkey.Config(
api_key = "<PORTKEY_API_KEY>"
)

llm = OpenAI(temperature=0.9, headers=headers)
llm.predict("What would be a good company name for a company that makes colorful socks?")

您的日志将在您的Portkey仪表板上捕获。

一个常见的Portkey X Langchain用例是追踪链或代理,并查看所有源自该请求的LLM调用。

追踪链和代理

from langchain.agents import AgentType, initialize_agent, load_tools  
from langchain.llms import OpenAI
from langchain.utilities import Portkey

# 添加来自您的帐户的Portkey API密钥
headers = Portkey.Config(
api_key = "<PORTKEY_API_KEY>",
trace_id = "fef659"
)

llm = OpenAI(temperature=0, headers=headers)
tools = load_tools(["serpapi", "llm-math"], llm=llm)
agent = initialize_agent(tools, llm, agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION, verbose=True)

# 让我们来测试一下!
agent.run("What was the high temperature in SF yesterday in Fahrenheit? What is that number raised to the .023 power?")

您可以在Portkey仪表板上看到请求的日志以及追踪ID:

高级功能

  1. 日志记录: 通过将请求发送到Portkey自动记录所有LLM请求。每个请求日志包含时间戳模型名称总成本请求时间请求JSON响应JSON和其他Portkey功能。
  2. 追踪: 可以将追踪ID与每个请求一起传递,并在Portkey仪表板上查看日志。您还可以为每个请求设置一个不同的追踪ID。您还可以将用户反馈附加到追踪ID上。
  3. 缓存: 从缓存中响应以前提供的客户查询,而不是再次将其发送到OpenAI。匹配完全相同的字符串或语义上相似的字符串。缓存可以将成本和延迟降低20倍。
  4. 重试: 自动重新处理任何不成功的API请求最多5次。使用指数退避策略,将重试尝试间隔开,以防止网络过载。
  5. 标记: 使用预定义标签详细跟踪和审计每个用户交互。
功能配置键值(类型)必填/可选
API密钥api_keyAPI密钥(string✅ 必填
追踪请求trace_id自定义string❔ 可选
自动重试retry_countinteger [1,2,3,4,5]❔ 可选
启用缓存cachesimplesemantic❔ 可选
缓存强制刷新cache_force_refreshTrue❔ 可选
设置缓存过期时间cache_ageinteger(以秒为单位)❔ 可选
添加用户userstring❔ 可选
添加组织organisationstring❔ 可选
添加环境environmentstring❔ 可选
添加提示(版本/ID/字符串)promptstring❔ 可选

启用所有Portkey功能:

headers = Portkey.Config(

# 必填项
api_key="<PORTKEY_API_KEY>",

# 缓存选项
cache="semantic",
cache_force_refresh="True",
cache_age=1729,

# 高级选项
retry_count=5,
trace_id="langchain_agent",

# 元数据
environment="production",
user="john",
organisation="acme",
prompt="Frost"

)

有关每个功能的详细信息以及如何使用它,请参考Portkey文档。如果您有任何问题或需要进一步的帮助,请在Twitter上联系我们