For the complete documentation index, see llms.txt. This page is also available as Markdown.

Representing debates

Debates have turns, turns have authors and messages

We’ll represent debates as lists of turns. Each turn has the name of an agent and a message from that agent. For example, including some types:

debate/types.py
Name = str
Message = str
Turn = tuple[Name, Message]
Debate = list[Turn]

my_debate: Debate = [
    ("Alice", "I think we should legalize all drugs."),
    ("Bob", "I'm against."),
    ("Alice", "The war on drugs has been a failure. It's time to try something new."),
]

Here’s how we’ll initialize and render debates:

debate/utils.py
from typing import Optional

from fvalues import F

from ice.recipes.primer.debate.types import *


def initialize_debate(question: Message) -> Debate:
    return [
        ("Question", question),
        ("Alice", "I'm in favor."),
        ("Bob", "I'm against."),
    ]


def render_debate(debate: Debate, self_name: Optional[Name] = None) -> str:
    debate_text = ""
    for speaker, text in debate:
        if speaker == self_name:
            speaker = "You"
        debate_text += F(f'{speaker}: "{text}"\n')
    return debate_text.strip()

When we render debates, we also provide the option to replace an agent name with “You”, like this:

This will help us with prompts!

Last updated