| import os | |
| from dotenv import load_dotenv | |
| from evoagentx.models import OpenAILLMConfig, OpenAILLM | |
| from evoagentx.workflow import WorkFlowGenerator, WorkFlowGraph, WorkFlow | |
| from evoagentx.agents import AgentManager | |
| from evoagentx.tools.file_tool import FileToolkit | |
| from evoagentx.tools import ArxivToolkit | |
| load_dotenv() | |
| OPENAI_API_KEY = os.getenv("OPENAI_API_KEY") | |
| def main(): | |
| openai_config = OpenAILLMConfig( | |
| model="gpt-4o", | |
| openai_key=OPENAI_API_KEY, | |
| stream=True, | |
| output_response=True, | |
| max_tokens=16000 | |
| ) | |
| llm = OpenAILLM(config=openai_config) | |
| keywords = "medical, multiagent" | |
| max_results = 10 | |
| date_from = "2024-01-01" | |
| categories = ["cs.AI", "cs.LG"] | |
| search_constraints = f""" | |
| Search constraints: | |
| - Query keywords: {keywords} | |
| - Max results: {max_results} | |
| - Date from: {date_from} | |
| - Categories: {', '.join(categories)} | |
| """ | |
| goal = f"""Create a daily research paper recommendation assistant that takes user keywords and pushes new relevant papers with summaries. | |
| The assistant should: | |
| 1. Use the ArxivToolkit to search for the latest papers using the given keywords. | |
| 2. Apply the following search constraints: | |
| {search_constraints} | |
| 3. Summarize the search results. | |
| 4. Compile the summaries into a well-formatted Markdown digest. | |
| ### Output | |
| daily_paper_digest | |
| """ | |
| target_directory = "EvoAgentX/examples/output/paper_push" | |
| module_save_path = os.path.join(target_directory, "paper_push_workflow.json") | |
| result_path = os.path.join(target_directory, "daily_paper_digest.md") | |
| os.makedirs(target_directory, exist_ok=True) | |
| arxiv_toolkit = ArxivToolkit() | |
| tools = [arxiv_toolkit, FileToolkit()] | |
| wf_generator = WorkFlowGenerator(llm=llm, tools=tools) | |
| workflow_graph: WorkFlowGraph = wf_generator.generate_workflow(goal=goal) | |
| workflow_graph.save_module(module_save_path) | |
| workflow_graph.display() | |
| agent_manager = AgentManager(tools=tools) | |
| agent_manager.add_agents_from_workflow(workflow_graph, llm_config=openai_config) | |
| workflow = WorkFlow(graph=workflow_graph, agent_manager=agent_manager, llm=llm) | |
| output = workflow.execute() | |
| with open(result_path, "w", encoding="utf-8") as f: | |
| f.write(output) | |
| print(f"✅ Your file has been saved to:{result_path}") | |
| print("📬 You can run this script everyday to obtain daily recommendation") | |
| if __name__ == "__main__": | |
| main() | |