| 34 | |
| 35 | |
| 36 | class Agent: |
| 37 | def __init__(self, base_model: str, search_engine: str, browser: Browser = None): |
| 38 | if not base_model: |
| 39 | raise ValueError("base_model is required") |
| 40 | |
| 41 | self.logger = Logger() |
| 42 | |
| 43 | """ |
| 44 | Accumulate contextual keywords from chained prompts of all preparation agents |
| 45 | """ |
| 46 | self.collected_context_keywords = [] |
| 47 | |
| 48 | """ |
| 49 | Agents |
| 50 | """ |
| 51 | self.planner = Planner(base_model=base_model) |
| 52 | self.researcher = Researcher(base_model=base_model) |
| 53 | self.formatter = Formatter(base_model=base_model) |
| 54 | self.coder = Coder(base_model=base_model) |
| 55 | self.action = Action(base_model=base_model) |
| 56 | self.internal_monologue = InternalMonologue(base_model=base_model) |
| 57 | self.answer = Answer(base_model=base_model) |
| 58 | self.runner = Runner(base_model=base_model) |
| 59 | self.feature = Feature(base_model=base_model) |
| 60 | self.patcher = Patcher(base_model=base_model) |
| 61 | self.reporter = Reporter(base_model=base_model) |
| 62 | self.decision = Decision(base_model=base_model) |
| 63 | |
| 64 | self.project_manager = ProjectManager() |
| 65 | self.agent_state = AgentState() |
| 66 | self.engine = search_engine |
| 67 | self.tokenizer = tiktoken.get_encoding("cl100k_base") |
| 68 | |
| 69 | async def open_page(self, project_name, url): |
| 70 | browser = await Browser().start() |
| 71 | |
| 72 | await browser.go_to(url) |
| 73 | _, raw = await browser.screenshot(project_name) |
| 74 | data = await browser.extract_text() |
| 75 | await browser.close() |
| 76 | |
| 77 | return browser, raw, data |
| 78 | |
| 79 | def search_queries(self, queries: list, project_name: str) -> dict: |
| 80 | results = {} |
| 81 | |
| 82 | knowledge_base = KnowledgeBase() |
| 83 | |
| 84 | if self.engine == "bing": |
| 85 | web_search = BingSearch() |
| 86 | elif self.engine == "google": |
| 87 | web_search = GoogleSearch() |
| 88 | else: |
| 89 | web_search = DuckDuckGoSearch() |
| 90 | |
| 91 | self.logger.info(f"\nSearch Engine :: {self.engine}") |
| 92 | |
| 93 | for query in queries: |