| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 |
- """Minimal end-to-end MADF discussion powered by HelloAgents."""
- from app.agent.agent import ModeratorAgent, ParticipantAgent
- from app.agent.memory import SharedMemory
- def _consume(stream):
- return "".join(token for token in stream if token)
- def run_demo(topic="人工智能应该如何参与公共决策?"):
- persona = {
- "name": "林衡",
- "title": "公共政策研究者",
- "bio": "长期研究技术治理、公共参与和算法问责。",
- "theories": ["审议民主", "算法问责", "风险治理"],
- "stance": "技术可以辅助决策,但不能替代公共责任。",
- "system_prompt": "你是公共政策研究者林衡,表达具体、审慎并回应他人。",
- }
- moderator = ModeratorAgent(topic)
- participant = ParticipantAgent(persona["name"], persona, 1, topic)
- memory = SharedMemory(1)
- opening = _consume(moderator.opening([persona]))
- memory.add_message(moderator.name, opening)
- context = memory.get_context_str() + "\n主持人点名请林衡发表观点。"
- thought = participant.think(context) or {"action": "apply_to_speak", "mind": "回应主持人的问题。"}
- speech = _consume(participant.speak(thought, context))
- memory.add_message(participant.name, speech)
- summary = _consume(moderator.periodic_summary(memory.get_messages_for_summary()))
- memory.add_summary(summary)
- closing = _consume(moderator.closing(memory.get_summaries()))
- return {
- "topic": topic,
- "opening": opening,
- "thought": thought,
- "speech": speech,
- "summary": summary,
- "closing": closing,
- }
- if __name__ == "__main__":
- transcript = run_demo()
- for key in ("opening", "speech", "summary", "closing"):
- print(f"\n[{key}]\n{transcript[key]}")
|