Tai Truong
fix readme
d202ada
from langchain_core.tools import tool
from metaphor_python import Metaphor
from langflow.custom import Component
from langflow.field_typing import Tool
from langflow.io import BoolInput, IntInput, Output, SecretStrInput
class ExaSearchToolkit(Component):
display_name = "Exa Search"
description = "Exa Search toolkit for search and content retrieval"
documentation = "https://python.langchain.com/docs/integrations/tools/metaphor_search"
beta = True
name = "ExaSearch"
icon = "ExaSearch"
inputs = [
SecretStrInput(
name="metaphor_api_key",
display_name="Exa Search API Key",
password=True,
),
BoolInput(
name="use_autoprompt",
display_name="Use Autoprompt",
value=True,
),
IntInput(
name="search_num_results",
display_name="Search Number of Results",
value=5,
),
IntInput(
name="similar_num_results",
display_name="Similar Number of Results",
value=5,
),
]
outputs = [
Output(name="tools", display_name="Tools", method="build_toolkit"),
]
def build_toolkit(self) -> Tool:
client = Metaphor(api_key=self.metaphor_api_key)
@tool
def search(query: str):
"""Call search engine with a query."""
return client.search(query, use_autoprompt=self.use_autoprompt, num_results=self.search_num_results)
@tool
def get_contents(ids: list[str]):
"""Get contents of a webpage.
The ids passed in should be a list of ids as fetched from `search`.
"""
return client.get_contents(ids)
@tool
def find_similar(url: str):
"""Get search results similar to a given URL.
The url passed in should be a URL returned from `search`
"""
return client.find_similar(url, num_results=self.similar_num_results)
return [search, get_contents, find_similar]