mirror of
https://gitee.com/wanwujie/deer-flow
synced 2026-04-04 06:32:13 +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.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]:
|
||||
"""Get all available tools from 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