From 0af771732f3bf89ae38c4cb522649adae0ba73cf Mon Sep 17 00:00:00 2001 From: SecroLoL Date: Wed, 12 Feb 2025 17:40:54 -0800 Subject: [PATCH 1/3] Add image for basic tracing example in monitoring docs --- docs/images/basic_trace_example.png | Bin 0 -> 82939 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 docs/images/basic_trace_example.png diff --git a/docs/images/basic_trace_example.png b/docs/images/basic_trace_example.png new file mode 100644 index 0000000000000000000000000000000000000000..e0c5132810d7d0f3b25acb81eb553290463dc167 GIT binary patch literal 82939 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 Date: Wed, 12 Feb 2025 17:41:10 -0800 Subject: [PATCH 2/3] Add introductory page in docs for monitoring --- docs/monitoring/introduction.mdx | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/docs/monitoring/introduction.mdx b/docs/monitoring/introduction.mdx index e69de29b..8eb76122 100644 --- a/docs/monitoring/introduction.mdx +++ b/docs/monitoring/introduction.mdx @@ -0,0 +1,30 @@ +--- +title: Peformance Monitoring Worfklows with Judgment +--- + +## Overview ## +`judgeval` contains a suite of monitoring tools that allow you to **measure the quality of your LLM applications in production** scenarios. + +Using `judgeval` in production, you can: +- Measure the quality of your LLM agent systems in **real time** using Judgment's **10+ researched-backed scoring metrics**. + - Check for regressions in **retrieval quality, hallucinations, and any other scoring metric you care about**. +- Measure token usage +- Track latency of different system components (web searching, LLM generation, etc.) + + + **Why evaluate your system in production?** + + Production data **provides the highest signal** for improving your LLM system on use cases you care about. + Judgment Labs' infrastructure enables LLM teams to **capture quality signals from production use cases** and + provides [**actionable insights**](/monitoring/production_insights) for improving any component of your system. + + + +## Standard Setup ## +A typical setup of `judgeval` on production systems involves: +- Tracing your application using `judgeval`'s [tracing module](/monitoring/tracing). +- Embedding evaluation runs into your traces the `async_evaluate()` function. +- Tracking your LLM agent's performance in real time using the [Judgment platform](/judgment/introduction). + + +For a full example of how to set up `judgeval` in a production system, see our [OpenAI Travel Agent example](/monitoring/tracing#example-openai-travel-agent). From 55237bc2079d043ed584297df3df6046b06e1a5d Mon Sep 17 00:00:00 2001 From: SecroLoL Date: Wed, 12 Feb 2025 17:41:19 -0800 Subject: [PATCH 3/3] Add tracing page --- docs/monitoring/tracing.mdx | 180 ++++++++++++++++++++++++++++++++++++ 1 file changed, 180 insertions(+) diff --git a/docs/monitoring/tracing.mdx b/docs/monitoring/tracing.mdx index e69de29b..ddbb0d28 100644 --- a/docs/monitoring/tracing.mdx +++ b/docs/monitoring/tracing.mdx @@ -0,0 +1,180 @@ +--- +title: Tracing +--- + +## Overview ## + +`judgeval`'s tracing module allows you to view your LLM application's execution from **end-to-end**. + +Using tracing, you can: +- Gain observability into **every layer of your agentic system**, from database queries to tool calling and text generation. +- Measure the performance of **each system component in any way** you want to measure it. For instance: + - Catch regressions in **retrieval quality, factuality, answer relevance**, and 10+ other [**research-backed metrics**](/evaluation/scorers/introduction). + - Quantify the **quality of each tool call** your agent makes + - Track the latency of each system component + - Count the token usage of each LLM generation +- Export your workflow runs to the Judgment platform for **real-time analysis** or as a dataset for [**offline experimentation**](/evaluation/introduction). + + +## Tracing Your Workflow ## + +Setting up tracing with `judgeval` takes three simple steps: + +### 1. Initialize a tracer with your API key + +```python +from judgeval.common.tracer import Tracer + +judgment = Tracer() # loads from JUDGMENT_API_KEY env var +``` + + + The Judgment tracer is a singleton object that should be shared across your application. + + + +### 2. Wrap your workflow components + +`judgeval` provides three wrapping mechanisms for your workflow components: + +#### `wrap()` #### +The `wrap()` function goes over your LLM client (e.g. OpenAI, Anthropic, etc.) and captures metadata surrounding your LLM calls, such as: +- Latency +- Token usage +- Prompt/Completion +- Model name + +#### `@observe` #### +The `@observe` decorator wraps your functions/tools and captures metadata surrounding your function calls, such as: +- Latency +- Input/Output +- Span type (e.g. `retriever`, `tool`, `LLM call`, etc.) + +Here's an example of using the `@observe` decorator on a function: +```python +from judgeval.common.tracer import Tracer + +judgment = Tracer() # loads from JUDGMENT_API_KEY env var + +@judgment.observe(span_type="tool") +def my_tool(): + print("Hello world!") + +``` + + + The `@observe` decorator is used on top of helper functions that you write, but is not designed to be used + on your "main" function. For more information, see the `context manager` section below. + + +#### `context manager` #### + +In your main function (e.g. the one that executes the primary workflow logic), you can use the `with judgment.trace()` context manager to trace the entire workflow. + +The context manager can **save/print the state of the trace at any point in the workflow**. +This is useful for debugging or exporting any state of your workflow to run an evaluation from! + + + The `with judgment.trace()` context manager detects any `@observe` decorated functions or wrapped LLM calls within the context and automatically captures their metadata. + + + +#### Putting it all Together +Here's a complete example of using the `with judgment.trace()` context manager with the other tracing mechanisms: +```python +from judgeval.common.tracer import Tracer, wrap +from openai import OpenAI + +openai_client = wrap(OpenAI()) +judgment = Tracer() # loads from JUDGMENT_API_KEY env var + +@judgment.observe(span_type="tool") +def my_tool(): + return "Hello world!" + +@judgment.observe(span_type="LLM call") +def my_llm_call(): + message = my_tool() + res = openai_client.chat.completions.create( + model="gpt-4o", + messages=[{"role": "user", "content": message}] + ) + return res.choices[0].message.content + +def main(): + with judgment.trace( + "main_workflow", + project_name="my_project" + ) as trace: + res = my_llm_call() + trace.save() + trace.print() + return res +``` + +The printed trace appears as follows on the terminal: +``` +→ main_workflow (trace: main_workflow) + → my_llm_call (trace: my_llm_call) + Input: {'args': [], 'kwargs': {}} + → my_tool (trace: my_tool) + Input: {'args': [], 'kwargs': {}} + Output: Hello world! + ← my_tool (0.000s) + Output: Hello! How can I assist you today? + ← my_llm_call (0.789s) +``` + +And the trace will appear on the Judgment platform as follows: + +![Alt text](/images/basic_trace_example.png "Basic Trace Example") + +### 3. Running Production Evaluations + +Optionally, you can run asynchronous evaluations directly inside your traces. + +This enables you to run evaluations on your **production data in real-time**, which can be useful for: +- **Guardrailing your production system** against quality regressions (hallucinations, toxic responses, revealing private data, etc.). +- Exporting production data for **offline experimentation** (e.g for A/B testing your workflow versions on relevant use cases). +- Getting **actionable insights** on how to fix common failure modes in your workflow (e.g. missing knowledge base info, suboptimal prompts, etc.). + +To execute an asynchronous evaluation, you can use the `trace.async_evaluate()` method. Here's an example of that: + +```python +from judgeval.common.tracer import Tracer +from judgeval.scorers import FaithfulnessScorer + +judgment = Tracer() + +def main(): + with judgment.trace( + "main_workflow", + project_name="my_project" + ) as trace: + retrieved_info = ... # from knowledge base + res = ... # your main workflow logic + + judgment.get_current_trace().async_evaluate( + scorers=[FaithfulnesssScorer(threshold=0.5)], + input="", + actual_output=res, + retrieval_context=[retrieved_info], + model="gpt-4o-mini", + ) + return res +``` + +## Example: OpenAI Travel Agent + +In this video, we'll walk through all of the topics covered in this guide by tracing over a simple OpenAI travel agent. + + \ No newline at end of file