Observability helps you understand how your large language model (LLM) app works and find problems quickly. It shows what is happening inside your app so you can fix issues and improve it.
Why observability is essential for LLM apps in LangChain
Start learning this pattern below
Jump into concepts and practice - no test required
or
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Introduction
Syntax
LangChain
from langchain.callbacks import get_openai_callback with get_openai_callback() as cb: response = llm('Your prompt here') print(cb)
This example shows how to use a callback to observe LLM usage like tokens and cost.
Observability tools often include logging, tracing, and metrics to track app behavior.
Examples
LangChain
from langchain.callbacks import get_openai_callback with get_openai_callback() as cb: response = llm('Hello, how are you?') print(f'Tokens used: {cb.total_tokens}')
LangChain
from langchain.llms import OpenAI from langchain.callbacks import StdOutCallbackHandler llm = OpenAI(callbacks=[StdOutCallbackHandler()]) response = llm('Tell me a joke')
Sample Program
This program sends a question to the LLM and uses observability to print the response, tokens used, and cost. It helps you see how much your app is using the LLM and what it returns.
LangChain
from langchain.llms import OpenAI from langchain.callbacks import get_openai_callback llm = OpenAI() with get_openai_callback() as cb: response = llm('What is the capital of France?') print('Response:', response) print(f'Total tokens used: {cb.total_tokens}') print(f'Total cost: ${cb.total_cost:.6f}')
Important Notes
Observability helps catch issues early before users notice them.
Tracking tokens and cost helps manage your budget when using paid LLM services.
Use callbacks and logging to get detailed insights into your app's behavior.
Summary
Observability shows what happens inside your LLM app.
It helps find errors, improve responses, and monitor costs.
Using callbacks in LangChain is an easy way to add observability.
Practice
1. Why is observability important in LangChain apps that use large language models (LLMs)?
easy
Solution
Step 1: Understand observability's role in LLM apps
Observability means seeing inside the app's processes to understand behavior and issues.Step 2: Connect observability to error detection and improvement
By tracking app actions, developers can find errors and improve responses effectively.Final Answer:
It helps track what happens inside the app to find errors and improve responses. -> Option DQuick Check:
Observability = Track and improve app behavior [OK]
Hint: Observability means watching app actions to fix and improve [OK]
Common Mistakes:
- Thinking observability writes code automatically
- Believing observability replaces model training
- Assuming observability speeds up API calls
2. Which of the following is the correct way to add a callback for observability in a LangChain LLM chain?
easy
Solution
Step 1: Recall LangChain callback syntax
LangChain expects a list of callback handlers passed as the 'callbacks' parameter.Step 2: Match correct parameter and value type
chain = LLMChain(llm=llm, prompt=prompt, callbacks=[MyCallbackHandler()]) uses 'callbacks' with a list containing the handler instance, which is correct.Final Answer:
chain = LLMChain(llm=llm, prompt=prompt, callbacks=[MyCallbackHandler()]) -> Option BQuick Check:
Callbacks param = list of handlers [OK]
Hint: Callbacks parameter takes a list of handler instances [OK]
Common Mistakes:
- Using 'callback' instead of 'callbacks'
- Passing a single handler without list brackets
- Using wrong parameter names like 'handlers' or 'observers'
3. Given this LangChain code snippet, what will be printed when the chain runs?
from langchain.callbacks.base import BaseCallbackHandler
class PrintCallback(BaseCallbackHandler):
def on_llm_start(self, serialized, prompts, **kwargs):
print(f"LLM started with prompt: {prompts[0]}")
chain = LLMChain(llm=llm, prompt=prompt, callbacks=[PrintCallback()])
chain.run("Hello")medium
Solution
Step 1: Understand the on_llm_start callback parameter
The 'prompts' argument is a list of prompt strings, so prompts[0] is the first prompt string.Step 2: Analyze the print statement output
The print outputs the string with prompts[0], which is the string "Hello" passed to run, but wrapped in a list originally.Final Answer:
LLM started with prompt: Hello -> Option AQuick Check:
Print prompt string = "Hello" [OK]
Hint: Callbacks receive prompts as list; print first item for prompt text [OK]
Common Mistakes:
- Thinking prompts is a string, not a list
- Expecting no output from callback
- Confusing method parameters causing errors
4. You added a callback to your LangChain app but no logs appear when running the chain. What is the most likely cause?
medium
Solution
Step 1: Check callback implementation
If the callback class lacks event methods like on_llm_start, no logs will be triggered.Step 2: Verify callback registration
Even if callbacks are registered correctly, without event methods, no output occurs.Final Answer:
The callback class does not implement any event methods like on_llm_start. -> Option CQuick Check:
Callbacks need event methods to log [OK]
Hint: Callbacks must implement event methods to produce logs [OK]
Common Mistakes:
- Assuming single object instead of list stops logs
- Blaming internet connection for no logs
- Thinking empty prompt causes no callback logs
5. You want to monitor both the input prompts and the cost of API calls in your LangChain app. Which observability approach best achieves this?
hard
Solution
Step 1: Identify observability needs
You want to see input prompts and monitor API call costs (token usage).Step 2: Match callback events to needs
on_llm_start can log prompts; on_llm_end can provide token usage info for cost tracking.Step 3: Evaluate options
Use a callback handler that logs prompts on on_llm_start and tracks token usage on on_llm_end. covers both prompt logging and cost monitoring via callbacks, which fits best.Final Answer:
Use a callback handler that logs prompts on on_llm_start and tracks token usage on on_llm_end. -> Option AQuick Check:
Callbacks on start/end = prompt + cost tracking [OK]
Hint: Use callbacks on start and end to log prompts and costs [OK]
Common Mistakes:
- Ignoring callbacks and using print statements only
- Logging only outputs misses input and cost info
- Tracking only errors misses prompt and cost data
