run_infer.sh 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. #!/bin/bash
  2. MODEL_CONFIG=$1
  3. AGENT=$2
  4. EVAL_LIMIT=$3
  5. if [ -z "$AGENT" ]; then
  6. echo "Agent not specified, use default CodeActAgent"
  7. AGENT="CodeActAgent"
  8. fi
  9. # IMPORTANT: Because Agent's prompt changes fairly often in the rapidly evolving codebase of OpenDevin
  10. # We need to track the version of Agent in the evaluation to make sure results are comparable
  11. AGENT_VERSION=v$(poetry run python -c "import agenthub; from opendevin.controller.agent import Agent; print(Agent.get_cls('$AGENT').VERSION)")
  12. echo "AGENT: $AGENT"
  13. echo "AGENT_VERSION: $AGENT_VERSION"
  14. echo "MODEL_CONFIG: $MODEL_CONFIG"
  15. # Default to use Hint
  16. if [ -z "$USE_HINT_TEXT" ]; then
  17. export USE_HINT_TEXT=true
  18. fi
  19. echo "USE_HINT_TEXT: $USE_HINT_TEXT"
  20. EVAL_NOTE="$AGENT_VERSION"
  21. # if not using Hint, add -no-hint to the eval note
  22. if [ "$USE_HINT_TEXT" = false ]; then
  23. EVAL_NOTE="$EVAL_NOTE-no-hint"
  24. fi
  25. unset SANDBOX_ENV_GITHUB_TOKEN # prevent the agent from using the github token to push
  26. COMMAND="poetry run python evaluation/swe_bench/run_infer.py \
  27. --agent-cls $AGENT \
  28. --llm-config $MODEL_CONFIG \
  29. --max-iterations 30 \
  30. --max-chars 10000000 \
  31. --eval-num-workers 8 \
  32. --eval-note $EVAL_NOTE"
  33. if [ -n "$EVAL_LIMIT" ]; then
  34. echo "EVAL_LIMIT: $EVAL_LIMIT"
  35. COMMAND="$COMMAND --eval-n-limit $EVAL_LIMIT"
  36. fi
  37. # Run the command
  38. eval $COMMAND