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();
}
}