92 lines
2.5 KiB
Python
Executable File
92 lines
2.5 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
"""
|
|
Example script demonstrating tool discovery in ToolUniverse.
|
|
|
|
This script shows how to search for tools using different methods:
|
|
- Embedding-based search (Tool_Finder)
|
|
- LLM-based search (Tool_Finder_LLM)
|
|
- Keyword-based search (Tool_Finder_Keyword)
|
|
"""
|
|
|
|
from tooluniverse import ToolUniverse
|
|
|
|
|
|
def main():
|
|
# Initialize ToolUniverse
|
|
print("Initializing ToolUniverse...")
|
|
tu = ToolUniverse()
|
|
tu.load_tools()
|
|
print(f"Loaded {len(tu.list_tools())} tools\n")
|
|
|
|
# Example 1: Keyword-based search (fastest)
|
|
print("=" * 60)
|
|
print("Example 1: Keyword Search for Disease-Target Tools")
|
|
print("=" * 60)
|
|
|
|
tools = tu.run({
|
|
"name": "Tool_Finder_Keyword",
|
|
"arguments": {
|
|
"description": "disease target associations",
|
|
"limit": 5
|
|
}
|
|
})
|
|
|
|
print(f"Found {len(tools)} tools:")
|
|
for idx, tool in enumerate(tools, 1):
|
|
print(f"\n{idx}. {tool['name']}")
|
|
print(f" Description: {tool['description']}")
|
|
|
|
# Example 2: LLM-based search (no GPU required)
|
|
print("\n" + "=" * 60)
|
|
print("Example 2: LLM Search for Protein Structure Tools")
|
|
print("=" * 60)
|
|
|
|
tools = tu.run({
|
|
"name": "Tool_Finder_LLM",
|
|
"arguments": {
|
|
"description": "Find tools for predicting protein structures from sequences",
|
|
"limit": 5
|
|
}
|
|
})
|
|
|
|
print(f"Found {len(tools)} tools:")
|
|
for idx, tool in enumerate(tools, 1):
|
|
print(f"\n{idx}. {tool['name']}")
|
|
print(f" Description: {tool['description']}")
|
|
|
|
# Example 3: Search by specific domain
|
|
print("\n" + "=" * 60)
|
|
print("Example 3: Search for Cheminformatics Tools")
|
|
print("=" * 60)
|
|
|
|
tools = tu.run({
|
|
"name": "Tool_Finder_Keyword",
|
|
"arguments": {
|
|
"description": "molecular docking SMILES compound",
|
|
"limit": 5
|
|
}
|
|
})
|
|
|
|
print(f"Found {len(tools)} tools:")
|
|
for idx, tool in enumerate(tools, 1):
|
|
print(f"\n{idx}. {tool['name']}")
|
|
print(f" Description: {tool['description']}")
|
|
|
|
# Example 4: Get detailed tool information
|
|
print("\n" + "=" * 60)
|
|
print("Example 4: Get Tool Details")
|
|
print("=" * 60)
|
|
|
|
if tools:
|
|
tool_name = tools[0]['name']
|
|
print(f"Getting details for: {tool_name}")
|
|
|
|
tool_info = tu.get_tool_info(tool_name)
|
|
print(f"\nTool: {tool_info['name']}")
|
|
print(f"Description: {tool_info['description']}")
|
|
print(f"Parameters: {tool_info.get('parameters', 'No parameters listed')}")
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|