main.py 1.6 KB

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