Skip to content

LlamaIndex

TapPass has no dedicated LlamaIndex module. Governance comes from two generic paths: wrap the tools with tappass.govern(), and/or route the LLM and embedding calls through the TapPass gateway.

tappass.govern(tools, ...) wraps any list of tools (LlamaIndex tools included). In mode="audit" (default) every execution lands in the audit trail; in mode="enforce" each call is checked against policy first and blocked calls raise GovernanceBlocked without executing.

import tappass
tools = tappass.govern(
[search_tool, read_file_tool],
url="https://tappass.example.com",
api_key="tp_...",
mode="enforce",
)
query_engine = index.as_query_engine(llm=llm, tools=tools)

Path 2 — route the model through the gateway

Section titled “Path 2 — route the model through the gateway”

LlamaIndex uses the OpenAI SDK for both embeddings (retrieval) and completions (synthesis). Both paths pick up OPENAI_BASE_URL — so setting the two env vars governs every LLM call, RAG included.

Terminal window
export OPENAI_BASE_URL=https://tappass.example.com/v1
export OPENAI_API_KEY=tp_...
from llama_index.core import VectorStoreIndex, SimpleDirectoryReader
from llama_index.llms.openai import OpenAI
from llama_index.embeddings.openai import OpenAIEmbedding
documents = SimpleDirectoryReader("./data").load_data()
index = VectorStoreIndex.from_documents(
documents,
embed_model=OpenAIEmbedding(model="text-embedding-3-small"),
)
query_engine = index.as_query_engine(
llm=OpenAI(model="gpt-4o-mini"),
)
response = query_engine.query("What does the compliance report say?")

Both the embedding call (retrieval) and the completion call (synthesis) flow through TapPass.

If you’d rather not use env vars:

from llama_index.llms.openai import OpenAI
llm = OpenAI(
model="gpt-4o-mini",
api_base="https://tappass.example.com/v1",
api_key="tp_...",
)