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