article_agent.py 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. from typing import Iterator, List
  2. from qwen_agent.agents.assistant import Assistant
  3. from qwen_agent.agents.write_from_scratch import WriteFromScratch
  4. from qwen_agent.agents.writing import ContinueWriting
  5. from qwen_agent.llm.schema import ASSISTANT, CONTENT, Message
  6. class ArticleAgent(Assistant):
  7. """This is an agent for writing articles.
  8. It can write a thematic essay or continue writing an article based on reference materials
  9. """
  10. def _run(self,
  11. messages: List[Message],
  12. lang: str = 'en',
  13. full_article: bool = False,
  14. **kwargs) -> Iterator[List[Message]]:
  15. # Need to use Memory agent for data management
  16. *_, last = self.mem.run(messages=messages, **kwargs)
  17. _ref = last[-1][CONTENT]
  18. response = []
  19. if _ref:
  20. response.append(Message(ASSISTANT, f'>\n> Search for relevant information: \n{_ref}\n'))
  21. yield response
  22. if full_article:
  23. writing_agent = WriteFromScratch(llm=self.llm)
  24. else:
  25. writing_agent = ContinueWriting(llm=self.llm)
  26. response.append(Message(ASSISTANT, '>\n> Writing Text: \n'))
  27. yield response
  28. for rsp in writing_agent.run(messages=messages, lang=lang, knowledge=_ref):
  29. if rsp:
  30. yield response + rsp