Skip to main content
Open In ColabOpen on GitHub

PromptLayer

PromptLayer is a platform for prompt engineering. It also helps with the LLM observability to visualize requests, version prompts, and track usage.

While PromptLayer does have LLMs that integrate directly with LangChain (e.g. PromptLayerOpenAI), using a callback is the recommended way to integrate PromptLayer with LangChain.

在本指南中,我们将介绍如何设置 PromptLayerCallbackHandler

请参阅 PromptLayer 文档 以获取更多信息。

安装与设置

%pip install --upgrade --quiet  langchain-community promptlayer --upgrade

获取API凭据

如果您没有 PromptLayer 账户,请在 promptlayer.com 上创建一个。然后点击导航栏中的设置图标获取 API 密钥,并将其设置为名为 PROMPTLAYER_API_KEY 的环境变量。

使用

开始使用 PromptLayerCallbackHandler 非常简单,它需要两个可选参数:

  1. pl_tags - 一个可选的字符串列表,这些字符串将在 PromptLayer 上作为标签进行跟踪。
  2. pl_id_callback - 一个可选的函数,它将接受 promptlayer_request_id 作为参数。此 ID 可用于 PromptLayer 的所有跟踪功能,以跟踪元数据、评分和提示使用情况。

简单的 OpenAI 示例

在这个简单的示例中,我们使用 PromptLayerCallbackHandlerChatOpenAI。我们添加一个名为 chatopenai 的 PromptLayer 标签。

import promptlayer  # Don't forget this 🍰
from langchain_community.callbacks.promptlayer_callback import (
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 参考:HumanMessage | ChatOpenAI

LangChain大型语言模型开发框架示例

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 参考:GPT4All

在这个例子中,我们解锁了 PromptLayer 的更多功能。

PromptLayer 允许您可视化地创建、版本控制和跟踪提示模板。使用 提示注册表,我们可以以编程方式获取名为 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 参考:OpenAI

这就是全部!设置完成后,所有请求都会显示在 PromptLayer 仪表板上。 此回调功能也适用于 LangChain 上实现的任何大型语言模型(LLM)。