123456789101112131415161718192021222324252627282930313233343536373839 |
- from typing import Iterator, List
- from qwen_agent.agents.assistant import Assistant
- from qwen_agent.agents.write_from_scratch import WriteFromScratch
- from qwen_agent.agents.writing import ContinueWriting
- from qwen_agent.llm.schema import ASSISTANT, CONTENT, Message
- class ArticleAgent(Assistant):
- """This is an agent for writing articles.
- It can write a thematic essay or continue writing an article based on reference materials
- """
- def _run(self,
- messages: List[Message],
- lang: str = 'en',
- full_article: bool = False,
- **kwargs) -> Iterator[List[Message]]:
- # Need to use Memory agent for data management
- *_, last = self.mem.run(messages=messages, **kwargs)
- _ref = last[-1][CONTENT]
- response = []
- if _ref:
- response.append(Message(ASSISTANT, f'>\n> Search for relevant information: \n{_ref}\n'))
- yield response
- if full_article:
- writing_agent = WriteFromScratch(llm=self.llm)
- else:
- writing_agent = ContinueWriting(llm=self.llm)
- response.append(Message(ASSISTANT, '>\n> Writing Text: \n'))
- yield response
- for rsp in writing_agent.run(messages=messages, lang=lang, knowledge=_ref):
- if rsp:
- yield response + rsp
|