run.sh 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. #!/bin/bash
  2. set -eo pipefail
  3. SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
  4. CASES_DIR=$SCRIPT_DIR/cases
  5. AGENTHUB_DIR=$SCRIPT_DIR/../../agenthub
  6. # Check if DEBUG variable is already set
  7. if [ -z "${DEBUG}" ]; then
  8. read -p "Enter value for DEBUG (leave blank for default): " debug_value
  9. if [ -n "${debug_value}" ]; then
  10. export DEBUG="${debug_value}"
  11. else
  12. export DEBUG="0"
  13. fi
  14. fi
  15. # Check if OPENAI_API_KEY variable is already set
  16. if [ -z "${OPENAI_API_KEY}" ]; then
  17. read -sp "Enter value for OPENAI_API_KEY: " openai_key
  18. echo
  19. export OPENAI_API_KEY="${openai_key}"
  20. fi
  21. # Get the MODEL variable
  22. read -sp "Enter value for model running agents: " model
  23. echo
  24. if [ -z "$model" ]; then
  25. MODEL="gpt-4-0125-preview"
  26. else
  27. MODEL="$model"
  28. fi
  29. echo "Running with model: $MODEL"
  30. # add python path
  31. export PYTHONPATH="$PYTHONPATH:$SCRIPT_DIR/../../"
  32. # hardcode pairs for directory to python class mapping
  33. declare -A directory_class_pairs=(
  34. [langchains_agent]="LangchainsAgent"
  35. [codeact_agent]="CodeActAgent"
  36. )
  37. # for each agent
  38. for agent_dir in $(find . -type d -name '*agent'); do
  39. agent=$(basename "$agent_dir")
  40. # iterate over cases dir
  41. for case in $(ls $CASES_DIR); do
  42. # run the case
  43. if [[ -n $TEST_CASE && $case != $TEST_CASE ]]; then
  44. continue
  45. fi
  46. echo "Running case: $case"
  47. case_dir=$CASES_DIR/$case
  48. task=$(cat $case_dir/task.txt)
  49. outputs_dir=$case_dir/outputs
  50. agent_dir=$outputs_dir/$agent
  51. echo "agent: $agent_dir"
  52. # create agent dir if not exist
  53. if [ ! -d "$agent_dir" ]; then
  54. mkdir -p $agent_dir
  55. fi
  56. rm -rf $agent_dir/workspace
  57. if [[ -d $case_dir/start ]]; then
  58. cp -r $case_dir/start $agent_dir/workspace
  59. else
  60. mkdir $agent_dir/workspace
  61. fi
  62. python3 $SCRIPT_DIR/../../opendevin/main.py -d $agent_dir/workspace -c ${directory_class_pairs[$agent]} -t "${task}" -m $MODEL | tee $agent_dir/logs.txt
  63. rm -rf $agent_dir/workspace/.git
  64. done
  65. done