追踪#
实验性功能
这是一个实验性功能,随时可能更改。了解更多。
追踪记录了应用程序在执行过程中发生的特定事件或状态。它可以包含函数调用、变量值、系统事件等数据。追踪有助于将应用程序的组件分解为离散的输入和输出,这对于调试和理解应用程序至关重要。您可以从此处了解更多关于追踪的信息。
Prompt flow 提供了追踪功能,使用户能够根据OpenTelemetry 规范追踪 LLM 调用或函数,以及像 LangChain 和 AutoGen 这样的 LLM 框架。
安装软件包#
pip install promptflow-tracing
对用户代码进行插桩#
为 LLM 调用启用追踪#
让我们从最简单的例子开始,在您的应用程序中添加一行代码 start_trace() 以启用 LLM 调用的追踪。
from openai import OpenAI
from promptflow.tracing import start_trace
# instrument OpenAI
start_trace()
client = OpenAI()
completion = client.chat.completions.create(
model="gpt-4",
messages=[
{"role": "system", "content": "You are a poetic assistant, skilled in explaining complex programming concepts with creative flair."},
{"role": "user", "content": "Compose a poem that explains the concept of recursion in programming."}
]
)
print(completion.choices[0].message)
然后 OpenAI 将被插桩,由于 prompt flow 遵循 OpenTelemetry 规范,用户可以充分利用 OpenTelemetry 的知识在 OpenAI 调用期间使用这些追踪。
追踪任何函数#
一个更常见的场景是应用程序具有复杂的代码结构,开发人员希望在他们需要调试和监控的关键路径上添加追踪。
请参阅 math_to_code 示例,了解如何使用 @trace。
执行以下命令将获取一个 URL,用于显示每个测试的追踪记录和追踪详细信息。
from promptflow.tracing import trace
# trace your function
@trace
def code_gen(client: AzureOpenAI, question: str) -> str:
sys_prompt = (
"I want you to act as a Math expert specializing in Algebra, Geometry, and Calculus. "
"Given the question, develop python code to model the user's question. "
"Make sure only reply the executable code, no other words."
)
completion = client.chat.completions.create(
model=os.getenv("CHAT_DEPLOYMENT_NAME", "gpt-35-turbo"),
messages=[
{
"role": "system",
"content": sys_prompt,
},
{"role": "user", "content": question},
],
)
raw_code = completion.choices[0].message.content
result = code_refine(raw_code)
return result
python math_to_code.py
追踪 LLM 和框架#
Prompt flow 追踪不仅适用于通用的 LLM 应用程序,还适用于像 autogen 和 langchain 等更多框架。除了基本的追踪功能外,prompt flow 还提供了几个追踪工具包,可以改善追踪体验(例如,用于可视化的追踪 UI)。
示例:为 LLM 添加追踪


