main.py 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. import asyncio
  2. import argparse
  3. from typing import Type
  4. import agenthub # noqa F401 (we import this to get the agents registered)
  5. from opendevin.agent import Agent
  6. from opendevin.controller import AgentController
  7. from opendevin.llm.llm import LLM
  8. if __name__ == "__main__":
  9. parser = argparse.ArgumentParser(description="Run an agent with a specific task")
  10. parser.add_argument(
  11. "-d",
  12. "--directory",
  13. required=True,
  14. type=str,
  15. help="The working directory for the agent",
  16. )
  17. parser.add_argument(
  18. "-t",
  19. "--task",
  20. required=True,
  21. type=str,
  22. help="The task for the agent to perform",
  23. )
  24. parser.add_argument(
  25. "-c",
  26. "--agent-cls",
  27. default="LangchainsAgent",
  28. type=str,
  29. help="The agent class to use",
  30. )
  31. parser.add_argument(
  32. "-m",
  33. "--model-name",
  34. default="gpt-4-0125-preview",
  35. type=str,
  36. help="The (litellm) model name to use",
  37. )
  38. parser.add_argument(
  39. "-i",
  40. "--max-iterations",
  41. default=100,
  42. type=int,
  43. help="The maximum number of iterations to run the agent",
  44. )
  45. args = parser.parse_args()
  46. print(f"Running agent {args.agent_cls} (model: {args.model_name}, directory: {args.directory}) with task: \"{args.task}\"")
  47. llm = LLM(args.model_name)
  48. AgentCls: Type[Agent] = Agent.get_cls(args.agent_cls)
  49. agent = AgentCls(llm=llm)
  50. controller = AgentController(agent, workdir=args.directory, max_iterations=args.max_iterations)
  51. asyncio.run(controller.start_loop(args.task))