View Source LangChain.Telemetry (LangChain v0.3.3)
Telemetry events for LangChain.
This module defines telemetry events that other applications can attach to. It provides a standardized way to emit events for various operations in the LangChain library without implementing tracing functionality.
Event Naming
Events follow the convention: [:langchain, component, operation, stage]
Core Events
[:langchain, :llm, :call, :start]
- Emitted when an LLM call starts[:langchain, :llm, :call, :stop]
- Emitted when an LLM call completes[:langchain, :llm, :call, :exception]
- Emitted when an LLM call raises an exception[:langchain, :llm, :prompt]
- Emitted when a prompt is sent to an LLM[:langchain, :llm, :response]
- Emitted when a response is received from an LLM[:langchain, :llm, :response, :non_streaming]
- Emitted when a non-streaming response is received from an LLM[:langchain, :llm, :response, :streaming]
- Emitted when a streaming response is received from an LLM[:langchain, :chain, :execute, :start]
- Emitted when a chain execution starts[:langchain, :chain, :execute, :stop]
- Emitted when a chain execution completes[:langchain, :chain, :execute, :exception]
- Emitted when a chain execution raises an exception[:langchain, :message, :process, :start]
- Emitted when message processing starts[:langchain, :message, :process, :stop]
- Emitted when message processing completes[:langchain, :message, :process, :exception]
- Emitted when message processing raises an exception[:langchain, :tool, :call, :start]
- Emitted when a tool call starts[:langchain, :tool, :call, :stop]
- Emitted when a tool call completes[:langchain, :tool, :call, :exception]
- Emitted when a tool call raises an exception
Usage
To attach to these events in your application:
:telemetry.attach(
"my-handler-id",
[:langchain, :llm, :call, :stop],
&MyApp.handle_llm_call/4,
nil
)
def handle_llm_call(_event_name, measurements, metadata, _config) do
# Process the event
IO.inspect(measurements)
IO.inspect(metadata)
end
Summary
Functions
Emits a chain execution start event.
Emits a telemetry event with the given name, measurements, and metadata.
Emits an LLM call start event.
Emits an LLM prompt event.
Emits an LLM response event.
Emits a memory read start event.
Emits a memory write start event.
Emits a message processing start event.
Emits a retriever get relevant documents start event.
Wraps a function call with start and stop telemetry events.
Emits a start event and returns a function to emit the corresponding stop event.
Emits a tool call event.
Emits a tool call start event.
Functions
Emits a chain execution start event.
Emits a telemetry event with the given name, measurements, and metadata.
Parameters
event_name
- The name of the event as a list of atomsmeasurements
- A map of measurements for the eventmetadata
- A map of metadata for the event
Examples
iex> LangChain.Telemetry.emit_event([:langchain, :llm, :call, :start], %{system_time: System.system_time()}, %{model: "gpt-4"})
Emits an LLM call start event.
Emits an LLM prompt event.
Emits an LLM response event.
Emits a memory read start event.
Emits a memory write start event.
Emits a message processing start event.
Emits a retriever get relevant documents start event.
Wraps a function call with start and stop telemetry events.
Parameters
event_prefix
- The prefix for the event name as a list of atomsmetadata
- A map of metadata for the eventfun
- The function to execute
Returns
The result of the function call.
Examples
iex> LangChain.Telemetry.span([:langchain, :llm, :call], %{model: "gpt-4"}, fn ->
...> # Call the LLM
...> {:ok, "response"}
...> end)
Emits a start event and returns a function to emit the corresponding stop event.
This is useful for span-like events where you want to measure the duration of an operation.
Parameters
event_prefix
- The prefix for the event name as a list of atomsmetadata
- A map of metadata for the event
Returns
A function that accepts additional metadata to be merged with the original metadata and emits the stop event with the duration measurement.
Examples
iex> stop_fun = LangChain.Telemetry.start_event([:langchain, :llm, :call], %{model: "gpt-4"})
iex> # Do some work
iex> stop_fun.(%{result: "success"})
Emits a tool call event.
Emits a tool call start event.