Current section
Files
Jump to
Current section
Files
examples/readme_audit_callback.erl
-module(readme_audit_callback).
-behaviour(adk_callbacks).
-export([set_observer/1, clear_observer/0,
before_model/3, after_model/2, before_tool/3, after_tool/4]).
set_observer(Pid) when is_pid(Pid) ->
persistent_term:put({?MODULE, observer}, Pid),
ok.
clear_observer() ->
persistent_term:erase({?MODULE, observer}),
ok.
before_model(_Config, _Memory, Tools) ->
notify({before_model, length(Tools)}),
ok.
after_model(_Config, ProviderResult) ->
notify({after_model, ProviderResult}),
ok.
before_tool(_ToolName, _Args, _Context) ->
ok.
after_tool(_ToolName, _Args, _Context, _ToolResult) ->
ok.
notify(Message) ->
case persistent_term:get({?MODULE, observer}, undefined) of
Pid when is_pid(Pid) -> Pid ! Message;
_ -> ok
end.