Duibonduil's picture
Upload 2 files
1c91979 verified
import asyncio
import os
import uuid
from dotenv import load_dotenv
from aworld import trace
from examples.debate.agent.debate_agent import DebateAgent
from examples.debate.agent.main import DebateArena
from examples.debate.agent.moderator_agent import ModeratorAgent
from examples.debate.agent.prompts import generate_opinions_prompt
from aworld.config import AgentConfig
from aworld.output import WorkSpace
if __name__ == '__main__':
load_dotenv()
trace.configure()
base_config = {
"llm_provider": "openai",
"llm_model_name": os.environ['LLM_MODEL_NAME'],
"llm_base_url": os.environ['LLM_BASE_URL'],
"llm_api_key": os.environ['LLM_API_KEY'],
}
agentConfig = AgentConfig.model_validate(base_config)
agent1 = DebateAgent(name="affirmativeSpeaker", stance="affirmative", conf=AgentConfig.model_validate(base_config))
agent2 = DebateAgent(name="negativeSpeaker", stance="negative", conf=AgentConfig.model_validate(base_config))
moderator_agent = ModeratorAgent(
conf=AgentConfig.model_validate(base_config | {
"name": "moderator_agent",
"agent_prompt": generate_opinions_prompt
})
)
debate_arena = DebateArena(affirmative_speaker=agent1, negative_speaker=agent2, moderator=moderator_agent,
workspace=WorkSpace.from_local_storages(str(uuid.uuid4())))
async def start_debate(debate_arena, topic, rounds):
speeches = debate_arena.async_run(topic=topic, rounds=rounds)
async for speech in speeches:
if speech.parts:
async for part in speech.parts:
print(part.content, flush=True, end="")
print(f"{speech.name}: {speech.content}")
asyncio.run(start_debate(debate_arena, topic="张居正", rounds=3))