| 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() |
|
|