ContextOracleToolkitBuilder
Overview
The ContextOracleToolkitBuilder class is part of the Automata SDK
and provides tools which translate natural language processing (NLP)
queries into relevant context. It is a specialized toolkit builder
responsible for providing context to a given query by computing the
semantic similarity between the query, documentation, and code of all
available symbols.
Dependencies
automata.embedding.base.EmbeddingSimilarityCalculatorautomata.memory_store.symbol_doc_embedding.SymbolDocEmbeddingHandlerautomata.memory_store.symbol_code_embedding.SymbolCodeEmbeddingHandlerautomata.tools.base.Tool
Example
from automata.tools.builders.context_oracle import ContextOracleToolkitBuilder
from automata.embedding.base import EmbeddingSimilarityCalculator
from automata.memory_store.symbol_doc_embedding import SymbolDocEmbeddingHandler
from automata.memory_store.symbol_code_embedding import SymbolCodeEmbeddingHandler
symbol_doc_embedding_handler = SymbolDocEmbeddingHandler()
symbol_code_embedding_handler = SymbolCodeEmbeddingHandler()
embedding_similarity_calculator = EmbeddingSimilarityCalculator()
context_oracle_tool_builder = ContextOracleToolkitBuilder(
symbol_doc_embedding_handler=symbol_doc_embedding_handler,
symbol_code_embedding_handler=symbol_code_embedding_handler,
embedding_similarity_calculator=embedding_similarity_calculator,
)
tools = context_oracle_tool_builder.build()
for tool in tools:
print(tool.name)
Limitations
The ContextOracleToolkitBuilder is reliant on various interfaces and
classes including EmbeddingSimilarityCalculator,
SymbolDocEmbeddingHandler, and SymbolCodeEmbeddingHandler.
Limitations of these classes will inherently limit the functionality or
performance of ContextOracleToolkitBuilder.
Follow-up Questions
Is there a way to specify custom similarity calculators or embedding handlers?
How does the
ContextOracleToolkitBuilderhandle situations when a similarity score is not available?How is the context for a query optimized? Can we specify the number of most similar symbols for which we want to include the context?