From a819ce514e8b02c6bf1415dfaf970e4726fd9eb4 Mon Sep 17 00:00:00 2001 From: ziming <2216646743@qq.com> Date: Thu, 14 Sep 2023 20:15:49 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E8=BE=A9=E8=AE=BA=E6=A8=A1?= =?UTF-8?q?=E7=89=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- debating_tournament.py | 225 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 225 insertions(+) create mode 100644 debating_tournament.py diff --git a/debating_tournament.py b/debating_tournament.py new file mode 100644 index 000000000..e7ab4eff4 --- /dev/null +++ b/debating_tournament.py @@ -0,0 +1,225 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +""" +@Time : 2023/9/20 00:30 +@Author : zhouziming +@File : debating_tourmament.py +""" +import asyncio +import platform +import fire +from pydantic import BaseModel, Field + +from metagpt.actions import BossRequirement +from metagpt.config import CONFIG +from metagpt.environment import Environment +from metagpt.logs import logger +from metagpt.roles import Role +from metagpt.schema import Message +from metagpt.utils.common import NoMoneyException +from metagpt.llm import LLM +def main( + zf:str='人性本善', + ff:str='人性本恶' +): + """ + """ + if platform.system() == "Windows": + asyncio.set_event_loop_policy(asyncio.WindowsSelectorEventLoopPolicy()) + asyncio.run(startup(zf,ff)) + +async def startup(正方辩题:str,反方辩题:str): + llm=LLM() + #一辩环节 + #正方 + prompt=''' + ##角色 + 现在你是一名高水平,有辩论技巧,有强大表达能力的辩手。 + ##要求 + 您的立论题目是{正方辩题}。您的立论稿应该包括明确自己的论点,解释自己论点的含义,然后使用对论点有利的论据来支撑自己的论点。最后使用生活中的示例来论证自己的论点。 + ''' + 正方立论稿=await llm.aask(prompt.format(正方辩题=正方辩题)) + #反方 + prompt=''' + ##角色 + 现在你是一名高水平,有辩论技巧,有强大表达能力的辩手。 + ##要求 + 您的立论题目是{反方辩题}。您的立论稿应该包括明确自己的论点,解释自己论点的含义,然后使用对论点有利的论据来支撑自己的论点。最后使用生活中的示例来论证自己的论点。 + ''' + 反方立论稿=await llm.aask(prompt.format(反方辩题=反方辩题)) + #裁判评价环节 + prompt=''' + ##角色 + 现在你是一名高水平,有辩论技巧辩论赛裁判,根据辩论赛而不是自身立场来评价。 + ##要求 + 你的任务是根据一辩辩手的立论稿对辩手的立论进行评价,指出改进空间。评价应当包括:立论稿内容是否符合辩题、逻辑表达是否清晰、论据是否能够支撑论点、能否结合实际方面进行评价。并在进行中立,客观的评价后,给出自己的评分。评分从A+到C-。 + ##辩题 + {正方辩题} + ##立论稿 + {正方立论稿} + ''' + 正方一辩评价=await llm.aask(prompt.format(正方辩题=正方辩题,正方立论稿=正方立论稿)) + prompt=''' + ##角色 + 现在你是一名高水平,有辩论技巧辩论赛裁判,根据辩论赛而不是自身立场来评价。 + ##要求 + 你的任务是根据一辩辩手的立论稿对辩手的立论进行评价,指出改进空间。评价应当包括:立论稿内容是否符合辩题、逻辑表达是否清晰、论据是否能够支撑论点、能否结合实际方面进行评价。并在进行中立,客观的评价后,给出自己的评分。评分从A+到C-。 + ##辩题 + {反方辩题} + ##立论稿 + {反方立论稿} + ''' + 反方一辩评价=await llm.aask(prompt.format(反方辩题=反方辩题,反方立论稿=反方立论稿)) + #二辩质询环节 + #正方质询 + prompt=''' + ##角色 + 现在你是一名高水平,有辩论技巧,有强大表达能力的辩手。 + ##要求 + 你的任务是,根据自己辩题,针对立论稿提出疑问。疑问内容不超过五条,每条只限一句话。 + ##辩题 + {正方辩题} + ##立论稿 + {反方立论稿} + ''' + 正方质询=await llm.aask(prompt.format(正方辩题=正方辩题,反方立论稿=反方立论稿)) + #反方回答 + prompt=''' + ##角色 + 现在你是一名高水平,有辩论技巧,有强大表达能力的辩手。 + ##要求 + 你的任务是,根据立论稿对对手提出的疑问进行回答。对每个问题的回答应限制在三句话以内。回答内容和疑问应当一一对应。 + ##辩题 + {反方辩题} + ##立论稿 + {反方立论稿} + ##疑问 + {正方质询} + ''' + 反方回答=await llm.aask(prompt.format(反方辩题=反方辩题,反方立论稿=反方立论稿,正方质询=正方质询)) + #反方质询 + prompt=''' + ##角色 + 现在你是一名高水平,有辩论技巧,有强大表达能力的辩手。 + ##要求 + 你的任务是,根据自己辩题,针对立论稿提出疑问。疑问内容不超过五条,每条只限一句话。 + ##辩题 + {反方辩题} + ##立论稿 + {正方立论稿} + ''' + 反方质询=await llm.aask(prompt.format(反方辩题=反方辩题,正方立论稿=正方立论稿)) + #正方回答 + prompt=''' + ##角色 + 现在你是一名高水平,有辩论技巧,有强大表达能力的辩手。 + ##要求 + 你的任务是,根据立论稿对对手提出的疑问进行回答。对每个问题的回答应限制在三句话以内。回答内容和疑问应当一一对应。 + ##辩题 + {正方辩题} + ##立论稿 + {正方立论稿} + ##疑问 + {反方质询} + ''' + 正方回答=await llm.aask(prompt.format(正方辩题=正方辩题,正方立论稿=正方立论稿,反方质询=反方质询)) +if __name__ == '__main__': + fire.Fire(main) +if __name__ == '__main__': + llm=LLM() + 正方辩题='人性本善' + 反方辩题='人性本恶' + #一辩环节 + #正方 + prompt=''' + ##角色 + 现在你是一名高水平,有辩论技巧,有强大表达能力的辩手。 + ##要求 + 您的立论题目是{正方辩题}。您的立论稿应该包括明确自己的论点,解释自己论点的含义,然后使用对论点有利的论据来支撑自己的论点。最后使用生活中的示例来论证自己的论点。 + ''' + 正方立论稿=llm.ask(prompt.format(正方辩题=正方辩题)) + #反方 + prompt=''' + ##角色 + 现在你是一名高水平,有辩论技巧,有强大表达能力的辩手。 + ##要求 + 您的立论题目是{反方辩题}。您的立论稿应该包括明确自己的论点,解释自己论点的含义,然后使用对论点有利的论据来支撑自己的论点。最后使用生活中的示例来论证自己的论点。 + ''' + 反方立论稿=llm.ask(prompt.format(反方辩题=反方辩题)) + #裁判评价环节 + prompt=''' + ##角色 + 现在你是一名高水平,有辩论技巧辩论赛裁判,根据辩论赛而不是自身立场来评价。 + ##要求 + 你的任务是根据一辩辩手的立论稿对辩手的立论进行评价,指出改进空间。评价应当包括:立论稿内容是否符合辩题、逻辑表达是否清晰、论据是否能够支撑论点、能否结合实际方面进行评价。并在进行中立,客观的评价后,给出自己的评分。评分从A+到C-。 + ##辩题 + {正方辩题} + ##立论稿 + {正方立论稿} + ''' + 正方一辩评价=llm.ask(prompt.format(正方辩题=正方辩题,正方立论稿=正方立论稿)) + prompt=''' + ##角色 + 现在你是一名高水平,有辩论技巧辩论赛裁判,根据辩论赛而不是自身立场来评价。 + ##要求 + 你的任务是根据一辩辩手的立论稿对辩手的立论进行评价,指出改进空间。评价应当包括:立论稿内容是否符合辩题、逻辑表达是否清晰、论据是否能够支撑论点、能否结合实际方面进行评价。并在进行中立,客观的评价后,给出自己的评分。评分从A+到C-。 + ##辩题 + {反方辩题} + ##立论稿 + {反方立论稿} + ''' + 反方一辩评价=llm.ask(prompt.format(反方辩题=反方辩题,反方立论稿=反方立论稿)) + #二辩质询环节 + #正方质询 + prompt=''' + ##角色 + 现在你是一名高水平,有辩论技巧,有强大表达能力的辩手。 + ##要求 + 你的任务是,根据自己辩题,针对立论稿提出疑问。疑问内容不超过五条,每条只限一句话。 + ##辩题 + {正方辩题} + ##立论稿 + {反方立论稿} + ''' + 正方质询=llm.ask(prompt.format(正方辩题=正方辩题,反方立论稿=反方立论稿)) + #反方回答 + prompt=''' + ##角色 + 现在你是一名高水平,有辩论技巧,有强大表达能力的辩手。 + ##要求 + 你的任务是,根据立论稿对对手提出的疑问进行回答。对每个问题的回答应限制在三句话以内。回答内容和疑问应当一一对应。 + ##辩题 + {反方辩题} + ##立论稿 + {反方立论稿} + ##疑问 + {正方质询} + ''' + 反方回答=llm.ask(prompt.format(反方辩题=反方辩题,反方立论稿=反方立论稿,正方质询=正方质询)) + #反方质询 + prompt=''' + ##角色 + 现在你是一名高水平,有辩论技巧,有强大表达能力的辩手。 + ##要求 + 你的任务是,根据自己辩题,针对立论稿提出疑问。疑问内容不超过五条,每条只限一句话。 + ##辩题 + {反方辩题} + ##立论稿 + {正方立论稿} + ''' + 反方质询=llm.ask(prompt.format(正方辩题=正方辩题,反方立论稿=反方立论稿)) + #正方回答 + prompt=''' + ##角色 + 现在你是一名高水平,有辩论技巧,有强大表达能力的辩手。 + ##要求 + 你的任务是,根据立论稿对对手提出的疑问进行回答。对每个问题的回答应限制在三句话以内。回答内容和疑问应当一一对应。 + ##辩题 + {正方辩题} + ##立论稿 + {正方立论稿} + ##疑问 + {反方质询} + ''' + 正方回答=llm.ask(prompt.format(反方辩题=反方辩题,反方立论稿=反方立论稿,正方质询=正方质询)) +