Current section

Files

Jump to
langchain lib chains chain_callbacks.ex
Raw

lib/chains/chain_callbacks.ex

defmodule LangChain.Chains.ChainCallbacks do
@moduledoc """
Defines the callbacks fired by an LLMChain.
A callback handler is a map that defines the specific callback event with a
function to execute for that event.
## Example
A sample configured callback handler that forwards received data to a specific
LiveView.
live_view_pid = self()
my_handlers = %{
handle_chain_error_message_created: fn new_message -> send(live_view_pid, {:received_message, new_message})
}
model = SomeLLM.new!(%{callbacks: [my_handlers]})
chain = LLMChain.new!(%{llm: model})
"""
alias LangChain.Chains.LLMChain
alias LangChain.Message
@typedoc """
Executed when an LLMChain has completed processing a received assistant
message.
The handler's return value is discarded.
## Example
A function declaration that matches the signature.
def handle_chain_message_processed(chain, message) do
IO.inspect(message)
end
"""
@type chain_message_processed :: (LLMChain.t(), Message.t() -> any())
@typedoc """
Executed when an LLMChain, in response to an error from the LLM, generates a
new, automated response message intended to be returned to the LLM.
The handler's return value is discarded.
## Example
A function declaration that matches the signature.
def handles_chain_error_message_created(chain, new_message) do
IO.inspect(new_message)
end
"""
@type chain_error_message_created :: (LLMChain.t(), Message.t() -> any())
@typedoc """
Executed when processing a received message errors or fails. The erroring
message is included in the callback with the state of processing that was
completed before erroring.
The handler's return value is discarded.
## Example
A function declaration that matches the signature.
def handle_chain_message_processing_error(chain, new_message) do
IO.inspect(new_message)
end
"""
@type chain_message_processing_error :: (LLMChain.t(), Message.t() -> any())
@typedoc """
Executed when the chain uses one or more tools and the resulting ToolResults
are generated as part of a tool response message.
The handler's return value is discarded.
## Example
A function declaration that matches the signature.
def handle_chain_tool_response_created(chain, new_message) do
IO.inspect(new_message)
end
"""
@type chain_tool_response_created :: (LLMChain.t(), Message.t() -> any())
@typedoc """
Executed when the chain failed multiple times used up the `max_retry_count`
resulting in the process aborting and returning an error.
The handler's return value is discarded.
## Example
A function declaration that matches the signature.
def handle_retries_exceeded(chain) do
IO.inspect(chain)
end
"""
@type chain_retries_exceeded :: (LLMChain.t() -> any())
@typedoc """
The supported set of callbacks for an LLM module.
"""
@type chain_callback_handler :: %{
on_message_processed: chain_message_processed(),
on_message_processing_error: chain_message_processing_error(),
on_error_message_created: chain_error_message_created(),
on_tool_response_created: chain_tool_response_created(),
on_retries_exceeded: chain_retries_exceeded()
}
end