main.py 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. import os
  2. import asyncio
  3. import argparse
  4. from typing import Type
  5. import agenthub # noqa F401 (we import this to get the agents registered)
  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=os.getenv("LLM_MODEL") or "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))