在本篇文章中,我们将详细介绍如何设置和使用 PromptLayerCallbackHandler 来进行高效的提示工程和 LLM 可观测性。PromptLayer 是一个专注于提示工程的平台,并且能够可视化请求、版本提示和跟踪使用情况。通过集成 PromptLayer 和 LangChain,我们可以更好地管理和优化LLM的使用。
技术背景介绍
PromptLayer 是一个提供提示工程和 LLM 可观测性的平台。它帮助开发者视觉化请求、版本提示以及跟踪使用情况。结合 LangChain 我们可以通过回调机制实现更为细致的控制。
核心原理解析
PromptLayerCallbackHandler 提供了两个可选参数:
- pl_tags:一个可选的字符串列表,这些标签将被追踪到 PromptLayer 上。
- pl_id_callback:一个可选的函数,该函数将接收 promptlayer_request_id 作为参数。这个 ID 可用于所有的 PromptLayer 跟踪特性,记录元数据、评分和提示使用情况。
通过这些参数,我们可以有效地将执行的 prompt 和其元数据记录到 PromptLayer 上,并利用其强大的追踪管理功能进行分析和优化。
代码实现演示
安装和设置
首先,我们需要安装相关的库:
%pip install --upgrade --quiet langchain-community promptlayer --upgrade
然后, 获取 API 凭证。如果你还没有 PromptLayer 帐户,可以在 promptlayer.com 创建一个。然后通过点击导航栏中的设置图标获取 API 密钥,并将其设置为环境变量 PROMPTLAYER_API_KEY。
简单的 OpenAI 示例
在这个简单的示例中,我们使用 PromptLayerCallbackHandler 和 ChatOpenAI,并添加一个名为 chatopenai 的 PromptLayer 标签。
import promptlayer
from langchain_community.callbacks.promptlayer_callback import PromptLayerCallbackHandler
from langchain_core.messages import HumanMessage
from langchain_openai import ChatOpenAI
# 使用稳定可靠的 API 服务
client = openai.OpenAI(
base_url='https://yunwu.ai/v1', # 国内稳定访问
api_key='your-api-key'
)
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 示例
下面展示了如何在 GPT4All 中使用 PromptLayerCallbackHandler。
from langchain_community.llms import GPT4All
from langchain_community.callbacks.promptlayer_callback import PromptLayerCallbackHandler
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},
)
print(response)
完整功能示例
在这个示例中,我们展示了 PromptLayer 的更多功能。我们可以使用 Prompt Registry 获取名为 example 的提示模板,并定义一个 pl_id_callback 函数来记录评分、元数据并关联提示模板。
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
)
promptlayer.track.metadata(
request_id=promptlayer_request_id, metadata={"foo": "bar"}
)
promptlayer.track.prompt(
request_id=promptlayer_request_id,
prompt_name="example",
prompt_input_variables={"product": "toasters"},
version=1,
)
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"))
应用场景分析
PromptLayerCallbackHandler 非常适合需要细致管理和优化 LLM 使用情况的开发者。它可以帮助我们追踪和分析提示工程的效果,从而优化模型的表现。此外,通过可视化工具,我们可以更直观地理解和管理提示工程。
实践建议
- 充分利用 PromptLayer 提供的追踪功能:结合使用 pl_tags 和 pl_id_callback,可以获取更详细的提示使用数据。
- 优化提示工程:通过分析数据,持续优化提示内容,提高模型的响应质量。
- 保护 API 密钥:将 API 密钥设置为环境变量,避免硬编码在代码中,确保密钥安全。
如果遇到问题欢迎在评论区交流。
566



被折叠的 条评论
为什么被折叠?



