mirror of
https://git.mirrors.martin98.com/https://github.com/bytedance/deer-flow
synced 2025-06-04 11:14:06 +08:00
153 lines
4.6 KiB
Python
153 lines
4.6 KiB
Python
# Copyright (c) 2025 Bytedance Ltd. and/or its affiliates
|
|
# SPDX-License-Identifier: MIT
|
|
|
|
"""
|
|
Entry point script for the DeerFlow project.
|
|
"""
|
|
|
|
import argparse
|
|
import asyncio
|
|
|
|
from InquirerPy import inquirer
|
|
|
|
from src.config.questions import BUILT_IN_QUESTIONS, BUILT_IN_QUESTIONS_ZH_CN
|
|
from src.workflow import run_agent_workflow_async
|
|
|
|
|
|
def ask(
|
|
question,
|
|
debug=False,
|
|
max_plan_iterations=1,
|
|
max_step_num=3,
|
|
enable_background_investigation=True,
|
|
):
|
|
"""Run the agent workflow with the given question.
|
|
|
|
Args:
|
|
question: The user's query or request
|
|
debug: If True, enables debug level logging
|
|
max_plan_iterations: Maximum number of plan iterations
|
|
max_step_num: Maximum number of steps in a plan
|
|
enable_background_investigation: If True, performs web search before planning to enhance context
|
|
"""
|
|
asyncio.run(
|
|
run_agent_workflow_async(
|
|
user_input=question,
|
|
debug=debug,
|
|
max_plan_iterations=max_plan_iterations,
|
|
max_step_num=max_step_num,
|
|
enable_background_investigation=enable_background_investigation,
|
|
)
|
|
)
|
|
|
|
|
|
def main(
|
|
debug=False,
|
|
max_plan_iterations=1,
|
|
max_step_num=3,
|
|
enable_background_investigation=True,
|
|
):
|
|
"""Interactive mode with built-in questions.
|
|
|
|
Args:
|
|
enable_background_investigation: If True, performs web search before planning to enhance context
|
|
debug: If True, enables debug level logging
|
|
max_plan_iterations: Maximum number of plan iterations
|
|
max_step_num: Maximum number of steps in a plan
|
|
"""
|
|
# First select language
|
|
language = inquirer.select(
|
|
message="Select language / 选择语言:",
|
|
choices=["English", "中文"],
|
|
).execute()
|
|
|
|
# Choose questions based on language
|
|
questions = (
|
|
BUILT_IN_QUESTIONS if language == "English" else BUILT_IN_QUESTIONS_ZH_CN
|
|
)
|
|
ask_own_option = (
|
|
"[Ask my own question]" if language == "English" else "[自定义问题]"
|
|
)
|
|
|
|
# Select a question
|
|
initial_question = inquirer.select(
|
|
message=(
|
|
"What do you want to know?" if language == "English" else "您想了解什么?"
|
|
),
|
|
choices=[ask_own_option] + questions,
|
|
).execute()
|
|
|
|
if initial_question == ask_own_option:
|
|
initial_question = inquirer.text(
|
|
message=(
|
|
"What do you want to know?"
|
|
if language == "English"
|
|
else "您想了解什么?"
|
|
),
|
|
).execute()
|
|
|
|
# Pass all parameters to ask function
|
|
ask(
|
|
question=initial_question,
|
|
debug=debug,
|
|
max_plan_iterations=max_plan_iterations,
|
|
max_step_num=max_step_num,
|
|
enable_background_investigation=enable_background_investigation,
|
|
)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
# Set up argument parser
|
|
parser = argparse.ArgumentParser(description="Run the Deer")
|
|
parser.add_argument("query", nargs="*", help="The query to process")
|
|
parser.add_argument(
|
|
"--interactive",
|
|
action="store_true",
|
|
help="Run in interactive mode with built-in questions",
|
|
)
|
|
parser.add_argument(
|
|
"--max_plan_iterations",
|
|
type=int,
|
|
default=1,
|
|
help="Maximum number of plan iterations (default: 1)",
|
|
)
|
|
parser.add_argument(
|
|
"--max_step_num",
|
|
type=int,
|
|
default=3,
|
|
help="Maximum number of steps in a plan (default: 3)",
|
|
)
|
|
parser.add_argument("--debug", action="store_true", help="Enable debug logging")
|
|
parser.add_argument(
|
|
"--no-background-investigation",
|
|
action="store_false",
|
|
dest="enable_background_investigation",
|
|
help="Disable background investigation before planning",
|
|
)
|
|
|
|
args = parser.parse_args()
|
|
|
|
if args.interactive:
|
|
# Pass command line arguments to main function
|
|
main(
|
|
debug=args.debug,
|
|
max_plan_iterations=args.max_plan_iterations,
|
|
max_step_num=args.max_step_num,
|
|
enable_background_investigation=args.enable_background_investigation,
|
|
)
|
|
else:
|
|
# Parse user input from command line arguments or user input
|
|
if args.query:
|
|
user_query = " ".join(args.query)
|
|
else:
|
|
user_query = input("Enter your query: ")
|
|
|
|
# Run the agent workflow with the provided parameters
|
|
ask(
|
|
question=user_query,
|
|
debug=args.debug,
|
|
max_plan_iterations=args.max_plan_iterations,
|
|
max_step_num=args.max_step_num,
|
|
enable_background_investigation=args.enable_background_investigation,
|
|
)
|