PromptLayer
PromptLayer 是一个用于提示工程的平台。它还有助于LLM的可观察性,以可视化请求、版本提示和跟踪使用情况。
虽然
PromptLayer
确实有直接与 LangChain 集成的 LLMs(例如PromptLayerOpenAI
),但使用回调是将PromptLayer
与 LangChain 集成的推荐方式。
在本指南中,我们将介绍如何设置PromptLayerCallbackHandler
。
查看 PromptLayer 文档 获取更多信息。
安装与设置
%pip install --upgrade --quiet langchain-community promptlayer --upgrade
获取API凭证
如果您没有PromptLayer账户,请在promptlayer.com上创建一个。然后通过点击导航栏中的设置齿轮获取API密钥,并将其设置为名为PROMPTLAYER_API_KEY
的环境变量。
用法
开始使用PromptLayerCallbackHandler
相当简单,它接受两个可选参数:
pl_tags
- 一个可选的字符串列表,将在PromptLayer上作为标签进行跟踪。pl_id_callback
- 一个可选的函数,它将接受promptlayer_request_id
作为参数。此ID可以与PromptLayer的所有跟踪功能一起使用,以跟踪元数据、分数和提示使用情况。
简单的OpenAI示例
在这个简单的例子中,我们使用PromptLayerCallbackHandler
与ChatOpenAI
。我们添加了一个名为chatopenai
的PromptLayer标签
import promptlayer # Don't forget this 🍰
from langchain_community.callbacks.promptlayer_callback import (
PromptLayerCallbackHandler,
)
API Reference:PromptLayerCallbackHandler
from langchain_core.messages import HumanMessage
from langchain_openai import ChatOpenAI
chat_llm = ChatOpenAI(
temperature=0,
callbacks=[PromptLayerCallbackHandler(pl_tags=["chatopenai"])],
)
llm_results = chat_llm.invoke(
[
HumanMessage(content="What comes after 1,2,3 ?"),
HumanMessage(content="Tell me another joke?"),
]
)
print(llm_results)
API Reference:HumanMessage | ChatOpenAI
GPT4All 示例
from langchain_community.llms import GPT4All
model = GPT4All(model="./models/gpt4all-model.bin", n_ctx=512, n_threads=8)
callbacks = [PromptLayerCallbackHandler(pl_tags=["langchain", "gpt4all"])]
response = model.invoke(
"Once upon a time, ",
config={"callbacks": callbacks},
)
API Reference:GPT4All
完整功能示例
在这个例子中,我们解锁了PromptLayer
的更多功能。
PromptLayer 允许您直观地创建、版本控制和跟踪提示模板。使用 Prompt Registry,我们可以通过编程方式获取名为 example
的提示模板。
我们还定义了一个pl_id_callback
函数,该函数接收promptlayer_request_id
并记录分数、元数据,并链接使用的提示模板。了解更多关于跟踪的信息,请访问我们的文档。
from langchain_openai import OpenAI
def pl_id_callback(promptlayer_request_id):
print("prompt layer id ", promptlayer_request_id)
promptlayer.track.score(
request_id=promptlayer_request_id, score=100
) # score is an integer 0-100
promptlayer.track.metadata(
request_id=promptlayer_request_id, metadata={"foo": "bar"}
) # metadata is a dictionary of key value pairs that is tracked on PromptLayer
promptlayer.track.prompt(
request_id=promptlayer_request_id,
prompt_name="example",
prompt_input_variables={"product": "toasters"},
version=1,
) # link the request to a prompt template
openai_llm = OpenAI(
model_name="gpt-3.5-turbo-instruct",
callbacks=[PromptLayerCallbackHandler(pl_id_callback=pl_id_callback)],
)
example_prompt = promptlayer.prompts.get("example", version=1, langchain=True)
openai_llm.invoke(example_prompt.format(product="toasters"))
API Reference:OpenAI
这就是全部所需!设置完成后,您的所有请求将显示在PromptLayer仪表板上。 此回调也适用于在LangChain上实现的任何LLM。