{"library":"promptflow-tracing","title":"Prompt Flow Tracing","description":"The `promptflow-tracing` package provides tracing capabilities for Prompt Flow, enabling the capture and visualization of internal execution processes for both DAG and Flex flows. It's designed to be compatible with OpenTelemetry, offering comprehensive observability for LLM-based applications, including those using frameworks like Langchain or OpenAI. The current version is 1.18.4, and the library is actively developed with frequent releases.","language":"python","status":"active","last_verified":"Sun May 17","install":{"commands":["pip install promptflow-tracing","pip install promptflow"],"cli":{"name":"pf","version":"sh: 1: pf: not found"}},"imports":["from promptflow.tracing import start_trace","from promptflow.tracing import trace"],"auth":{"required":false,"env_vars":[]},"quickstart":{"code":"import os\nfrom openai import OpenAI\nfrom promptflow.tracing import start_trace, trace\n\n# Ensure OPENAI_API_KEY is set in your environment\n# or pass it explicitly to OpenAI(api_key=...) if not using env var.\n# For Azure OpenAI, set AZURE_OPENAI_API_KEY, AZURE_OPENAI_ENDPOINT, AZURE_OPENAI_API_VERSION, AZURE_OPENAI_DEPLOYMENT_NAME\n\n# Start tracing. This will instrument supported libraries like OpenAI.\nstart_trace()\n\nclient = OpenAI(api_key=os.environ.get('OPENAI_API_KEY', ''))\n\n@trace\ndef poetic_explanation(concept: str) -> str:\n    try:\n        completion = client.chat.completions.create(\n            model=\"gpt-3.5-turbo\",\n            messages=[\n                {\"role\": \"system\", \"content\": \"You are a poetic assistant, skilled in explaining complex programming concepts with creative flair.\"}, \n                {\"role\": \"user\", \"content\": f\"Compose a short poem that explains the concept of {concept} in programming.\"}\n            ]\n        )\n        return completion.choices[0].message.content\n    except Exception as e:\n        print(f\"Error calling OpenAI: {e}\")\n        return \"Failed to get a poetic explanation.\"\n\n\nif os.environ.get('OPENAI_API_KEY'): # Only run if API key is present\n    print(\"--- Tracing LLM call with start_trace() ---\")\n    poem = poetic_explanation(\"recursion\")\n    print(poem)\n    print(\"\\nCheck your console for a URL to the trace UI (requires promptflow-devkit).\")\nelse:\n    print(\"Skipping quickstart: OPENAI_API_KEY environment variable not set.\")","lang":"python","description":"This quickstart demonstrates how to enable tracing for LLM calls (e.g., OpenAI) using `start_trace()` and how to trace custom functions with the `@trace` decorator. Upon execution, if `promptflow-devkit` is installed, a local URL to the trace UI will be printed to the console, allowing visualization of the captured traces.","tag":null,"tag_description":null,"last_tested":null,"results":[]},"compatibility":{"tag":null,"tag_description":null,"last_tested":"2026-05-17","installed_version":"1.18.5","pypi_latest":"1.18.5","is_stale":false,"summary":{"python_range":"3.10–3.9","success_rate":100,"avg_install_s":15.5,"avg_import_s":4.44,"wheel_type":"wheel"},"results":[{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"promptflow","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"broken","install_time_s":null,"import_time_s":6.59,"mem_mb":77.2,"disk_size":"346.2M"},{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"promptflow-tracing","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":2.03,"mem_mb":26.9,"disk_size":"61.7M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"promptflow","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"broken","install_time_s":25.6,"import_time_s":5.13,"mem_mb":75.9,"disk_size":"336M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"promptflow-tracing","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":7.4,"import_time_s":1.52,"mem_mb":26.9,"disk_size":"61M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"promptflow","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"broken","install_time_s":null,"import_time_s":7.79,"mem_mb":85.2,"disk_size":"382.6M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"promptflow-tracing","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":2.5,"mem_mb":28.6,"disk_size":"66.8M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"promptflow","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"broken","install_time_s":24.2,"import_time_s":7,"mem_mb":84,"disk_size":"372M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"promptflow-tracing","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":6.5,"import_time_s":2.28,"mem_mb":28.6,"disk_size":"66M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"promptflow","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"broken","install_time_s":null,"import_time_s":7.57,"mem_mb":83.7,"disk_size":"364.0M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"promptflow-tracing","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":2.33,"mem_mb":28.3,"disk_size":"57.8M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"promptflow","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"broken","install_time_s":20.6,"import_time_s":7.29,"mem_mb":82.5,"disk_size":"353M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"promptflow-tracing","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":5.2,"import_time_s":2.35,"mem_mb":28.3,"disk_size":"57M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"promptflow","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"broken","install_time_s":null,"import_time_s":7.04,"mem_mb":84.6,"disk_size":"362.9M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"promptflow-tracing","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":2.23,"mem_mb":28.8,"disk_size":"57.5M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"promptflow","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"broken","install_time_s":21.2,"import_time_s":6.69,"mem_mb":83.3,"disk_size":"352M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"promptflow-tracing","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":5.5,"import_time_s":2.2,"mem_mb":28.8,"disk_size":"57M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"promptflow","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"broken","install_time_s":null,"import_time_s":6.38,"mem_mb":79,"disk_size":"351.0M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"promptflow-tracing","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":2,"mem_mb":27.6,"disk_size":"60.9M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"promptflow","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"broken","install_time_s":29.8,"import_time_s":5.99,"mem_mb":77.7,"disk_size":"344M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"promptflow-tracing","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":8.5,"import_time_s":1.8,"mem_mb":27.6,"disk_size":"60M"}]}}