Tool retrieval and ranking algorithms for LLM agents
sage-agentic-tooluse provides a comprehensive suite of tool selection and ranking algorithms for LLM agents:
- Keyword Selector: Fast matching based on keyword overlap
- Embedding Selector: Semantic similarity using embeddings
- Hybrid Selector: Combines keyword and embedding approaches
- DFS-DT Selector: Decision tree-based tool selection
- Gorilla Selector: Gorilla-style tool retrieval
# Basic installation
pip install isage-agentic-tooluse
# Development installation
pip install isage-agentic-tooluse[dev]from sage_libs.sage_agentic_tooluse import KeywordSelector, ToolSelectionQuery
# Create selector
selector = KeywordSelector.from_config(config=keyword_config, resources=resources)
# Select tools for a query
selected = selector.select(
query=ToolSelectionQuery(
sample_id="q1",
instruction="Get current weather in New York",
candidate_tools=["weather_api", "search_api"],
),
top_k=5
)
for tool in selected:
print(f"Tool: {tool.tool_id}, Score: {tool.score}")from sage_libs.sage_agentic_tooluse import EmbeddingSelector, ToolSelectionQuery
# Create selector with embedding model
selector = EmbeddingSelector.from_config(config=embedding_config, resources=resources)
# Select tools based on semantic similarity
selected = selector.select(
query=ToolSelectionQuery(
sample_id="q2",
instruction="What's the weather like?",
candidate_tools=["weather_api", "search_api"],
),
top_k=5
)from sage_libs.sage_agentic_tooluse import HybridSelector, ToolSelectionQuery
# Combine keyword and embedding approaches
selector = HybridSelector.from_config(config=hybrid_config, resources=resources)
selected = selector.select(
query=ToolSelectionQuery(
sample_id="q3",
instruction="Find tools for weather updates",
candidate_tools=["weather_api", "search_api", "calendar_api"],
),
top_k=5,
)- KeywordSelector: Fast keyword-based matching
- EmbeddingSelector: Semantic similarity using embeddings
- HybridSelector: Weighted combination of multiple selectors
- DFSDTSelector: Decision tree-based selection
- GorillaSelector: Gorilla-style API-centric retrieval
- BaseToolSelector: Abstract base for all selectors
- SelectorRegistry: Central registry for selector implementations
- ToolSelectionQuery: Query payload for selector input
- ToolPrediction: Selection result with score and metadata
- SelectorConfig: Base selector configuration schema
sage_libs.sage_agentic_tooluse/
βββ __init__.py # Public API exports
βββ base.py # Base selector interface
βββ keyword_selector.py # Keyword-based selection
βββ embedding_selector.py # Embedding-based selection
βββ hybrid_selector.py # Hybrid selection strategy
βββ dfsdt_selector.py # Decision tree selector
βββ gorilla_selector.py # Gorilla-style retrieval
βββ registry.py # Selector registry
βββ schemas.py # Data schemas
βββ retriever/ # Retrieval utilities
- Agent Tool Selection: Help agents choose the right tools
- API Discovery: Find relevant APIs for a task
- Function Calling: Select appropriate functions for LLMs
- Tool Recommendation: Recommend tools to users
- Multi-step Planning: Select tool sequences for complex tasks
This package is part of the SAGE ecosystem and can be used with SAGE agents:
# Standalone usage
from sage_libs.sage_agentic_tooluse import HybridSelector
from sage_libs.sage_agentic_tooluse import create_selector
selector = create_selector({"name": "hybrid", "top_k": 5}, resources)- Repository: https://github.com/intellistream/sage-agentic-tooluse
- SAGE Documentation: https://intellistream.github.io/SAGE-Pub/
- Issues: https://github.com/intellistream/sage-agentic-tooluse/issues
Contributions are welcome! Please feel free to submit a Pull Request.
MIT License - see LICENSE file for details.
Originally part of the sage-agentic package, now maintained as an independent repository for focused development and research.
- Team: IntelliStream Team
- Email: shuhao_zhang@hust.edu.cn
- GitHub: https://github.com/intellistream
Part of the SAGE ecosystem - Stream Analytics for Generative AI Engines