Agent with RAG Tool

Learn how to create an agent with a pre-built RAG tool.

Support Agent Example

In this example, we create an support agent equipped with a pre-built agentic RAG tool.

RAG tools allow the agent to use knowledge bases to answer questions grounded by documents. To create a knowledge base and obtain its ID, follow this guide.


Info: RAG tools are executed on the server side in the OCI Cloud.

The implementation is an agentic RAG where the system acts more like an autonomous agent rather than a passive retriever and generator.


You can also pass multiple knowledge base IDs to the AgenticRagTool.

Python

support_agent.py

from oci.addons.adk import Agent, AgentClient
from oci.addons.adk.tool.prebuilt import AgenticRagTool

def main():

    client = AgentClient(
        auth_type="api_key",
        profile="DEFAULT",
        region="us-chicago-1"
    )

    # Assuming the knowledge base is already provisioned
    knowledge_base_id = "ocid1.genaiagentknowledgebase..."

    # Create a RAG tool that uses the knowledge base
    # The tool name and description are optional, but strongly recommended for LLM to understand the tool.
    rag_tool = AgenticRagTool(
        name="OCI RAG tool",
        description="Use this tool to answer questions about Oracle Cloud Infrastructure (OCI).",
        knowledge_base_ids=[knowledge_base_id],
    )

    # Create the agent with the RAG tool
    agent = Agent(
        client=client,
        agent_endpoint_id="ocid1.genaiagentendpoint...",
        instructions="Answer question using the OCI RAG tool.",
        tools=[rag_tool]
    )

    # Set up the agent once
    agent.setup()

    # Run the agent with a user query
    input = "Tell me about Oracle Cloud Infrastructure."
    response = agent.run(input)
    response.pretty_print()

if __name__ == "__main__":
    main()

Java

SupportAgent.java

package demos.singleTurnSingleTool.SupportAgent;

import com.oracle.bmc.ConfigFileReader;
import com.oracle.bmc.adk.agent.Agent;
import com.oracle.bmc.adk.agent.RunOptions;
import com.oracle.bmc.adk.client.AgentClient;
import com.oracle.bmc.adk.tools.prebuilt.AgenticRagTool;
import com.oracle.bmc.adk.run.RunResponse;
import com.oracle.bmc.auth.BasicAuthenticationDetailsProvider;
import com.oracle.bmc.auth.SessionTokenAuthenticationDetailsProvider;

import java.util.Arrays;

public class SupportAgent {
  public static void main(String[] args) throws Exception {
    final String configLocation = "~/.oci/config";
    final String configProfile = "DEFAULT";

   // Assuming the knowledge base is already provisioned
   final String knowledgeBaseId = "ocid1.genaiagentknowledgebase...";

    BasicAuthenticationDetailsProvider authProvider =
            new SessionTokenAuthenticationDetailsProvider(
                    ConfigFileReader.parse(configLocation, configProfile));

    AgentClient agentClient = AgentClient.builder()
        .authProvider(authProvider)
        .region("us-chicago-1")
        .build();

    Agent agent = Agent.builder()
            .client(agentClient)
            .agentEndpointId("ocid1.genaiagentendpoint...")
            .instructions("Answer question using the OCI RAG tool.")
            .tools(
                Arrays.asList(
                    AgenticRagTool.builder().knowledgeBaseIds(Arrays.asList(knowledgeBaseId)).build()))
            .build();

    agent.setup();

    final String input = "Tell me about Oracle Cloud Infrastructure.";
    final Integer maxStep = 3;
    final RunOptions runOptions = RunOptions.builder().maxSteps(maxStep).build();
    RunResponse response = agent.run(input, runOptions);
    response.prettyPrint();
  }
}