Skip to main content
PromptLayer 是一个提示工程平台,同时提供 LLM 可观测性功能,可可视化请求、对提示进行版本管理并追踪使用情况。 虽然 PromptLayer 提供了与 LangChain 直接集成的 LLM(如 PromptLayerOpenAI),但使用回调是将 PromptLayer 与 LangChain 集成的推荐方式。
在本指南中,我们将介绍如何配置 PromptLayerCallbackHandler 更多信息请参阅 PromptLayer 文档

安装与配置

pip install -qU  langchain-community promptlayer --upgrade

获取 API 凭据

如果还没有 PromptLayer 账户,请在 promptlayer.com 上注册。然后点击导航栏中的设置图标获取 API Key, 并将其设置为名为 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.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)

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},
)

完整功能示例

在本示例中,我们将充分发挥 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"))
就这些!配置完成后,您的所有请求都将显示在 PromptLayer 仪表盘中。 此回调同样适用于 LangChain 中实现的任何 LLM。