追踪#

实验性功能

这是一个实验性功能,随时可能更改。了解更多

追踪记录了应用程序在执行过程中发生的特定事件或状态。它可以包含函数调用、变量值、系统事件等数据。追踪有助于将应用程序的组件分解为离散的输入和输出,这对于调试和理解应用程序至关重要。您可以从此处了解更多关于追踪的信息。

Prompt flow 提供了追踪功能,使用户能够根据OpenTelemetry 规范追踪 LLM 调用或函数,以及像 LangChainAutoGen 这样的 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 应用程序,还适用于像 autogenlangchain 等更多框架。除了基本的追踪功能外,prompt flow 还提供了几个追踪工具包,可以改善追踪体验(例如,用于可视化的追踪 UI)。

  1. 示例:为 LLM 添加追踪

llm-trace-detail

  1. 示例:为 Autogen 添加追踪

autogen-trace-detail

  1. 示例:为 Langchain 添加追踪

langchain-trace-detail