SET_TOOL_RESULT Procedure Signature 2

Use this procedure within Response Handler procedures to set a tool call result.

Syntax

PROCEDURE apex_ai.set_tool_result (
    p_response_handler_param     IN               t_chat_response_handler_param,
    p_response_handler_result    IN OUT NOCOPY    t_chat_response_handler_result,
    p_tool_call                  IN               t_chat_message_tool_call,
    p_result                     IN               CLOB,
    p_is_safe                    IN               BOOLEAN    DEFAULT FALSE
 );

Parameters

Parameter Description
p_response_handler_param The response handler parameter.
p_response_handler_result The response handler result.
p_tool_call The specific tool call for which to provide a result.
p_result The tool result.
p_is_safe Whether the tool result is safe to send to the AI Service without prompt-injection guard wrapping. Defaults to false.

Example

set serveroutput on;

create or replace procedure response_handler_proc (
    p_param     in              apex_ai.t_chat_response_handler_param,
    p_result    in out nocopy   apex_ai.t_chat_response_handler_result )
as
begin
    if p_result.response.type = apex_ai.c_response_type_tool_calls then
        for i in 1 .. p_param.pending_tool_calls.count loop
            if p_param.pending_tool_calls( i ).name = 'get_secret_number' then
                apex_ai.set_tool_result (
                    p_response_handler_param    => p_param,
                    p_response_handler_result   => p_result,
                    p_tool_call                 => p_param.pending_tool_calls( i ),
                    p_result                    => '42' );
            end if;
        end loop;
    end if;
end response_handler_proc;
/
show errors;

declare
    l_response clob;
begin
    apex_session.create_session (
        p_app_id    => 100,
        p_page_id   => 1,
        p_username  => 'USER' );

    l_response :=
        apex_ai.generate (
            p_service_static_id => 'my_ai_service',
            p_prompt            => 'What''s the secret number?',
            p_tools             =>
                apex_ai.t_tools (
                    apex_ai.t_tool (
                        name    => 'get_secret_number' ) ),
            p_response_handler_procedure => 'response_handler_proc' );

    sys.dbms_output.put_line( l_response );

    apex_session.delete_session;
exception
    when others then
        apex_session.delete_session;
        raise;
end;
/