mirror of
https://gitee.com/wanwujie/deer-flow
synced 2026-04-26 15:24:48 +08:00
feat: add present_file tool
This commit is contained in:
3
backend/src/tools/builtins/__init__.py
Normal file
3
backend/src/tools/builtins/__init__.py
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
from .present_file_tool import present_file_tool
|
||||||
|
|
||||||
|
__all__ = ["present_file_tool"]
|
||||||
24
backend/src/tools/builtins/present_file_tool.py
Normal file
24
backend/src/tools/builtins/present_file_tool.py
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
from langchain.tools import tool
|
||||||
|
|
||||||
|
|
||||||
|
@tool("present_files", parse_docstring=True)
|
||||||
|
def present_file_tool(filepaths: list[str]) -> str:
|
||||||
|
"""Make files visible to the user for viewing and rendering in the client interface.
|
||||||
|
|
||||||
|
When to use the present_files tool:
|
||||||
|
|
||||||
|
- Making any file available for the user to view, download, or interact with
|
||||||
|
- Presenting multiple related files at once
|
||||||
|
- After creating a file that should be presented to the user
|
||||||
|
|
||||||
|
When NOT to use the present_files tool:
|
||||||
|
- When you only need to read file contents for your own processing
|
||||||
|
- For temporary or intermediate files not meant for user viewing
|
||||||
|
|
||||||
|
Args:
|
||||||
|
filepaths: List of absolute file paths to present to the user. **Only** files in `/mnt/user-data/outputs` can be presented.
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
"OK" if the files were presented successfully.
|
||||||
|
"""
|
||||||
|
return "OK"
|
||||||
@@ -2,9 +2,15 @@ from langchain.tools import BaseTool
|
|||||||
|
|
||||||
from src.config import get_app_config
|
from src.config import get_app_config
|
||||||
from src.reflection import resolve_variable
|
from src.reflection import resolve_variable
|
||||||
|
from src.tools.builtins import present_file_tool
|
||||||
|
|
||||||
|
BUILTIN_TOOLS = [
|
||||||
|
present_file_tool,
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
def get_available_tools(groups: list[str] | None = None) -> list[BaseTool]:
|
def get_available_tools(groups: list[str] | None = None) -> list[BaseTool]:
|
||||||
"""Get all available tools from config"""
|
"""Get all available tools from config"""
|
||||||
config = get_app_config()
|
config = get_app_config()
|
||||||
return [resolve_variable(tool.use, BaseTool) for tool in config.tools if groups is None or tool.group in groups]
|
loaded_tools = [resolve_variable(tool.use, BaseTool) for tool in config.tools if groups is None or tool.group in groups]
|
||||||
|
return loaded_tools + BUILTIN_TOOLS
|
||||||
|
|||||||
Reference in New Issue
Block a user