✨ feat(Metaphor.py): add MetaphorToolkit component to langflow toolkit
The MetaphorToolkit component is added to the langflow toolkit. It provides functionality for searching metaphors using the Metaphor API. The component includes three tools: search, get_contents, and find_similar. The search tool allows users to search for metaphors using a query. The get_contents tool retrieves the contents of a webpage based on the ids returned from the search tool. The find_similar tool finds search results similar to a given URL returned from the search tool. The MetaphorToolkit component is still in beta and requires a Metaphor API key to function. The API key is stored securely and can be configured in the field_config of the component. For more information, refer to the documentation: [Metaphor Toolkit Documentation](https://python.langchain.com/docs/integrations/tools/metaphor_search)
This commit is contained in:
parent
d16d916952
commit
38b6831b57
2 changed files with 51 additions and 0 deletions
51
src/backend/langflow/components/toolkits/Metaphor.py
Normal file
51
src/backend/langflow/components/toolkits/Metaphor.py
Normal file
|
|
@ -0,0 +1,51 @@
|
||||||
|
from typing import List, Union
|
||||||
|
from langflow import CustomComponent
|
||||||
|
|
||||||
|
from metaphor_python import Metaphor
|
||||||
|
from langchain.tools import Tool
|
||||||
|
from langchain.agents import tool
|
||||||
|
from langchain.agents.agent_toolkits.base import BaseToolkit
|
||||||
|
|
||||||
|
|
||||||
|
class MetaphorToolkit(CustomComponent):
|
||||||
|
display_name: str = "Metaphor"
|
||||||
|
description: str = "Metaphor Toolkit"
|
||||||
|
documentation = (
|
||||||
|
"https://python.langchain.com/docs/integrations/tools/metaphor_search"
|
||||||
|
)
|
||||||
|
beta = True
|
||||||
|
# api key should be password = True
|
||||||
|
field_config = {
|
||||||
|
"metaphor_api_key": {"display_name": "Metaphor API Key", "password": True},
|
||||||
|
"code": {"advanced": True},
|
||||||
|
}
|
||||||
|
|
||||||
|
def build(
|
||||||
|
self,
|
||||||
|
metaphor_api_key: str,
|
||||||
|
) -> Union[Tool, BaseToolkit]:
|
||||||
|
# If documents, then we need to create a Vectara instance using .from_documents
|
||||||
|
client = Metaphor(api_key=metaphor_api_key)
|
||||||
|
|
||||||
|
@tool
|
||||||
|
def search(query: str):
|
||||||
|
"""Call search engine with a query."""
|
||||||
|
return client.search(query, use_autoprompt=True, num_results=5)
|
||||||
|
|
||||||
|
@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=5)
|
||||||
|
|
||||||
|
return [search, get_contents, find_similar]
|
||||||
0
src/backend/langflow/components/toolkits/__init__.py
Normal file
0
src/backend/langflow/components/toolkits/__init__.py
Normal file
Loading…
Add table
Add a link
Reference in a new issue