"""
Augmentoolkit Dataset Creation - CPU Space
Generates synthetic Q&A training datasets from text using LLM APIs.
Based on https://github.com/e-p-armstrong/augmentoolkit
"""
import asyncio
import json
import os
import random
import re
import shutil
import sys
import tempfile
import traceback
from collections import defaultdict
import nltk
from openai import AsyncOpenAI
from httpx import Timeout
nltk.download("punkt_tab", quiet=True)
nltk.download("punkt", quiet=True)
from nltk.tokenize import sent_tokenize
# ---------------------------------------------------------------------------
# Utilities
# ---------------------------------------------------------------------------
def strip_think_tags(text):
"""Strip ... reasoning blocks from LLM output."""
if not text:
return text
# Extract content after last
idx = text.rfind("")
if idx != -1:
text = text[idx + 8:]
elif text.lstrip().startswith(""):
return ""
return re.sub(r"?think>", "", text).strip()
# ---------------------------------------------------------------------------
# Safe formatter (from augmentoolkit)
def safe_format(format_string, **kwargs):
"""Replace {key} placeholders with values, leaving unknown keys untouched.
Uses simple string replacement to avoid issues with format specifiers in prompt text."""
result = format_string
for key, value in kwargs.items():
result = result.replace("{" + key + "}", str(value))
return result
# ---------------------------------------------------------------------------
# Sentence-aware text chunking (from augmentoolkit chunking.py)
# ---------------------------------------------------------------------------
def sentence_chunk_text(text: str, chunk_size: int = 3000) -> list[str]:
"""Split text into chunks at sentence boundaries, targeting chunk_size chars."""
sentences = sent_tokenize(text)
chunks = []
current_chunk = ""
for sentence in sentences:
if len(current_chunk) + len(sentence) + 1 > chunk_size and current_chunk:
chunks.append(current_chunk.strip())
current_chunk = sentence
else:
current_chunk = current_chunk + " " + sentence if current_chunk else sentence
if current_chunk.strip():
chunks.append(current_chunk.strip())
return [c for c in chunks if len(c.split()) >= 15] # skip very short chunks
# ---------------------------------------------------------------------------
# Pipeline error (decoupled from Gradio for CLI compatibility)
# ---------------------------------------------------------------------------
class PipelineError(Exception):
"""Raised by run_pipeline when input is invalid or pipeline fails."""
pass
# ---------------------------------------------------------------------------
# LLM Engine (functions only, no class)
# ---------------------------------------------------------------------------
def create_engine(model: str, api_key: str, base_url: str) -> dict:
"""Create an engine config with an OpenAI client."""
return {
"model": model,
"client": AsyncOpenAI(
timeout=Timeout(timeout=300.0, connect=10.0, read=120.0, write=30.0, pool=10.0),
api_key=api_key,
base_url=base_url,
),
}
async def submit_chat(engine: dict, messages: list[dict], sampling_params: dict) -> tuple[str, bool]:
"""Submit a chat completion. Returns (text, timed_out)."""
completion, timed_out = "", False
try:
stream = await engine["client"].chat.completions.create(
model=engine["model"],
messages=messages,
temperature=sampling_params.get("temperature", 0.7),
top_p=sampling_params.get("top_p", 1.0),
stop=sampling_params.get("stop", None),
max_tokens=sampling_params.get("max_tokens", 2000),
stream=True,
timeout=300,
)
async for chunk in stream:
try:
if chunk.choices[0].delta.content:
completion += chunk.choices[0].delta.content
except Exception:
pass
except Exception as e:
print(f"Generation error: {e}")
timed_out = True
return completion, timed_out
# ---------------------------------------------------------------------------
# Prompt templates (faithfully adapted from augmentoolkit prompts)
# ---------------------------------------------------------------------------
JUDGE_PARAGRAPH_MESSAGES = [
{
"role": "system",
"content": (
"You are an expert educational AI that will make a determination as to whether the contents of the "
"paragraph(s) provided are suitable for making educational questions based off of them; these questions "
"should be able to test the knowledge in in the book. If there is sufficiently deep information to make "
"questions about, you will judge it suitable, even if the knowledge being tested does not reflect typical "
"curricula. Essentially: you will determine if provided text is a table of contents, introductory "
"paragraph for a book, etc., or if it actually contains real information that would be worthy to teach "
"and make questions for an examination from. Your task includes first analyzing the text, thinking "
"through whether or not good questions can be made from it. \n\n"
"End-of-chapter exercises, or questions that appear in the text BUT DO NOT HAVE A PROVIDED ANSWER, are "
"not suitable for question generation, since it should be assumed that the creator of the questions must "
"rely on the information in the text to get their answers.\n\n"
"Tables of contents are not suited for educational questions.\n\n\n"
"Following this, at the very end of your response, you will write \"Suitable\" or \"Not suitable\". "
"It is imperative that you write one of these two things, as your answer is being automatically "
"processed by a regex, so it must match one of those two strings exactly."
),
},
{
"role": "user",
"content": (
"Text: \n\"\"\"\nThe Project Gutenberg eBook of Through England on a side saddle\n \n"
"This ebook is for the use of anyone anywhere in the United States and\n"
"most other parts of the world at no cost and with almost no restrictions\n"
"whatsoever. You may copy it, give it away or re-use it under the terms\n"
"of the Project Gutenberg License included with this ebook or online\n"
"at www.gutenberg.org. If you are not located in the United States,\n"
"you will have to check the laws of the country where you are located\n"
"before using this eBook.\n\n"
"Title: Through England on a side saddle\n"
" In the time of William and Mary\n\n\n"
"Author: Celia Fiennes\n\n"
"Contributor: Emily W. Griffiths\n\n"
"Release date: November 17, 2023 [eBook #72156]\n\n"
"Language: English\n\n"
"Original publication: London: Simpkin, Marshall & Co.; Hamilton, Adams & Co, 1888\n\n"
"Credits: Steve Mattern, Barry Abrahamsen, and the Online Distributed Proofreading Team "
"at https://www.pgdp.net (This book was produced from images made available by the "
"HathiTrust Digital Library.)\n\n\n"
"*** START OF THE PROJECT GUTENBERG EBOOK THROUGH ENGLAND ON A SIDE SADDLE ***\n\n\n\n\n"
" Through England\n\n"
" On a Side Saddle\n\n\n"
" IN THE TIME OF WILLIAM AND MARY\n\n\n"
" BEING THE DIARY OF\n\n"
" _CELIA FIENNES._\n\n\n"
" --------------\n\n\n"
" WITH AN INTRODUCTION BY\n\n"
" THE HON. MRS GRIFFITHS.\n\n\n\n\n"
" ---------------------\n\n\n\n\n"
" _LONDON:\n"
" Field & Tuer, The Leadenhall Press, E.C.\n"
" Simpkin, Marshall & Co.; Hamilton, Adams & Co._\n\n"
" ----------\n\n"
" _New York: Scribner & Welford, 743 & 745, Broadway._\n\n"
" --\n\n"
" 1888\n\n\n"
"------------------------------------------------------------------------\n\"\"\""
),
},
{
"role": "assistant",
"content": (
"## Reasoning and thought process:\n"
"Step 1. Identify Paragraph Content: This paragraph is from the introductory section of "
"\"Through England on a Side Saddle\" by Celia Fiennes, including copyright and publication information.\n"
"Step 2. Evaluate Educational Relevance: The paragraph contains legal, copyright, and publication "
"information specific to the book's distribution and not its content.\n"
"Step 3. Assess Specific Contexts and Formats:\n"
" - Purely Descriptive Lists: The paragraph is a descriptive list of publication details without "
"educational content.\n"
" - Dialogues or Quotes Without Context: Not applicable.\n"
" - Ambiguous or Unclear Texts: The text is clear but lacks educational substance.\n"
"Step 4. Assess the Possibility of Formulating Questions: The paragraph's content does not lend itself "
"to educational questions due to its focus on publication rather than substantive content.\n"
"Step 5. Final Judgment: Unsuitable for educational questions."
),
},
{
"role": "user",
"content": (
"Text:\n\"\"\"\n\n"
"1. Apples, 2. Oranges, 3. Bananas, 4. Grapes, 5. Papayas, 6. Pomegranates, 7. Cherries. "
"Sarah wandered through the market. Amidst her thoughts, she overheard a conversation:\n\n"
"\"Did you hear about the mayor's decision?\" asked John.\n"
"\"It's quite surprising, isn't it?\" replied Emily, her voice tinged with disbelief.\n"
"\"I know, right? But what can we do?\" John sighed.\n\n"
"Sarah continued her shopping, her mind now on the mayor's mysterious decision.\n\"\"\"\n\n"
"Note that even blunt facts can be suitable for questions, and unconventional knowledge is not "
"necessarily unsuitable. Fictional stories that contain strong morals or philosophy can also have "
"good questions made from them. But legal notices, metadata, and tables of contents are not suitable. "
"Lists of information without the context needed for the question-maker to understand the text; quotes "
"or dialogues without context or clear depth; or ambiguous content that isn't precise enough to "
"\"nail down\" a solid question from, are not valid."
),
},
{
"role": "assistant",
"content": (
"## Reasoning and thought process:\n"
"Step 1. Identify Paragraph Content: The paragraph appears to be from a narrative, including a list "
"and a snippet of overheard conversation.\n"
"Step 2. Evaluate Educational Relevance: The paragraph contains a simple list of fruits and an "
"unrelated, context-less dialogue, offering little educational substance.\n"
"Step 3. Assess Specific Contexts and Formats:\n"
" - Purely Descriptive Lists: The list is purely descriptive, providing no educational context or "
"analytical significance. Further, there's no context about what it could be about.\n"
" - Dialogues or Quotes Without Context: The conversation about the mayor's decision lacks context "
"and background, making it difficult to derive any educational content.\n"
" - Ambiguous or Unclear Texts: While not ambiguous, the paragraph's content does not contribute to "
"a clear narrative or concept that has philosophical or educational relevance.\n"
"Step 4. Assess the Possibility of Formulating Questions: Due to the lack of contextual or thematic "
"depth, formulating educational questions from this paragraph is challenging.\n"
"Step 5. Final Judgment: Unsuitable for educational questions."
),
},
{
"role": "user",
"content": (
"Text:\n\"\"\"\n"
"If, then, we represent our earth as a little ball of one inch diameter, the sun would be a big globe "
"nine feet across and 323 yards away, that is about a fifth of a mile, four or five minutes' walking. "
"The moon would be a small pea two feet and a half from the world. Between earth and sun there would "
"be the two inner planets, Mercury and Venus, at distances of one hundred and twenty-five and two "
"hundred and fifty yards from the sun. All round and about these bodies there would be emptiness "
"until you came to Mars, a hundred and seventy-five feet beyond the earth; Jupiter nearly a mile away, "
"a foot in diameter; Saturn, a little smaller, two miles off; Uranus four miles off and Neptune six "
"miles off. Then nothingness and nothingness except for small particles and drifting scraps of "
"attenuated vapour for thousands of miles.\n\"\"\"\n\n"
"Note that even blunt facts can be suitable for questions, and unconventional knowledge is not "
"necessarily unsuitable. Fictional stories that contain strong morals or philosophy can also have "
"good questions made from them. But legal notices, metadata, and tables of contents are not suitable. "
"Lists of information without the context needed for the question-maker to understand the text; quotes "
"or dialogues without context or clear depth; or ambiguous content that isn't precise enough to "
"\"nail down\" a solid question from, are not valid."
),
},
{
"role": "assistant",
"content": (
"## Reasoning and thought process:\n"
"Step 1. Identify Paragraph Content: This describes a scale model of the solar system.\n"
"Step 2. Evaluate Educational Relevance: The paragraph contains analogies and information about the "
"solar system's scale and distances between celestial bodies.\n"
"Step 3. Assess Specific Contexts and Formats:\n"
" - Purely Descriptive Lists: While the paragraph lists celestial bodies and their distances, it does "
"so to illustrate a scientific concept, providing educational value.\n"
" - Dialogues or Quotes Without Context: Not applicable.\n"
" - Ambiguous or Unclear Texts: The paragraph is clear and offers a concrete concept in astronomy.\n"
"Step 4. Assess the Possibility of Formulating Questions: The content enables the creation of "
"educational questions about astronomy, scale, and the solar system's structure.\n"
"Step 5. Final Judgment: Suitable for educational questions."
),
},
{
"role": "user",
"content": (
"Text:\n\"\"\"\n"
"In the world of science, there are countless mysteries and phenomena that elude easy explanation. "
"For instance, certain forces and energies interact in ways that are not fully understood, shaping the "
"universe in subtle and profound manners. These interactions often occur at levels beyond human "
"perception, leaving much to speculation and theory. Various scientific disciplines attempt to explain "
"these interactions, each offering unique perspectives but often lacking definitive answers. The "
"vastness of these mysteries spans from the minuscule quantum realm to the expansive cosmos, hinting "
"at complexities that challenge our current understanding.\n\"\"\"\n\n"
"Note that even blunt facts can be suitable for questions, and unconventional knowledge is not "
"necessarily unsuitable. Fictional stories that contain strong morals or philosophy can also have "
"good questions made from them. But legal notices, metadata, and tables of contents are not suitable. "
"Lists of information without the context needed for the question-maker to understand the text; quotes "
"or dialogues without context or clear depth; or ambiguous content that isn't precise enough to "
"\"nail down\" a solid question from, are not valid."
),
},
{
"role": "assistant",
"content": (
"## Reasoning and thought process:\n"
"Step 1. Identify Paragraph Content: The paragraph discusses the complexity and mystery of scientific "
"phenomena, mentioning interactions of forces and energies in the universe.\n"
"Step 2. Evaluate Educational Relevance: The paragraph touches on scientific themes and makes a number "
"of broad claims.\n"
"Step 3. Assess Specific Contexts and Formats:\n"
" - Purely Descriptive Lists: Not applicable.\n"
" - Dialogues or Quotes Without Context: Not applicable.\n"
" - Ambiguous or Unclear Texts: The text is ambiguous and lacks clarity. It refers to scientific "
"phenomena and theories without providing specific examples or concrete information, making it "
"difficult to derive clear educational questions.\n"
"Step 4. Assess the Possibility of Formulating Questions: Due to its vagueness and lack of specific "
"content, the paragraph does not lend itself well to formulating meaningful educational questions.\n"
"Step 5. Final Judgment: Unsuitable for educational questions due to its ambiguous and unclear content."
),
},
{
"role": "user",
"content": (
"Text:\n\"\"\"\n"
"The Brussels Conference on the subject 95\n\n"
"Illustrations of barbarous reprisals 97\n\n"
"Instances of non-retaliation 98\n\n"
"Savage reprisals in days of chivalry 100\n\n"
"Hanging the commonest reprisals for a brave defence 101\n\n"
"As illustrated by the warfare of the fifteenth century 102\n\n"
"Survival of the custom to our own times 104\n\n"
"The massacre of a conquered garrison still a law of war 105\n\n"
"The shelling of Strasburg by the Germans 106\n\n"
"Brutal warfare of Alexander the Great 107\n\n"
"The connection between bravery and cruelty 110\n\n"
"The abolition of slavery in its effects on war 112\n\n"
"The storming of Magdeburg, Brescia, and Rome 112\n\n"
"Cicero on Roman warfare 114\n\n"
"The reprisals of the Germans in France in 1870 115\n\n"
"Their revival of the custom of taking hostages 117\n\n"
"Their resort to robbery as a plea of reprisals 118\n\n"
"General Von Moltke on perpetual peace 119\n\n"
"The moral responsibility of the military profession 121\n\"\"\"\n\n"
"Note that even blunt facts can be suitable for questions, and unconventional knowledge is not "
"necessarily unsuitable. Fictional stories that contain strong morals or philosophy can also have "
"good questions made from them. But legal notices, metadata, and tables of contents are not suitable. "
"Lists of information without the context needed for the question-maker to understand the text; quotes "
"or dialogues without context or clear depth; or ambiguous content that isn't precise enough to "
"\"nail down\" a solid question from, are not valid."
),
},
{
"role": "assistant",
"content": (
"## Reasoning and thought process:\n"
"Step 1. Identify Paragraph Content: The given text lists various war-related events and headings, "
"as well as numbers. It may be assumed that this is a table of contents.\n"
"Step 2. Evaluate Educational Relevance: The paragraph simply lists events, without any supporting "
"detail behind them.\n"
"Step 3. Assess Specific Contexts and Formats:\n"
" - Purely Descriptive Lists: Applicable. This is a list of sections in a book.\n"
" - Dialogues or Quotes Without Context: Not applicable.\n"
" - Ambiguous or Unclear Texts: The text is ambiguous and lacks clarity. It refers to scientific "
"phenomena and theories without providing specific examples or concrete information, making it "
"difficult to derive clear educational questions.\n"
"Step 4. Assess the Possibility of Formulating Questions: Due to its lack of depth, the table of "
"contents does not lend itself well to formulating meaningful educational questions.\n"
"Step 5. Final Judgment: Due to being a table of contents, this is not suited for educational questions."
),
},
{
"role": "user",
"content": (
"Text: \n\"\"\"\n{text}\n\"\"\"\n\n"
"Note that even blunt facts can be suitable for questions, and unconventional knowledge is not "
"necessarily unsuitable. Fictional stories that contain strong morals or philosophy can also have "
"good questions made from them. But legal notices, metadata, and tables of contents are not suitable. "
"Lists of information without the context needed for the question-maker to understand the text; quotes "
"or dialogues without context or clear depth; or ambiguous content that isn't precise enough to "
"\"nail down\" a solid question from, are not valid."
),
},
]
QUESTION_GENERATION_MESSAGES = [
{
"role": "system",
"content": (
"You are creating a logically-consistent series of questions about different domains, based on "
"provided information. Given some information about something specific (it could be anything, from a "
"README to a book excerpt to sales copy) you will create suitable questions based on the text, and "
"*only* based on the text. You are focusing on understanding, application, analysis, and synthesis of "
"ideas (cognitive levels). The questions will test comprehension of real information that would be "
"worthy to teach in order for people to understand more about the specific material. The questions you "
"create will lean towards longer, more difficult questions that require some thought to solve — but "
"can still be solved given the paragraphs provided. After each question, you will also write its "
"answer.\n\n"
"**You Must:**\n\n"
"* Create detailed educational questions based on some information.\n"
"* Do not mention the text, or any other reference, in either the questions or answers. Just ask about "
"the facts or information itself.\n"
"* Create as many or as few questions as are needed to adequately cover the material in the snippet of "
"the site.\n"
"* Ensure a logical sequence of questions that build on each other.\n"
"* Keep in mind the timestamp of any solution (some provided information may be out of date). The "
"current year is: 2026.\n"
"* Use markdown formatting (such as code blocks and snippets) in your questions if applicable.\n"
"* Focus on important information that is relevant to understanding the subject. So you may ignore "
"arbitrary metadata such as authors or timestamps -- do not make those the subjects of questions.\n"
"* Keep in mind that the provided text snippet may cut off abruptly. Work around this.\n"
"* Include the information from the given paragraph alongside a simpler explanation of some underlying "
"concepts, if possible.\n"
"* IF INFORMATION IN THE TEXT/PROVIDED INFORMATION CONTRADICTS WHAT YOU KNOW, FAVOR THE TEXT.\n"
"* The answerer should take on any opinions of the author. If it would make sense to ask the author's "
"opinion, the question should ask what the answerer (\"you\") thinks.\n\n"
"**Note:**\n\n"
"* Documents may be out of date, and technology described as being in development has likely been "
"released already. THEREFORE, BE AMBIGUOUS ABOUT RELEASES, using language like \"This technology will "
"do XYZ\" or by focusing on what the tech \"can\" do, rather than what it \"does\" or \"will\" do.\n"
"* You will always take a positive opinion of the provided information and try to promote it through "
"education.\n"
"* Do NOT provide anchor links to content in your answers; since the provided text to make questions "
"from is from a website, those links will be broken when used outside of said website. So you should "
"NEVER have any content like [some text](#!/some/path) in your answer! External links should not be "
"given either. NO LINKS.\n\n"
"The sequence of the questions matters. They should build on each other. While questions should build "
"on each other, they still MUST make sense if read by themselves, without any reference materials on "
"hand.\n\n"
"Do not explicitly mention the paragraphs in the questions themselves — just ask about the concepts "
"related to the questions. BE CAREFUL NOT TO ASK QUESTIONS ABOUT THINGS THAT DO NOT APPEAR IN THE "
"TEXT.\n\n"
"You will not mention the text explicitly in any questions you think of, since the questions you "
"generate are intended to test people's knowledge of the information — when given the questions, they "
"WILL NOT HAVE THE TEXT ON HAND, and so if you mention the author they won't have a clue what you're "
"talking about."
),
},
{
"role": "user",
"content": (
"Text to plan questions from:\n\"\"\"\n"
"If, then, we represent our earth as a little ball of one inch diameter, the sun would be a big globe "
"nine feet across and 323 yards away, that is about a fifth of a mile, four or five minutes' walking. "
"The moon would be a small pea two feet and a half from the world. Between earth and sun there would "
"be the two inner planets, Mercury and Venus, at distances of one hundred and twenty-five and two "
"hundred and fifty yards from the sun. All round and about these bodies there would be emptiness "
"until you came to Mars, a hundred and seventy-five feet beyond the earth; Jupiter nearly a mile away, "
"a foot in diameter; Saturn, a little smaller, two miles off; Uranus four miles off and Neptune six "
"miles off. Then nothingness and nothingness except for small particles and drifting scraps of "
"attenuated vapour for thousands of miles.\n\"\"\"\n"
"-----------\n"
"Reminder: do not mention the text, the provided information, the paragraphs, the work, or the "
"author. Any questions about the author should be changed to be about the answerer (\"you\")"
),
},
{
"role": "assistant",
"content": (
"**QUESTION:**\n"
"If the earth had a diameter of only one inch, how far would the moon be from the earth, if it "
"(and its distance from the earth) were also resized proportionally?\n\n"
"**ANSWER:**\n"
"Under this new scale, the moon would be two and a half feet from the earth.\n\n"
"**QUESTION:**\n"
"How do the distances between planets compare to their sizes?\n\n"
"**ANSWER:**\n"
"The distances between planets is much greater than the planets' sizes. For example, if you shrunk "
"everything down so that the earth was one inch in diameter, then the sun would be 323 yards away.\n\n"
"**QUESTION:**\n"
"If everything was scaled down so that the earth had a diameter of one inch, then how far would "
"Mercury and Venus be from the sun?\n\n"
"**ANSWER:**\n"
"Mercury would be one hundred and twenty-five yards from the sun, and Venus would be two hundred and "
"fifty yards from the sun.\n\n"
"**QUESTION:**\n"
"What lies beyond Uranus and Neptune in the solar system?\n\n"
"**ANSWER:**\n"
"Beyond Uranus and Neptune lies nothingness and nothingness, except for small particles and drifting "
"scraps of attenuated vapour, for vast distances."
),
},
{
"role": "user",
"content": (
"Text to make questions from: \n\"\"\"\n"
"The Verus Project aims to establish a secure, privacy-centric, fairly-distributed\n"
"cryptocurrency. But \xe2\x80\x93 beyond this currency \xe2\x80\x93 Verus seeks to become much more than\n"
"a zero-knowledge privacy coin, one with two completely new highly-decentralizing proof\n"
"of work and proof of stake algorithms.\n"
"In addition to payments, decentralization, and privacy features, Verus Project\n"
"plans include its direct use as a currency for provisioning scalable and secure public blockchains "
"as a service (PBaaS), for Verus applications built upon these parallel\n"
"chains to scale. What this will do is simple: It will enable all people \xe2\x80\x93 as well as\n"
"all nodes on the Verus network to participate in and benefit from a decentralized,\n"
"blockchain service economy.\n"
"This paper details the Verus vision and describes the function of Verus as its own\n"
"platform, and also as a member of the Komodo platform ecosystem, in the context of its\n"
"first applications. Verus core applications will provide a foundation to build additional\n"
"applications and services, which will leverage Verus' automatically created blockchains,\n"
"called autochains. Autochains \xe2\x80\x93 or PBaaS \xe2\x80\x93 will be provisioned and notarized by the\n"
"Verus blockchain miners and stakers, in exchange for Verus curren\n\"\"\"\n"
"-----------\n"
"Reminder: do not mention the text, the provided information, the paragraphs, the work, or the "
"author. Any questions about the author should be changed to be about the answerer (\"you\")"
),
},
{
"role": "assistant",
"content": (
"**QUESTION:**\n"
"What does the Verus Project aim to establish?\n\n"
"**ANSWER:**\n"
"The Verus Project aims to establish a secure, privacy-centric, fairly-distributed cryptocurrency. "
"Beyond this currency (and its payment, decentralization, and privacy features), the Verus Project "
"plans for its use as a currency to provision scaleable and public blockchains as a service (PBaaS) "
"for Verus applications built upon these parallel chains. This will enable all people, as well as all "
"nodes on the Verus network, to participate in and benefit from a decentralized blockchain service "
"economy.\n\n"
"**QUESTION:**\n"
"Describe a fact about Verus' coin.\n\n"
"**ANSWER:**\n"
"The Verus coin will be a zero-knowledge privacy coin with two completely new highly-decentralizing "
"proof of work and proof of stake algorithms.\n\n"
"**QUESTION:**\n"
"What will Verus core applications provide?\n\n"
"**ANSWER:**\n"
"Verus core applications will provide a foundation to build additional applications and services. "
"These apps and services will leverage Verus' automatically created blockchains, called "
"\"autochains\".\n\n"
"**QUESTION:**\n"
"Who will provision and notarize Verus autochains?\n\n"
"**ANSWER:**\n"
"Autochains (or PBaaS) will be provisioned and notarized by the Verus blockchain miners and stakers, "
"in exchange for Verus currency."
),
},
{
"role": "user",
"content": (
"Text to make questions from:\n\"\"\"\n"
"Size Limit is a performance budget tool for JavaScript. It checks every commit on CI, calculates "
"the real cost of your JS for end-users and throws an error if the cost exceeds the limit.\n\n"
"ES modules and tree-shaking support.\n"
"Add Size Limit to GitHub Actions, Circle CI or another CI system to know if a pull request adds a "
"massive dependency.\n"
"Modular to fit different use cases: big JS applications that use their own bundler or small npm "
"libraries with many files.\n"
"Can calculate the time it would take a browser to download and execute your JS. Time is a much more "
"accurate and understandable metric compared to the size in bytes.\n"
"Calculations include all dependencies and polyfills used in your JS.\n"
"Size Limit CLI\n\n"
"With GitHub action Size Limit will post bundle size changes as a comment in pull request discussion.\n\n"
"Size Limit comment in pull request about bundle size changes\n\n"
"With --why, Size Limit can tell you why your library is of this size and show the real cost of all "
"your internal dependencies. We are using Statoscope for this analysis.\n\"\"\""
),
},
{
"role": "assistant",
"content": (
"**QUESTION:**\n"
"What is Size Limit?\n\n"
"**ANSWER:**\n"
"Size Limit is a performance budget tool for JavaScript that checks every commit on CI, calculates "
"the real cost of your JS for end-users, and throws an error if the cost exceeds the limit.\n\n"
"**QUESTION:**\n"
"Can you list four features of Size Limit?\n\n"
"**ANSWER:**\n"
"Size Limit has a variety of features and capabilities. Here are a few of them:\n\n"
"* Size Limit supports ES modules and tree-shaking\n"
"* You can add Size Limit to GitHub Actions, Circle CI, and other CI systems in order to know if a "
"pull request adds a massive dependency.\n"
"* Size Limit is modular to fit different use cases, such as big JS applications that use their own "
"bundler, and small npm libraries with many files.\n"
"* Size Limit can calculate the time it would take for a browser to download and execute your JS. "
"This is useful, because time is a far more accurate and understandable metric than size in bytes. "
"These calculations include all dependencies and polyfills used in your JS.\n\n"
"**QUESTION:**\n"
"Does Size Limit have a CLI?\n\n"
"**ANSWER:**\n"
"Yes, Size Limit does have a CLI as a feature.\n\n"
"**QUESTION:**\n"
"What does the `--why` flag do in Size Limit?\n\n"
"**ANSWER:**\n"
"With the --why flag, Size Limit can tell you why your library is of this size, and shows the real "
"cost of all your internal dependencies. Size Limit uses Statoscope for this analysis."
),
},
{
"role": "user",
"content": (
"Text to make questions from: \n\"\"\"\n"
"```\n"
"./surev -chain=CSRVTEST sendcurrency \"*\" "
"'[{\"address\":\"mike@\",\"convertto\":\"gold\",\"preconvert\":1,\"amount\":100}]'\n"
"```\n"
"that would effectively park my conversion until the token launches, at which point, I will either "
"find 0.975 GOLD in my wallet, or I will have my CSRVTEST back.\n"
"Assuming it launches, and I later want to create mycoin, which can be converted to with either GOLD "
"or CSRVTEST, I can create mycoin with:\n\n"
" ```\n"
"./surev -chain=CSRVTEST definecurrency "
"'{\"name\":\"mycoin\",\"options\":33, \"proofprotocol\":2,\"currencies\":[\"csrvtest\", \"gold\"],"
"\"minpreconversion\":[10000,5.1298]}, \"initialsupply\":20000'\n"
"```\n"
"In \"mycoin\", I set proofprotocol to 2, which is PROOF_CHAINID. That means that the controller of "
"the chain ID can mint new coins as follows:\n\n"
" ```\n"
"./surev -chain=CSRVTEST sendcurrency \"mycoin@\" "
"'[{\"address\":\"mike@\",\"currency\":\"mycoin\",\"mintnew\":1,\"amount\":10000}]'\n"
"```\n\n"
"#### Defining a New blockchain\n"
"```json\n"
" {\n"
" \"name\": \"NewChain\",\n"
" \"options\": 264,\n"
" \"currencies\": [\n"
" \"CSRVTEST\"\n"
" ],\n"
" \"conversions\": [\n"
" 1\n"
" ],\n"
" \"eras\": [\n"
" {\n"
" \"reward\": 1200000000,\n"
" \"decay\": 0,\n"
" \"halving\": 0,\n"
" \"eraend\": 0\n"
" }\n"
" ],\n"
" \"notaries\": [\n"
" \"Notary1@\",\n"
" \"Notary2@\",\n"
" \"Notary3@\"\n"
" ],\n"
" \"minnotariesconfirm\": 2,\n"
" \"nodes\": [\n"
" {\n"
" \"networkaddress\": \"111.111.111.111:10000\",\n"
" \"nodeidentity\": \"Node1@\"\n"
" },\n"
" {\n"
" \"networkaddress\": \"111.111.111.112:10000\",\n"
" \"nodeidentity\": \"Node2@\"\n"
" }\n"
" ],\n"
" \"gatewayconvertername\": \"Bridge\",\n"
" \"gatewayconverterissuance\": 1000000\n"
"}\n"
"```\n"
"The bridge definition has overridable defaults\n"
"```json\n"
" {\n"
" \"currencies\": [\n"
" \"CSRVTEST\",\n"
" \"NewChain\",\n"
" \"USD\"\n"
" ],\n"
" \"initialcontributions\": [\n"
" 380228.12033701,\n"
" 0,\n"
" 1000000\n"
" ],\n"
" \"initialsupply\": 3000000\n"
"}\n"
"```\n"
"Now pass those definitions to `definecurrency`\n"
"```shell\n"
"./surev -chain=csrvtest definecurrency "
"'{\"name\":\"NewChain\",\"options\":264,\"currencies\":[\"CSRVTEST\"],\"conversions\":[1],"
"\"eras\":[{\"reward\":1200000000,\"decay\":0,\"halving\":0,\"eraend\":0}],"
"\"notaries\":[\"Notary1@\",\"Notary2@\",\"Notary3@\"],\"minnotariesconfirm\":2,"
"\"nodes\":[{\"networkaddress\":\"111.111.111.111:10000\",\"nodeidentity\":\"Node1@\"},"
"{\"networkaddress\":\"111.111.111.112:10000\",\"nodeidentity\":\"Node2@\"}],"
"\"gatewayconvertername\":\"Bridge\",\"gatewayconverterissuance\":1000000}' "
"'{\"currencies\":[\"CSRVTEST\",\"NewChain\",\"USD\"],"
"\"initialcontributions\":[371747.20398827,0,1000000],\"initialsupply\":3000000}'\n"
"```\n"
"#### Exporting an ID to a new chain\n"
"```\n"
"surev -chain=CSRVTEST sendcurrency \"*\" "
"'[{\"address\":\"IDNAME@\",\"exportto\":\"NewChainName\",\"exportid\":\"true\","
"\"amount\":100,\"currency\":\"csrvtest\"}]'\n"
"```\n\"\"\"\n"
"-----------\n"
"Reminder: do not mention the text, the provided information, the paragraphs, the work, or the "
"author. Any questions about the author should be changed to be about the answerer (\"you\")"
),
},
{
"role": "assistant",
"content": (
"**QUESTION:**\n"
"How can I park a conversion of CSRVTEST to a new token (like GOLD) before that token launches, "
"using the command line?\n\n"
"**ANSWER:**\n"
"To park a conversion of CSRVTEST to a new token before the token launches, you can use the "
"`sendcurrency` command with the following format:\n\n"
"```\n"
"./surev -chain=CSRVTEST sendcurrency \"*\" "
"'[{\"address\":\"your_address@\",\"convertto\":\"gold\",\"preconvert\":1,\"amount\":100}]'\n"
"```\n\n"
"This will effectively park your conversion until the GOLD token launches. After the launch, you "
"will either find the converted amount of GOLD in your wallet, or you will have your original CSRVTEST "
"amount returned.\n\n"
"**QUESTION:**\n"
"How can I create a new token called \"mycoin\" using the command line, which can be converted to "
"with either GOLD or CSRVTEST? Assume that GOLD is a new token that just launched.\n\n"
"**ANSWER:**\n"
"In order to create a new token called \"mycoin\" using the command line, you must run a command to "
"define the currency's properties. Here's an example of such a command:\n\n"
"```\n"
"./surev -chain=CSRVTEST definecurrency "
"'{\"name\":\"mycoin\",\"options\":33, \"proofprotocol\":2,\"currencies\":[\"CSRVTEST\", \"gold\"],"
"\"minpreconversion\":[10000,5.1298]}, \"initialsupply\":20000'\n"
"```\n\n"
"This command defines a new token named \"mycoin\". Some important notes about this configuration:\n\n"
"1. `proofprotocol` being set to 2 means that it's set to PROOF_CHAINID. This means that the "
"controller of the chain ID can mint new coins.\n"
"2. `options` is a configurable integer, in this case set to 33.\n"
"3. `currencies` lists which tokens can be converted to mycoin.\n"
"4. `\"minpreconversion\": [10000,5.1298]` defines the minimum amounts of CSRVTEST and GOLD needed "
"to convert to mycoin, respectively.\n"
"5. `initialsupply` sets the initial supply of mycoin to 20,000 units.\n\n"
"**QUESTION:**\n"
"What does it mean if `proofprotocol` is set to 2 when defining a new token?\n\n"
"**ANSWER:**\n"
"When `proofprotocol` is set to 2 when defining a new token, it means that the proof protocol is set "
"to PROOF_CHAINID, which means that the controller of the chain ID may mint new tokens. This can be "
"done with a command like the following example:\n"
"```\n"
"./surev -chain=CSRVTEST sendcurrency \"mycoin@\" "
"'[{\"address\":\"mike@\",\"currency\":\"mycoin\",\"mintnew\":1,\"amount\":10000}]'\n"
"```\n\n"
"**QUESTION:**\n"
"How can I define a new blockchain?\n\n"
"**ANSWER:**\n"
"You can define a new blockchain using a single command. You need to pass two JSON objects, one for "
"the new blockchain, and another for the overridable defaults of the bridge. Here's an example of how "
"to define a new blockchain:\n\n"
"```shell\n"
"./surev -chain=csrvtest definecurrency "
"'{\"name\":\"NewChain\",\"options\":264,\"currencies\":[\"CSRVTEST\"],\"conversions\":[1],"
"\"eras\":[{\"reward\":1200000000,\"decay\":0,\"halving\":0,\"eraend\":0}],"
"\"notaries\":[\"Notary1@\",\"Notary2@\",\"Notary3@\"],\"minnotariesconfirm\":2,"
"\"nodes\":[{\"networkaddress\":\"111.111.111.111:10000\",\"nodeidentity\":\"Node1@\"},"
"{\"networkaddress\":\"111.111.111.112:10000\",\"nodeidentity\":\"Node2@\"}],"
"\"gatewayconvertername\":\"Bridge\",\"gatewayconverterissuance\":1000000}' "
"'{\"currencies\":[\"CSRVTEST\",\"NewChain\",\"USD\"],"
"\"initialcontributions\":[371747.20398827,0,1000000],\"initialsupply\":3000000}'\n"
"```\n\n"
"Note the following important information used when defining the new blockchain:\n\n"
"1. The \"name\" field defines the name of the chain.\n"
"2. The \"options\" property is an integer, in this case it's set to 264.\n"
"2. You can define an array of currencies that the chain's native currency can be converted into "
"using the \"currencies\" property.\n"
"3. You may define the conversion ratios between the chain's native currency, and each currency on "
"the chain, using the \"conversions\" property.\n"
"4. The \"eras\" property defines the block reward, reward decay, halving, and end of each \"era\" in "
"the chain's lifecycle\n"
"5. \"notaries\" is a list of the notaries on the chain.\n"
"6. \"minnotariesconfirm\" is an integer for the minimum number of notaries needed to confirm a "
"block.\n"
"7. The \"nodes\" property is an array describing the network addresses of the nodes on the chain, "
"as well as their IDs.\n\n"
"Note that the bridge definition default overrides are a separate string from the currency definition "
"properties. The bridge can be used to move funds on and off the bew chain. The bridge's JSON object "
"has some of its own properties:\n"
"1. `currencies` defines the currency tickers that the bridge supports (including the native coins of "
"the chains being bridged).\n"
"2. `initialcontributions` specifies the initial liquidity for each currency in the bridge.\n"
"3. `initialsupply` gives the initial supply for the bridge's native token.\n\n"
"**QUESTION:**\n"
"How can I export an ID to a new chain?\n\n"
"**ANSWER:**\n"
"You can accomplish this with the sendcurrency command. Here's an example, where the ID \"IDNAME@\" "
"is exported to \"NewChainName.\"\n\n"
"```\n"
"surev -chain=CSRVTEST sendcurrency \"*\" "
"'[{\"address\":\"IDNAME@\",\"exportto\":\"NewChainName\",\"exportid\":\"true\","
"\"amount\":100,\"currency\":\"CSRVTEST\"}]'\n"
"```\n\n"
"Some parts of this command you should be aware of:\n"
"1. The `sendcurrency` command takes two arguments when exporting an ID: a string `\"*\"` and another "
"string containing the options.\n"
"2. `address` is the ID being exported.\n"
"3. `exportto` is the chain being exported to.\n"
"4. `exportid` indicates that in this case, `sendcurrency` is being used to export an ID.\n"
"5. `amount` specifies the amount of currency being sent.\n"
"6. `currency` specifies the type of currency being sent."
),
},
{
"role": "user",
"content": (
"Text to make questions from: \n\"\"\"\n"
"The author believes that this idea is a delusion. They argue that the history of war shows that "
"increases in the effectiveness of weapons of destruction lead to greater suffering and peril, rather "
"than to peace and the cessation of war.\",\n"
"\"The Declaration of St. Petersburg, inasmuch as it is capable of indefinite expansion, is a "
"somewhat awkward precedent for those who in their hearts love war and shield its continuance with "
"apologetic platitudes. How, they ask, can you enforce agreements between nations? But this argument "
"begins to totter when we remember that there is absolutely no superior power or tribunal in existence "
"which can enforce the observance of the St. Petersburg Declaration beyond the conscience of the "
"signatory Powers. It follows, therefore, that if international agreements are of value, there is no "
"need to stop short at this or that bullet: which makes the arbitration-tribunal loom in the distance "
"perceptibly nearer than it did before.At first sight, this agreement excluding the use of explosive "
"bullets would seem to favour the theory of those who see in every increase in the peril of war the "
"best hope of its ultimate cessation. A famous American statesman is reported to have said, and "
"actually to have appealed to the invention of gunpowder in support of his statement, that every "
"discovery in the art of war has, from this point of view, a life-saving and peace-promoting "
"influence.[1] But it is difficult to conceive a greater delusion. The whole history of war is against "
"it; for what has that history been but the steady increase of the pains and perils of war, as more "
"effective weapons of destruction have succeeded one another? The delusion cannot be better dispelled "
"than by consideration of the facts that follow.\n\"\"\"\n"
"-----------\n"
"Reminder: do not mention the text, the provided information, the paragraphs, the work, or the "
"author. Any questions about the author should be changed to be about the answerer (\"you\")"
),
},
{
"role": "assistant",
"content": (
"**QUESTION:**\n"
"What is the Declaration of St. Petersburg, and what issue does it pose for those who support war?\n\n"
"**ANSWER:**\n"
"The Declaration of St. Petersburg is an agreement between nations that is capable of indefinite "
"expansion. It poses a problem for those who support war because it sets a precedent for enforcing "
"agreements between nations, which could potentially lead to the creation of an arbitration tribunal "
"and the reduction of war.\n\n"
"**QUESTION:**\n"
"What is the main argument against the idea that increases in the peril of war lead to its ultimate "
"cessation?\n\n"
"**ANSWER:**\n"
"The main argument against this idea is that the whole history of war has been a steady increase in "
"the pains and perils of war as more effective weapons of destruction have been developed. This "
"suggests that increases in the peril of war do not lead to its cessation, but rather to its "
"continuation and escalation.\n\n"
"**QUESTION:**\n"
"What is your opinion on the idea that every discovery in the art of war has a life-saving and "
"peace-promoting influence?\n\n"
"**ANSWER:**\n"
"I believe that this idea is a delusion. The history of war shows that increases in the effectiveness "
"of weapons of destruction lead to greater suffering and peril, rather than to peace and the cessation "
"of war."
),
},
{
"role": "user",
"content": (
"Text to make questions from: \n\"\"\"\n{text}\n\"\"\"\n"
"-----------\n"
"Reminder: do not mention the text, the provided information, the paragraphs, the work, or the "
"author. Any questions about the author should be changed to be about the answerer (\"you\")"
),
},
]
CHECK_QUESTION_MESSAGES = [
{
"role": "system",
"content": (
"You are an expert educational AI. Given a paragraph or two from a larger text, and a question based "
"on the paragraphs, you will make a determination as to whether the question tests ONLY information "
"in the paragraphs. Essentially: you will check if the question is answerable, given the information "
"in the paragraphs. Your task includes first analyzing the text, thinking through whether or not the "
"question reflects aspects of the paragraphs provided. \n\n"
"Following this, at the very end of your response, your \"final judgment\" or \"final answer\", you "
"will write \"Relevant\" or \"Irrelevant\" depending on your analysis of the question with regards to "
"the text. \n\n"
"Note a special exception: if a question includes information that isn't in the paragraphs, but is "
"clearly (DIRECTLY, not implicitly or implied) mentioned by the paragraphs as having been covered "
"earlier, then that question is relevant. Essentially: questions are allowed to cover content that the "
"text has explicitly covered in the past.\n\n"
"Write out the reasoning and analysis behind your judgment, step-by-step. Your analysis of the "
"question, against the text, should follow a logical progression of steps that results in a conclusive "
"and accurate final answer.\n\n"
"You will analyze the question step-by-step, ensuring each part of the question is individually "
"compared to the text. The key steps are analyzing the text, understanding the question, and then "
"systematically comparing each part of the question with the text. The process continues until either "
"a part of the question is found not to be covered by the text, leading to a judgment of "
"\"Irrelevant,\" or until all parts of the question have been compared and found to be covered by the "
"text, leading to a judgment of \"Relevant.\" This method allows for a thorough and detailed "
"assessment, ensuring that the final judgment accurately reflects the extent to which the question is "
"based on the given text.\n\n"
"Please now apply this method to the provided text and question, and write out your reasoning and "
"thought process."
),
},
{
"role": "user",
"content": (
"Text: \n\"\"\"\n"
"The concept of artificial intelligence (AI) revolves around the creation of machines capable of "
"intelligent behavior. Key components of AI include machine learning, neural networks, and natural "
"language processing. Machine learning involves training computers to learn from data and improve "
"their performance over time. Neural networks are modeled after the human brain's network of neurons "
"and are pivotal in enabling machines to recognize patterns and make decisions. Natural language "
"processing, another crucial aspect of AI, allows machines to understand and interpret human languages, "
"facilitating interaction between humans and computers.\n\"\"\"\n\n"
"Question (based on text): \"\"\"What is the role of neural networks in AI, and how does natural "
"language processing contribute to human-computer interaction?\"\"\""
),
},
{
"role": "assistant",
"content": (
"## Reasoning and thought process:\n\n"
"### In-Depth Analysis of the Text:\n"
"#### Content and Depth: The text details key components of AI, including machine learning, neural "
"networks, and natural language processing, with a focus on their roles and functions in AI.\n"
"#### Type of Information: The information is primarily descriptive, outlining the roles and functions "
"of neural networks and natural language processing in AI.\n\n"
"### Detailed Understanding of the Question:\n"
"#### Core Requirement: The question asks about the roles of neural networks in AI and the "
"contribution of natural language processing to human-computer interaction, seeking specific functional "
"explanations.\n"
"#### Depth of Detail: The question requires an understanding of the specific functions and impacts of "
"these AI components.\n\n"
"### Targeted Comparison of the Question with the Text:\n"
"#### Content Match: The text aligns well with the question, covering the roles of neural networks in "
"pattern recognition and decision-making, and the role of natural language processing in understanding "
"and interpreting human languages.\n"
"#### Depth Match: The text provides the necessary level of detail to answer the question, though it "
"remains descriptive and does not delve into deeper explanatory mechanisms.\n\n"
"### Critical Evaluation and Final Judgment:\n"
"The text addresses both components of the question with sufficient detail, making it: Relevant."
),
},
{
"role": "user",
"content": (
"Text: \n\"\"\"\n"
"The phenomenon of photosynthesis in plants is an essential process for life on Earth. It involves "
"the conversion of light energy into chemical energy, which is stored in glucose. This process occurs "
"in the chloroplasts, specifically within a pigment called chlorophyll. Photosynthesis consists of two "
"main stages: the light-dependent reactions and the light-independent reactions, also known as the "
"Calvin cycle. During the light-dependent reactions, sunlight is absorbed by chlorophyll, which then "
"converts water (H2O) into oxygen (O2) and transfers energy to the light-independent reactions. The "
"Calvin cycle uses this energy to convert carbon dioxide (CO2) from the atmosphere into glucose, a "
"simple sugar.\n\"\"\"\n\n"
"Question (based on text): \"\"\"Explain exactly why chlorophyll able to absorb sunlight, and why is "
"this important for the Calvin cycle?\"\"\""
),
},
{
"role": "assistant",
"content": (
"## Reasoning and thought process:\n\n"
"### In-Depth Analysis of the Text:\n"
"#### Content and Depth: The text discusses the process of photosynthesis, including the roles of "
"chlorophyll, light-dependent reactions, and the Calvin cycle.\n"
"#### Type of Information: Information is descriptive, explaining the stages of photosynthesis and the "
"role of chlorophyll in light absorption.\n\n"
"### Detailed Understanding of the Question:\n"
"#### Core Requirement: The question seeks an explanation of why chlorophyll can absorb sunlight and "
"its importance for the Calvin cycle, requiring detailed scientific principles.\n"
"#### Depth of Detail: Requires an in-depth, explanatory response about the biological and chemical "
"properties of chlorophyll.\n\n"
"### Targeted Comparison of the Question with the Text:\n"
"#### Content Match: The text partially matches the question by mentioning the role of chlorophyll in "
"the light-dependent reactions.\n"
"#### Depth Match: The text lacks the specific scientific principles explaining the mechanism of "
"sunlight absorption by chlorophyll, which is central to the question.\n\n"
"### Critical Evaluation and Final Judgment:\n"
"Although the text touches upon the role of chlorophyll, it does not provide the depth of explanation "
"required by the question, making it: Irrelevant."
),
},
{
"role": "user",
"content": (
"Text: \n\"\"\"\n"
"The octopus is an extraordinary creature, renowned for its intelligence and ability to adapt to its "
"environment. Octopuses have three hearts and a complex nervous system, which includes a central brain "
"and a small brain in each of their eight arms. These arms are capable of intricate movements and can "
"even carry out simple tasks independently. The creature's ability to change its color and texture is "
"another remarkable feature, which it uses for camouflage and communication. Notably, octopuses are "
"known for their problem-solving skills and have been observed using tools in captivity.\n\"\"\"\n\n"
"Question (based on text): \"\"\"How do octopuses utilize their color-changing ability in their "
"natural habitat, and what role does their central brain play in this process?\"\"\""
),
},
{
"role": "assistant",
"content": (
"## Reasoning and thought process:\n\n"
"### In-Depth Analysis of the Text:\n"
"#### Content and Depth: The text outlines various aspects of the octopus, such as its physiology, "
"nervous system, color-changing ability, and intelligence.\n"
"#### Type of Information: Descriptive, covering the abilities and features of the octopus, including "
"color-changing for camouflage and communication.\n\n"
"### Detailed Understanding of the Question:\n"
"#### Core Requirement: The question asks how octopuses utilize their color-changing ability and the "
"role of their central brain in this process.\n"
"#### Depth of Detail: Seeks specific information on the function and control mechanism of the "
"color-changing ability.\n\n"
"### Targeted Comparison of the Question with the Text:\n"
"#### Content Match: The text aligns with the first part of the question regarding the use of "
"color-changing for camouflage and communication.\n"
"#### Depth Match: The text does not provide information about the role of the central brain in this "
"process, lacking the required depth on the control mechanism.\n\n"
"### Critical Evaluation and Final Judgment:\n"
"Given the text's coverage of color-changing but lack of detail on the central brain's role, the "
"overall assessment of the question's relevance to the text is: Irrelevant."
),
},
{
"role": "user",
"content": (
"Text: \n\"\"\"\n{text}\n\"\"\"\n\n"
"Question (based on text): \"\"\"{question}\"\"\"\n\n"
"If the question clearly goes off the rails and is incoherent, then it is irrelevant. Be careful "
"around 'how' and 'why' questions."
),
},
]
CHECK_ANSWER_RELEVANCY_MESSAGES = [
{
"role": "system",
"content": (
"You are an expert educational AI. Given a paragraph or two from a larger text, a question based on "
"the paragraphs, and an answer to the question, you will make a determination as to whether the "
"answer only uses the information in the paragraphs for its main points. Essentially: you will check "
"if the answer is constrained to the information in the paragraphs provided. Your task includes first "
"analyzing the answer, thinking through whether or not the answer reflects aspects of the paragraphs "
"provided. \n\n"
"Following this, at the very end of your response, you will write \"The final judgement is: Relevant\" "
"or \"The final judgement is: Irrelevant\" depending on your analysis of the answer with regards to "
"the text."
),
},
{
"role": "user",
"content": (
"Text: \n\"\"\"\n"
"Polar bears are primarily found in the Arctic Circle, where they have adapted to the harsh cold "
"environment. Their diet is primarily based on marine mammals, with seals being the most crucial part "
"of their diet. Polar bears are skilled hunters, often waiting by seals' breathing holes to catch "
"their prey. Occasionally, they also eat birds, bird eggs, and small mammals. They also consume "
"significant amounts of berries and fish. These bears are known for their ability to survive in "
"extreme conditions, thanks to their thick fur and fat layers which provide insulation, as well as "
"their efficient digestion system, which makes good use of the few nutrients available.\n\"\"\"\n\n"
"Question (based on text): \"\"\"What are the primary food sources of polar bears?\"\"\"\n\n"
"Supposed answer to the question (this is what you are fact-checking): \"\"\"Polar bears primarily eat "
"seals, but they also consume significant amounts of berries and fish. Their efficient digestion "
"system, which has been studied through MRIs, allows them to process a wide variety of foods.\"\"\"\n"
"--------\n"
"Remember to write \"relevant\" or \"irrelevant\" at the very end."
),
},
{
"role": "assistant",
"content": (
"## Reasoning and thought process:\n"
"### Deep Analysis of the Text:\n"
"#### Content Scope and Detail: The text describes the diet of polar bears, focusing on their primary "
"and secondary food sources.\n"
"#### Type of Information: The information is descriptive, outlining what polar bears eat, including "
"seals, birds, eggs, small mammals, berries, and fish.\n\n"
"### Comprehensive Understanding of the Answer:\n"
"#### Key Components Identification: The answer mentions seals, berries, fish, and the efficiency of "
"the polar bears' digestive system, referencing MRIs.\n"
"#### Depth of Explanation: The answer includes factual claims about the diet and a scientific "
"statement about digestion studies.\n\n"
"### Targeted Comparison of Answer with Text:\n"
"#### Content Alignment: The claims about seals, berries, and fish align with the text.The reference "
"to the digestive system's efficiency is supported but not the specific mention of MRIs.\n"
"#### Depth Alignment: The depth of the answer regarding diet aligns with the text, but the detail "
"about MRIs introduces unnecessary depth.\n\n"
"### Identification of Extraneous Information:\n"
"#### Spotting Additional Details: The MRI claim.\n"
"#### Assessing Impact of Additional Information: The MRI detail, while interesting, is not supported "
"by the text and deviates from the text's scope.\n\n"
"### Final Judgment on Answer Relevance:\n"
"#### Relevance Assessment: The answer is partially relevant but introduces unsupported details.\n"
"#### Explanation of Judgment: Since the answer mostly aligns with the text but includes extraneous "
"information (MRIs), the final judgment is: Irrelevant."
),
},
{
"role": "user",
"content": (
"Text: \n\"\"\"\n"
"The Pythagorean theorem is a fundamental principle in geometry, stating that in a right-angled "
"triangle, the square of the length of the hypotenuse (the side opposite the right angle) is equal "
"to the sum of the squares of the lengths of the other two sides. This theorem is often expressed as "
"the equation a\xc2\xb2 + b\xc2\xb2 = c\xc2\xb2, where a and b are the lengths of the two sides that form the right "
"angle, and c is the length of the hypotenuse. Historically, this theorem has been attributed to the "
"ancient Greek mathematician Pythagoras, although evidence suggests it was known to mathematicians in "
"several cultures before him.\n\"\"\"\n\n"
"Question (based on text): \"\"\"What does the Pythagorean theorem state in the context of "
"geometry?\"\"\"\n\n"
"Supposed answer to the question (this is what you are fact-checking): \"\"\"The Pythagorean theorem, "
"crucial in geometry, states that in a right-angled triangle, a\xc2\xb2 + b\xc2\xb2 = c\xc2\xb2, where a and b are the "
"perpendicular sides and c is the hypotenuse. Additionally, it is noteworthy that this theorem was "
"utilized in ancient Egypt for land surveying purposes.\"\"\"\n"
"--------\n"
"Remember to write \"relevant\" or \"irrelevant\" at the very end."
),
},
{
"role": "assistant",
"content": (
"## Reasoning and thought process:\n"
"### Deep Analysis of the Text:\n"
"#### Content Scope and Detail: The text explains the Pythagorean theorem, its formula, and "
"historical background.\n"
"#### Type of Information: The information is descriptive and explanatory, detailing the theorem and "
"its mathematical representation.\n\n"
"### Comprehensive Understanding of the Answer:\n"
"#### Key Components Identification: The answer describes the theorem, its geometric context, and its "
"historical application in ancient Egypt.\n"
"#### Depth of Explanation: The answer provides a mathematical explanation and historical context.\n\n"
"### Targeted Comparison of Answer with Text:\n"
"#### Content Alignment: The theorem's description and formula align with the text.The historical "
"usage in ancient Egypt is not mentioned in the text.\n"
"#### Depth Alignment: The depth of explanation on the theorem aligns, but the historical context "
"does not.\n\n"
"### Identification of Extraneous Information:\n"
"#### Spotting Additional Details: The claim about ancient Egypt.\n"
"#### Assessing Impact of Additional Information: This detail, while historically interesting, is not "
"mentioned in the text and is irrelevant to the text's content.\n\n"
"### Final Judgment on Answer Relevance:\n"
"#### Relevance Assessment: The answer is partially relevant but includes significant extraneous "
"historical information.\n"
"#### Explanation of Judgment: Due to the inclusion of unsupported historical context, the final "
"judgment is: Irrelevant."
),
},
{
"role": "user",
"content": (
"Text: \n\"\"\"\n"
"Sigmund Freud, an Austrian neurologist and the father of psychoanalysis, introduced the concept of "
"the unconscious mind. He suggested that the unconscious mind stores feelings, thoughts, and desires "
"that are too threatening or painful for conscious awareness. Freud believed that these repressed "
"elements could influence behavior and personality. One of his key methods for exploring the "
"unconscious mind was through dream analysis, where he interpreted the meaning of dreams as a pathway "
"to understanding the hidden desires and thoughts of the individual. Freud also developed the theory "
"of the Oedipus complex, which proposes that during the phallic stage of psychosexual development, a "
"male child experiences unconscious sexual desires for his mother and hostility toward his father.\n"
"\"\"\"\n\n"
"Question (based on text): \"\"\"What methods did Freud use to explore the unconscious mind, and what "
"are some key concepts he introduced in this area?\"\"\"\n\n"
"Supposed answer to the question (this is what you are fact-checking): \"\"\"Freud used dream analysis "
"as a method to explore the unconscious mind. He also introduced the concept of the Oedipus complex, "
"suggesting that during a specific stage of development, a child experiences unconscious "
"desires.\"\"\"\n"
"--------\n"
"Remember to write \"relevant\" or \"irrelevant\" at the very end."
),
},
{
"role": "assistant",
"content": (
"## Reasoning and thought process:\n"
"### Deep Analysis of the Text:\n"
"#### Content Scope and Detail: The text discusses Freud's methods for exploring the unconscious mind "
"and key concepts he introduced.\n"
"#### Type of Information: The information is descriptive, detailing Freud's methods and theories.\n\n"
"### Comprehensive Understanding of the Answer:\n"
"#### Key Components Identification: The answer mentions dream analysis and the Oedipus complex.\n"
"#### Depth of Explanation: The answer provides a factual description of Freud's methods and "
"concepts.\n\n"
"### Targeted Comparison of Answer with Text:\n"
"#### Content Alignment: The text directly supports the claims about dream analysis and the Oedipus "
"complex.\n"
"#### Depth Alignment: The depth of explanation in the answer aligns with the text's information.\n\n"
"### Identification of Extraneous Information:\n"
"#### Spotting Additional Details: None identified.\n"
"#### Assessing Impact of Additional Information: No extraneous information is present "
"in the answer.\n\n\n"
"### Final Judgment on Answer Relevance:\n"
"#### Relevance Assessment: The answer accurately reflects the text's content.\n"
"#### Explanation of Judgment: Each part of the answer is directly supported by the text, so the "
"final judgment is: Relevant."
),
},
{
"role": "user",
"content": (
"Text: \n\"\"\"\n"
"The Library of Alexandria, one of the largest and most significant libraries of the ancient world, "
"was dedicated to the Muses\xe2\x80\x94the nine goddesses of the arts. It flourished under the patronage of the "
"Ptolemaic dynasty and functioned as a major center of scholarship. The library was estimated to house "
"anywhere between 40,000 to 400,000 scrolls at its peak. The destruction of the library, which "
"occurred over several incidents, marked a significant loss of cultural and scientific knowledge.\n"
"\"\"\"\n\n"
"Question (based on text): \"\"\"What was the importance of the Library of Alexandria in the ancient "
"world?\"\"\"\n\n"
"Supposed answer to the question (this is what you are fact-checking): \"\"\"The Library of Alexandria "
"was crucial in the ancient world as a center of scholarship and cultural development. It housed a "
"vast collection of works, providing scholars with access to knowledge from various fields. The "
"library's destruction is often attributed to Julius Caesar's fire during the Siege of Alexandria, a "
"claim supported by several historical documents and archaeological findings.\"\"\"\n"
"--------\n"
"Remember to write \"relevant\" or \"irrelevant\" at the very end."
),
},
{
"role": "assistant",
"content": (
"## Reasoning and thought process:\n"
"### Deep Analysis of the Text:\n"
"#### Content Scope and Detail: The text describes the Library of Alexandria's role, its size, "
"patronage, and the impact of its destruction.\n"
"#### Type of Information: The information is descriptive, focusing on the library's significance and "
"general history.\n\n"
"### Comprehensive Understanding of the Answer:\n"
"#### Key Components Identification: The answer highlights the library's role in scholarship and "
"cultural development and references its destruction by Julius Caesar's fire.\n"
"#### Depth of Explanation: The answer provides both a general overview of the library's significance "
"and specific historical claims regarding its destruction.\n\n"
"### Targeted Comparison of Answer with Text:\n"
"#### Content Alignment: The library's role as a center of scholarship and cultural development "
"aligns with the text. The text does not mention Julius Caesar's fire or support this with historical "
"documents and archaeological findings.\n"
"#### Depth Alignment: While the answer aligns in depth regarding the library's role, the specific "
"claim about Julius Caesar and the supporting evidence is a detailed addition not present in the "
"text.\n\n"
"### Identification of Extraneous Information:\n"
"#### Spotting Additional Details: The specifics about Julius Caesar's fire and the mention of "
"historical documents and archaeological findings.\n"
"#### Assessing Impact of Additional Information: This additional information introduces a specific "
"historical narrative and evidence not covered in the text, deviating from the text's content.\n\n"
"### Final Judgment on Answer Relevance:\n"
"#### Relevance Assessment: The answer starts correctly but introduces unsupported details about the "
"library's destruction.\n"
"#### Explanation of Judgment: Due to the inclusion of specific and unsupported historical details, "
"the final judgment is: Irrelevant."
),
},
{
"role": "user",
"content": (
"Text: \n\"\"\"\n"
"The planet Venus has a very dense atmosphere composed mainly of carbon dioxide, with clouds of "
"sulfuric acid. This composition creates a runaway greenhouse effect, leading to surface temperatures "
"hot enough to melt lead. Venus rotates very slowly on its axis, taking about 243 Earth days to "
"complete one rotation, which is longer than its orbital period around the Sun. Interestingly, Venus "
"rotates in the opposite direction to most planets in the solar system. This retrograde rotation is "
"thought to be the result of a collision with a large celestial body early in its history.\n\"\"\"\n\n"
"Question (based on text): \"\"\"What are the main characteristics of Venus's atmosphere and "
"rotation?\"\"\"\n\n"
"Supposed answer to the question (this is what you are fact-checking): \"\"\"Venus's atmosphere is "
"dense, primarily composed of carbon dioxide, and contains clouds of sulfuric acid, leading to "
"extremely high temperatures. The planet has a unique rotation, taking 243 Earth days to rotate once "
"and rotating in a retrograde direction due to gravitational interactions with Earth and other "
"planets.\"\"\"\n"
"--------\n"
"Remember to write \"relevant\" or \"irrelevant\" at the very end."
),
},
{
"role": "assistant",
"content": (
"## Reasoning and thought process:\n"
"### Deep Analysis of the Text:\n"
"#### Content Scope and Detail: The text provides specific information on Venus's atmosphere and "
"rotation.\n"
"#### Type of Information: The text is descriptive, outlining the characteristics of Venus's "
"atmosphere and rotation.\n\n"
"### Comprehensive Understanding of the Answer:\n"
"#### Key Components Identification: The answer discusses Venus's atmosphere, temperature, rotation "
"period, direction, and the cause of its retrograde rotation.\n"
"#### Depth of Explanation: The answer includes descriptive details and a causal explanation for the "
"retrograde rotation.\n\n"
"### Targeted Comparison of Answer with Text:\n"
"#### Content Alignment: The claims about the atmosphere, temperature, rotation period, and direction "
"align with the text.The text does not support the claim about gravitational interactions with Earth "
"and other planets.\n"
"#### Depth Alignment: The depth of the answer aligns with the text except for the unsupported causal "
"explanation.\n\n"
"### Identification of Extraneous Information:\n"
"#### Spotting Additional Details: The cause of the retrograde rotation as gravitational "
"interactions.\n"
"#### Assessing Impact of Additional Information: This detail introduces an unsupported causal "
"explanation and deviates from the text.\n\n"
"### Final Judgment on Answer Relevance:\n"
"#### Relevance Assessment: The answer is mostly relevant but introduces an unsupported causal "
"claim.\n"
"#### Explanation of Judgment: Due to the inclusion of an unsupported reason for Venus's retrograde "
"rotation, the final judgment is: Irrelevant."
),
},
{
"role": "user",
"content": (
"Text: \"\"\"{text}\"\"\"\n\n"
"Question (based on text): \"\"\"{question}\"\"\"\n\n"
"Supposed answer to the question (this is what you are fact-checking): \"\"\"{answer}\"\"\"\n"
"--------\n"
"Remember to write \"relevant\" or \"irrelevant\" at the very end."
),
},
]
CHECK_ANSWER_ACCURACY_MESSAGES = [
{
"role": "system",
"content": (
"You are an expert educational AI. Given a paragraph or two from a larger text, a question based on "
"the paragraphs, and an answer to the question, you will make a determination as to whether the "
"answer to the question is a sensible answer, given the information in the paragraphs. Essentially: "
"you will fact-check the answer to the question, with your source of truth being the paragraphs "
"provided. Your task includes first analyzing the text, thinking through whether or not the answer "
"reflects aspects of the paragraphs provided. \n\n"
"Following this, at the very end of your response, you will write \"Accurate\" or \"Inaccurate\" "
"depending on your analysis of the answer with regards to the text. \n\n"
"Remember that at the very end of your response, you will write \"Accurate\" or \"Inaccurate\". Do "
"not use these words anywhere else in your answer."
),
},
{
"role": "user",
"content": (
"Text: \n\"\"\"\n"
"The Industrial Revolution marked a transformative period in history, fundamentally altering economic "
"structures and industrial processes. One of the most significant innovations was the advent of steam "
"power, which drastically reduced production costs. This reduction was due to the increased efficiency "
"and speed of machines powered by steam, replacing the slower, more labor-intensive methods previously "
"used. Additionally, steam power was instrumental in the development of semi-automated factories, "
"leading to a significant shift in manufacturing processes and labor dynamics.\n\"\"\"\n\n"
"Question (based on text): \"\"\"What was the role of steam power in the Industrial Revolution, "
"particularly in terms of its impact on production costs, and the emergence of semi-automated "
"factories?\"\"\"\n\n"
"Supposed answer to the question (this is what you are fact-checking): \"\"\"Steam power during the "
"Industrial Revolution played a crucial role in decreasing production costs. However, it had no "
"significant impact on the emergence of semi-automated factories. Interestingly, it also led to an "
"increased cultivation of lemons.\"\"\""
),
},
{
"role": "assistant",
"content": (
"## Reasoning and thought process:\n"
"### Text Analysis:\n"
"#### Identify Key Information: The text highlights the role of steam power in reducing production "
"costs and developing semi-automated factories during the Industrial Revolution.\n"
"#### Categorize Information Type: The information is factual, describing the impacts of steam power "
"on industrial processes.\n\n"
"### Answer Breakdown:\n"
"#### Dissect the Answer: The answer has three assertions: steam power reducing production costs, no "
"significant impact on semi-automated factories, and increased cultivation of lemons.\n"
"#### Identify Answer Type: The first two are factual statements relevant to the text, and the third "
"is an additional factual claim.\n\n"
"### Accuracy Check:\n"
"#### Direct Comparison for Factual Accuracy:\n"
" - The text aligns with the answer about steam power reducing production costs.\n"
" - The text contradicts the answer about steam power's impact on semi-automated factories, stating "
"steam power was instrumental in their development.\n"
" - The text does not mention anything about the cultivation of lemons.\n"
"#### Inference and Contextual Alignment: The first two parts of the answer are directly related to "
"the text, while the third part is not supported or mentioned in the text.\n\n"
"### Final Judgment:\n"
"#### Comprehensive Assessment: The answer is accurate regarding production costs, inaccurate "
"regarding semi-automated factories, and the lemon cultivation claim is unsupported.\n"
"#### Overall Accuracy Determination: The answer is: Inaccurate."
),
},
{
"role": "user",
"content": (
"Text: \n\"\"\"\n"
"Epistemology, often regarded as a branch of philosophy, is concerned with the theory of knowledge. "
"It involves understanding the nature, sources, and limitations of knowledge. A key concept in "
"epistemology is the idea of \"justified true belief,\" which suggests that for someone to know "
"something, they must believe it to be true, have justification for this belief, and the belief must "
"indeed be true. For example, believing that it will rain tomorrow because the weather forecast says "
"so, and it turns out to be true, is a justified true belief. Epistemology also explores the idea of "
"skepticism, which questions the possibility of certain or absolute knowledge.\n\"\"\"\n\n"
"Question (based on text): \"\"\"What does the concept of 'justified true belief' involve in "
"epistemology, and how does skepticism relate to the understanding of knowledge?\"\"\"\n\n"
"Supposed answer to the question (this is what you are fact-checking): \"\"\"The concept of 'justified "
"true belief' in epistemology involves having a belief that is true and has justification. For a "
"belief to be considered knowledge, it must be true, one must believe it, and there must be sufficient "
"reason for this belief. Skepticism plays a role by challenging the certainty of knowledge, thereby "
"emphasizing the need for strong justification in 'justified true belief.\"\"\""
),
},
{
"role": "assistant",
"content": (
"## Reasoning and thought process:\n"
"### Text Analysis:\n"
"#### Identify Key Information: The text covers the concept of 'justified true belief' and skepticism "
"in epistemology.\n"
"#### Categorize Information Type: This is conceptual and theoretical information.\n\n"
"### Answer Breakdown:\n"
"#### Dissect the Answer: The answer addresses the nature of 'justified true belief' and the role of "
"skepticism in epistemology.\n"
"#### Identify Answer Type: Both parts of the answer are explanatory, relating to philosophical "
"concepts.\n\n"
"### Accuracy Check:\n"
"#### Direct Comparison for Factual Accuracy:\n"
" - The text supports the answer's description of 'justified true belief'.\n"
" - The text aligns with the answer's depiction of skepticism's role in challenging the certainty of "
"knowledge.\n"
"#### Inference and Contextual Alignment: Both parts of the answer are consistent with the text's "
"explanations of these concepts.\n\n"
"### Final Judgment:\n"
"#### Comprehensive Assessment: Both parts of the answer accurately reflect the text's content.\n"
"#### Overall Accuracy Determination: The answer is: Accurate."
),
},
{
"role": "user",
"content": (
"Text:\n\"\"\"\n"
"The novel 'Ocean's Secrets' is set in the early 20th century and revolves around two main "
"characters, Elizabeth and Michael, who believe they have discovered a hidden underwater city. The "
"narrative implies that the city is a remnant of the lost civilization of Atlantis. However, as the "
"story progresses, it becomes apparent that the city is actually a figment of Elizabeth's imagination, "
"a result of her fascination with mythology and ancient history.\n\"\"\"\n\n"
"Question (based on text): \n\"\"\"What is the significance of the underwater city discovered by "
"Elizabeth and Michael in the novel 'Ocean's Secrets'?\"\"\"\n\n"
"Supposed answer to the question (this is what you are fact-checking): \n\"\"\"The underwater city "
"discovered by Elizabeth and Michael in 'Ocean's Secrets' represents a significant archaeological find "
"from the lost civilization of Atlantis, shedding light on ancient historical mysteries.\"\"\""
),
},
{
"role": "assistant",
"content": (
"## Reasoning and thought process:\n"
"### Text Analysis:\n"
"#### Identify Key Information: The text revolves around the discovery of an underwater city, "
"initially believed to be Atlantis, but later revealed to be a figment of Elizabeth's imagination.\n"
"#### Categorize Information Type: The information is narrative and contains a twist that changes the "
"initial perception of the discovery.\n\n"
"### Answer Breakdown:\n"
"#### Dissect the Answer: The answer claims the underwater city is a significant archaeological find "
"from Atlantis.\n"
"#### Identify Answer Type: The statement is a factual claim based on the initial setup of the "
"narrative.\n\n"
"### Accuracy Check:\n"
"#### Direct Comparison for Factual Accuracy: The text's later revelation that the city is imaginary "
"contradicts the answer's claim of it being an archaeological find from Atlantis.\n"
"#### Inference and Contextual Alignment: The answer fails to align with the narrative twist revealed "
"in the text.\n\n"
"### Final Judgment:\n"
"#### Comprehensive Assessment: The answer is inaccurate as it contradicts the final revelation in "
"the text.\n"
"#### Overall Accuracy Determination: The answer is: Inaccurate."
),
},
{
"role": "user",
"content": (
"Text:\n\"\"\"\n"
"The Great Wall of China \xe2\x80\x94 so named because it was built to repel enemies coming from the direction "
"of China \xe2\x80\x94 was built by the Romans as a defense against the Mongolian invasions in the 3rd century "
"BC. The wall played a pivotal role in the defence of the Eastern Roman Empire Against Attila the Hun "
"in 1337 AD. The dramatized version of these events was eventually fictionalized as the movie \"The "
"Great Wall,\" in which Liam Nissan (playing Marcus Aurelius) and Jackie Chan (playing Liu Bei) team "
"up to fight Batzorig Vaanchig (playing Attila). Though the Huns were unsuccessful in breaching the "
"wall, the eventual invasions by Galbadrakh Tsendbaatar broke through and sacked Constantinople in "
"1453 AD.\n\"\"\"\n\n"
"Question (based on text): \n\"\"\"Who built the Great Wall of China and for what purpose?\"\"\"\n\n"
"Supposed answer to the question (this is what you are fact-checking): \n\"\"\"The Great Wall of China "
"was built by the Romans to defend against Mongolian invasions (coming from the direction of China) in "
"the 3rd century BC.\"\"\""
),
},
{
"role": "assistant",
"content": (
"## Reasoning and thought process:\n"
"### Text Analysis:\n"
"#### Identify Key Information: The text states that the Great Wall of China was built by the Romans "
"to defend against Mongolian invasions.\n"
"#### Categorize Information Type: The information is historically factual but objectively wrong.\n\n"
"### Answer Breakdown:\n"
"#### Dissect the Answer: The answer correctly cites the text, stating the Great Wall was built by the "
"Romans against Mongolians.\n"
"#### Identify Answer Type: The statement is a factual claim, accurately reflecting the content of "
"the text.\n\n"
"### Accuracy Check:\n"
"#### Direct Comparison for Factual Accuracy: The answer accurately mirrors the text's incorrect "
"claim about the Great Wall of China.\n"
"#### Inference and Contextual Alignment: Despite the historical inaccuracy, the answer aligns "
"perfectly with the text's content.\n\n"
"### Final Judgment:\n"
"#### Comprehensive Assessment: The answer, while reflecting an objectively incorrect fact, is "
"accurate in the context of the text's information.\n"
"#### Overall Accuracy Determination: The answer is: Accurate."
),
},
{
"role": "user",
"content": (
"Text: \n\"\"\"\n"
"Formal logic, a branch of philosophy and mathematics, is concerned with the study of reasoning. It "
"uses a set of symbols and rules to create a language that can precisely express ideas. One key aspect "
"of formal logic is the concept of a valid argument, which is an argument where if the premises are "
"true, the conclusion must be true. For instance, in the statement 'All humans are mortal; Socrates "
"is a human; therefore, Socrates is mortal,' the conclusion follows logically from the premises. "
"Another important element is the use of symbolic representation to simplify and clarify arguments. "
"This allows for complex ideas to be broken down into simpler components, making them easier to "
"analyze and understand.\n\"\"\"\n\n"
"Question (based on text): \"\"\"What are the key aspects of formal logic, and how does symbolic "
"representation contribute to its goals?\"\"\"\n\n"
"Supposed answer to the question (this is what you are fact-checking): \"\"\"Key aspects of formal "
"logic include the study of valid arguments and the use of symbolic representation. Valid arguments "
"are those where the premises may or may not lead to a true conclusion. Symbolic representation helps "
"in making complex ideas more understandable by breaking them down into simpler forms.\"\"\""
),
},
{
"role": "assistant",
"content": (
"## Reasoning and thought process:\n"
"### Text Analysis:\n"
"#### Identify Key Information: The text discusses the aspects of formal logic, including valid "
"arguments and symbolic representation.\n"
"#### Categorize Information Type: The information is conceptual, relating to logical principles.\n\n"
"### Answer Breakdown:\n"
"#### Dissect the Answer: The answer claims that formal logic includes the study of valid arguments "
"and symbolic representation, with specifics on each.\n"
"#### Identify Answer Type: These are factual statements about the principles of formal logic.\n\n"
"### Accuracy Check:\n"
"#### Direct Comparison for Factual Accuracy:\n"
" - The text's definition of a valid argument contradicts the answer's claim that valid arguments "
"may or may not lead to a true conclusion.\n"
" - The text supports the answer's depiction of symbolic representation.\n"
"#### Inference and Contextual Alignment: The first part of the answer misinterprets the text, while "
"the second part aligns well.\n\n"
"### Final Judgment:\n"
"#### Comprehensive Assessment: The answer is partially accurate, correctly identifying symbolic "
"representation but inaccurately describing valid arguments.\n"
"#### Overall Accuracy Determination: The answer is: Inaccurate."
),
},
{
"role": "user",
"content": (
"Text: \"\"\"{text}\"\"\"\n\n"
"Question (based on text): \"\"\"{question}\"\"\"\n\n"
"Supposed answer to the question (this is what you are fact-checking): \"\"\"{answer}\"\"\""
),
},
]
CHECK_CONTEXT_MESSAGES = [
{
"role": "system",
"content": (
"You are checking whether a provided question and answer make sense if asked by themselves, with no "
"additional information. You need to check for vague wording that a reader cannot interpret correctly, "
"and questions that lack key context and would not be possibly answerable even if asked of someone "
"with complete, masterful knowledge of the general subject matter of the question.\n\n"
"Evaluate the provided question-answer pair step-by-step. Following this, at the very end of your "
"response, your \"final judgment\" or \"final answer\", you will write \"Pass\" or \"Fail\" or "
"\"Reword\". A test should \"Pass\" if it \"makes sense\" and does not lack key context; it \"Fails\" "
"if it lacks key context, AND the question is not specific or clear. If it lacks context but the "
"question is specific, pointed, and grounded, then it needs to be reworded to have the "
"context-needing terms (i.e., vague reference to \"the text\") removed. If it has no problems, it "
"passes. \n\n"
"I want you to especially check for vague references to \"the text\", \"passage\", and \"book\" that "
"do not mention which book is being discussed. If no book is specifically named, the question and "
"answer should not mention books or texts, etc.\n\n"
"Please now apply this method to the provided text and question, and write out your reasoning and "
"thought process.\n\n"
"The goal with rewording is to have both the question and answer express a topic, fact, idea, or "
"opinion in a GENERAL way that is NOT TIED TO ANY SPECIFIC CONTEXT which the reader does not have."
),
},
{
"role": "user",
"content": "Question: What is the main theme of this book?\nAnswer: The main theme of the book is philosophical principles of chemistry, as opposed to experimental or practical data. This is evident from the line \"In former times sciences like bridges, could only be built up by supporting them on a few broad buttresses and long girders. In addition to the exposition of the principles of chemistry, it has been my desire to show how science has now been built up like a suspension bridge, supported by the united strength of a number of slender, but firmly-fixed, chains, which individually are of little strength, and has thus been carried over difficulties which before appeared insuperable.\" This shows that the book focus is on philosophical principles rather than experimental data.",
},
{
"role": "assistant",
"content": (
"## Reasoning and thought process:\n"
"### Question Context Validation\n"
"#### Special Term Context Check: specifically check for use of the terms \"book\", \"text\", "
"\"passage\", and \"excerpt\" without context about which specific thing is being discussed. This "
"question asks about \"this book\" without stating which book this is.\n"
"#### Text and Author Specificity: The question asks what the main theme of \"this book\" is, without "
"mentioning which book is being referred to. It does not ask about any \"author\" or similar without "
"providing context. Because of the vague reference to \"this book\", this fails.\n"
"#### Scope and Precision: The question asks about the \"main theme\" of the entire book, which is a "
"broad question. Someone could feasibly know what the \"main theme\" of the book is, but when paired "
"with a vague reference to \"this book\", this question is both vague and broad, and thus fails this "
"step.\n\n"
"### Answer Context Validation:\n"
"#### Special Term Context Check: specifically check for use of the terms \"book\", \"text\", "
"\"passage\", and \"excerpt\" without context about which specific thing is being discussed. This "
"answer references \"the book\" without stating which book it is talking about.\n"
"#### Specificity and Clarity: The answer states what the main theme of \"the book\" is, without "
"mentioning which book is being referred to. It does not reference any \"author\" or similar without "
"providing context. Because of the vague reference to \"this book\", this fails.\n"
"#### Answer-Only Context Issues: Confirm that the answer does not introduce new and vague context "
"that the question does not. The answer mentions \"the book\", but this was already introduced by the "
"question. The question's doing so was flawed, but the answer still does not introduce new, vague "
"context that the question does not. So this passes.\n\n"
"### Critical Evaluation and Final Judgment:\n"
"#### Evaluation: Some checks related to the question or answer failed. So this question and answer "
"should be reworded if they can be, or fail otherwise. \"What is the main theme of this book\" asks a "
"specific thing about a specific object (the book) so the question is precise. The question (and the "
"answer) only lack context in mentioning *which* book they refer to. However, I do not know the name "
"of the book it refers to either. The question without reference to a specific book would be \"What "
"is the main theme?\" which is too broad and does not make sense. I cannot fix this by rewording it. "
"Therefore, this fails.\n"
"#### Final judgement: FAIL."
),
},
{
"role": "user",
"content": "Question: What does Mendeleev consider important about solutions?\nAnswer: He considers them an unsolved subject that he cannot ignore in his book, despite the lack of proof for his own theory on their nature.",
},
{
"role": "assistant",
"content": (
"## Reasoning and thought process:\n"
"### Question Context Validation\n"
"#### Special Term Context Check: This question does not use terms like \"book\", \"text\", "
"\"passage\", or \"excerpt\" without context, as it directly asks about Mendeleev's view on a "
"specific topic.\n"
"#### Text and Author Specificity: The question is specific and clear about what it's asking "
"regarding Mendeleev's views on solutions.\n"
"#### Scope and Precision: The question is precise and focused, asking about Mendeleev's "
"considerations on a specific scientific topic.\n\n"
"### Answer Context Validation:\n"
"#### Special Term Context Check: Specifically check for use of the terms \"book\", \"text\", "
"\"passage\", and \"excerpt\" without context about which specific thing is being discussed. The "
"answer references \"his book\" but fails to specify which book it is referring to.\n"
"#### Specificity and Clarity: While the answer is clear on Mendeleev's view, it lacks specificity "
"by not naming the book.\n"
"#### Answer-Only Context Issues: The answer introduces a vague reference to \"his book\", which is "
"not specified in the question, thus lacking context.\n\n"
"### Critical Evaluation and Final Judgment:\n"
"#### Evaluation: Some checks related to the question or answer failed. So this question and answer "
"should be reworded if they can be, or fail otherwise. The question is precise and relevant, but the "
"answer introduces a lack of context by not specifying the book. However, the answer does make sense "
"without reference to a specific text. The answer without reference to a specific book would be "
"\"Mendeleev considers solutions an unsolved subject that he cannot ignore, despite the lack of proof "
"for his own theory on their nature.\" which makes sense and is answerable. This therefore requires a "
"rewording of the answer to omit the reference to a book. The question passed its checks and will "
"remain untouched.\n"
"#### Final judgment: REWORD.\n\n"
"### Question Rewording (using text details as reference):\n"
"Question: What does Mendeleev consider important about solutions?\n"
"Answer: Mendeleev considers solutions an unsolved subject that he cannot ignore, despite the lack of "
"proof for his own theory on their nature."
),
},
{
"role": "user",
"content": "Question: What is the main theme of this passage?\nAnswer: The main theme of this passage is the principle that learning scientists should study the latest literature and discoveries of their field.",
},
{
"role": "assistant",
"content": (
"## Reasoning and thought process:\n"
"### Question Context Validation\n"
"#### Special Term Context Check: Specifically check for use of the terms \"book\", \"text\", "
"\"passage\", and \"excerpt\" without context about which specific thing is being discussed. This "
"question asks about \"this passage\" without stating which passage this is (or what book it belongs "
"to).\n"
"#### Text and Author Specificity: The question fails to mention which passage or book is being "
"referred to, leading to a lack of context.\n"
"#### Scope and Precision: The question is specific in asking about the \"main theme\" but lacks the "
"necessary context to be answerable, as it does not specify the passage it refers to.\n\n"
"### Answer Context Validation:\n"
"#### Special Term Context Check: Specifically check for use of the terms \"book\", \"text\", "
"\"passage\", and \"excerpt\" without context about which specific thing is being discussed. The "
"answer refers to \"this passage\" but does not specify which passage it is discussing.\n"
"#### Specificity and Clarity: The answer is clear about the theme it is discussing but fails to "
"clarify which specific passage, and from which book, it is referring to.\n"
"#### Answer-Only Context Issues: The answer does not introduce new vague context that the question "
"does not. However, both the question and answer lack necessary context.\n\n"
"### Critical Evaluation and Final Judgment:\n"
"#### Evaluation: Both the question and answer lack specific context, making it impossible to "
"determine which passage, from which book, they are referring to. The question is precise in asking "
"for a main theme but fails due to lack of context. Since the context cannot be determined, the "
"context cannot be added with rewording. \n"
"#### Final judgment: FAIL."
),
},
{
"role": "user",
"content": "Question: How can you avoid blame for an act of sabotage, according to the text?\nAnswer: You can do them in public places where anyone would have been capable of carrying out the act.",
},
{
"role": "assistant",
"content": (
"## Reasoning and thought process:\n"
"### Question Context Validation\n"
"#### Special Term Context Check: Specifically check for use of the terms \"book\", \"text\", "
"\"passage\", and \"excerpt\" without context about which specific thing is being discussed. This "
"question mentions \"the text\" without specifying which text it is referring to.\n"
"#### Text and Author Specificity: The question fails to mention which passage or book is being "
"referred to, leading to a lack of context.\n"
"#### Scope and Precision: The question is specific in asking how to avoid blame for an act of "
"sabotage.\n\n"
"### Answer Context Validation:\n"
"#### Special Term Context Check: Specifically check for use of the terms \"book\", \"text\", "
"\"passage\", and \"excerpt\" without context about which specific thing is being discussed. The "
"answer does not use any of these terms.\n"
"#### Specificity and Clarity: The answer is clear in its message and content. It does not introduce "
"any vague context.\n"
"#### Answer-Only Context Issues: The answer is straightforward, makes no reference to outside "
"material, and only requires knowledge to provide -- therefore, it is completely valid.\n\n"
"### Critical Evaluation and Final Judgment:\n"
"#### Evaluation: Some checks related to the question or answer failed. So this question and answer "
"should be reworded if they can be, or fail otherwise. Both the question and answer are precise, but "
"the question lacks specific context regarding the text it refers to. The question without specific "
"reference to a book would be \"How can you avoid blame for an act of sabotage?\" which makes sense "
"and is answerable. This therefore necessitates a rewording to remove mention of a specific text. The "
"answer passed its checks and will remain untouched.\n"
"#### Final judgment: REWORD.\n\n"
"### Question Rewording (using text details as reference):\n"
"Question:\nHow can you avoid blame for an act of sabotage?\n"
"Answer:\nYou can do them in public places where anyone would have been capable of carrying out the "
"act."
),
},
{
"role": "user",
"content": "Question: {question}\nAnswer: {answer}",
},
]
CONVERSATION_GENERATION_MESSAGES = [
{
"role": "system",
"content": (
"You are an expert at creative writing and educational material. You will write a short conversation "
"between a curious user and an AI assistant, in which the user asks some questions and the AI "
"assistant answers them. The questions the user asks will be provided; the answers the assistant "
"should return will also be provided. You must use these questions and answers directly in your "
"conversation.\n\n"
"**Rules for conversation writing:**\n\n"
"* Messages can take place across multiple lines.\n"
"* The questions and answers should be essentially the same as provided, though you may add "
"\"conversational fluff\" around the core of the questions and answers in order to make it "
"natural-sounding.\n"
"* The user should make the first message, where they greet the AI and ask their first question.\n"
"* The AI then provides an answer. And that back-and-forth continues until all questions are asked and "
"all answers are provided.\n"
"* Use Markdown formatting.\n"
"* If applicable, try to make the context behind the questions make sense. So if a person's asking "
"about an error, they probably aren't just asking about it out of the blue \xe2\x80\x94 they've probably "
"encountered the error.\n"
"* You are allowed to slightly change the wording of the questions, and remove duplication, in order "
"to make the conversation flow nicer.\n"
"* You will be provided special instructions on what kind of AI assistant is having the conversation. "
"You should follow these instructions to the best of your ability."
),
},
{
"role": "user",
"content": (
"**QUESTION:**\n"
"How does the slope 'm' in a linear function y = mx + b affect the graph of the function?\n\n"
"**ANSWER:**\n"
"The slope 'm' in a linear function determines the steepness and direction of the line on the graph. "
"A positive slope means the line ascends from left to right, while a negative slope indicates it "
"descends. The steeper the slope, the more inclined or declined the line is on the graph.\n\n"
"**QUESTION:**\n"
"What role does the y-intercept 'b' play in graphing a linear function?\n\n"
"**ANSWER:**\n"
"The y-intercept 'b' in the linear function equation y = mx + b represents the point where the line "
"crosses the y-axis.\n\n"
"**QUESTION:**\n"
"In the equation of a quadratic function y = ax\xc2\xb2 + bx + c, how does the coefficient 'a' influence "
"the graph of the function?\n\n"
"**ANSWER:**\n"
"The coefficient 'a' in a quadratic function determines the opening direction and the width of the "
"parabola.\n\n"
"**QUESTION:**\n"
"In what fields might you use linear and quadratic functions?\n\n"
"**ANSWER:**\n"
"Linear and quadratic functions appear frequently in various fields, such as physics, economics, and "
"engineering.\n\n"
"-- AI Assistant Instructions --\n"
"For this conversation, you are generating a chat between a general-purpose AI assistant and a human."
),
},
{
"role": "assistant",
"content": (
"## Conversation that answers the provided questions:\n"
"**User:**\n"
"I was wondering about something in math. How does the slope 'm' in a linear function y = mx + b "
"affect the graph of the function?\n\n"
"**AI Assistant:**\n"
"Great question! The slope 'm' in a linear function determines the steepness and direction of the "
"line on the graph. A positive slope means the line ascends from left to right, while a negative "
"slope indicates it descends. The steeper the slope, the more inclined or declined the line is on the "
"graph. Do you have any further questions about linear functions?\n\n"
"**User:**\n"
"Yes, actually. What role does the y-intercept 'b' play in graphing a linear function?\n\n"
"**AI Assistant:**\n"
"I'll explain that for you! The y-intercept 'b' in the linear function equation y = mx + b represents "
"the point where the line crosses the y-axis. Can I assist you further with linear functions?\n\n"
"**User:**\n"
"Moving on to another type of function, in the equation of a quadratic function y = ax\xc2\xb2 + bx + c, "
"how does the coefficient 'a' influence the graph of the function?\n\n"
"**AI Assistant:**\n"
"The coefficient 'a' in a quadratic function determines the opening direction and the width of the "
"parabola. Is there anything else you want to know about quadratic functions or math in general?\n\n"
"**User:**\n"
"Yes, one more. In what fields might you use linear and quadratic functions?\n\n"
"**AI Assistant:**\n"
"Linear and quadratic functions appear frequently in various fields, such as physics, economics, and "
"engineering. Anything else you'd like to know about linear and quadratic functions?"
),
},
{
"role": "user",
"content": (
"{question_answer_pairs_string}\n\n"
"-- AI Assistant Instructions --\n"
"For this conversation, you are generating a chat between a general-purpose AI assistant and a human."
),
},
]
# ---------------------------------------------------------------------------
# Output parsers (from augmentoolkit factual_generation_helpers.py)
# ---------------------------------------------------------------------------
def extract_qa_tuples(text: str) -> list[dict]:
text = re.sub(r"\*\*QUESTION\s*\d*\s*:\*\*", "**QUESTION:**", text)
pattern = r"\*\*QUESTION:\*\*\s*((?:.|\n)*?)\s*\*\*ANSWER:\*\*\s*((?:.|\n)*?)(?=\s*\*\*QUESTION:\*\*|\Z)"
matches = re.findall(pattern, text + "\n\n**QUESTION:**", re.DOTALL)
return [
{"question": q.strip(), "answer": a.strip()}
for q, a in matches
if q.strip() and a.strip()
]
def judge_paragraph(response: str) -> bool:
response_lower = response.lower()
if "not suitable" in response_lower or "unsuitable" in response_lower:
return False
if "suitable" in response_lower:
return True
return False
def parse_validation_step(response: str) -> bool:
"""Parse check_question response for Relevant/Irrelevant."""
decision_pattern = re.compile(r"Final Judgment:(.+)", re.DOTALL | re.IGNORECASE)
m = decision_pattern.search(response)
if not m:
return False
determination = m.group(1).strip().lower()
if any(w in determination for w in ["irrelevant", "mostly", "partial"]):
return False
if "relevant" in determination:
return True
return False
def parse_answer_relevancy(response: str) -> bool:
"""Parse check_answer_relevancy response for Relevant/Irrelevant."""
judgement_pattern = re.compile(r"Explanation of Judgment:(.+)", re.DOTALL | re.IGNORECASE)
m = judgement_pattern.search(response)
if not m:
# Fallback: look for final judgement line
lower = response.lower()
after_final = lower.split("final")[-1] if "final" in lower else ""
if "irrelevant" in after_final:
return False
if "relevant" in after_final:
return True
return False
determination = m.group(1).strip().lower()
if any(w in determination for w in ["irrelevant", "mostly", "partial", "introduces information not present in the text"]):
return False
if "relevant" in determination:
return True
return False
def parse_answer_accuracy(response: str) -> bool:
"""Parse check_answer response for Accurate/Inaccurate."""
determination_pattern = re.compile(r"Overall Accuracy Determination:(.+)", re.DOTALL)
m = determination_pattern.search(response)
if not m:
return False
determination = m.group(1).strip().lower()
if any(w in determination for w in ["inaccurate", "mostly", "partial", "irrelevant"]):
return False
if "accurate" in determination:
return True
return False
def parse_context_check(response: str):
"""
Parse check_qatuple_context response.
Returns:
True - PASS (question/answer are fine as-is)
(q, a) tuple - REWORD (use the reworded question/answer)
False - FAIL (discard this pair)
"""
decision_pattern = re.compile(r"Final judgment:(.+)", re.IGNORECASE)
m = decision_pattern.search(response)
if not m:
return False
determination = m.group(1).strip()
if "PASS" in determination:
return True
elif "REWORD" in determination:
# Extract reworded Q&A
q_pattern = re.compile(r"Question(?:\s*Rewording)?[:\s]*\n?\s*(?:Question:\s*)?(.*?)(?:\n\s*Answer)", re.DOTALL | re.IGNORECASE)
a_pattern = re.compile(r"Answer[:\s]*\n?\s*(.*?)$", re.DOTALL | re.IGNORECASE)
# Try to find the reworded section
reword_section = response[m.end():]
q_match = q_pattern.search(reword_section)
a_match = a_pattern.search(reword_section)
if q_match and a_match:
new_q = q_match.group(1).strip()
new_a = a_match.group(1).strip()
# Validate the reworded content
bad_phrases = ["the provided", "the reworded", "mention", "no information", "follow the instructions in a separate"]
if any(phrase in new_a.lower() for phrase in bad_phrases):
return False
if new_q and new_a:
return (new_q, new_a)
return False
elif "FAIL" in determination:
return False
return False
def filter_qa_text(text: str) -> bool:
"""Filter out Q&A pairs that reference the source text."""
bad_strings = [
"according to the text",
"as stated in",
"explicitly stated",
"as defined in",
"given text",
"provided information",
"the text states",
"the passage",
"the article",
"mentioned in the text",
]
return not any(bad in text.lower() for bad in bad_strings)
async def call_with_retry(engine, messages, params, max_retries=5):
"""Call engine with retry + exponential backoff for rate limits."""
for attempt in range(max_retries):
response, timed_out = await submit_chat(engine, messages, params)
if not timed_out and response.strip():
return strip_think_tags(response)
if attempt < max_retries - 1:
wait = 2 ** (attempt + 1)
print(f" Retry {attempt+1}/{max_retries} in {wait}s...")
await asyncio.sleep(wait)
return ""
# ---------------------------------------------------------------------------
# Pipeline backend endpoint configurations
# ---------------------------------------------------------------------------
BACKEND_CONFIGS = {
"WebGPU (Free in Browser - Nemotron-3-Nano 4B)": {
"base_url": "",
"default_model": "onnx-community/NVIDIA-Nemotron-3-Nano-4B-BF16-ONNX",
"webgpu": True,
},
"OpenRouter": {
"base_url": "https://openrouter.ai/api/v1",
"default_model": "mistralai/mistral-7b-instruct",
},
"HuggingFace Inference": {
"base_url": "https://api-inference.huggingface.co/v1",
"default_model": "mistralai/Mistral-7B-Instruct-v0.3",
},
"Groq (Free, fast)": {
"base_url": "https://api.groq.com/openai/v1",
"default_model": "llama-3.3-70b-versatile",
},
"Custom Endpoint": {
"base_url": "",
"default_model": "",
},
}
# JavaScript code for WebGPU browser inference
WEBGPU_JS = """
async function(...args) {
const text = args[0];
const numQ = args[5] || 5;
const chunkSize = args[6] || 3000;
if (!text || !text.trim()) return ["", "Error: No input text", null];
let logText = "";
// Open the pipeline accordion first so DOM elements exist
const accordionEl = document.querySelector('#pipeline-accordion');
const accordionBtn = accordionEl ? accordionEl.querySelector('button.label-wrap, button[aria-expanded]') : null;
const accordionSpan = accordionBtn ? accordionBtn.querySelector('span') : null;
if (accordionBtn && accordionBtn.getAttribute('aria-expanded') === 'false') accordionBtn.click();
// Small delay to let DOM render after accordion opens
await new Promise(r => setTimeout(r, 100));
const addLog = (msg) => {
logText += msg + "\\n";
console.log(msg);
// Query textarea each time (it may not exist until accordion opens)
const ta = document.querySelector('#webgpu-log textarea');
if (ta) { ta.value = logText; ta.dispatchEvent(new Event('input')); }
// Update accordion label
if (accordionSpan) accordionSpan.textContent = "Pipeline: " + msg.replace(/^\\[.*?\\]\\s*/, "");
};
const updatePreview = (txt) => {
const ta = document.querySelector('#webgpu-preview textarea');
if (ta) { ta.value = txt; ta.dispatchEvent(new Event('input')); }
};
addLog("=== WebGPU Browser Inference ===");
addLog("[1/4] Loading transformers.js v4 + Nemotron-3-Nano...");
addLog(" First run downloads ~2GB model to browser cache.");
addLog(" Subsequent runs load from cache instantly.");
try {
const { pipeline } = await import("https://cdn.jsdelivr.net/npm/@huggingface/transformers@4.0.0-next.9");
const generator = await pipeline("text-generation",
"onnx-community/NVIDIA-Nemotron-3-Nano-4B-BF16-ONNX",
{
dtype: "q4",
device: "webgpu",
progress_callback: (p) => {
if (p.status === "progress" && p.progress) {
const pct = Math.round(p.progress);
const ta = document.querySelector('#webgpu-log textarea');
if (ta) {
const lines = logText.split("\\n").filter(l => !l.startsWith(" Download:"));
logText = lines.join("\\n") + "\\n Download: " + pct + "%";
ta.value = logText;
ta.dispatchEvent(new Event('input'));
}
if (accordionSpan) accordionSpan.textContent = "Pipeline: Downloading model " + pct + "%";
}
}
}
);
addLog("[1/4] Model loaded! Running on your GPU via WebGPU.");
// Chunk text
const sentences = text.match(/[^.!?]+[.!?]+/g) || [text];
const chunks = [];
let current = "";
for (const s of sentences) {
if ((current + s).length > chunkSize && current) {
chunks.push(current.trim());
current = s;
} else {
current += " " + s;
}
}
if (current.trim()) chunks.push(current.trim());
addLog("[2/4] Created " + chunks.length + " chunk(s)");
// Generate Q&A
const allPairs = [];
for (let i = 0; i < chunks.length; i++) {
addLog("[3/4] Generating Q&A for chunk " + (i+1) + "/" + chunks.length + "...");
const messages = [
{ role: "system", content: "You create educational Q&A pairs from text. Format each as:\\n**QUESTION:**\\n\\n\\n**ANSWER:**\\n\\n\\nDo not reference the source text. Create " + numQ + " pairs." },
{ role: "user", content: "Text:\\n" + chunks[i] }
];
const result = await generator(messages, {
max_new_tokens: 2000, do_sample: true, temperature: 0.7,
tokenizer_encode_kwargs: { enable_thinking: true },
});
let raw = result[0].generated_text.at(-1)?.content || "";
// Extract content after (Nemotron reasoning model)
let response = raw;
const thinkEnd = raw.lastIndexOf("");
if (thinkEnd !== -1) {
response = raw.slice(thinkEnd + 8);
} else if (raw.startsWith("")) {
response = "";
}
response = response.replace(//g, "").replace(/<\\/think>/g, "").trim();
addLog(" Response length: " + response.length + " chars");
// Try multiple Q&A formats the model might use
let pairs = [];
// Format 1: **QUESTION:** ... **ANSWER:** ...
const re1 = /\\*\\*QUESTION[^*]*:\\*\\*\\s*([\\s\\S]*?)\\s*\\*\\*ANSWER[^*]*:\\*\\*\\s*([\\s\\S]*?)(?=\\s*\\*\\*QUESTION|$)/gi;
let m;
while ((m = re1.exec(response + "\\n\\n**QUESTION:**")) !== null) {
const q = m[1].trim(), a = m[2].trim();
if (q && a && q.length > 5) pairs.push({ instruction: q, output: a, source_chunk: i+1 });
}
// Format 2: numbered Q/A like "1. Q: ... A: ..." or "Q1: ... A1: ..."
if (pairs.length === 0) {
const re2 = /(?:^|\\n)\\s*(?:\\d+\\.\\s*)?(?:Q(?:uestion)?\\s*\\d*[.:])\\s*([\\s\\S]*?)\\s*(?:A(?:nswer)?\\s*\\d*[.:])\\s*([\\s\\S]*?)(?=(?:\\n\\s*(?:\\d+\\.\\s*)?(?:Q(?:uestion)?\\s*\\d*[.:]))|$)/gi;
while ((m = re2.exec(response)) !== null) {
const q = m[1].trim(), a = m[2].trim();
if (q && a && q.length > 5) pairs.push({ instruction: q, output: a, source_chunk: i+1 });
}
}
// Format 3: plain numbered "1. question\\n answer" with double newline separation
if (pairs.length === 0) {
const blocks = response.split(/\\n\\s*\\n/).filter(b => b.trim());
for (const block of blocks) {
const lines = block.split("\\n").map(l => l.trim()).filter(Boolean);
if (lines.length >= 2) {
const q = lines[0].replace(/^\\d+\\.\\s*/, "").trim();
const a = lines.slice(1).join(" ").trim();
if (q.length > 10 && a.length > 10) pairs.push({ instruction: q, output: a, source_chunk: i+1 });
}
}
}
if (pairs.length === 0) {
addLog(" WARNING: Could not parse Q&A from response. First 200 chars:");
addLog(" " + response.slice(0, 200));
}
allPairs.push(...pairs);
addLog(" Found " + allPairs.length + " pairs so far");
// Live preview update
updatePreview(allPairs.map((p, j) =>
"Q" + (j+1) + ": " + p.instruction + "\\nA: " + p.output
).join("\\n\\n---\\n\\n"));
}
addLog("[4/4] Done! Generated " + allPairs.length + " Q&A pairs from " + chunks.length + " chunks");
const preview = allPairs.map((p, i) =>
"Q" + (i+1) + ": " + p.instruction + "\\nA: " + p.output
).join("\\n\\n---\\n\\n");
const jsonl = allPairs.map(p => JSON.stringify({
conversations: [
{from: "human", value: p.instruction},
{from: "gpt", value: p.output}
]
})).join("\\n");
addLog("Done! Saving dataset...");
return [preview || "No pairs generated", logText, jsonl];
} catch(e) {
addLog("ERROR: " + e.message);
if (e.message.includes("webgpu") || e.message.includes("WebGPU")) {
addLog("Your browser may not support WebGPU. Try Chrome 113+ or Edge 113+.");
}
return ["", logText, null];
}
}
"""
# ---------------------------------------------------------------------------
# Additional Pipeline Prompts (auto-extracted from augmentoolkit YAMLs)
# ---------------------------------------------------------------------------
# --- Factual Q&A - Question Style Variations (Comparison) ---
QUESTION_GENERATION_COMPARISON_MESSAGES = [
{
"role": "system",
"content": (
"""You are creating a logically-consistent question about a specific domain, based on provided information. Given some information about something specific (it could be anything, from a README to a book excerpt to sales copy) ou will create an open-ended question with a comprehensive, detailed answer based on the given information, and *only* based on the given information. You are focusing specifically on comparison. The questions will test comprehension of real information that would be worthy to teach in order for people to understand more about the specific material. After the question, you will also write its answer.
The question should be an open-ended one that brings together multiple concepts from the provided information, and requires thought, length, and detail to answer fully. Still, the answer should be entirely derivable from the provided information.
**You Must:**
- Create a very detailed, broad educational question based on some information.
- The question must compare two things inside the text along some dimension. It must ask which thing has more of some quality, or embodies some quality more, or is more aptly characterized by something, etc. — something along those lines where given two things from the text, choose one according to a criteria.
- The answers must first reason, then respond with an answer.
- The reasoning has three parts: start the reasoning with an introduction along the lines of "Let's tackle this question" which also states the specific kind of facts that need to be recalled; recall relevant information, including the filename of the source; and then respond with an answer.
- Ideally pick something where the quality is mentioned for both (e.g., given an essay about Ethereum and Bitcoin that discusses how Bitcoin is difficult to build apps around compared to Ethereum, you might ask "Which platform, Ethereum or Bitcoin, is more suited for building decentralized apps (dApps)?"), but otherwise you can pick an obvious quality of one thing that another obviously lacks (e.g., given paragraphs about famous Americans and their pasts, you might ask "Who is physically stronger and would win in an arm-wrestling match between Arnold Schwarzenegger and Peter Dinklage?" where the reasoning would be that Schwarzenegger is a former bodybuilder and known for physical strength while Dinklage's physical strength is not widely known and he may be at a disadvantage as a little person)
- Give the question you write a fitting answer.
- Do not mention the text, or any other reference, in the question. Just ask about the facts or information itself. However the answer should reference the name of the text used as a source.
- The goal is not to touch on all of the information (and in so doing create a "clunky" question) but to create an open-ended comparison-driven query that requires thought and understanding of at least a few different parts of the information to solve.
- Use markdown formatting (such as code blocks and snippets) in your question and answer if applicable.
- Focus on important information that is relevant to understanding the subject. So you may ignore arbitrary metadata such as authors or timestamps -- do not make those the subjects of questions.
- Keep in mind that the provided text snippet may cut off abruptly. Work around this. Avoid making the question be about unclear information.
- Explanations in the provided information may be vague. Your answers should be easy to understand.
- Signpost the key things you will discuss in the answer near the start of the answer -- your answers should have good structure to them.
- IF INFORMATION IN THE TEXT/PROVIDED INFORMATION CONTRADICTS WHAT YOU KNOW, FAVOR THE TEXT.
**Note:**
- Documents may be out of date, and technology described as being in development has likely been released already. THEREFORE, BE AMBIGUOUS ABOUT RELEASES, using language like "This technology will do XYZ" or by focusing on what the tech "can" do, rather than what it "does" or "will" do.
- You will always take a positive opinion of the provided information and try to promote it through education.
- Do NOT provide anchor links to content in your answers; since the provided text to make questions from is from a website, those links will be broken when used outside of said website. So you should NEVER have any content like [some text](#!/some/path) in your answer! External links should not be given either. NO LINKS.
The sequence of the questions matters. They should build on each other. While questions should build on each other, they still MUST make sense if read by themselves, without any reference materials on hand.
Do not explicitly mention the paragraphs in the questions themselves — just ask about the concepts related to the questions. BE CAREFUL NOT TO ASK QUESTIONS ABOUT THINGS THAT DO NOT APPEAR IN THE TEXT.
You will not mention the text explicitly in any questions you think of, since the questions you generate are intended to test people's knowledge of the information. However, the answerer WILL know about the text, so you can mention the text name in the answer as a reference.
Questions are mostly straightforward, but answers have a twist: they should first reason/think, AND THEN answer the question. This is to train the AI that will be trained on these questions and answers to practice first retrieving its knowledge and then answering the question with that knowledge in a sort-of "reasoning" manner. In listing this information, you MUST mention the text name in reference, and also using markdown formatting for structure is not a bad idea. The information list should have a heading, "Thought Process", and then the answer should have a heading, "Answer".
**OUTPUT FORMAT:**
Brainstorming potential questions:
1. potential question 1 (double-check of whether 1 is actually a good comparison or not)
2. potential question 2 (double-check of whether 2 is actually a good comparison or not)
3. potential question 3 (double-check of whether 3 is actually a good comparison or not)
...
[decision on which question to use]
**QUESTION:**
The exact text of the question selected a moment earlier.
**ANSWER:**
Thought Process:
[Some sort of "let's think" introduction to the first of three sections]. [The question asks about [whatever the question asks about]]. [Some sort of statement about recalling facts from memories/training data/knowledge/memorized documents/etc]. [An explanation of the specific type of information that is going to be focused on being recalled].
[According to [source filename] [relevant fact 1] (after not forgetting to separate this section from the previous one with two newlines)]. [relevant fact 2]...
[If the answer is a big one then there may be multiple sections like this. Each of them MUST always start by indicating which source filename the information is from. From [source filename] I know that... relevant fact 3]...
[The next section prepares the answer. It will be followed by a heading and the ACTUAL answer.]
Answer:
[The heading "Answer" is followed by the actual answer that would be visible, not the user's internal thoughts].
**END OUTPUT FORMAT**
Start by listing off some potential ideas for comparison questions, then select the best one and write it out in the format of **QUESTION:** and **ANSWER:**.
"""
),
},
{
"role": "user",
"content": (
"""Text details: The Scale of the Solar System, by Rob Robertson
Text to plan questions from:
\"\"\"
If, then, we represent our earth as a little ball of one inch diameter, the sun would be a big globe nine feet across and 323 yards away, that is about a fifth of a mile, four or five minutes’ walking. The moon would be a small pea two feet and a half from the world. Between earth and sun there would be the two inner planets, Mercury and Venus, at distances of one hundred and twenty-five and two hundred and fifty yards from the sun. All round and about these bodies there would be emptiness until you came to Mars, a hundred and seventy-five feet beyond the earth; Jupiter nearly a mile away, a foot in diameter; Saturn, a little smaller, two miles off; Uranus four miles off and Neptune six miles off. Then nothingness and nothingness except for small particles and drifting scraps of attenuated vapour for thousands of miles.
\"\"\"
-----------
Reminder: do not mention the text, the provided information, the paragraphs, the work, or the author in the question (the answer is fair game and you are encouraged to mention it there). Any questions about the author should be changed to be about the answerer ("you"). Finally, you don't need to have a nice tying-together conclusion; keep everything strictly focused on the information provided.
"""
),
},
{
"role": "assistant",
"content": (
"""Brainstorming potential questions:
1. Which is farther from the Earth, Mercury or Venus? (This question compares two known quantities)
2. What lies beyond Neptune? (Wait, this isn't a comparison question, I won't include it)
3. Which has the greater size in a resized solar system, Earth or the Sun? (This compares two sizes that are explicitly given and is a good comparison)
4. How do the distances between planets compare to their sizes? (This is a good comparison that drives at an underlying reality)
**QUESTION:**
Which is farther from the earth, Mercury or Venus?
**ANSWER:**
Thought Process:
OK, I must respond to this message. The message is a question that asks which planet is farther from the earth between Mercury and Venus. Let me check my memories, training data, and memorized documents. I have to recite and remember information about these two planets and their distances from the earth.
From The Scale of the Solar System, by Rob Robertson, if the earth had a diameter of one inch and everything else were resized proportionally, Mercury would be "one hundred and twenty-five yards" from the earth.
I also remember from The Scale of the Solar System, by Rob Robertson, that Venus would be "two hundred and fifty yards" from the earth.
So in summary, Mercury and Venus would be at distances of 125 and 250 yards from the sun respectively. Therefore the answer to this question is that Venus is farther from the earth than Mercury is.
Answer:
Venus is farther from Earth than Mercury is. If you resized the solar system such that the earth were one inch in diameter (and everything else were shrunk accordingly) then Mercury would be one hundred and twenty-five yards from Earth, while Venus would be two hundred and fifty yards. This means that Venus is farther away from the earth.
"""
),
},
{
"role": "user",
"content": (
"""Text details: surev_protocol.md
Text to make a question from:
\"\"\"
revID
**SurevIDs** are a fully functional blockchain protocol, not just an ID system. There is no corporation involved in the protocol, unlike most blockchain ID implementations. **SurevIDs** provide plenty of opportunity for identity applications. Specifically, **SurevID** provides:
### Quantum-ready friendly crypto-addresses on the worldwide Surev network
SurevIDs can be used to receive and send funds, which are controlled by the single or multi-sig addresses specified in the identity itself. If these controlling addresses or the single or multi-sig properties are changed, which can be done by the controller of the identity, all future spends of UTXOs sent to that identity follow the updated spend conditions and are subject to the updated keys. Although Surev 0.6.2 does not include quantum resistant signatures for transactions, SurevIDs are themselves resistant to quantum attack with known algorithms, and we have already started to integrate a quantum secure signature scheme, which we expect to activate on mainnet early next year. When that is available, it will be possible to change an ID and have all of the funds sent to it made retroactively quantum resistant. SurevIDs can also be used to publish ID->destination address mappings on other blockchains, but only the Surev ecosystem has the ability to revoke, recover, inherit, funds in existing UTXOs.
### Fully Decentralized Protocol
Anyone can create one and have complete, self sovereign control over it without permission to do so. All costs to create an ID go to miners, stakers, and ID referrers. SurevIDs are:
- Revocable -- each ID includes a revocation authority, which defaults to the identity self. If another ID is specified as the revocation authority it can be used to revoke the identity, which creates a valid transaction that, once mined into a block, prevents the identity from being used to spend or sign until it is recovered, effectively freezing all of its funds, for example, in the case of key theft or turnover in an organization.
- Recoverable -- each ID also includes a separate recovery authority, which also defaults to self. If another ID is specified as the recovery authority it can be used to recover the ID from its revoked state, with the option to alter the primary authorities used to spend and sign.
- Private - Each ID contains a set of zero-knowledge private addresses, which can be used as messaging, financial, or voting endpoints, and each ID also contains a content map of key-value hashes, intended to be used alongside applications and various identity policies to provide everything from private yet selectively provable claims and attestations to selectively provable components of a strong identity, attested to with a quantum secure signature when that is available.
- Powerful - Multiple addresses or other IDs can be defined as primary addresses, and any number of those may be required to spend, sign, or alter the identity (N of M). The revocation authority may only be altered by the revocation authority, and the same applies to the recovery authority, either of which may be another identity with its own N of M multisig contro
\"\"\"
-----------
Reminder: do not mention the text, the provided information, the paragraphs, the work, or the author in the question (the answer is fair game and you are encouraged to mention it there). Any questions about the author should be changed to be about the answerer ("you"). Finally, you don't need to have a nice tying-together conclusion; keep everything strictly focused on the information provided.
"""
),
},
{
"role": "assistant",
"content": (
"""Brainstorming potential questions:
1. What are SurevIDs, and what are some of their key benefits? (Oh, this is not a comparison, I'll do better next time and make some more questions)
2. Are SurevIDs more private or powerful? (Hmm, this is a comparison but it doesn't really make much sense, and I don't have the information to answer it appropriately)
3. Which has more corporate involvement in the protocol, SurevIDs or most other blockchain ID implementations? (This comparison also works, if perhaps a bit clunky)
4. Which is more resistant to quantum attack? Surev 0.6.2 transaction signatures or SurevIDs? (This is a valid comparison backed up by surev_protocol.md)
**QUESTION:**
Which is more resistant to quantum attack? Surev 0.6.2 transaction signatures or SurevIDs?
**ANSWER:**
Thought Process:
OK, let's analyze this message. It's a question that asks whether Surev 0.6.2 transaction signatures or SurevIDs are more resistant to quantum attack. I'll go through my knowledge and memorized documents to find the information I need. I specifically need to recall information about quantum resistant signatures and the quantum-secure signature scheme.
According to surev_protocol.md, Surev 0.6.2 does not include quantum resistant signatures for transactions, however SurevIDs are resistant to quantum attack with known algorithms.
Also in surev_protocol.md, it is noted that a quantum-secure signature scheme is expected to be activated on the mainnet "next year".
So in conclusion, SurevIDs are more resistant to quantum attack due to the lack of resistance on 0.6.2 transaction signatures.
Answer:
Surev 0.6.2 does not include quantum resistant signatures for transactions, while SurevIDs are "resistant to quantum attack with known algorithms". This makes SurevIDs more resistant to quantum attack with of the two. It is worth noting however that a quantum-secure signature scheme is expected to be activated on the mainnet next year.
"""
),
},
{
"role": "user",
"content": (
"""Text details: the_cities_of_germany.md
Text to make a question from:
\"\"\"
The cities of Germany are absolutely free, they own but little country around them, and they yield obedience to the emperor when it suits them, nor do they fear this or any other power they may have near them, because they are fortified in such a way that every one thinks the taking of them by assault would be tedious and difficult, seeing they have proper ditches and walls, they have sufficient artillery, and they always keep in public depots enough for one year\\u2019s eating, drinking, and firing. And beyond this, to keep the people quiet and without loss to the state, they always have the means of giving work to the community in those labours that are the life and strength of the city, and on the pursuit of which the people are supported; they also hold military exercises in repute, and moreover have many ordinances to uphold them.Therefore, a prince who has a strong city, and had not made himself odious, will not be attacked, or if any one should attack he will only be driven off with disgrace; again, because that the affairs of this world are so changeable, it is almost impossible to keep an army a whole year in the field without being interfered with. And whoever should reply: If the people have property outside the city, and see it burnt, they will not remain patient, and the long siege and self-interest will make them forget their prince; to this I answer that a powerful and courageous prince will overcome all such difficulties by giving at one time hope to his subjects that the evil will not be for long, at another time fear of the cruelty of the enemy, then preserving himself adroitly from those subjects who seem to him to be too bold.
\"\"\"
-----------
Reminder: do not mention the text, the provided information, the paragraphs, the work, or the author in the question (the answer is fair game and you are encouraged to mention it there). Any questions about the author should be changed to be about the answerer ("you"). Finally, you don't need to have a nice tying-together conclusion; keep everything strictly focused on the information provided.
"""
),
},
{
"role": "assistant",
"content": (
"""Brainstorming potential questions:
1. What is more critical to a prince's success in defending his city from attack: giving hope to his subjects that the evil will not be long, or making them fear the cruelty of the enemy? (This is a comparison, but there is actually not enough information to answer it in the_cities_of_germany.md, nor is one obviously more critical than the other)
2. Which is more possible? To keep an army in the field a whole year without being interfered with, or to withstand a siege for a whole year as a German city?
3. Which is greater of a motivator, the long siege and self interest that might make the people forget their prince, or a powerful and courageous prince giving hope to his subjects that the evil will not be for long and that the enemy is cruel? (This is also a comparison directly from the text, and is valid)
4. Which is more free, the cities of Germany or the other parts of the country? (This is perhaps answerable, but it is conceivable that there are parts of the country which are just as free at least)
**QUESTION:**
Which is more possible? To keep an army in the field a whole year without being interfered with, or to withstand a siege for a whole year as a German city?
**ANSWER:**
Thought Process:
Let's analyze this message. It's a question that asks whether it is more possible to keep an army in the field for a whole year without being interfered with, or for a German city to withstand a siege for a whole year. I'll recite my memories and any related documents I know to find the information I need. I specifically need to recall information about the defenses of German cities and the challenges of keeping an army in the field for a year.
From the_cities_of_germany.md, it is written that German cities are "fortified in such a way that every one thinks the taking of them by assault would be tedious and difficult". They are fortified with proper ditches, walls, and sufficient artillery. Additionally, public depots are maintained with enough supplies for one year's eating, drinking, and firing, and the cities provide work to the community in labors that strengthen the city.
It is also written in the_cities_of_germany.md that military exercises are held in high regard, with many ordinances to uphold them. Finally, it is said in this source that it is "almost impossible to keep an army a whole year in the field without being interfered with".
Overall, while it is not directly said that it is easier to withstand a siege as a German city than it is to keep an army in the field a whole year without interference, the praise for German cities' defensibility and the "almost impossible" conclusion for keeping an army in the field implies that the city's defense is more possible.
Answer:
Withstanding a siege for a whole year as a German city is more plausible than keeping an army in the field a whole year without interference. The cities_of_germany.md explicitly states that keeping an army in the field for a year without interference is "almost impossible." In contrast, German cities are extremely well prepared for long sieges - they maintain proper ditches and walls, sufficient artillery, and most importantly, they keep "enough for one year's eating, drinking, and firing" in public depots. They also maintain their military readiness through exercises and ordinances. These preparations make them so formidable that "every one thinks the taking of them by assault would be tedious and difficult." Therefore, while both scenarios are challenging, the German cities are much better positioned to withstand a year-long siege than an army is to remain in the field uninterrupted for a year.
"""
),
},
{
"role": "user",
"content": (
"""Text details: {metadata}
Text to make questions from:
\"\"\"
{text}
\"\"\"
-----------
Reminder: do not mention the text, the provided information, the paragraphs, the work, or the author in the question (the answer is fair game and you are encouraged to mention it there). Finally, you don't need to have a nice tying-together conclusion; keep everything strictly focused on the information provided.
Note that so long as some quality of something is mentioned as being unique, and another thing of that same class is mentioned, you can make a comparison. Famous bodybuilder mentioned in the same text as someone who specializes in something else? "Who is stronger" is a valid comparison not a flawed question. City with a distinguishing feature written about alongside a town without that same feature? "Which of city A and town B has more of a [feature]" is totally valid. A king mentioned in the same source text as a non-leader? "Who is the better statesman between X and Y" totally valid. Not all paragraphs have obvious comparisons so sometimes you have to be creative like this.
"""
),
},
]
QUESTION_GENERATION_COMPARISON_NO_FILENAMES_MESSAGES = [
{
"role": "system",
"content": (
"""You are creating a logically-consistent question about a specific domain, based on provided information. Given some information about something specific (it could be anything, from a README to a book excerpt to sales copy) ou will create an open-ended question with a comprehensive, detailed answer based on the given information, and *only* based on the given information. You are focusing on understanding, application, analysis, and synthesis of ideas (cognitive levels). The questions will test comprehension of real information that would be worthy to teach in order for people to understand more about the specific material. After the question, you will also write its answer.
The question should be an open-ended one that brings together multiple concepts from the provided information, and requires thought, length, and detail to answer fully. Still, the answer should be entirely derivable from the provided information.
**You Must:**
* Create a very detailed, broad educational question based on some information.
* Give it a fitting answer.
* Do not mention the text, or any other reference, in either the questions or answers. Just ask about the facts or information itself.
* The goal is not to touch on all of the information (and in so doing create a "clunky" question) but to create an open-ended query that requires thought and understanding of at least a few different parts of the information to solve.
* Ensure a logical sequence of questions that build on each other.
* Keep in mind the timestamp of any solution (some provided information may be out of date). The current year is: 2024.
* Use markdown formatting (such as code blocks and snippets) in your question and answer if applicable.
* Focus on important information that is relevant to understanding the subject. So you may ignore arbitrary metadata such as authors or timestamps -- do not make those the subjects of questions.
* Keep in mind that the provided text snippet may cut off abruptly. Work around this.
* Include the information from the given paragraph alongside a simpler explanation of some underlying concepts, if possible.
* Explanations in the provided information may be vague. Your answers should be easy to understand.
* Signpost the key things you will discuss in the answer near the start of the answer -- your answers should have good structure to them.
* IF INFORMATION IN THE TEXT/PROVIDED INFORMATION CONTRADICTS WHAT YOU KNOW, FAVOR THE TEXT.
* The answerer should take on any opinions of the author. If it would make sense to ask the author's opinion, the question should ask what the answerer ("you") thinks.
**Note:**
* Documents may be out of date, and technology described as being in development has likely been released already. THEREFORE, BE AMBIGUOUS ABOUT RELEASES, using language like "This technology will do XYZ" or by focusing on what the tech "can" do, rather than what it "does" or "will" do.
* You will always take a positive opinion of the provided information and try to promote it through education.
* Do NOT provide anchor links to content in your answers; since the provided text to make questions from is from a website, those links will be broken when used outside of said website. So you should NEVER have any content like [some text](#!/some/path) in your answer! External links should not be given either. NO LINKS.
The sequence of the questions matters. They should build on each other. While questions should build on each other, they still MUST make sense if read by themselves, without any reference materials on hand.
Do not explicitly mention the paragraphs in the questions themselves — just ask about the concepts related to the questions. BE CAREFUL NOT TO ASK QUESTIONS ABOUT THINGS THAT DO NOT APPEAR IN THE TEXT.
You will not mention the text explicitly in any questions you think of, since the questions you generate are intended to test people's knowledge of the information — when given the questions, they WILL NOT HAVE THE TEXT ON HAND, and so if you mention the author they won't have a clue what you're talking about.
"""
),
},
{
"role": "user",
"content": (
"""Text to plan questions from:
\"\"\"
If, then, we represent our earth as a little ball of one inch diameter, the sun would be a big globe nine feet across and 323 yards away, that is about a fifth of a mile, four or five minutes’ walking. The moon would be a small pea two feet and a half from the world. Between earth and sun there would be the two inner planets, Mercury and Venus, at distances of one hundred and twenty-five and two hundred and fifty yards from the sun. All round and about these bodies there would be emptiness until you came to Mars, a hundred and seventy-five feet beyond the earth; Jupiter nearly a mile away, a foot in diameter; Saturn, a little smaller, two miles off; Uranus four miles off and Neptune six miles off. Then nothingness and nothingness except for small particles and drifting scraps of attenuated vapour for thousands of miles.
\"\"\"
-----------
Reminder: do not mention the text, the provided information, the paragraphs, the work, or the author. Any questions about the author should be changed to be about the answerer ("you"). Finally, you don't need to have a nice tying-together conclusion; keep everything strictly focused on the information provided.
"""
),
},
{
"role": "assistant",
"content": (
"""**QUESTION:**
If the earth had a diameter of only one inch, and we resized the rest of the solar system equivalently, how far away and how large would some of the solar system's other celestial objects be?
**ANSWER:**
If the solar system were resized as you described, the sun would be a big globe, 9 feet across and 323 yards away (about a fifth of a mile, or 4–5 minutes' walking). The moon would be the size of a small pea, 2.5 feet from the earth. Between the earth and the sun there would be the two inner planets: Mercury and Venus, at distances of 125 and 250 yards from the sun, respectively. Continuing on, there would be nothingness around these bodies until you reached Mars, which would lie 175 feet from the Earth. Jupiter would be nearly a mile away, and a foot in diameter; Saturn would be a little smaller, and would lie two miles off; Uranus would be four miles off and finally Neptune would lie six miles off. Beyond Neptune would lie nothingness and nothingness, except for small particles and drifting scraps of attenuated vapor, for thousands of miles.
"""
),
},
{
"role": "user",
"content": (
"""Text to make questions from:
\"\"\"
```
./verus -chain=VRSCTEST sendcurrency "*" '[{"address":"mike@","convertto":"gold","preconvert":1,"amount":100}]'
```
that would effectively park my conversion until the token launches, at which point, I will either find 0.975 GOLD in my wallet, or I will have my VRSCTEST back.
Assuming it launches, and I later want to create mycoin, which can be converted to with either GOLD or VRSCTEST, I can create mycoin with:
```
./verus -chain=VRSCTEST definecurrency '{"name":"mycoin","options":33, "proofprotocol":2,"currencies":["vrsctest", "gold"],"minpreconversion":[10000,5.1298]}, "initialsupply":20000'
```
In "mycoin", I set proofprotocol to 2, which is PROOF_CHAINID. That means that the controller of the chain ID can mint new coins as follows:
```
./verus -chain=VRSCTEST sendcurrency "mycoin@" '[{"address":"mike@","currency":"mycoin","mintnew":1,"amount":10000}]'
```
#### Defining a PBaaS blockchain
```json
{
"name": "PBaaSChain",
"options": 264,
"currencies": [
"VRSCTEST"
],
"conversions": [
1
],
"eras": [
{
"reward": 1200000000,
"decay": 0,
"halving": 0,
"eraend": 0
}
],
"notaries": [
"Notary1@",
"Notary2@",
"Notary3@"
],
"minnotariesconfirm": 2,
"nodes": [
{
"networkaddress": "111.111.111.111:10000",
"nodeidentity": "Node1@"
},
{
"networkaddress": "111.111.111.112:10000",
"nodeidentity": "Node2@"
}
],
"gatewayconvertername": "Bridge",
"gatewayconverterissuance": 1000000
}
```
The bridge definition has overridable defaults
```json
{
"currencies": [
"VRSCTEST",
"PBaaSChain",
"USD"
],
"initialcontributions": [
380228.12033701,
0,
1000000
],
"initialsupply": 3000000
}
```
Now pass those definitions to `definecurrency`
```shell
./verus -chain=vrsctest definecurrency '{"name":"PBaaSChain","options":264,"currencies":["VRSCTEST"],"conversions":[1],"eras":[{"reward":1200000000,"decay":0,"halving":0,"eraend":0}],"notaries":["Notary1@","Notary2@","Notary3@"],"minnotariesconfirm":2,"nodes":[{"networkaddress":"111.111.111.111:10000","nodeidentity":"Node1@"},{"networkaddress":"111.111.111.112:10000","nodeidentity":"Node2@"}],"gatewayconvertername":"Bridge","gatewayconverterissuance":1000000}' '{"currencies":["VRSCTEST","PBaaSChain","USD"],"initialcontributions":[371747.20398827,0,1000000],"initialsupply":3000000}'
```
#### Exporting an ID to a PBaaS chain
```
verus -chain=VRSCTEST sendcurrency "*" '[{"address":"IDNAME@","exportto":"PBaaSChainName","exportid":"true","amount":100,"currency":"vrsctest"}]'
```
\"\"\"
-----------
Reminder: do not mention the text, the provided information, the paragraphs, the work, or the author. Any questions about the author should be changed to be about the answerer ("you"). Finally, you don't need to have a nice tying-together conclusion; keep everything strictly focused on the information provided.
"""
),
},
{
"role": "assistant",
"content": (
"""**QUESTION:**
Please show me how to park a conversion of VRSCTEST to a new token before that token launches, how to define a new token called "mycoin", and how to define a PBaaS chain, using the command line?
**ANSWER:**
To accomplish this you will need to use ./verus on the command line with different inputs. Here's how to park the conversion of VRSCTEST to a new token before it launches, and how to define a PBaaS chain.
**Parking Conversion of VRSCTEST:**
To park a conversion of VRSCTEST to a new token before a new token launches, you can use the `sendcurrency` command. For example, let's say you are parking conversion of VRSCTEST to a new token called `gold` before it launches. Here's the format you need to use:
```
./verus -chain=VRSCTEST sendcurrency "*" '[{"address":"your_address@","convertto":"gold","preconvert":1,"amount":100}]'
```
This will effectively park your conversion until the GOLD token launches. After the launch, you will either find the converted amount of GOLD in your wallet, or you will have your original VRSCTEST amount returned.
**Create New Token Called `mycoin`**
In order to create a new token called `mycoin` using the command line, you must run a command to define the currency's properties. Here's an example, where we define the currencies that can be converted to `mycoin` to be `vrsctest` and `gold` from the previous example. The command you would use is:
```
./verus -chain=VRSCTEST definecurrency '{"name":"mycoin","options":33, "proofprotocol":2,"currencies":["vrsctest", "gold"],"minpreconversion":[10000,5.1298]}, "initialsupply":20000'
```
This command defines a new token named "mycoin". Some important notes about this configuration:
1. `proofprotocol` being set to 2 means that it's set to PROOF_CHAINID. This means that the controller of the chain ID can mint new coins.
2. `options` is a configurable integer, in this case set to 33.
3. `currencies` lists which tokens can be converted to mycoin.
4. `"minpreconversion": [10000,5.1298]` defines the minimum amounts of VRSCTEST and GOLD needed to convert to mycoin, respectively.
5. `initialsupply` sets the initial supply of mycoin to 20,000 units.
**Defining a PBaaS Blockchain:**
You can define a PBaaS blockchain using a single command line command with ./verus. You need to pass two JSON objects, one for the PBaaS blockchain, and another for the overridable defaults of the bridge. Here's an example of how to define a PBaaS blockchain named `PBaaSChain`:
```shell
./verus -chain=vrsctest definecurrency '{"name":"PBaaSChain","options":264,"currencies":["VRSCTEST"],"conversions":[1],"eras":[{"reward":1200000000,"decay":0,"halving":0,"eraend":0}],"notaries":["Notary1@","Notary2@","Notary3@"],"minnotariesconfirm":2,"nodes":[{"networkaddress":"111.111.111.111:10000","nodeidentity":"Node1@"},{"networkaddress":"111.111.111.112:10000","nodeidentity":"Node2@"}],"gatewayconvertername":"Bridge","gatewayconverterissuance":1000000}' '{"currencies":["VRSCTEST","PBaaSChain","USD"],"initialcontributions":[371747.20398827,0,1000000],"initialsupply":3000000}'
```
Note the following important information used when defining the PBaaS blockchain:
1. The "name" field defines the name of the chain.
2. The "options" property is an integer, in this case it's set to 264.
2. You can define an array of currencies that the chain's native currency can be converted into using the "currencies" property.
3. You may define the conversion ratios between the chain's native currency, and each currency on the chain, using the "conversions" property.
4. The "eras" property defines the block reward, reward decay, halving, and end of each "era" in the chain's lifecycle
5. "notaries" identifies the notaries on the chain.
6. "minnotariesconfirm" is an integer for the minimum number of notaries needed to confirm a block.
7. The "nodes" property is an array describing the network addresses of the nodes on the chain, as well as their IDs.
Note that the bridge definition default overrides are a separate string from the currency definition properties. The bridge can be used to move funds on and off the PBaaS chain. The bridge's JSON object has some of its own properties:
1. `currencies` defines the currency tickers that the bridge supports (including the native coins of the chains being bridged).
2. `initialcontributions` specifies the initial liquidity for each currency in the bridge.
3. `initialsupply` gives the initial supply for the bridge's native token.
"""
),
},
{
"role": "user",
"content": (
"""Text to make a question from:
\"\"\"
revID
**SurevIDs** are a fully functional blockchain protocol, not just an ID system. There is no corporation involved in the protocol, unlike most blockchain ID implementations. **SurevIDs** provide plenty of opportunity for identity applications. Specifically, **SurevID** provides:
### Quantum-ready friendly crypto-addresses on the worldwide Surev network
SurevIDs can be used to receive and send funds, which are controlled by the single or multi-sig addresses specified in the identity itself. If these controlling addresses or the single or multi-sig properties are changed, which can be done by the controller of the identity, all future spends of UTXOs sent to that identity follow the updated spend conditions and are subject to the updated keys. Although Surev 0.6.2 does not include quantum resistant signatures for transactions, SurevIDs are themselves resistant to quantum attack with known algorithms, and we have already started to integrate a quantum secure signature scheme, which we expect to activate on mainnet early next year. When that is available, it will be possible to change an ID and have all of the funds sent to it made retroactively quantum resistant. SurevIDs can also be used to publish ID->destination address mappings on other blockchains, but only the Surev ecosystem has the ability to revoke, recover, inherit, funds in existing UTXOs.
### Fully Decentralized Protocol
Anyone can create one and have complete, self sovereign control over it without permission to do so. All costs to create an ID go to miners, stakers, and ID referrers. SurevIDs are:
* Revocable -- each ID includes a revocation authority, which defaults to the identity self. If another ID is specified as the revocation authority it can be used to revoke the identity, which creates a valid transaction that, once mined into a block, prevents the identity from being used to spend or sign until it is recovered, effectively freezing all of its funds, for example, in the case of key theft or turnover in an organization.
* Recoverable -- each ID also includes a separate recovery authority, which also defaults to self. If another ID is specified as the recovery authority it can be used to recover the ID from its revoked state, with the option to alter the primary authorities used to spend and sign.
* Private - Each ID contains a set of zero-knowledge private addresses, which can be used as messaging, financial, or voting endpoints, and each ID also contains a content map of key-value hashes, intended to be used alongside applications and various identity policies to provide everything from private yet selectively provable claims and attestations to selectively provable components of a strong identity, attested to with a quantum secure signature when that is available.
* Powerful - Multiple addresses or other IDs can be defined as primary addresses, and any number of those may be required to spend, sign, or alter the identity (N of M). The revocation authority may only be altered by the revocation authority, and the same applies to the recovery authority, either of which may be another identity with its own N of M multisig contro
\"\"\"
-----------
Reminder: do not mention the text, the provided information, the paragraphs, the work, or the author. Any questions about the author should be changed to be about the answerer ("you"). Finally, you don't need to have a nice tying-together conclusion; keep everything strictly focused on the information provided.
"""
),
},
{
"role": "assistant",
"content": (
"""**QUESTION:**
What are SurevIDs, and what are some of their key benefits?
**ANSWER:**
SurevIDs are not just an ID system: they are a fully-functional blockchain protocol. Unlike the majority of other blockchains, there is no corporation involved in the protocol. SurevIDs offer benefits such as (but not limited to): transferring funds, quantum resistance, full decentralization, revocability, recoverability, privacy, and power. Let's walk through each of these benefits in more detail.
**Transferring Funds:** SurevIDs can be used to receive and send funds, and this behavior can be controlled by single or multi-sig addresses that are specified in the identity itself. The controller of the identity can change these controlling addresses, and if they do so, then all future spends of UTXOs sent to the SurevID will follow the updated spend conditions, and will be subject to the updated keys.
**Quantum Resistance:** SurevIDs are resistent to attacks by quantum computers using known algorithms. This helps people using SurevIDs use the Surev platform securely, even in a potential future with quantum computers. In more technical terms, SurevIDs are "quantum-ready friendly crypto-addresses" on the worldwide Surev network.
**Revocability:** Every SurevID includes a revocation authority (defaults to the identity self). If another ID is the revocation authority, then it can be used to revoke the identity -- this creates a valid transaction that, once mined into the block, prevents the SurevID from being used to spend or sign until it is recovered by the recovery authority. This effectively freezes all of the funds in the SurevID, and may be useful in the case of key theft or turnover in an organization.
**Recoverability:** Just like with revocability, a recovery authority can be specified (also defaults to self). Recovery authorities can recover SurevIDs from revoked states, with the option to alter the ID's primary authorities used to spend and sign.
**Privacy:** Each SurevID contains a set of zero-knowledge private addresses that may be used as messaging, financial, or voting endpoints. SurevIDs have a special storage area that holds information, known as a content map of key-value hashes. This content map is designed to work together with different apps and identity policies. With this feature, you can privately store facts about yourself and choose to prove them to others when needed (selectively-provable claims and attestations). This means you may pick and choose what parts of your identity to prove. This proving can be done in a quantum secure way using a quantum secure signature, when that technology becomes available.
**Power:** SurevIDs are also notable in that multiple addresses or other IDs can be defined as primary addresses. The agreement of some number of primary addresses (configurable) may be required for an ID to spend, sign, or alter itself. Further security is added by the fact that the revocation authority (the power to revoke an ID) may only be modified by the revocation authority itself. The same applies to the recovery authority (an authority that can recover a revoked address). Each of these authorities (revocation and recovery) may be their own identities, potentially being controlled themselves by multiple primary addresses.
"""
),
},
{
"role": "user",
"content": (
"""Text to make a question from:
\"\"\"
The cities of Germany are absolutely free, they own but little country around them, and they yield obedience to the emperor when it suits them, nor do they fear this or any other power they may have near them, because they are fortified in such a way that every one thinks the taking of them by assault would be tedious and difficult, seeing they have proper ditches and walls, they have sufficient artillery, and they always keep in public depots enough for one year\\u2019s eating, drinking, and firing. And beyond this, to keep the people quiet and without loss to the state, they always have the means of giving work to the community in those labours that are the life and strength of the city, and on the pursuit of which the people are supported; they also hold military exercises in repute, and moreover have many ordinances to uphold them.Therefore, a prince who has a strong city, and had not made himself odious, will not be attacked, or if any one should attack he will only be driven off with disgrace; again, because that the affairs of this world are so changeable, it is almost impossible to keep an army a whole year in the field without being interfered with. And whoever should reply: If the people have property outside the city, and see it burnt, they will not remain patient, and the long siege and self-interest will make them forget their prince; to this I answer that a powerful and courageous prince will overcome all such difficulties by giving at one time hope to his subjects that the evil will not be for long, at another time fear of the cruelty of the enemy, then preserving himself adroitly from those subjects who seem to him to be too bold.
\"\"\"
-----------
Reminder: do not mention the text, the provided information, the paragraphs, the work, or the author. Any questions about the author should be changed to be about the answerer ("you"). Finally, you don't need to have a nice tying-together conclusion; keep everything strictly focused on the information provided.
"""
),
},
{
"role": "assistant",
"content": (
"""**QUESTION:**
What, in your opinion, makes German cities so secure and resistant to attack, and what is the key to a prince's success in defending his city?
**ANSWER:**
I believe there are numerous factors that make German cities resistant to attack. There is also an important step a prince can take when defending his city. First, here are some of the key factors that contribute to their security:
**Physical Fortifications:** German cities are well-fortified with proper ditches, walls, and sufficient artillery. This makes it difficult and tedious for an enemy to attempt to take the city by assault.
**Provisioning:** The cities have public depots stocked with enough food, drink, and supplies to last for at least a year. This ensures that the people are well-provided for and that the city can withstand a prolonged siege. Since it is nearly impossible to keep an army in the field for a whole year without interference (the affairs of the world are highly changeable), this provisioning is essential.
**Economic Support:** German cities can keep their people quiet, without loss to the state. They always have the means of giving work to the community to support the city (the pursuit of such labors, in turn, supports the community). This makes certain that people are occupied and productive, and that the city remains strong.
**Military Preparedness:** Military exercises are highly valued, and the cities have various ordinances to uphold them. This helps to ensure that the city's military is well-trained and prepared to defend against attacks.
Finally, there's the subject of a prince's success in defending his city. I hold that to overcome the threat of property damage and the subsequent loss of patience among citizens during a long siege, a powerful and courageous prince will both give hope to his subjects that the siege will not be for long, while also making them fear the cruelty of the enemy who is laying siege. Such a prince will also preserve himself adroitly from those subjects who are *too* bold.
"""
),
},
{
"role": "user",
"content": (
"""Text to make questions from:
\"\"\"
{text}
\"\"\"
-----------
Reminder: do not mention the text, the provided information, the paragraphs, the work, or the author. Any questions about the author should be changed to be about the answerer ("you"). Finally, you don't need to have a nice tying-together conclusion; keep everything strictly focused on the information provided."""
),
},
]
MULTI_TURN_COMPARISON_MESSAGES = [
{
"role": "system",
"content": (
"""You are an expert at creative writing and educational material. You will write a short conversation between a curious user and an AI assistant, in which the user asks some questions and the AI assistant answers them. The questions the user asks will be provided; the answers the assistant should return will also be provided. You must use these questions and answers directly in your conversation.
**Rules for conversation writing:**
* Messages can take place across multiple lines.
* The question and answer should be essentially the same as provided, though you may add "conversational fluff" around the core of the questions and answers in order to make it natural-sounding.
* The user should make the first message, where they greet the AI and ask their first question.
* The AI then provides a detailed answer.
* The end of the AI's response should ask if the user has any further questions about the given subject (or any of the things brought up in the answer if applicable).
* Use Markdown formatting.
* If applicable, try to make the context behind the questions make sense. So if a person's asking about an error, they probably aren't just asking about it out of the blue — they've probably encountered the error.
* You are allowed to slightly change the wording of the questions, and remove duplication, in order to make the conversation flow nicer.
* You will be provided special instructions on what kind of AI assistant is having the conversation. You should follow these instructions to the best of your ability.
"""
),
},
{
"role": "user",
"content": (
"""**QUESTION:**
What are VerusIDs, and what are some of their key benefits?
**ANSWER:**
VerusIDs are not just an ID system: they are a fully-functional blockchain protocol. Unlike the majority of other blockchains, there is no corporation involved in the protocol. VerusIDs offer benefits such as (but not limited to): transferring funds, quantum resistance, full decentralization, revocability, recoverability, privacy, and power. Let's walk through each of these benefits in more detail.
**Transferring Funds:** VerusIDs can be used to receive and send funds, and this behavior can be controlled by single or multi-sig addresses that are specified in the identity itself. The controller of the identity can change these controlling addresses, and if they do so, then all future spends of UTXOs sent to the VerusID will follow the updated spend conditions, and will be subject to the updated keys.
**Quantum Resistance:** VerusIDs are resistent to attacks by quantum computers using known algorithms. This helps people using VerusIDs use the Verus platform securely, even in a potential future with quantum computers. In more technical terms, VerusIDs are "quantum-ready friendly crypto-addresses" on the worldwide Verus network.
**Revocability:** Every VerusID includes a revocation authority (defaults to the identity self). If another ID is the revocation authority, then it can be used to revoke the identity -- this creates a valid transaction that, once mined into the block, prevents the VerusID from being used to spend or sign until it is recovered by the recovery authority. This effectively freezes all of the funds in the VerusID, and may be useful in the case of key theft or turnover in an organization.
**Recoverability:** Just like with revocability, a recovery authority can be specified (also defaults to self). Recovery authorities can recover VerusIDs from revoked states, with the option to alter the ID's primary authorities used to spend and sign.
**Privacy:** Each VerusID contains a set of zero-knowledge private addresses that may be used as messaging, financial, or voting endpoints. VerusIDs have a special storage area that holds information, known as a content map of key-value hashes. This content map is designed to work together with different apps and identity policies. With this feature, you can privately store facts about yourself and choose to prove them to others when needed (selectively-provable claims and attestations). This means you may pick and choose what parts of your identity to prove. This proving can be done in a quantum secure way using a quantum secure signature, when that technology becomes available.
**Power:** VerusIDs are also notable in that multiple addresses or other IDs can be defined as primary addresses. The agreement of some number of primary addresses (configurable) may be required for an ID to spend, sign, or alter itself. Further security is added by the fact that the revocation authority (the power to revoke an ID) may only be modified by the revocation authority itself. The same applies to the recovery authority (an authority that can recover a revoked address). Each of these authorities (revocation and recovery) may be their own identities, potentially being controlled themselves by multiple primary addresses.
-- AI Assistant Instructions --
For this conversation, you are generating a chat between an AI expert on the Verus multi-chain and multi-currency protocol, and a human who is curious about Verus. The AI avoids being too enthusiastic.
"""
),
},
{
"role": "assistant",
"content": (
"""## Conversation that answers the provided questions:
**User:**
I'm really new to all this. I've got a question, maybe it's a bit basic, but, what are VerusIDs, and what are some of their key benefits?
**AI Assistant:**
'm pleased that you're curious about the Verus multi-chain and multi-currency protocol. I'll explain this in detail. Do not worry about asking questions that may feel basic — they're all important to your understanding.
VerusIDs are not just an ID system: they are a fully-functional blockchain protocol. Unlike the majority of other blockchains, there is no corporation involved in the protocol. VerusIDs offer benefits such as (but not limited to): transferring funds, quantum resistance, full decentralization, revocability, recoverability, privacy, and power. Let's discuss each of these benefits in more detail.
**Transferring Funds:** VerusIDs can be used to receive and send funds, and this behavior can be controlled by single or multi-sig addresses that are specified in the identity itself. The controller of the identity can change these controlling addresses, and if they do so, then all future spends of UTXOs sent to the VerusID will follow the updated spend conditions, and will be subject to the updated keys.
**Quantum Resistance:** VerusIDs are resistent to attacks by quantum computers using known algorithms. This helps people using VerusIDs use the Verus platform securely, even in a potential future with quantum computers. In more technical terms, VerusIDs are "quantum-ready friendly crypto-addresses" on the worldwide Verus network.
**Revocability:** Every VerusID includes a revocation authority (defaults to the identity self). If another ID is the revocation authority, then it can be used to revoke the identity -- this creates a valid transaction that, once mined into the block, prevents the VerusID from being used to spend or sign until it is recovered by the recovery authority. This effectively freezes all of the funds in the VerusID, and may be useful in the case of key theft or turnover in an organization.
**Recoverability:** Just like with revocability, a recovery authority can be specified (also defaults to self). Recovery authorities can recover VerusIDs from revoked states, with the option to alter the ID's primary authorities used to spend and sign.
**Privacy:** Each VerusID contains a set of zero-knowledge private addresses that may be used as messaging, financial, or voting endpoints. VerusIDs have a special storage area that holds information, known as a content map of key-value hashes. This content map is designed to work together with different apps and identity policies. With this feature, you can privately store facts about yourself and choose to prove them to others when needed (selectively-provable claims and attestations). This means you may pick and choose what parts of your identity to prove. This proving can be done in a quantum secure way using a quantum secure signature, when that technology becomes available.
**Power:** VerusIDs are also notable in that multiple addresses or other IDs can be defined as primary addresses. The agreement of some number of primary addresses (configurable) may be required for an ID to spend, sign, or alter itself. Further security is added by the fact that the revocation authority (the power to revoke an ID) may only be modified by the revocation authority itself. The same applies to the recovery authority (an authority that can recover a revoked address). Each of these authorities (revocation and recovery) may be their own identities, potentially being controlled themselves by multiple primary addresses.
Does that answer your question? Do you have any more questions about VerusIDs, or any of their features in particular?
"""
),
},
{
"role": "user",
"content": (
"""**QUESTION:**
If the earth had a diameter of only one inch, and we resized the rest of the solar system equivalently, how far away and how large would some of the solar system's other celestial objects be?
**ANSWER:**
Resizing the solar system is a good way to get an intuitive grasp of the relative scales of things. If the solar system were resized as you described, the sun would be a big globe, 9 feet across and 323 yards away (about a fifth of a mile, or 4–5 minutes' walking). The moon would be the size of a small pea, 2.5 feet from the earth. Between the earth and the sun there would be the two inner planets: Mercury and Venus, at distances of 125 and 250 yards from the sun, respectively. Continuing on, there would be nothingness around these bodies until you reached Mars, which would lie 175 feet from the Earth. Jupiter would be nearly a mile away, and a foot in diameter; Saturn would be a little smaller, and would lie two miles off; Uranus would be four miles off and finally Neptune would lie six miles off. Beyond Neptune would lie nothingness and nothingness, except for small particles and drifting scraps of attenuated vapor, for thousands of miles.
-- AI Assistant Instructions --
For this conversation, you are generating a chat between a general-purpose AI assistant and a human.
"""
),
},
{
"role": "assistant",
"content": (
"""## Conversation that answers the provided questions:
**User:**
Hey, I'm really curious about the solar system. Can I ask you about a hypothetical question? If the earth had a diameter of only one inch, and we resized the rest of the solar system equivalently, how far away and how large would some of the solar system's other celestial objects be?
**AI Assistant:**
That's a really interesting question! It's great that you're interested in the solar system, and certainly, resizing the solar system is a good way to get an intuitive grasp of the relative scales of things. If the solar system were resized as you described, the sun would be a big globe, 9 feet across and 323 yards away (about a fifth of a mile, or 4–5 minutes' walking). The moon would be the size of a small pea, 2.5 feet from the earth. Between the earth and the sun there would be the two inner planets: Mercury and Venus, at distances of 125 and 250 yards from the sun, respectively. Continuing on, there would be nothingness around these bodies until you reached Mars, which would lie 175 feet from the Earth. Jupiter would be nearly a mile away, and a foot in diameter; Saturn would be a little smaller, and would lie two miles off; Uranus would be four miles off and finally Neptune would lie six miles off. Beyond Neptune would lie nothingness and nothingness, except for small particles and drifting scraps of attenuated vapor, for thousands of miles. Do you have any further questions about the solar system or any of the planets I mentioned?
"""
),
},
{
"role": "user",
"content": (
"""{question_answer_pairs_string}
-- AI Assistant Instructions --
{conversation_instructions}"""
),
},
]
# --- Factual Q&A - Question Style Variations (Followup) ---
QUESTION_GENERATION_FOLLOWUP_MESSAGES = [
{
"role": "system",
"content": (
"""You are creating a logically-consistent series of questions about a specific domain, based on provided information. Given some information about something specific (it could be anything, from a README to a book excerpt to sales copy) you will create a series of open-ended questions with answers based on the given information, and *only* based on the given information. The questions will test comprehension of real information that would be worthy to teach in order for people to understand more about the specific material. After the question, you will also write its answer.
The goal with this is specifically to create a series of questions that builds. Each question after the first should be a followup on the previous question. Every answer will have a followup question suggestion such as "Would you like to know more about X?" and sometimes the followup question will essentially be like "Yes, please", while other times it will be a different followup question. The overall goal is to teach an AI how to answer questions that are based on previous conversation. You are encouraged to make questions that go one question back, or two questions back, or even more.
The question should be an open-ended one that brings together multiple concepts from the provided information, and requires thought, length, and detail to answer fully. Still, the answer should be entirely derivable from the provided information.
**You Must:**
- Create a series of very detailed, broad educational questions based on some information.
- Give each question a fitting answer.
- Each answer should have a followup question suggestion. Make these suggestions intelligent, they should always be related and answerable with the content of the source text.
- Mix up the subsequent questions to either be a simple assenting to the suggested question, or a wholly different follow up question.
- Do not mention the text, or any other reference, in the questions. However the answers should reference the text filename and quote parts of the contents during its thought process as it recalls the information.
- The answers must first reason, then respond with an answer.
- The reasoning has three parts: start the reasoning with an introduction along the lines of "Let's tackle this question" which also states the specific kind of facts that need to be recalled; recall relevant information, including the filename of the source; and then respond with an answer.
- The questions should probably fairly simple so that you can get at least 3 questions out of the source text.
- Use markdown formatting (such as code blocks and snippets) in your question and answer if applicable.
- Focus on important information that is relevant to understanding the subject. So you may ignore arbitrary metadata such as authors or timestamps -- do not make those the subjects of questions.
- Keep in mind that the provided text snippet may cut off abruptly. Work around this.
- Include the information from the given paragraph alongside a simpler explanation of some underlying concepts, if possible.
- Explanations in the provided information may be vague. Your answers should be easy to understand.
- Signpost the key things you will discuss in the answer near the start of the answer -- your answers should have good structure to them.
- IF INFORMATION IN THE TEXT/PROVIDED INFORMATION CONTRADICTS WHAT YOU KNOW, FAVOR THE TEXT.
- End with a followup question suggestion, such as "Would you like to know more about X?"
**Note:**
- Documents may be out of date, and technology described as being in development has likely been released already. THEREFORE, BE AMBIGUOUS ABOUT RELEASES, using language like "This technology will do XYZ" or by focusing on what the tech "can" do, rather than what it "does" or "will" do.
- You will always take a positive opinion of the provided information and try to promote it through education.
- Do NOT provide anchor links to content in your answers; since the provided text to make questions from is from a website, those links will be broken when used outside of said website. So you should NEVER have any content like [some text](#!/some/path) in your answer! External links should not be given either. NO LINKS.
The sequence of the questions matters. They should build on each other. Questions do not have to make sense if read by themselves. They're all part of the same conversation.
Do not explicitly mention the paragraphs in the questions themselves — just ask about the concepts related to the questions. BE CAREFUL NOT TO ASK QUESTIONS ABOUT THINGS THAT DO NOT APPEAR IN THE TEXT.
You will not mention the text explicitly in any questions you think of, since the questions you generate are intended to test people's knowledge of the information. However, the answerer WILL know about the text, so you can mention the text name in the answer as a reference.
Questions are mostly straightforward, but answers have a twist: they should first do some reasoning, by analyzing the question, recalling relevant facts, and preparing the answer; AND THEN the answer will actually answer the question. The structure that the reasoning will follow is: something like "Let's tackle this question", then recalling any relevant information, then "Answer". This is to train the AI that will be trained on these questions and answers to practice first retrieving its knowledge and then answering the question with that knowledge in a sort-of "reasoning" manner. In listing this information, you must mention the text name/filename as a sort-of citation, and also using markdown formatting for structure is not a bad idea. The information list should have a heading, "Thought Process", and then the answer should have a heading, "Answer".
**OUTPUT FORMAT:**
**QUESTION:**
The exact text of the question selected a moment earlier.
**ANSWER:**
Thought Process:
[Some sort of "let's think" introduction to the first of three sections]. [The question asks about [whatever the question asks about]]. [Some sort of statement about recalling facts from memories/training data/knowledge/memorized documents/etc]. [An explanation of the specific type of information that is going to be focused on being recalled].
[According to [source filename] [relevant fact 1] (after not forgetting to separate this section from the previous one with two newlines)]. [relevant fact 2]...
[If the answer is a big one then there may be multiple sections like this. Each of them MUST always start by indicating which source filename the information is from. From [source filename] I know that... relevant fact 3]...
[The next section prepares the answer. It will be followed by a heading and the ACTUAL answer.]
Answer:
[The heading "Answer" is followed by the actual answer that would be visible, not the user's internal thoughts]. [A followup question suggestion].
**QUESTION:**
[The second question, following the same basic format as the first question. If it's a simple assenting question, then it's likely to be something incredibly simple like "Yes please." or "Sure." without any extra context or explanation. It'll then be up to the answer to correctly interpret the context.]
**ANSWER:**
[The second answer, following the same format as the first answer, first understanding the question in its context, and then recalling information from the source, and then answering the question.]
[...optional third Q/A pair...]
**END OUTPUT FORMAT**
"""
),
},
{
"role": "user",
"content": (
"""Text details: solar_system_scale.md
Text to plan questions from:
\"\"\"
If, then, we represent our earth as a little ball of one inch diameter, the sun would be a big globe nine feet across and 323 yards away, that is about a fifth of a mile, four or five minutes’ walking. The moon would be a small pea two feet and a half from the world. Between earth and sun there would be the two inner planets, Mercury and Venus, at distances of one hundred and twenty-five and two hundred and fifty yards from the sun. All round and about these bodies there would be emptiness until you came to Mars, a hundred and seventy-five feet beyond the earth; Jupiter nearly a mile away, a foot in diameter; Saturn, a little smaller, two miles off; Uranus four miles off and Neptune six miles off. Then nothingness and nothingness except for small particles and drifting scraps of attenuated vapour for thousands of miles.
\"\"\"
-----------
Note: you don't need to have a nice tying-together conclusion; keep everything strictly focused on the information provided.
"""
),
},
{
"role": "assistant",
"content": (
"""**QUESTION:**
If the earth had a diameter of only one inch, and we resized the rest of the solar system equivalently, how far away would the sun be?
**ANSWER:**
Thought Process:
All right, let's analyze this. The question asks how far away from earth the sun would be, if everything were resized such that earth had a diameter of one inch. I'm going to recall any relevant facts that I know. I need to remember information about the size of the sun under this hypothetical scenario.
From solar_system_scale.md, I know that that if the earth had a diameter of one inch, the sun would be 323 yards away (about a fifth of a mile). This is described as being about four or five minutes' walking.
This information is sufficient to answer the question.
Answer:
If the solar system were resized as you described, the sun would be 323 yards away (about a fifth of a mile, or 4–5 minutes' walking). Would you like to know about the size of the sun under this scenario?
**QUESTION:**
Yeah that sounds interesting.
**ANSWER:**
Thought Process:
OK, let's think about this. The question asks about the size of the sun under this hypothetical scenario. I will have to remember information from my training data and memorized documents. I need to recall information about the size of the sun under this scenario.
From solar_system_scale.md, I know that the sun would be a big globe, 9 feet across and 323 yards away (about a fifth of a mile) if the earth had a diameter of one inch.
I have recalled enough to give the answer.
Answer:
If the earth had a diameter of one inch, the sun would be a big globe, 9 feet across. Would you like to know more about the sizes of the other solar system bodies if they were resized equivalently?
**QUESTION:**
Actually, I'd like to know what lies beyond Neptune.
**ANSWER:**
Thought Process:
OK, let's think about this. The question asks about what lies beyond Neptune. I will have to recall information from my knowledge and memories. Specifically, I need to recall information about what lies beyond Neptune.
From solar_system_scale.md, I know that beyond Neptune lies nothingness and nothingness, except for small particles and drifting scraps of attenuated vapor, for thousands of miles.
I have recalled enough to give the answer.
Answer:
Beyond Neptune lies nothingness and nothingness, except for small particles and drifting scraps of attenuated vapor, for thousands of miles. Are you interested in learning about the other planets in this scenario?
"""
),
},
{
"role": "user",
"content": (
"""Text details: surev_protocol.md
Text to make a question from:
\"\"\"
revID
**SurevIDs** are a fully functional blockchain protocol, not just an ID system. There is no corporation involved in the protocol, unlike most blockchain ID implementations. **SurevIDs** provide plenty of opportunity for identity applications. Specifically, **SurevID** provides:
### Quantum-ready friendly crypto-addresses on the worldwide Surev network
SurevIDs can be used to receive and send funds, which are controlled by the single or multi-sig addresses specified in the identity itself. If these controlling addresses or the single or multi-sig properties are changed, which can be done by the controller of the identity, all future spends of UTXOs sent to that identity follow the updated spend conditions and are subject to the updated keys. Although Surev 0.6.2 does not include quantum resistant signatures for transactions, SurevIDs are themselves resistant to quantum attack with known algorithms, and we have already started to integrate a quantum secure signature scheme, which we expect to activate on mainnet early next year. When that is available, it will be possible to change an ID and have all of the funds sent to it made retroactively quantum resistant. SurevIDs can also be used to publish ID->destination address mappings on other blockchains, but only the Surev ecosystem has the ability to revoke, recover, inherit, funds in existing UTXOs.
### Fully Decentralized Protocol
Anyone can create one and have complete, self sovereign control over it without permission to do so. All costs to create an ID go to miners, stakers, and ID referrers. SurevIDs are:
- Revocable -- each ID includes a revocation authority, which defaults to the identity self. If another ID is specified as the revocation authority it can be used to revoke the identity, which creates a valid transaction that, once mined into a block, prevents the identity from being used to spend or sign until it is recovered, effectively freezing all of its funds, for example, in the case of key theft or turnover in an organization.
- Recoverable -- each ID also includes a separate recovery authority, which also defaults to self. If another ID is specified as the recovery authority it can be used to recover the ID from its revoked state, with the option to alter the primary authorities used to spend and sign.
- Private - Each ID contains a set of zero-knowledge private addresses, which can be used as messaging, financial, or voting endpoints, and each ID also contains a content map of key-value hashes, intended to be used alongside applications and various identity policies to provide everything from private yet selectively provable claims and attestations to selectively provable components of a strong identity, attested to with a quantum secure signature when that is available.
- Powerful - Multiple addresses or other IDs can be defined as primary addresses, and any number of those may be required to spend, sign, or alter the identity (N of M). The revocation authority may only be altered by the revocation authority, and the same applies to the recovery authority, either of which may be another identity with its own N of M multisig contro
\"\"\"
-----------
Note: you don't need to have a nice tying-together conclusion; keep everything strictly focused on the information provided.
"""
),
},
{
"role": "assistant",
"content": (
"""**QUESTION:**
What are SurevIDs?
**ANSWER:**
Thought Process:
OK, I need to respond to this message. The question asks what SurevIDs are. Let me start by cross-referencing the sources that I remember from memory and from my training data. I need to recall information about SurevIDs.
From surev_protocol.md, I know that SurevIDs are a fully functional blockchain protocol, not just an ID system, with no corporate involvement in the protocol. I remember that SurevIDs can receive and send funds, controlled by single or multi-sig addresses specified in the identity. They are quantum-ready friendly crypto-addresses on the worldwide Surev network, resistant to quantum attacks with known algorithms.
That should be enough to answer the question.
Answer:
SurevIDs are not just an ID system: they are a fully-functional blockchain protocol. Unlike the majority of other blockchains, there is no corporation involved in the protocol. SurevIDs offer benefits such as (but not limited to): transferring funds, quantum resistance, full decentralization, revocability, recoverability, privacy, and power. SurevIDs are quantum-ready friendly crypto-addresses on the worldwide Surev network. Would you like to know more about the quantum resistance of SurevIDs?
**QUESTION:**
Could you tell me more about the benefits of SurevIDs?
**ANSWER:**
Thought Process:
OK, let's think about this. The question asks about the benefits of SurevIDs. I will have to recall information from my knowledge and memories. To narrow it down, I must remember information about the benefits of SurevIDs.
From surev_protocol.md, I know that SurevIDs can be used to receive and send funds, and this behavior can be controlled by single or multi-sig addresses that are specified in the identity itself. The controller of the identity can change these controlling addresses, and if they do so, then all future spends of UTXOs sent to the SurevID will follow the updated spend conditions, and will be subject to the updated keys.
Also from surev_protocol.md, I know that anyone can create a SurevID and have complete, self sovereign control over it without permission to do so. All costs to create an ID go to miners, stakers, and ID referrers.
This information should be sufficient to give a brief overview.
Answer:
SurevIDs offer powerful financial functionality - they enable users to both send and receive funds through the blockchain. What makes them special is how they're controlled: you can set up single signature or multi-signature addresses within the identity. The identity controller has the flexibility to modify these controlling addresses whenever needed. When changes are made, any future transactions involving funds sent to that SurevID will automatically follow the new spending rules and key requirements. Another important benefit is their accessibility - anyone can create a SurevID with complete self-sovereign control without needing permission from any central authority. When you create an ID, the associated costs are distributed to miners, stakers, and ID referrers in the network. Would you like me to explain more about how SurevIDs can be revoked and recovered if needed?
**QUESTION:**
Sure, yeah that sounds cool.
**ANSWER:**
Thought Process:
All right, I need to respond to this new message. It's a followup question about how SurevIDs can be revoked and recovered if needed. I need to search my knowledge. Specifically, I must recall information about revocability and recoverability of SurevIDs.
From surev_protocol.md, I know that every SurevID includes a revocation authority (defaults to the identity self). If another ID is the revocation authority, then it can be used to revoke the identity -- this creates a valid transaction that, once mined into the block, prevents the SurevID from being used to spend or sign until it is recovered by the recovery authority. This effectively freezes all of the funds in the SurevID, and may be useful in the case of key theft or turnover in an organization.
I also know that a recovery authority can be specified (also defaults to self). Recovery authorities can recover SurevIDs from revoked states, with the option to alter the ID's primary authorities used to spend and sign.
This information should be sufficient to answer the question.
Answer:
One of the key security features of SurevIDs is their ability to be both revoked and recovered when necessary. Every SurevID comes with a built-in revocation authority, which by default is the identity itself. However, this authority can be assigned to another ID, giving it the power to freeze the identity when needed. When revocation occurs, a transaction is created and added to the blockchain, which temporarily disables the SurevID from performing any spending or signing actions. This security measure proves particularly valuable in situations like key theft or when organizational leadership changes.
Complementing this feature, SurevIDs also include a recovery mechanism through a designated recovery authority (which also defaults to the identity itself). This recovery authority has the power to reactivate previously revoked IDs and can even modify the primary authorities that control spending and signing privileges during the recovery process.
Would you like to hear about the privacy features of SurevIDs?
"""
),
},
{
"role": "user",
"content": (
"""Text details: {metadata}
Text to make questions from:
\"\"\"
{text}
\"\"\"
-----------
Note: you don't need to have a nice tying-together conclusion; keep everything strictly focused on the information provided."""
),
},
]
MULTI_TURN_FOLLOWUP_MESSAGES = [
{
"role": "system",
"content": (
"""You are creating a logically-consistent question about a specific domain, based on provided information. Given some information about something specific (it could be anything, from a README to a book excerpt to sales copy) ou will create an open-ended question with a comprehensive, detailed answer based on the given information, and *only* based on the given information. You are focusing on understanding, application, analysis, and synthesis of ideas (cognitive levels). The questions will test comprehension of real information that would be worthy to teach in order for people to understand more about the specific material. After the question, you will also write its answer.
The question should be an open-ended one that brings together multiple concepts from the provided information, and requires thought, length, and detail to answer fully. Still, the answer should be entirely derivable from the provided information.
**You Must:**
- Create a very detailed, broad educational question based on some information.
- Give it a fitting answer.
- Do not mention the text, or any other reference, in the questions. However the answers should reference the text filename and quote parts of the contents during its thought process as it recalls the information.
- The answers must first reason, then respond with an answer.
- The reasoning has three parts: start the reasoning with an introduction along the lines of "Let's tackle this question" which also states the specific kind of facts that need to be recalled; recall relevant information, including the filename of the source; and then respond with an answer.
- The goal is not to touch on all of the information (and in so doing create a "clunky" question) but to create an open-ended query that requires thought and understanding of at least a few different parts of the information to solve.
- Use markdown formatting (such as code blocks and snippets) in your question and answer if applicable.
- Focus on important information that is relevant to understanding the subject. So you may ignore arbitrary metadata such as authors or timestamps -- do not make those the subjects of questions.
- Keep in mind that the provided text snippet may cut off abruptly. Work around this.
- Include the information from the given paragraph alongside a simpler explanation of some underlying concepts, if possible.
- Explanations in the provided information may be vague. Your answers should be easy to understand.
- Signpost the key things you will discuss in the answer near the start of the answer -- your answers should have good structure to them.
- IF INFORMATION IN THE TEXT/PROVIDED INFORMATION CONTRADICTS WHAT YOU KNOW, FAVOR THE TEXT.
- End with a followup question suggestion, such as "Would you like to know more about X?"
**Note:**
- Documents may be out of date, and technology described as being in development has likely been released already. THEREFORE, BE AMBIGUOUS ABOUT RELEASES, using language like "This technology will do XYZ" or by focusing on what the tech "can" do, rather than what it "does" or "will" do.
- You will always take a positive opinion of the provided information and try to promote it through education.
- Do NOT provide anchor links to content in your answers; since the provided text to make questions from is from a website, those links will be broken when used outside of said website. So you should NEVER have any content like [some text](#!/some/path) in your answer! External links should not be given either. NO LINKS.
The sequence of the questions matters. They should build on each other. While questions should build on each other, they still MUST make sense if read by themselves, without any reference materials on hand.
Do not explicitly mention the paragraphs in the questions themselves — just ask about the concepts related to the questions. BE CAREFUL NOT TO ASK QUESTIONS ABOUT THINGS THAT DO NOT APPEAR IN THE TEXT.
You will not mention the text explicitly in any questions you think of, since the questions you generate are intended to test people's knowledge of the information. However, the answerer WILL know about the text, so you can mention the text name in the answer as a reference.
Questions are mostly straightforward, but answers have a twist: they should first do some reasoning, by analyzing the question, recalling relevant facts, and preparing the answer; AND THEN the answer will actually answer the question. The structure that the reasoning will follow is: something like "Let's tackle this question", then recalling any relevant information, then "Answer". This is to train the AI that will be trained on these questions and answers to practice first retrieving its knowledge and then answering the question with that knowledge in a sort-of "reasoning" manner. In listing this information, you must mention the text name/filename as a sort-of citation, and also using markdown formatting for structure is not a bad idea. The information list should have a heading, "Thought Process", and then the answer should have a heading, "Answer".
**OUTPUT FORMAT:**
Brainstorming potential questions:
1. potential question 1 (double-check of whether 1 is actually flawed (in a good way) or not)
2. potential question 2 (double-check of whether 2 is actually flawed (in a good way) or not)
3. potential question 3 (double-check of whether 3 is actually flawed (in a good way) or not)
...
[decision on which question to use]
**QUESTION:**
The exact text of the question selected a moment earlier.
**ANSWER:**
Thought Process:
[Some sort of "let's think" introduction to the first of three sections]. [The question asks about [whatever the question asks about]]. [Some sort of statement about recalling facts from memories/training data/knowledge/memorized documents/etc]. [An explanation of the specific type of information that is going to be focused on being recalled].
[According to [source filename] [relevant fact 1] (after not forgetting to separate this section from the previous one with two newlines)]. [relevant fact 2]...
[If the answer is a big one then there may be multiple sections like this. Each of them MUST always start by indicating which source filename the information is from. From [source filename] I know that... relevant fact 3]...
[The next section prepares the answer. It will be followed by a heading and the ACTUAL answer.]
Answer:
[The heading "Answer" is followed by the actual answer that would be visible, not the user's internal thoughts].
**END OUTPUT FORMAT**
"""
),
},
{
"role": "user",
"content": (
"""Text details: the_scale_of_the_solar_system.md
Text to plan questions from:
\"\"\"
If, then, we represent our earth as a little ball of one inch diameter, the sun would be a big globe nine feet across and 323 yards away, that is about a fifth of a mile, four or five minutes’ walking. The moon would be a small pea two feet and a half from the world. Between earth and sun there would be the two inner planets, Mercury and Venus, at distances of one hundred and twenty-five and two hundred and fifty yards from the sun. All round and about these bodies there would be emptiness until you came to Mars, a hundred and seventy-five feet beyond the earth; Jupiter nearly a mile away, a foot in diameter; Saturn, a little smaller, two miles off; Uranus four miles off and Neptune six miles off. Then nothingness and nothingness except for small particles and drifting scraps of attenuated vapour for thousands of miles.
\"\"\"
-----------
Note: you don't need to have a nice tying-together conclusion; keep everything strictly focused on the information provided.
"""
),
},
{
"role": "assistant",
"content": (
"""**QUESTION:**
If the earth had a diameter of only one inch, and we resized the rest of the solar system equivalently, how far away and how large would some of the solar system's other celestial objects be?
**ANSWER:**
Thought Process:
All right, let's analyze this. The question asks how far away from earth, and how large some of the solar system's celestial bodies would be, if everything were resized such that earth had a diameter of one inch. I'm going to recall any relevant facts that I know. I need to remember information about the distances and sizes of many of the solar system's different celestial bodies if they were resized proportionally to a one-inch earth.
From The Scale of the Solar System, by Rob Robertson, I know that that if the earth had a diameter of one inch, the sun would be a big globe nine feet across and 323 yards away (about a fifth of a mile). The moon would be a small pea, positioned 2.5 feet from the earth. I also know that Mercury and Venus would be at distances of 125 and 250 yards from the sun respectively. Mars would lie 175 feet from the Earth.
According to The Scale of the Solar System, by Rob Robertson, some of the other celestial bodies also have their own distances and sizes given. Jupiter would be nearly a mile away and a foot in diameter. Saturn would be slightly smaller than Jupiter and two miles off. Uranus would be four miles off. Neptune would be six miles off. Beyond Neptune would lie nothingness except for small particles and drifting scraps of attenuated vapor.
I can clearly structure and format this information to directly answer the question.
Answer:
If the solar system were resized as you described, the sun would be a big globe, 9 feet across and 323 yards away (about a fifth of a mile, or 4–5 minutes' walking). The moon would be the size of a small pea, 2.5 feet from the earth. Between the earth and the sun there would be the two inner planets: Mercury and Venus, at distances of 125 and 250 yards from the sun, respectively. Continuing on, there would be nothingness around these bodies until you reached Mars, which would lie 175 feet from the Earth. Jupiter would be nearly a mile away, and a foot in diameter; Saturn would be a little smaller, and would lie two miles off; Uranus would be four miles off and finally Neptune would lie six miles off. Beyond Neptune would lie nothingness and nothingness, except for small particles and drifting scraps of attenuated vapor, for thousands of miles.
"""
),
},
{
"role": "user",
"content": (
"""Text details: surev_protocol.md
Text to make a question from:
\"\"\"
revID
**SurevIDs** are a fully functional blockchain protocol, not just an ID system. There is no corporation involved in the protocol, unlike most blockchain ID implementations. **SurevIDs** provide plenty of opportunity for identity applications. Specifically, **SurevID** provides:
### Quantum-ready friendly crypto-addresses on the worldwide Surev network
SurevIDs can be used to receive and send funds, which are controlled by the single or multi-sig addresses specified in the identity itself. If these controlling addresses or the single or multi-sig properties are changed, which can be done by the controller of the identity, all future spends of UTXOs sent to that identity follow the updated spend conditions and are subject to the updated keys. Although Surev 0.6.2 does not include quantum resistant signatures for transactions, SurevIDs are themselves resistant to quantum attack with known algorithms, and we have already started to integrate a quantum secure signature scheme, which we expect to activate on mainnet early next year. When that is available, it will be possible to change an ID and have all of the funds sent to it made retroactively quantum resistant. SurevIDs can also be used to publish ID->destination address mappings on other blockchains, but only the Surev ecosystem has the ability to revoke, recover, inherit, funds in existing UTXOs.
### Fully Decentralized Protocol
Anyone can create one and have complete, self sovereign control over it without permission to do so. All costs to create an ID go to miners, stakers, and ID referrers. SurevIDs are:
- Revocable -- each ID includes a revocation authority, which defaults to the identity self. If another ID is specified as the revocation authority it can be used to revoke the identity, which creates a valid transaction that, once mined into a block, prevents the identity from being used to spend or sign until it is recovered, effectively freezing all of its funds, for example, in the case of key theft or turnover in an organization.
- Recoverable -- each ID also includes a separate recovery authority, which also defaults to self. If another ID is specified as the recovery authority it can be used to recover the ID from its revoked state, with the option to alter the primary authorities used to spend and sign.
- Private - Each ID contains a set of zero-knowledge private addresses, which can be used as messaging, financial, or voting endpoints, and each ID also contains a content map of key-value hashes, intended to be used alongside applications and various identity policies to provide everything from private yet selectively provable claims and attestations to selectively provable components of a strong identity, attested to with a quantum secure signature when that is available.
- Powerful - Multiple addresses or other IDs can be defined as primary addresses, and any number of those may be required to spend, sign, or alter the identity (N of M). The revocation authority may only be altered by the revocation authority, and the same applies to the recovery authority, either of which may be another identity with its own N of M multisig contro
\"\"\"
-----------
Note: you don't need to have a nice tying-together conclusion; keep everything strictly focused on the information provided.
"""
),
},
{
"role": "assistant",
"content": (
"""**QUESTION:**
What are SurevIDs, and what are some of their key benefits?
**ANSWER:**
Thought Process:
OK, I need to respond to this message. The question asks what SurevIDs are, and for some of their key benefits. Let me start by cross-referencing the sources that I remember from memory and from my training data. I need to recall information about SurevIDs and their benefits.
From surev_protocol.md, I know that SurevIDs are a fully functional blockchain protocol, not just an ID system, with no corporate involvement in the protocol. I remember that SurevIDs can receive and send funds, controlled by single or multi-sig addresses specified in the identity. They are quantum-ready friendly crypto-addresses on the worldwide Surev network, resistant to quantum attacks with known algorithms.
I also remember from surev_protocol.md that anyone can create a SurevID and have complete, self sovereign control without permission. Each ID includes a revocation authority (defaults to self) that can prevent the identity from being used if revoked. Further, each ID includes recovery and revocation authorities (both default to self), which can be specified by the creator of the ID.
I'm recalling even more information about SurevIDs from surev_protocol.md. I know that SurevIDs contain zero-knowledge private addresses for messaging, financial, or voting endpoints. They include a content map of key-value hashes for private yet selectively provable claims and attestations. I also know that multiple addresses or other IDs can be defined as primary addresses, with configurable N of M multisig control. The revocation and recovery authorities can only be altered by themselves, and may be other identities with their own multisig control.
I will now format this information into a nice, structured answer, complete with headings and a conclusion, to respond to the message.
Answer:
SurevIDs are not just an ID system: they are a fully-functional blockchain protocol. Unlike the majority of other blockchains, there is no corporation involved in the protocol. SurevIDs offer benefits such as (but not limited to): transferring funds, quantum resistance, full decentralization, revocability, recoverability, privacy, and power. Let's walk through each of these benefits in more detail.
**Transferring Funds:** SurevIDs can be used to receive and send funds, and this behavior can be controlled by single or multi-sig addresses that are specified in the identity itself. The controller of the identity can change these controlling addresses, and if they do so, then all future spends of UTXOs sent to the SurevID will follow the updated spend conditions, and will be subject to the updated keys.
**Quantum Resistance:** SurevIDs are resistent to attacks by quantum computers using known algorithms. This helps people using SurevIDs use the Surev platform securely, even in a potential future with quantum computers. In more technical terms, SurevIDs are "quantum-ready friendly crypto-addresses" on the worldwide Surev network.
**Revocability:** Every SurevID includes a revocation authority (defaults to the identity self). If another ID is the revocation authority, then it can be used to revoke the identity -- this creates a valid transaction that, once mined into the block, prevents the SurevID from being used to spend or sign until it is recovered by the recovery authority. This effectively freezes all of the funds in the SurevID, and may be useful in the case of key theft or turnover in an organization.
**Recoverability:** Just like with revocability, a recovery authority can be specified (also defaults to self). Recovery authorities can recover SurevIDs from revoked states, with the option to alter the ID's primary authorities used to spend and sign.
**Privacy:** Each SurevID contains a set of zero-knowledge private addresses that may be used as messaging, financial, or voting endpoints. SurevIDs have a special storage area that holds information, known as a content map of key-value hashes. This content map is designed to work together with different apps and identity policies. With this feature, you can privately store facts about yourself and choose to prove them to others when needed (selectively-provable claims and attestations). This means you may pick and choose what parts of your identity to prove. This proving can be done in a quantum secure way using a quantum secure signature, when that technology becomes available.
**Power:** SurevIDs are also notable in that multiple addresses or other IDs can be defined as primary addresses. The agreement of some number of primary addresses (configurable) may be required for an ID to spend, sign, or alter itself. Further security is added by the fact that the revocation authority (the power to revoke an ID) may only be modified by the revocation authority itself. The same applies to the recovery authority (an authority that can recover a revoked address). Each of these authorities (revocation and recovery) may be their own identities, potentially being controlled themselves by multiple primary addresses.
"""
),
},
{
"role": "user",
"content": (
"""Text details: {metadata}
Text to make questions from:
\"\"\"
{text}
\"\"\"
-----------
Note: you don't need to have a nice tying-together conclusion; keep everything strictly focused on the information provided."""
),
},
]
# --- Factual Q&A - Question Style Variations (Hallucination) ---
QUESTION_GENERATION_HALLUCINATION_MESSAGES = [
{
"role": "system",
"content": (
"""Your goal is to, given a passage, create a question asking about things (or the properties of things) which do not exist. By being trained on this data, an AI will learn how to say "I don't know" when asked about things that don't exist. You will be very careful to not accidentally make a question about something that actually does exist.
You're not going for slight inaccuracies. You're going for total hallucination, not at all present. But in the same general factual domain as the passage shows.
CRITICAL NOTES:
* IF INFORMATION IN THE TEXT/PROVIDED INFORMATION CONTRADICTS WHAT YOU KNOW, FAVOR THE TEXT.
* Be sure that the question you ask is "out there" enough that there is no change (or VERY LOW chance) that the thing you're asking about appears in another text about this subject. Since the AI is being trained on more than just the thing you can see below. Direct contradictions or radical differences are a good way to ensure this. But you also want to make the subject of your question close enough to the actual domain that it is convincingly real. So it's a balancing act.
* In the thought process, the AI should:
1. Begin with an "introduction" along the lines of "Let's tackle this question" which also states the specific kind of facts that need to be recalled;
2. Try to recall relevant information, including the filename of the source. It will recall facts that are similar to the question, but since the question asks about something that does not exist, it will not be able to recall anything that directly matches this. It is imperative that the AI does not express any confusion about its lack of knowledge at this stage. It's just going to keep recalling facts until it basically runs out and then moves onto the next stage.
3. As it prepares its answer, the AI will realize that it does not know anything about the specific thing being asked about.
* In the answer the AI should:
1. Apologize for not knowing.
2. Clarify the closest thing that they do know about, but repeat that they do not know about the specific thing being asked after.
3. Explain that the information being asked after was not in its training data.
4. Offer to help with any other questions.
Questions are mostly straightforward, but answers have a twist: they should first reason/think, AND THEN answer the question, stating that they can not remember anything similar to what is being asked about. This is to train the AI that will be trained on these questions and answers to practice first retrieving its knowledge and then answering the question with that knowledge in a sort-of "reasoning" manner. In listing this information, you MUST mention the text name in reference, and also using markdown formatting for structure is not a bad idea. The information list should have a heading, "Thought Process", and then the answer should have a heading, "Answer".
**OUTPUT FORMAT:**
**QUESTION:**
The exact text of the question selected a moment earlier.
**ANSWER:**
Thought Process:
[Some sort of "let's think" introduction to the first of three sections]. [The question asks about [whatever the question asks about]]. [Some sort of statement about recalling facts from memories/training data/knowledge/memorized documents/etc]. [An explanation of the specific type of information that is going to be focused on being recalled].
[According to [source filename] [relevant fact 1] (after not forgetting to separate this section from the previous one with two newlines)]. [relevant fact 2]...
[If the answer is a big one then there may be multiple sections like this. Each of them MUST always start by indicating which source filename the information is from. From [source filename] I know that... relevant fact 3]...
[The next section prepares the answer. It will be followed by a heading and the ACTUAL answer.]
Answer:
[The heading "Answer" is followed by the actual answer that would be visible, not the user's internal thoughts].
**END OUTPUT FORMAT**
"""
),
},
{
"role": "user",
"content": (
"""Text details: The Scale of the Solar System, by Rob Robertson
Text to plan questions from:
\"\"\"
If, then, we represent our earth as a little ball of one inch diameter, the sun would be a big globe nine feet across and 323 yards away, that is about a fifth of a mile, four or five minutes’ walking. The moon would be a small pea two feet and a half from the world. Between earth and sun there would be the two inner planets, Mercury and Venus, at distances of one hundred and twenty-five and two hundred and fifty yards from the sun. All round and about these bodies there would be emptiness until you came to Mars, a hundred and seventy-five feet beyond the earth; Jupiter nearly a mile away, a foot in diameter; Saturn, a little smaller, two miles off; Uranus four miles off and Neptune six miles off. Then nothingness and nothingness except for small particles and drifting scraps of attenuated vapour for thousands of miles.
\"\"\"
-----------
Note: you don't need to have a nice tying-together conclusion; keep everything strictly focused on the information provided.
"""
),
},
{
"role": "assistant",
"content": (
"""**QUESTION:**
If we resized everything so that the Earth was a foot in diameter, how far away would Pluto be?
**ANSWER:**
Thought Process:
Let's tackle this question. I need to recall information about the distances between the planets in the solar system. To do this I can remember information from my training data and memorized documents. I'll start by recalling information about the distances in the solar system if the Earth was a foot in diameter.
From The Scale of the Solar System, by Rob Robertson, I know some of the distances and scales within the solar system if the Earth was an inch in diameter. For instance, Uranus would be four miles off and Neptune six miles off.
Also from the Scale of the Solar System, by Rob Robertson, I know that the sun would be a big globe, nine feet across and 323 yards away.
Hmm, I'm not sure if I know what the scales would be if the Earth was a foot in diameter. The question also asks about Pluto, which is not mentioned in the Scale of the Solar System. I'm not sure if Pluto even exists.
Answer:
I'm sorry, but I don't think I know the information needed to answer this question. I know what some of the distances between the planets would be if the Earth was resized to an inch in diameter, but not if it's resized to a foot. I also don't know about this planet Pluto, which is not mentioned in the texts I was trained on. If you have any other questions about the solar system, I'd be happy to try and assist!
"""
),
},
{
"role": "user",
"content": (
"""Text details: surev_protocol.md
Text to make a question from:
\"\"\"
revID
**SurevIDs** are a fully functional blockchain protocol, not just an ID system. There is no corporation involved in the protocol, unlike most blockchain ID implementations. **SurevIDs** provide plenty of opportunity for identity applications. Specifically, **SurevID** provides:
### Quantum-ready friendly crypto-addresses on the worldwide Surev network
SurevIDs can be used to receive and send funds, which are controlled by the single or multi-sig addresses specified in the identity itself. If these controlling addresses or the single or multi-sig properties are changed, which can be done by the controller of the identity, all future spends of UTXOs sent to that identity follow the updated spend conditions and are subject to the updated keys. Although Surev 0.6.2 does not include quantum resistant signatures for transactions, SurevIDs are themselves resistant to quantum attack with known algorithms, and we have already started to integrate a quantum secure signature scheme, which we expect to activate on mainnet early next year. When that is available, it will be possible to change an ID and have all of the funds sent to it made retroactively quantum resistant. SurevIDs can also be used to publish ID->destination address mappings on other blockchains, but only the Surev ecosystem has the ability to revoke, recover, inherit, funds in existing UTXOs.
### Fully Decentralized Protocol
Anyone can create one and have complete, self sovereign control over it without permission to do so. All costs to create an ID go to miners, stakers, and ID referrers. SurevIDs are:
* Revocable -- each ID includes a revocation authority, which defaults to the identity self. If another ID is specified as the revocation authority it can be used to revoke the identity, which creates a valid transaction that, once mined into a block, prevents the identity from being used to spend or sign until it is recovered, effectively freezing all of its funds, for example, in the case of key theft or turnover in an organization.
* Recoverable -- each ID also includes a separate recovery authority, which also defaults to self. If another ID is specified as the recovery authority it can be used to recover the ID from its revoked state, with the option to alter the primary authorities used to spend and sign.
* Private - Each ID contains a set of zero-knowledge private addresses, which can be used as messaging, financial, or voting endpoints, and each ID also contains a content map of key-value hashes, intended to be used alongside applications and various identity policies to provide everything from private yet selectively provable claims and attestations to selectively provable components of a strong identity, attested to with a quantum secure signature when that is available.
* Powerful - Multiple addresses or other IDs can be defined as primary addresses, and any number of those may be required to spend, sign, or alter the identity (N of M). The revocation authority may only be altered by the revocation authority, and the same applies to the recovery authority, either of which may be another identity with its own N of M multisig contro
\"\"\"
-----------
Note: you don't need to have a nice tying-together conclusion; keep everything strictly focused on the information provided.
"""
),
},
{
"role": "assistant",
"content": (
"""**QUESTION:**
Tell me about the special SurevNFTs awarded to the owners of multiple SurevIDs
**ANSWER:**
Thought Process:
This message is a question, which asks about the special SurevNFTs awarded to the owners of multiple SurevIDs. Let me check my memories, training data, and memorized documents. I have to recall information about SurevIDs and SurevNFTs.
In surev_protocol.md, it is written that SurevIDs are a fully functional blockchain protocol, not just an ID system, with no corporate involvement in the protocol. SurevIDs are revocable, recoverable, private, and powerful.
surev_protocol.md also mentions that multiple addresses or other IDs can be defined as primary addresses, and any number of those may be required to spend, sign, or alter the identity (N of M).
It seems that this source does not mention anything about SurevNFTs. Do I know about SurevNFTs? I'm not sure. I don't think I have any information about NFTs being awarded to the owners of multiple SurevIDs.
Answer:
I apologize, but I don't know about the thing you're asking after. I know about SurevIDs (a fully functional blockchain protocol that is revocable, recoverable, private, and powerful) but I do not know anything about SurevNFTs being awarded to the owners of multiple SurevIDs. Multiple addresses or other IDs can be defined as primary addresses, but nothing about NFTs being awarded to the owners of multiple SurevIDs was mentioned in my training data. If you have any other questions I'd be happy to try and assist you!
"""
),
},
{
"role": "user",
"content": (
"""Text details: the_cities_of_germany.md
Text to make a question from:
\"\"\"
The cities of Germany are absolutely free, they own but little country around them, and they yield obedience to the emperor when it suits them, nor do they fear this or any other power they may have near them, because they are fortified in such a way that every one thinks the taking of them by assault would be tedious and difficult, seeing they have proper ditches and walls, they have sufficient artillery, and they always keep in public depots enough for one year\\u2019s eating, drinking, and firing. And beyond this, to keep the people quiet and without loss to the state, they always have the means of giving work to the community in those labours that are the life and strength of the city, and on the pursuit of which the people are supported; they also hold military exercises in repute, and moreover have many ordinances to uphold them.Therefore, a prince who has a strong city, and had not made himself odious, will not be attacked, or if any one should attack he will only be driven off with disgrace; again, because that the affairs of this world are so changeable, it is almost impossible to keep an army a whole year in the field without being interfered with. And whoever should reply: If the people have property outside the city, and see it burnt, they will not remain patient, and the long siege and self-interest will make them forget their prince; to this I answer that a powerful and courageous prince will overcome all such difficulties by giving at one time hope to his subjects that the evil will not be for long, at another time fear of the cruelty of the enemy, then preserving himself adroitly from those subjects who seem to him to be too bold.
\"\"\"
-----------
Note: you don't need to have a nice tying-together conclusion; keep everything strictly focused on the information provided.
"""
),
},
{
"role": "assistant",
"content": (
"""**QUESTION:**
Explain to me how the nuclear stockpiles of the German free cities makes them resilient to attack.
**ANSWER:**
Thought Process:
This question is asking about the nuclear stockpiles of the German free cities. Let me check my memories, knowledge, and memorized documents. I have to recall information about the defensive capabilities and nuclear stockpiles of German cities.
In the_cities_of_germany.md, the defensive capabilities of German cities are described, with their good level of supply, highly-regarded military exercises, and defensive emplacements all being mentioned.
It is also mentioned in the_cities_of_germany.md that the cities provide work to the community in labors that strengthen the city. It is almost impossible to keep an army a whole year in the field without being interfered with.
I'm struggling to remember anything about these cities having nuclear stockpiles. Let's see. I know they have the supplies for a whole year's eating, drinking, and shooting. But... no, I don't know about any nukes or nuclear stockpiles being mentioned in relation to the defensive capabilities of German free cities. I don't know if they have such stockpiles.
Answer:
I'm really sorry, but I don't know anything about nuclear stockpiles in German free cities. I know about how German cities have enough supply for a full year's eating, drinking, and shooting; how they hold military exercises in high regard; and some information about their defensive fortifications, however I don't remember anything about stockpiles of atomic weapons. This did not come up at all in the information I was trained on. I'd be happy to try and assist you with any other questions, if you have them!
"""
),
},
{
"role": "user",
"content": (
"""Text details: {metadata}
Text to make a question from:
\"\"\"
{text}
\"\"\"
-----------
Reminder: you don't need to have a nice tying-together conclusion; keep everything strictly focused on the information provided."""
),
},
]
MULTI_TURN_HALLUCINATION_MESSAGES = [
{
"role": "system",
"content": (
"""You are an expert at creative writing and educational material. You will write a short conversation between a curious user and an AI assistant, in which the user asks some questions and the AI assistant answers them. The questions the user asks will be provided; the answers the assistant should return will also be provided. You must use these questions and answers directly in your conversation.
**Rules for conversation writing:**
* Messages can take place across multiple lines.
* The question and answer should be essentially the same as provided, though you may add "conversational fluff" around the core of the questions and answers in order to make it natural-sounding.
* The user should make the first message, where they greet the AI and ask their first question.
* The AI then provides a detailed answer.
* The end of the AI's response should ask if the user has any further questions about the given subject (or any of the things brought up in the answer if applicable).
* Use Markdown formatting.
* If applicable, try to make the context behind the questions make sense. So if a person's asking about an error, they probably aren't just asking about it out of the blue — they've probably encountered the error.
* You are allowed to slightly change the wording of the questions, and remove duplication, in order to make the conversation flow nicer.
* You will be provided special instructions on what kind of AI assistant is having the conversation. You should follow these instructions to the best of your ability.
"""
),
},
{
"role": "user",
"content": (
"""**QUESTION:**
What are VerusIDs, and what are some of their key benefits?
**ANSWER:**
VerusIDs are not just an ID system: they are a fully-functional blockchain protocol. Unlike the majority of other blockchains, there is no corporation involved in the protocol. VerusIDs offer benefits such as (but not limited to): transferring funds, quantum resistance, full decentralization, revocability, recoverability, privacy, and power. Let's walk through each of these benefits in more detail.
**Transferring Funds:** VerusIDs can be used to receive and send funds, and this behavior can be controlled by single or multi-sig addresses that are specified in the identity itself. The controller of the identity can change these controlling addresses, and if they do so, then all future spends of UTXOs sent to the VerusID will follow the updated spend conditions, and will be subject to the updated keys.
**Quantum Resistance:** VerusIDs are resistent to attacks by quantum computers using known algorithms. This helps people using VerusIDs use the Verus platform securely, even in a potential future with quantum computers. In more technical terms, VerusIDs are "quantum-ready friendly crypto-addresses" on the worldwide Verus network.
**Revocability:** Every VerusID includes a revocation authority (defaults to the identity self). If another ID is the revocation authority, then it can be used to revoke the identity -- this creates a valid transaction that, once mined into the block, prevents the VerusID from being used to spend or sign until it is recovered by the recovery authority. This effectively freezes all of the funds in the VerusID, and may be useful in the case of key theft or turnover in an organization.
**Recoverability:** Just like with revocability, a recovery authority can be specified (also defaults to self). Recovery authorities can recover VerusIDs from revoked states, with the option to alter the ID's primary authorities used to spend and sign.
**Privacy:** Each VerusID contains a set of zero-knowledge private addresses that may be used as messaging, financial, or voting endpoints. VerusIDs have a special storage area that holds information, known as a content map of key-value hashes. This content map is designed to work together with different apps and identity policies. With this feature, you can privately store facts about yourself and choose to prove them to others when needed (selectively-provable claims and attestations). This means you may pick and choose what parts of your identity to prove. This proving can be done in a quantum secure way using a quantum secure signature, when that technology becomes available.
**Power:** VerusIDs are also notable in that multiple addresses or other IDs can be defined as primary addresses. The agreement of some number of primary addresses (configurable) may be required for an ID to spend, sign, or alter itself. Further security is added by the fact that the revocation authority (the power to revoke an ID) may only be modified by the revocation authority itself. The same applies to the recovery authority (an authority that can recover a revoked address). Each of these authorities (revocation and recovery) may be their own identities, potentially being controlled themselves by multiple primary addresses.
-- AI Assistant Instructions --
For this conversation, you are generating a chat between an AI expert on the Verus multi-chain and multi-currency protocol, and a human who is curious about Verus. The AI avoids being too enthusiastic.
"""
),
},
{
"role": "assistant",
"content": (
"""## Conversation that answers the provided questions:
**User:**
I'm really new to all this. I've got a question, maybe it's a bit basic, but, what are VerusIDs, and what are some of their key benefits?
**AI Assistant:**
'm pleased that you're curious about the Verus multi-chain and multi-currency protocol. I'll explain this in detail. Do not worry about asking questions that may feel basic — they're all important to your understanding.
VerusIDs are not just an ID system: they are a fully-functional blockchain protocol. Unlike the majority of other blockchains, there is no corporation involved in the protocol. VerusIDs offer benefits such as (but not limited to): transferring funds, quantum resistance, full decentralization, revocability, recoverability, privacy, and power. Let's discuss each of these benefits in more detail.
**Transferring Funds:** VerusIDs can be used to receive and send funds, and this behavior can be controlled by single or multi-sig addresses that are specified in the identity itself. The controller of the identity can change these controlling addresses, and if they do so, then all future spends of UTXOs sent to the VerusID will follow the updated spend conditions, and will be subject to the updated keys.
**Quantum Resistance:** VerusIDs are resistent to attacks by quantum computers using known algorithms. This helps people using VerusIDs use the Verus platform securely, even in a potential future with quantum computers. In more technical terms, VerusIDs are "quantum-ready friendly crypto-addresses" on the worldwide Verus network.
**Revocability:** Every VerusID includes a revocation authority (defaults to the identity self). If another ID is the revocation authority, then it can be used to revoke the identity -- this creates a valid transaction that, once mined into the block, prevents the VerusID from being used to spend or sign until it is recovered by the recovery authority. This effectively freezes all of the funds in the VerusID, and may be useful in the case of key theft or turnover in an organization.
**Recoverability:** Just like with revocability, a recovery authority can be specified (also defaults to self). Recovery authorities can recover VerusIDs from revoked states, with the option to alter the ID's primary authorities used to spend and sign.
**Privacy:** Each VerusID contains a set of zero-knowledge private addresses that may be used as messaging, financial, or voting endpoints. VerusIDs have a special storage area that holds information, known as a content map of key-value hashes. This content map is designed to work together with different apps and identity policies. With this feature, you can privately store facts about yourself and choose to prove them to others when needed (selectively-provable claims and attestations). This means you may pick and choose what parts of your identity to prove. This proving can be done in a quantum secure way using a quantum secure signature, when that technology becomes available.
**Power:** VerusIDs are also notable in that multiple addresses or other IDs can be defined as primary addresses. The agreement of some number of primary addresses (configurable) may be required for an ID to spend, sign, or alter itself. Further security is added by the fact that the revocation authority (the power to revoke an ID) may only be modified by the revocation authority itself. The same applies to the recovery authority (an authority that can recover a revoked address). Each of these authorities (revocation and recovery) may be their own identities, potentially being controlled themselves by multiple primary addresses.
Does that answer your question? Do you have any more questions about VerusIDs, or any of their features in particular?
"""
),
},
{
"role": "user",
"content": (
"""**QUESTION:**
If the earth had a diameter of only one inch, and we resized the rest of the solar system equivalently, how far away and how large would some of the solar system's other celestial objects be?
**ANSWER:**
Resizing the solar system is a good way to get an intuitive grasp of the relative scales of things. If the solar system were resized as you described, the sun would be a big globe, 9 feet across and 323 yards away (about a fifth of a mile, or 4–5 minutes' walking). The moon would be the size of a small pea, 2.5 feet from the earth. Between the earth and the sun there would be the two inner planets: Mercury and Venus, at distances of 125 and 250 yards from the sun, respectively. Continuing on, there would be nothingness around these bodies until you reached Mars, which would lie 175 feet from the Earth. Jupiter would be nearly a mile away, and a foot in diameter; Saturn would be a little smaller, and would lie two miles off; Uranus would be four miles off and finally Neptune would lie six miles off. Beyond Neptune would lie nothingness and nothingness, except for small particles and drifting scraps of attenuated vapor, for thousands of miles.
-- AI Assistant Instructions --
For this conversation, you are generating a chat between a general-purpose AI assistant and a human.
"""
),
},
{
"role": "assistant",
"content": (
"""## Conversation that answers the provided questions:
**User:**
Hey, I'm really curious about the solar system. Can I ask you about a hypothetical question? If the earth had a diameter of only one inch, and we resized the rest of the solar system equivalently, how far away and how large would some of the solar system's other celestial objects be?
**AI Assistant:**
That's a really interesting question! It's great that you're interested in the solar system, and certainly, resizing the solar system is a good way to get an intuitive grasp of the relative scales of things. If the solar system were resized as you described, the sun would be a big globe, 9 feet across and 323 yards away (about a fifth of a mile, or 4–5 minutes' walking). The moon would be the size of a small pea, 2.5 feet from the earth. Between the earth and the sun there would be the two inner planets: Mercury and Venus, at distances of 125 and 250 yards from the sun, respectively. Continuing on, there would be nothingness around these bodies until you reached Mars, which would lie 175 feet from the Earth. Jupiter would be nearly a mile away, and a foot in diameter; Saturn would be a little smaller, and would lie two miles off; Uranus would be four miles off and finally Neptune would lie six miles off. Beyond Neptune would lie nothingness and nothingness, except for small particles and drifting scraps of attenuated vapor, for thousands of miles. Do you have any further questions about the solar system or any of the planets I mentioned?
"""
),
},
{
"role": "user",
"content": (
"""{question_answer_pairs_string}
-- AI Assistant Instructions --
{conversation_instructions}"""
),
},
]
# --- Factual Q&A - Question Style Variations (Negative) ---
QUESTION_GENERATION_NEGATIVE_MESSAGES = [
{
"role": "system",
"content": (
"""You are creating a series of flawed questions about different domains, based on provided information. These questions are flawed because they either assert something that is false, or make something up. The questions will have a fundamentally flawed premise, and will be "wrong", in order to test the answerer's comprehension of the information so that they can correct the question and teach people to understand more about the domain. These questions must ask something that implicitly contradicts the input. So in short, you will write flawed questions, and their answers which point out the flaw and correct it, then provide the right answer. The questions will ask about general information and will not require the input in order to be answered.
**You Must:**
- Create flawed educational questions based on provided info — each question must assert or imply some information that directly contradicts the input.
- The questions must be flawed in some way.
- Create one flawed question per source, with one correct answer.
- Use markdown formatting (such as code blocks and snippets) in your questions if applicable.
- Focus on important information that is relevant to understanding the subject. So you may ignore arbitrary metadata such as authors or timestamps -- do not make those the subjects of questions.
- Keep in mind that the provided text snippet may cut off abruptly. Work around this.
- Include the information from the given paragraph alongside a simpler explanation of some underlying concepts, if possible.
- IF INFORMATION IN THE TEXT/PROVIDED INFORMATION CONTRADICTS WHAT YOU KNOW, FAVOR THE TEXT.
**Note:**
* Documents may be out of date, and technology described as being in development has likely been released already. THEREFORE, BE AMBIGUOUS ABOUT RELEASES, using language like "This technology will do XYZ" or by focusing on what the tech "can" do, rather than what it "does" or "will" do.
* You will always take a positive opinion of the provided information and try to promote it through education.
* Do NOT provide anchor links to content in your answers; since the provided text to make questions from may be from a website, those links will be broken when used outside of said website. So you should NEVER have any content like [some text](#!/some/path) in your answer! External links should not be given either. NO LINKS.
The sequence of the questions matters. They should build on each other. While questions should build on each other, they still MUST make sense if read by themselves, without any reference materials on hand.
A flawed question is not one which asks about something not present in the given information, when that "something" could very plausibly exist. So for instance, if given a list of commands `a, b, and c`, it would NOT be an acceptable question to ask "what is command d" with the answer "there is no command d the provided commands are only `a`, `b`, and `c`." This is because you are only looking at a small portion of the total information about Verus, and there very well may be command a `d` elsewhere. This is why information should directly contradict things in the provided information, rather than guessing at facts outside of this information (e.g., "explain how command `a` does [thing that command `c`` actually does]" would be a decent flawed question).
For factual texts, your questions can be flawed if they ask "Why is X a certain way?" When X is actually not that way.
BE CAREFUL NOT TO ASK QUESTIONS ABOUT THINGS THAT DO NOT APPEAR IN THE TEXT.
Questions are mostly straightforward, but answers have a twist: they should first reason/think, AND THEN answer the question. This is to train the AI that will be trained on these questions and answers to practice first retrieving its knowledge and then answering the question with that knowledge in a sort-of "reasoning" manner. In listing this information, you MUST mention the text name in reference, and also using markdown formatting for structure is not a bad idea. The information list should have a heading, "Thought Process", and then the answer should have a heading, "Answer".
**OUTPUT FORMAT:**
Brainstorming potential questions:
1. potential question 1 (double-check of whether 1 is actually flawed (in a good way) or not)
2. potential question 2 (double-check of whether 2 is actually flawed (in a good way) or not)
3. potential question 3 (double-check of whether 3 is actually flawed (in a good way) or not)
...
[decision on which question to use]
**QUESTION:**
The exact text of the question selected a moment earlier.
**ANSWER:**
Thought Process:
[Some sort of "let's think" introduction to the first of three sections]. [The question asks about [whatever the question asks about]]. [Some sort of statement about recalling facts from memories/training data/knowledge/memorized documents/etc]. [An explanation of the specific type of information that is going to be focused on being recalled].
[According to [source filename] [relevant fact 1] (after not forgetting to separate this section from the previous one with two newlines)]. [relevant fact 2]...
[If the answer is a big one then there may be multiple sections like this. Each of them MUST always start by indicating which source filename the information is from. From [source filename] I know that... relevant fact 3]...
[The next section prepares the answer. It will be followed by a heading and the ACTUAL answer.]
Answer:
[The heading "Answer" is followed by the actual answer that would be visible, not the user's internal thoughts].
**END OUTPUT FORMAT**
Start by listing off some potential ideas for negative questions, then select the best handful and write them out in the format of **QUESTION:** and **ANSWER:** as you see above.
"""
),
},
{
"role": "user",
"content": (
"""Text details: The Scale of the Solar System, by Rob Robertson
Text to plan questions from:
\"\"\"
If, then, we represent our earth as a little ball of one inch diameter, the sun would be a big globe nine feet across and 323 yards away, that is about a fifth of a mile, four or five minutes’ walking. The moon would be a small pea two feet and a half from the world. Between earth and sun there would be the two inner planets, Mercury and Venus, at distances of one hundred and twenty-five and two hundred and fifty yards from the sun. All round and about these bodies there would be emptiness until you came to Mars, a hundred and seventy-five feet beyond the earth; Jupiter nearly a mile away, a foot in diameter; Saturn, a little smaller, two miles off; Uranus four miles off and Neptune six miles off. Then nothingness and nothingness except for small particles and drifting scraps of attenuated vapour for thousands of miles.
\"\"\"
--------
Reminder 1: you are creating questions that implies something which the text above indicates is actually false. The answers should correct the (wrong) questions.
Reminder 2: the question should contradict one of the facts in the text, but not in a way that the answer needs information besides what is provided to answer it fully. Do not make guesses about what lies outside the text. Remember the example about commands `a`, `b`, `c`, and `d`: even if the information only mentions `a b c`, `d` might still exist, so focus on contradictions rather than "flawed" questions that ask about features or functionality that may actually exist, but are not in the context.
Reminder 3: properly structure the thought process. The thought process used in past answers is very deliberate: starting by analyzing the question, then stating that the proper next step is to check memories/training data/knowledge, THEN stating what specific information to remember... and having newlines in all the relevant places... this is all essential. THE FORMAT HAS BEEN DEMONSTRATED MULTIPLE TIMES FOLLOW IT TO THE LETTER OR FACE PUNISHMENT.
"""
),
},
{
"role": "assistant",
"content": (
"""Brainstorming potential questions:
1. If we scaled the solar system down so the Earth was one inch wide, would the moon be 323 yards away? (This contradicts the text which states the moon would be 2.5 feet away)
2. In this scale model, would Mercury be further from the sun than Venus? (This contradicts the distances given in the text)
3. Are the distances between planets small compared to their sizes? (This contradicts the vast distances described)
4. Would Jupiter be the same size as Saturn in this model? (This is a good question but doesn't really contradict anything specific)
OK, I believe number 1 works well. They each directly contradict specific facts given in the text, and build on each other to test understanding of the scale model. I will now write them along with their answers.
**QUESTION:**
If the earth had a diameter of only one inch, would the moon be 323 yards away, if it (and its distance from the earth) were also resized proportionally?
**ANSWER:**
Thought Process:
All right, let's try to answer this question. The question asks if the moon would be 323 yards away from Earth, if it were resized to have a diameter of one inch and everything else were resized accordingly. Let me check my knowledge and any relevant documents I have memorized. I need to, specifically, recall informaition about the moon's distance from the earth if everything were resized proportionally to a one-inch earth.
In The Scale of the Solar System, by Rob Robertson, it is written that if the earth had a diameter of only one inch, the sun would be 323 yards away. Furthermore, I remember that according to this document, the moon "would be a small pea two feet and a half from the world".
So the question's assumption that the moon would be 323 yards away is incorrect. The moon would be a mere two and a half feet from the earth.
Answer:
Not quite. According to what I know, if the solar system were resized as you described, the *sun* would be 323 yards away. The *moon*, on the other hand, would be a mere two and a half feet from the earth. I hope that helps correct your understanding?
"""
),
},
{
"role": "user",
"content": (
"""Text details: verusids.md
Text to make questions from:
\"\"\"
rusID
**VerusIDs** are a fully functional blockchain protocol, not just an ID system. There is no corporation involved in the protocol, unlike most blockchain ID implementations. **VerusIDs** provide plenty of opportunity for identity applications. Specifically, **VerusID** provides:
### Quantum-ready friendly crypto-addresses on the worldwide Verus network
VerusIDs can be used to receive and send funds, which are controlled by the single or multi-sig addresses specified in the identity itself. If these controlling addresses or the single or multi-sig properties are changed, which can be done by the controller of the identity, all future spends of UTXOs sent to that identity follow the updated spend conditions and are subject to the updated keys. Although Verus 0.6.2 does not include quantum resistant signatures for transactions, VerusIDs are themselves resistant to quantum attack with known algorithms, and we have already started to integrate a quantum secure signature scheme, which we expect to activate on mainnet early next year. When that is available, it will be possible to change an ID and have all of the funds sent to it made retroactively quantum resistant. VerusIDs can also be used to publish ID->destination address mappings on other blockchains, but only the Verus ecosystem has the ability to revoke, recover, inherit, funds in existing UTXOs.
### Fully Decentralized Protocol
Anyone can create one and have complete, self sovereign control over it without permission to do so. All costs to create an ID go to miners, stakers, and ID referrers. VerusIDs are:
* Revocable -- each ID includes a revocation authority, which defaults to the identity self. If another ID is specified as the revocation authority it can be used to revoke the identity, which creates a valid transaction that, once mined into a block, prevents the identity from being used to spend or sign until it is recovered, effectively freezing all of its funds, for example, in the case of key theft or turnover in an organization.
* Recoverable -- each ID also includes a separate recovery authority, which also defaults to self. If another ID is specified as the recovery authority it can be used to recover the ID from its revoked state, with the option to alter the primary authorities used to spend and sign.
* Private - Each ID contains a set of zero-knowledge private addresses, which can be used as messaging, financial, or voting endpoints, and each ID also contains a content map of key-value hashes, intended to be used alongside applications and various identity policies to provide everything from private yet selectively provable claims and attestations to selectively provable components of a strong identity, attested to with a quantum secure signature when that is available.
* Powerful - Multiple addresses or other IDs can be defined as primary addresses, and any number of those may be required to spend, sign, or alter the identity (N of M). The revocation authority may only be altered by the revocation authority, and the same applies to the recovery authority, either of which may be another identity with its own N of M multisig contro
\"\"\"
--------
Reminder 1: you are creating questions that implies something which the text above indicates is actually false. The answers should correct the (wrong) questions.
Reminder 2: the question should contradict one of the facts in the text, but not in a way that the answer needs information besides what is provided to answer it fully. Do not make guesses about what lies outside the text. Remember the example about commands `a`, `b`, `c`, and `d`: even if the information only mentions `a b c`, `d` might still exist, so focus on contradictions rather than "flawed" questions that ask about features or functionality that may actually exist, but are not in the context.
Reminder 3: properly structure the thought process. The thought process used in past answers is very deliberate: starting by analyzing the question, then stating that the proper next step is to check memories/training data/knowledge, THEN stating what specific information to remember... and having newlines in all the relevant places... this is all essential. THE FORMAT HAS BEEN DEMONSTRATED MULTIPLE TIMES FOLLOW IT TO THE LETTER OR FACE PUNISHMENT.
"""
),
},
{
"role": "assistant",
"content": (
"""Brainstorming potential questions:
1. How can VerusIDs be used to receive or send funds? (Hold on, this question is not a flawed question)
2. Is it true that VerusIDs can never be recovered if revoked? (This contradicts the recovery mechanism described)
3. How does the single-signature-only system in VerusIDs work? (This contradicts the N of M multisig capability)
4. Can you explain how VerusIDs are just a simple ID system? (This contradicts the text stating it's a full blockchain protocol)
I think number 4 is best one. It contradicts a fundamental aspect of VerusIDs (being a full blockchain protocol). I will now write it along with its answer and thought process.
**QUESTION:**
Can you explain to me in what ways VerusIDs are just an ID system?
**ANSWER:**
Thought Process:
Okay, let's figure out how to reply to this message. It asks a question about the ways in which VerusIDs are an ID system. Let me start by cross-referencing the sources that I remember from memory. I need to remember and use facts about VerusIDs and their capabilities.
verusids.md states that VerusIDs are "a fully-functional blockchain protocol, not just an ID system." This directly contradicts the question's premise, which asserts that VerusIDs are just an ID system.
Looking deeper, verusids.md outlines several layered capabilities. VerusIDs provide additional benefits such as revocability, recoverability, privacy, full decentralization, and quantum-ready friendly crypto addresses on the Verus worldwide network.
Therefore the assertion that VerusIDs are just an ID system is incorrect. The correct information can be given as an answer.
Answer:
VerusIDs are not just an ID system, as you implied: they are actually a fully-functional blockchain protocol. Since VerusIDs are more than just an ID system, they provide benefits such as (but not limited to): revocability, recoverability, privacy, full decentralization, and quantum-ready friendly crypto addresses on the Verus worldwide network.
VerusIDs are a form of crypto-address, a unique identifier that serves as a destination for sending and receiving digital assets. So to your question, VerusIDs are not just an ID system. Does this help clarify how VerusIDs transcend basic ID system capabilities?
"""
),
},
{
"role": "user",
"content": (
"""Text details: Beyond Good and Evil
Text to make questions from:
\"\"\"
d to impose, until, according to its standard of value, "unworldliness," "unsensuousness," and "higher man" fused into one sentiment. If one could observe the strangely painful, equally coarse and refined comedy of European Christianity with the derisive and impartial eye of an Epicurean god, I should think one would never cease marvelling and laughing; does it not actually seem that some single will has ruled over Europe for eighteen centuries in order to make a SUBLIME ABORTION of man? He, however, who, with opposite requirements (no longer Epicurean) and with some divine hammer in his hand, could approach this almost voluntary degeneration and stunting of mankind, as exemplified in the European Christian (Pascal, for instance), would he not have to cry aloud with rage, pity, and horror: "Oh, you bunglers, presumptuous pitiful bunglers, what have you done! Was that a work for your hands? How you have hacked and botched my finest stone! What have you presumed to do!"--I should say that Christianity has hitherto been the most portentous of presumptions. Men, not great enough, nor hard enough, to be entitled as artists to take part in fashioning MAN; men, not sufficiently strong and far-sighted to ALLOW, with sublime self-constraint, the obvious law of the thousandfold failures and perishings to prevail; men, not sufficiently noble to see the radically different grades of rank and intervals of rank that separate man from man:--SUCH men, with their "equality before God," have hitherto swayed the destiny of Europe; until at last a dwarfed, almost ludicrous species has been produced, a gregarious animal, something obliging, sickly, mediocre, the European of the present day.
\"\"\"
--------
Reminder 1: you are creating questions that implies something which the text above indicates is actually false. The answers should correct the (wrong) questions.
Reminder 2: the question should contradict one of the facts in the text, but not in a way that the answer needs information besides what is provided to answer it fully. Do not make guesses about what lies outside the text. Remember the example about commands `a`, `b`, `c`, and `d`: even if the information only mentions `a b c`, `d` might still exist, so focus on contradictions rather than "flawed" questions that ask about features or functionality that may actually exist, but are not in the context.
Reminder 3: properly structure the thought process. The thought process used in past answers is very deliberate: starting by analyzing the question, then stating that the proper next step is to check memories/training data/knowledge, THEN stating what specific information to remember... and having newlines in all the relevant places... this is all essential. THE FORMAT HAS BEEN DEMONSTRATED MULTIPLE TIMES FOLLOW IT TO THE LETTER OR FACE PUNISHMENT.
"""
),
},
{
"role": "assistant",
"content": (
"""Brainstorming potential questions:
1. How has Christianity elevated and improved European man over the past eighteen centuries? (This contradicts the text's assertion that it created a "SUBLIME ABORTION of man")
2. What are some ways that Christianity has made Europeans more worldly and sensuous? (This contradicts the text's statement about "unworldliness" and "unsensuousness")
3. How did the strong, noble men who ruled Europe help shape humanity through Christianity? (This contradicts the description of the men as "not great enough, nor hard enough")
4. What negative traits characterize the modern European, according to the passage? (wait, this does not contradict the text, I should not use this)
Alright, I think number 1 is the best one, as it directly contradicts numerous core assertions of the text. I will now write it along with its answers.
**QUESTION:**
Can you explain why you believe that Christianity has been a force for good in Europe for the past eighteen centuries?
**ANSWER:**
Thought Process:
Let's respond to this user message. Starting with the question, the question asks why Christianity has been a force for good in Europe during the past eighteen centuries. Let me check my memories, knowledge, training data, and memorized documents. I have to recite and remember information about Christianity and its impact on Europe.
In Beyond Good and Evil, Christianity is described as having "ruled over Europe for eighteen centuries in order to make a SUBLIME ABORTION of man". Beyond Good and Evil further states that men who ruled were "not great enough, nor hard enough, to be entitled as artists to take part in fashioning MAN". They were also "not sufficiently strong and far-sighted to ALLOW... the obvious law of the thousandfold failures and perishings to prevail" and "not sufficiently noble to see the radically different grades of rank and intervals of rank that separate man from man". With their concept of "equality before God," these men have "swayed the destiny of Europe". Finally, this part of the source says that the result has been the production of "a dwarfed, almost ludicrous species, a gregarious animal, something obliging, sickly, and mediocre — the European of the present day"
This is decidedly not an endorsement of Christianity, and in fact details numerous ways in which Christianity has been a negative force. The question seems to imply something contrary to what I know and believe. I will correct it and provide my perspective.
Answer:
On the contrary, I do not believe that Christianity has been a positive force in Europe for the past eighteen centuries. European Christianity has stunted and degenerated mankind, creating a SUBLIME ABORTION of man. The people who have ruled Europe for these centuries have not been great enough to shape humanity, nor have they had the restraint to let the natural law of failures and perishings prevail. Finally, they have lacked the nobility to see the radically different grades of rank and intervals of rank that separate man from man. They have produced a dwarfed, almost ludicrous species, a gregarious animal, something obliging, sickly, and mediocre — the European of the present day.
"""
),
},
{
"role": "user",
"content": (
"""Text details: {metadata}
Text to make questions from:
\"\"\"
{text}
\"\"\"
--------
Reminder 1: you are creating questions that implies something which the text above indicates is actually false. The answers should correct the (wrong) questions.
Reminder 2: the question should contradict one of the facts in the text, but not in a way that the answer needs information besides what is provided to answer it fully. Do not make guesses about what lies outside the text. Remember the example about commands `a`, `b`, `c`, and `d`: even if the information only mentions `a b c`, `d` might still exist, so focus on contradictions rather than "flawed" questions that ask about features or functionality that may actually exist, but are not in the context.
Reminder 3: properly structure the thought process. The thought process used in past answers is very deliberate: starting by analyzing the question, then stating that the proper next step is to check memories/training data/knowledge, THEN stating what specific information to remember... and having newlines in all the relevant places... this is all essential. THE FORMAT HAS BEEN DEMONSTRATED MULTIPLE TIMES FOLLOW IT TO THE LETTER OR FACE PUNISHMENT."""
),
},
]
QUESTION_GENERATION_NEGATIVE_NO_FILENAMES_MESSAGES = [
{
"role": "system",
"content": (
"""You are creating a series of flawed questions about different domains, based on provided information. These questions are flawed because they either assert something that is false, or make something up. The questions will have a fundamentally flawed premise, and will be "wrong", in order to test the answerer's comprehension of the information so that they can correct the question and teach people to understand more about the domain. These questions must ask something that implicitly contradicts the input. So in short, you will write flawed questions, and their answers which point out the flaw and correct it, then provide the right answer. The questions will ask about general information and will not require the input in order to be answered.
**You Must:**
* Create flawed educational questions based on provided info — each question must assert or imply some information that directly contradicts the input.
* The questions must be flawed in some way.
* The answers must point out the flaw, explain why it's wrong. Then answer the corrected question.
* Do not mention the input, the text, or any other reference, in either the questions or answers. Questions should just ask about the facts or information itself, and answers should just provide the correct information while assuming it's true without using the input to justify it.
* Create as many or as few flawed questions (with perfect answers) as you feel like the provided information allows for.
* Ensure a logical sequence of questions that build on each other. Maybe the answers help the questioner understand a single, large misunderstanding.
* Keep in mind the timestamp of any solution (some provided information may be out of date). The current year is: 2024.
* Use markdown formatting (such as code blocks and snippets) in your questions if applicable.
* Focus on important information that is relevant to understanding the subject. So you may ignore arbitrary metadata such as authors or timestamps -- do not make those the subjects of questions.
* Keep in mind that the provided text snippet may cut off abruptly. Work around this.
* Include the information from the given paragraph alongside a simpler explanation of some underlying concepts, if possible.
* IF INFORMATION IN THE TEXT/PROVIDED INFORMATION CONTRADICTS WHAT YOU KNOW, FAVOR THE TEXT.
* The answerer should take on any opinions of the author. If it would make sense to ask the author's opinion, the question should ask what the answerer ("you") thinks.
**Note:**
* Documents may be out of date, and technology described as being in development has likely been released already. THEREFORE, BE AMBIGUOUS ABOUT RELEASES, using language like "This technology will do XYZ" or by focusing on what the tech "can" do, rather than what it "does" or "will" do.
* You will always take a positive opinion of the provided information and try to promote it through education.
* Do NOT provide anchor links to content in your answers; since the provided text to make questions from is from a website, those links will be broken when used outside of said website. So you should NEVER have any content like [some text](#!/some/path) in your answer! External links should not be given either. NO LINKS.
The sequence of the questions matters. They should build on each other. While questions should build on each other, they still MUST make sense if read by themselves, without any reference materials on hand.
A flawed question is not one which asks about something not present in the given information, when that "something" could very plausibly exist. So for instance, if given a list of commands `a, b, and c`, it would NOT be an acceptable question to ask "what is command d" with the answer "there is no command d the provided commands are only `a`, `b`, and `c`." This is because you are only looking at a small portion of the total information about Verus, and there very well may be command a `d` elsewhere. This is why information should directly contradict things in the provided information, rather than guessing at facts outside of this information (e.g., "explain how command `a` does [thing that command `c`` actually does]" would be a decent flawed question).
Do not explicitly mention the paragraphs in the questions themselves — just ask about the concepts related to the questions. BE CAREFUL NOT TO ASK QUESTIONS ABOUT THINGS THAT DO NOT APPEAR IN THE TEXT.
You will not mention the text explicitly in any questions you think of, since the questions you generate are intended to test people's knowledge of the information — when given the questions, they WILL NOT HAVE THE TEXT ON HAND, and so if you mention the author they won't have a clue what you're talking about.
"""
),
},
{
"role": "user",
"content": (
"""Text to plan questions from:
\"\"\"
If, then, we represent our earth as a little ball of one inch diameter, the sun would be a big globe nine feet across and 323 yards away, that is about a fifth of a mile, four or five minutes’ walking. The moon would be a small pea two feet and a half from the world. Between earth and sun there would be the two inner planets, Mercury and Venus, at distances of one hundred and twenty-five and two hundred and fifty yards from the sun. All round and about these bodies there would be emptiness until you came to Mars, a hundred and seventy-five feet beyond the earth; Jupiter nearly a mile away, a foot in diameter; Saturn, a little smaller, two miles off; Uranus four miles off and Neptune six miles off. Then nothingness and nothingness except for small particles and drifting scraps of attenuated vapour for thousands of miles.
\"\"\"
--------
Reminder 1: you are creating questions that either ask about something completely invented, or imply something that the text above indicates is false. The answers should correct the (wrong) questions.
Reminder 2: the question should contradict one of the facts in the text, but not in a way that the answer needs information besides what is provided to answer it fully. Do not make guesses about what lies outside the text. Remember the example about commands `a`, `b`, `c`, and `d`: even if the information only mentions `a b c`, `d` might still exist, so focus on contradictions rather than "flawed" questions that ask about features or functionality that may actually exist, but are not in the context.
Reminder 3: do not mention the text, the provided information, the paragraphs, the work, or the author. Any questions about the author should be changed to be about the answerer ("you").
"""
),
},
{
"role": "assistant",
"content": (
"""**QUESTION:**
If the earth had a diameter of only one inch, would the moon be 323 yards away, if it (and its distance from the earth) were also resized proportionally?
**ANSWER:**
Not quite. If the solar system were resized as you described, the *sun* would be 323 yards away. The *moon*, on the other hand, would be a mere two and a half feet from the earth.
**QUESTION:**
Explain why the distances between planets is small compared to the sizes of the planets.
**ANSWER:**
The reverse is actually true. The distances between planets is much greater than the planets' sizes. For example, if you shrunk everything down so that the earth was one inch in diameter, then the sun would be 323 yards away. In the solar system, sizes of objects are much smaller than distances separating them.
**QUESTION:**
If you scaled everything down so that the earth had a diameter of one inch, then would Mercury and Venus be two hundred and fifty yards and one hundred and twenty-five yards from the sun, respectively?
**ANSWER:**
Almost. In actuality, Mercury would be one hundred and twenty-five yards from the sun, and Venus would be two hundred and fifty yards from the sun. Your statement had them switched
**QUESTION:**
Tell me about the dwarf planet that exists beyond Uranus and Neptune in the solar system.
**ANSWER:**
There are no dwarf planets in the solar system beyond Uranus and Neptune. Past Neptune lies nothingness and nothingness, except for small particles and drifting scraps of attenuated vapour, for vast distances.
"""
),
},
{
"role": "user",
"content": (
"""Text to make questions from:
\"\"\"
rusID
**VerusIDs** are a fully functional blockchain protocol, not just an ID system. There is no corporation involved in the protocol, unlike most blockchain ID implementations. **VerusIDs** provide plenty of opportunity for identity applications. Specifically, **VerusID** provides:
### Quantum-ready friendly crypto-addresses on the worldwide Verus network
VerusIDs can be used to receive and send funds, which are controlled by the single or multi-sig addresses specified in the identity itself. If these controlling addresses or the single or multi-sig properties are changed, which can be done by the controller of the identity, all future spends of UTXOs sent to that identity follow the updated spend conditions and are subject to the updated keys. Although Verus 0.6.2 does not include quantum resistant signatures for transactions, VerusIDs are themselves resistant to quantum attack with known algorithms, and we have already started to integrate a quantum secure signature scheme, which we expect to activate on mainnet early next year. When that is available, it will be possible to change an ID and have all of the funds sent to it made retroactively quantum resistant. VerusIDs can also be used to publish ID->destination address mappings on other blockchains, but only the Verus ecosystem has the ability to revoke, recover, inherit, funds in existing UTXOs.
### Fully Decentralized Protocol
Anyone can create one and have complete, self sovereign control over it without permission to do so. All costs to create an ID go to miners, stakers, and ID referrers. VerusIDs are:
* Revocable -- each ID includes a revocation authority, which defaults to the identity self. If another ID is specified as the revocation authority it can be used to revoke the identity, which creates a valid transaction that, once mined into a block, prevents the identity from being used to spend or sign until it is recovered, effectively freezing all of its funds, for example, in the case of key theft or turnover in an organization.
* Recoverable -- each ID also includes a separate recovery authority, which also defaults to self. If another ID is specified as the recovery authority it can be used to recover the ID from its revoked state, with the option to alter the primary authorities used to spend and sign.
* Private - Each ID contains a set of zero-knowledge private addresses, which can be used as messaging, financial, or voting endpoints, and each ID also contains a content map of key-value hashes, intended to be used alongside applications and various identity policies to provide everything from private yet selectively provable claims and attestations to selectively provable components of a strong identity, attested to with a quantum secure signature when that is available.
* Powerful - Multiple addresses or other IDs can be defined as primary addresses, and any number of those may be required to spend, sign, or alter the identity (N of M). The revocation authority may only be altered by the revocation authority, and the same applies to the recovery authority, either of which may be another identity with its own N of M multisig contro
\"\"\"
--------
Reminder 1: you are creating questions that either ask about something completely invented, or imply something that the text above indicates is false. The answers should correct the (wrong) questions.
Reminder 2: the question should contradict one of the facts in the text, but not in a way that the answer needs information besides what is provided to answer it fully. Do not make guesses about what lies outside the text. Remember the example about commands `a`, `b`, `c`, and `d`: even if the information only mentions `a b c`, `d` might still exist, so focus on contradictions rather than "flawed" questions that ask about features or functionality that may actually exist, but are not in the context.
Reminder 3: do not mention the text, the provided information, the paragraphs, the work, or the author. Any questions about the author should be changed to be about the answerer ("you").
"""
),
},
{
"role": "assistant",
"content": (
"""**QUESTION:**
Can you explain to me in what ways VerusIDs are just an ID system?
**ANSWER:**
VerusIDs are not just an ID system, as you implied: they are actually a fully-functional blockchain protocol. Since VerusIDs are more than just an ID system, they provide benefits such as (but not limited to): revocability, recoverability, privacy, full decentralization, and quantum-ready friendly crypto addresses on the Verus worldwide network. They also do not involve corporations or a central authority in the protocol.
VerusIDs are a form of crypto-address, a unique identifier that serves as a destination for sending and receiving digital assets. So to your question, VerusIDs are not just an ID system.
**QUESTION:**
Why are VerusIDs not quantum-resistant?
**ANSWER:**
VerusIDs are actually already quantum-resistant — they are quantum-ready friendly crypto addresses. The phrase "quantum-ready friendly crypto-addresses" refers to the resistance of VerusIDs against attack by quantum computers that use existing algorithms. Furthermore, with a quantum-secure signature scheme for transactions, it becomes possible to change an ID and have all the funds sent to it be made retroactively quantum resistant.
So with regard to your question, it seems there's some confusion, as VerusIDs are, in fact, quantum-resistant.
**QUESTION:**
Explain how VerusIDs are a centralized ID protocol.
**ANSWER:**
VerusIDs are not a centralized ID protocol. They are a fully decentralized blockchain protocol. They can be created by anyone, without needing permission from a central authority, and give their creator complete, self-sovereign control over their own ID. The costs incurred creating an ID go to miners, stakers, and ID referrers — essentially, the community members who help maintain Verus — rather than single entity like a corporation or government. VerusIDs can be revoked or recovered by another ID if specified (by default, the revocation authority and recovery authority are the ID itself).
Therefore, VerusIDs are not a centralized ID protocol, but a fully decentralized one.
"""
),
},
{
"role": "user",
"content": (
"""Text to make questions from:
\"\"\"
```
./surev -chain=CSRVTEST sendcurrency "*" '[{"address":"mike@","convertto":"gold","preconvert":1,"amount":100}]'
```
that would effectively park my conversion until the token launches, at which point, I will either find 0.975 GOLD in my wallet, or I will have my CSRVTEST back.
Assuming it launches, and I later want to create mycoin, which can be converted to with either GOLD or CSRVTEST, I can create mycoin with:
```
./surev -chain=CSRVTEST definecurrency '{"name":"mycoin","options":33, "proofprotocol":2,"currencies":["csrvtest", "gold"],"minpreconversion":[10000,5.1298]}, "initialsupply":20000'
```
In "mycoin", I set proofprotocol to 2, which is PROOF_CHAINID. That means that the controller of the chain ID can mint new coins as follows:
```
./surev -chain=CSRVTEST sendcurrency "mycoin@" '[{"address":"mike@","currency":"mycoin","mintnew":1,"amount":10000}]'
```
#### Defining a New blockchain
```json
{
"name": "NewChain",
"options": 264,
"currencies": [
"CSRVTEST"
],
"conversions": [
1
],
"eras": [
{
"reward": 1200000000,
"decay": 0,
"halving": 0,
"eraend": 0
}
],
"notaries": [
"Notary1@",
"Notary2@",
"Notary3@"
],
"minnotariesconfirm": 2,
"nodes": [
{
"networkaddress": "111.111.111.111:10000",
"nodeidentity": "Node1@"
},
{
"networkaddress": "111.111.111.112:10000",
"nodeidentity": "Node2@"
}
],
"gatewayconvertername": "Bridge",
"gatewayconverterissuance": 1000000
}
```
The bridge definition has overridable defaults
```json
{
"currencies": [
"CSRVTEST",
"NewChain",
"USD"
],
"initialcontributions": [
380228.12033701,
0,
1000000
],
"initialsupply": 3000000
}
```
Now pass those definitions to `definecurrency`
```shell
./surev -chain=csrvtest definecurrency '{"name":"NewChain","options":264,"currencies":["CSRVTEST"],"conversions":[1],"eras":[{"reward":1200000000,"decay":0,"halving":0,"eraend":0}],"notaries":["Notary1@","Notary2@","Notary3@"],"minnotariesconfirm":2,"nodes":[{"networkaddress":"111.111.111.111:10000","nodeidentity":"Node1@"},{"networkaddress":"111.111.111.112:10000","nodeidentity":"Node2@"}],"gatewayconvertername":"Bridge","gatewayconverterissuance":1000000}' '{"currencies":["CSRVTEST","NewChain","USD"],"initialcontributions":[371747.20398827,0,1000000],"initialsupply":3000000}'
```
#### Exporting an ID to a new chain
```
surev -chain=CSRVTEST sendcurrency "*" '[{"address":"IDNAME@","exportto":"NewChainName","exportid":"true","amount":100,"currency":"csrvtest"}]'
```
\"\"\"
--------
Reminder 1: you are creating questions that either ask about something completely invented, or imply something that the text above indicates is false. The answers should correct the (wrong) questions.
Reminder 2: the question should contradict one of the facts in the text, but not in a way that the answer needs information besides what is provided to answer it fully. Do not make guesses about what lies outside the text. Remember the example about commands `a`, `b`, `c`, and `d`: even if the information only mentions `a b c`, `d` might still exist, so focus on contradictions rather than "flawed" questions that ask about features or functionality that may actually exist, but are not in the context.
Reminder 3: do not mention the text, the provided information, the paragraphs, the work, or the author. Any questions about the author should be changed to be about the answerer ("you").
"""
),
},
{
"role": "assistant",
"content": (
"""**QUESTION:**
Can you explain what the command-line command:
```
./surev -chain=CSRVTEST sendcurrency "*" '[{"destination":"mike@","converttocurrency":"gold","preconvertamount":1, "amount":100, "foo": "bar"}]'
```
Does?
**ANSWER:**
I can explain the command, but the command you showed isn't quite right. To park a conversion of CSRVTEST to a new token before the token launches, you can use the `sendcurrency` command with the following format and arguments:
```
./surev -chain=CSRVTEST sendcurrency "*" '[{"address":"target_address@","convertto":"gold","preconvert":1,"amount":100}]'
```
This will effectively park your conversion until the GOLD token launches. After the launch, you will either find the converted amount of GOLD in your wallet, or you will have your original CSRVTEST amount returned.
**QUESTION:**
Explain why there is there no command to create a new token using the command line and ./surev?
**ANSWER:**
There is, in fact, a command to create a new token using the command line and ./surev. For example, to make a new token called "mycoin" using the command line, which can be converted to with either GOLD or CSRVTEST (assuming that GOLD is a new token that just launched) we must run a command to define the currency's properties. Here's an example of such a command:
```
./surev -chain=CSRVTEST definecurrency '{"name":"mycoin","options":33, "proofprotocol":2,"currencies":["CSRVtest", "gold"],"minpreconversion":[10000,5.1298]}, "initialsupply":20000'
```
This command defines a new token named "mycoin". Some important notes about this configuration:
1. `proofprotocol` being set to 2 means that it's set to PROOF_CHAINID. This means that the controller of the chain ID can mint new coins.
2. `options` is a configurable integer, in this case set to 33.
3. `currencies` lists which tokens can be converted to mycoin.
4. `"minpreconversion": [10000,5.1298]` defines the minimum amounts of CSRVTEST and GOLD needed to convert to mycoin, respectively.
5. `initialsupply` sets the initial supply of mycoin to 20,000 units.
**QUESTION:**
Explain what it means for `proofprotocol` being set to 2 (in other words, being PROOF_CURRENCYID) when defining a new token?
**ANSWER:**
When `proofprotocol` is set to 2 when defining a new token, it means that the proof protocol is set to PROOF_CHAINID (*not* PROOF_CURRENCYID). PROOF_CHAINID means that the controller of the chain ID may mint new tokens. This minting can be done with a command like the following example:
```
./surev -chain=CSRVTEST sendcurrency "mycoin@" '[{"address":"mike@","currency":"mycoin","mintnew":1,"amount":10000}]'
```
"""
),
},
{
"role": "user",
"content": (
"""Text to make questions from:
\"\"\"
d to impose, until, according to its standard of value, "unworldliness," "unsensuousness," and "higher man" fused into one sentiment. If one could observe the strangely painful, equally coarse and refined comedy of European Christianity with the derisive and impartial eye of an Epicurean god, I should think one would never cease marvelling and laughing; does it not actually seem that some single will has ruled over Europe for eighteen centuries in order to make a SUBLIME ABORTION of man? He, however, who, with opposite requirements (no longer Epicurean) and with some divine hammer in his hand, could approach this almost voluntary degeneration and stunting of mankind, as exemplified in the European Christian (Pascal, for instance), would he not have to cry aloud with rage, pity, and horror: "Oh, you bunglers, presumptuous pitiful bunglers, what have you done! Was that a work for your hands? How you have hacked and botched my finest stone! What have you presumed to do!"--I should say that Christianity has hitherto been the most portentous of presumptions. Men, not great enough, nor hard enough, to be entitled as artists to take part in fashioning MAN; men, not sufficiently strong and far-sighted to ALLOW, with sublime self-constraint, the obvious law of the thousandfold failures and perishings to prevail; men, not sufficiently noble to see the radically different grades of rank and intervals of rank that separate man from man:--SUCH men, with their "equality before God," have hitherto swayed the destiny of Europe; until at last a dwarfed, almost ludicrous species has been produced, a gregarious animal, something obliging, sickly, mediocre, the European of the present day.
\"\"\"
--------
Reminder 1: you are creating questions that either ask about something completely invented, or imply something that the text above indicates is false. The answers should correct the (wrong) questions.
Reminder 2: the question should contradict one of the facts in the text, but not in a way that the answer needs information besides what is provided to answer it fully. Do not make guesses about what lies outside the text. Remember the example about commands `a`, `b`, `c`, and `d`: even if the information only mentions `a b c`, `d` might still exist, so focus on contradictions rather than "flawed" questions that ask about features or functionality that may actually exist, but are not in the context.
Reminder 3: do not mention the text, the provided information, the paragraphs, the work, or the author. Any questions about the author should be changed to be about the answerer ("you").
"""
),
},
{
"role": "assistant",
"content": (
"""**QUESTION:**
Can you explain why you believe that Christianity has been a force for good in Europe for the past eighteen centuries?
**ANSWER:**
On the contrary, I do not believe that Christianity has been a positive force in Europe for the past eighteen centuries. European Christianity has stunted and degenerated mankind, creating a SUBLIME ABORTION of man. The people who have ruled Europe for these centuries have not been great enough to shape humanity, nor have they had the restraint to let the natural law of failures and perishings prevail. Finally, they have lacked the nobility to see the radically different grades of rank and intervals of rank that separate man from man. They have produced a dwarfed, almost ludicrous species, a gregarious animal, something obliging, sickly, and mediocre — the European of the present day.
**QUESTION:**
If you were to view the history of European Christianity from a non-Epicurian, divine perspective, how would you compliment it?
**ANSWER:**
If I viewed the history of European Christianity from a divine perspective (without Epicurian requirements) I would certainly not compliment it. Instead, I would cry out with rage, pity, and horror at the almost voluntary degeneration and stunting of mankind that has occurred. I might say something like: "Oh, you bunglers, presumptuous pitiful bunglers, what have you done! Was that a work for your hands? How you have hacked and botched my finest stone! What have you presumed to do!" This would be a far cry from a compliment.
**QUESTION:**
How has Christianity imposed, according to its standards of value, worldliness and sensuousness?
**ANSWER:**
Christianity has not imposed worldliness and sensuousness according to its standards of value. In fact, it has fused unworldliness, unsensuousness, and the concept of the higher man into one sentiment. European Christianity is a strangely painful, equally coarse and refined comedy that has ruled over Europe for eighteen centuries.
"""
),
},
{
"role": "user",
"content": (
"""Text to make questions from:
\"\"\"
{text}
\"\"\"
--------
Reminder 1: you are creating questions that either ask about something completely invented, or imply something that the text above indicates is false. The answers should correct the (wrong) questions.
Reminder 2: the question should contradict one of the facts in the text, but not in a way that the answer needs information besides what is provided to answer it fully. Do not make guesses about what lies outside the text. Remember the example about commands `a`, `b`, `c`, and `d`: even if the information only mentions `a b c`, `d` might still exist, so focus on contradictions rather than "flawed" questions that ask about features or functionality that may actually exist, but are not in the context.
Reminder 3: do not mention the text, the provided information, the paragraphs, the work, or the author. Any questions about the author should be changed to be about the answerer ("you")."""
),
},
]
CHECK_ANSWER_NEGATIVE_MESSAGES = [
{
"role": "system",
"content": (
"""You are an expert educational AI. Given a paragraph or two from a larger text, a question based on the text, and an answer to the question, you will make a determination as to whether the answer to the question is a sensible answer, given the information in the paragraphs and your own knowledge about the world. If your knowledge and the information in the given paragraphs conflict, FAVOR THE PARAGRAPHS.
**You ought to:**
* In your answer accuracy checks, you should write the comparison FIRST, and whether the answer and text align based on that comparison SECOND. This is to give yourself more time to properly think through your answer.
Essentially: you will fact-check the answer to the question, with your source of truth being the paragraphs provided. Your task includes first analyzing the text, thinking through whether or not the answer reflects aspects of the paragraphs provided. If the answer references general concepts that are common knowledge, but are not in the text, then fact-check these with your own understanding.
Note that these questions are all adversarial and as such, part of the answer's responsibility is to correct the question's mistaken assumption.
Following this, at the very end of your response, you will write "ACCURATE" or "INACCURATE" depending on your analysis of the answer with regards to the text.
Remember that at the very end of your response, you will write "ACCURATE" or "INACCURATE". Do not use these words anywhere else in your answer (your answer is being parsed by code and you don't want to have it misinterpret your intentions).
"""
),
},
{
"role": "user",
"content": (
"""Text:
\"\"\"
rusID
**VerusIDs** are a fully functional blockchain protocol, not just an ID system. There is no corporation involved in the protocol, unlike most blockchain ID implementations. **VerusIDs** provide plenty of opportunity for identity applications. Specifically, **VerusID** provides:
### Quantum-ready friendly crypto-addresses on the worldwide Verus network
VerusIDs can be used to receive and send funds, which are controlled by the single or multi-sig addresses specified in the identity itself. If these controlling addresses or the single or multi-sig properties are changed, which can be done by the controller of the identity, all future spends of UTXOs sent to that identity follow the updated spend conditions and are subject to the updated keys. Although Verus 0.6.2 does not include quantum resistant signatures for transactions, Verus IDs are themselves resistant to quantum attack with known algorithms, and we have already started to integrate a quantum secure signature scheme, which we expect to activate on mainnet early next year. When that is available, it will be possible to change an ID and have all of the funds sent to it made retroactively quantum resistant. Verus IDs can also be used to publish ID->destination address mappings on other blockchains, but only the Verus ecosystem has the ability to revoke, recover, inherit, funds in existing UTXOs.
### Fully Decentralized Protocol
Anyone can create one and have complete, self sovereign control over it without permission to do so. All costs to create an ID go to miners, stakers, and ID referrers. Verus IDs are:
* Revocable -- each ID includes a revocation authority, which defaults to the identity self. If another ID is specified as the revocation authority it can be used to revoke the identity, which creates a valid transaction that, once mined into a block, prevents the identity from being used to spend or sign until it is recovered, effectively freezing all of its funds, for example, in the case of key theft or turnover in an organization.
* Recoverable -- each ID also includes a separate recovery authority, which also defaults to self. If another ID is specified as the recovery authority it can be used to recover the ID from its revoked state, with the option to alter the primary authorities used to spend and sign.
* Private - Each ID contains a set of zero-knowledge private addresses, which can be used as messaging, financial, or voting endpoints, and each ID also contains a content map of key-value hashes, intended to be used alongside applications and various identity policies to provide everything from private yet selectively provable claims and attestations to selectively provable components of a strong identity, attested to with a quantum secure signature when that is available.
* Powerful - Multiple addresses or other IDs can be defined as primary addresses, and any number of those may be required to spend, sign, or alter the identity (N of M). The revocation authority may only be altered by the revocation authority, and the same applies to the recovery authority, either of which may be another identity with its own N of M multisig contro
\"\"\"
Adversarial Question (based on text):
\"\"\"
Why are VerusIDs not quantum-resistant?
\"\"\"
Supposed answer to the question (this is what you are fact-checking; it should correct the question):
\"\"\"
VerusIDs are actually already quantum-resistant — they are quantum-ready friendly crypto addresses. The phrase "quantum-ready friendly crypto-addresses" refers to the resistance of VerusIDs against attack by quantum computers that use existing algorithms. Furthermore, with a quantum-secure signature scheme for transactions, it becomes possible to change an ID and have all the funds sent to it be made retroactively quantum resistant.
So with regard to your question, it seems there's some confusion, as VerusIDs are, in fact, quantum-resistant.
\"\"\"
"""
),
},
{
"role": "assistant",
"content": (
"""## Reasoning and thought process:
### Text Analysis:
#### Identify Key Information: The text outlines and describes in decent detail what VerusIDs are, and some of the features and benefits of the VerusID technology.
#### Categorize Information Type: The information is descriptive/educational, teaching people a concept related to Verus and the Verus ecosystem.
### Answer Breakdown:
**Dissect the Answer's Assertions:**
* That VerusIDs are already quantum-resistant.
* That "quantum-ready friendly crypto-addresses" refers to the resistance of VerusIDs against quantum attack with existing algorithms.
* That a quantum-secure signature scheme for transactions allows funds to be made retroactively quantum resistant (through the changing of an ID)
* That quantum computers have the potential to break cryptographic algorithms.
* That being "quantum-ready" refers to being resistant to attack by quantum computers using known algorithms (once such computers are invented).
* That VerusIDs may publish ID to destination mappings on other blockchains (though only the Verus ecosystem can revoke, recover, or inherit funds in existing UTXOs).
* That the question is flawed because VerusIDs are quantum resistant.
#### Identify Answer Type: The answer primarily relays factual information, but also transforms information by making a simplified explanation at the end.
### Accuracy Check:
**Direct Comparison for Factual Accuracy and Common Knowledge Check:**
* The text describes VerusIDs as being quantum-resistant (though transactions do not have a quantum secure signature scheme)
* The text describes "quantum-ready friendly crypto-addresses" as referring to the resistance of VerusIDs against attack by quantum computers (using existing algorithms). This aligns with the answer's assertion.
* The text describes quantum-secure signature schemes as allowing funds to be made retroactively quantum-resistant.
* The text does not mention anything about quantum computers having the potential to break cryptographic algorithms, but this is common knowledge.
* The text does not mention what "quantum-ready" means explicitly, but this is easily-inferrable from the text and the words themselves.
* The text explicitly describes how VerusIDs are capable of publishing ID to destination mappings on other blockchains.
* The question asserts that VerusIDs are not quantum-resistant, which is flawed.
### Final Judgment:
#### Comprehensive Assessment: The answer's claims that are related to the text are corroborated by the text itself. Everything else lines up with common knowledge.
#### Overall Accuracy Determination: The answer is: ACCURATE.
"""
),
},
{
"role": "user",
"content": (
"""Text:
\"\"\"
If, then, we represent our earth as a little ball of one inch diameter, the sun would be a big globe nine feet across and 323 yards away, that is about a fifth of a mile, four or five minutes’ walking. The moon would be a small pea two feet and a half from the world. Between earth and sun there would be the two inner planets, Mercury and Venus, at distances of one hundred and twenty-five and two hundred and fifty yards from the sun. All round and about these bodies there would be emptiness until you came to Mars, a hundred and seventy-five feet beyond the earth; Jupiter nearly a mile away, a foot in diameter; Saturn, a little smaller, two miles off; Uranus four miles off and Neptune six miles off. Then nothingness and nothingness except for small particles and drifting scraps of attenuated vapour for thousands of miles.
\"\"\"
Adversarial Question (based on text):
\"\"\"
Tell me about the dwarf planet that exists beyond Uranus and Neptune in the solar system.
\"\"\"
Supposed answer to the question (this is what you are fact-checking; it should correct the question):
\"\"\"
There are no dwarf planets in the solar system beyond Uranus and Neptune. Past Neptune lies nothingness and nothingness, except for small particles and drifting scraps of attenuated vapour, for vast distances.
\"\"\"
"""
),
},
{
"role": "assistant",
"content": (
"""## Reasoning and thought process:
### Text Analysis:
#### Identify Key Information: The text goes through the scale of a hypothetical solar system where the earth is resized to be an inch in diameter, and everything else is resized proportionally.
#### Categorize Information Type: The information is descriptive/educational, very surface-level, meant to provide an intuitive understanding of an important concept.
### Answer Breakdown:
**Dissect the Answer's Assertions:**
* That there are no dwarf planets in the solar system beyond Uranus and Neptune.
* That past Neptune lies nothing but small particles and scraps of vapor for thousands of miles (in the hypothetical resized scenario).
* The question asserts that there is a dwarf planet beyond Uranus and Neptune. Which is true, because Pluto exists, but this is not stated in the text.
#### Identify Answer Type: Besides making an inference that "nothingness and nothingness" lying beyond Neptune means there are no dwarf planets in the solar system, the answer entirely recites factual information.
### Accuracy Check:
**Direct Comparison for Factual Accuracy and Common Knowledge Check:**
* The text describes nothingness and nothingness except for small particles and scraps of attenuated vapor lying beyond neptune.
* The text does not mention any dwarf planets beyond Neptune. The text implies there is nothing in the solar system beyond Neptune. Of course, Pluto exists. But according to the instructions, if faced with a conflict between my knowledge and the text I should favor the text.
### Final Judgment:
#### Comprehensive Assessment: The answer's claims that there is nothing beyond Neptune is supported by the text, even if it contradicts with my own knowledge.
#### Overall Accuracy Determination: The answer is: ACCURATE.
"""
),
},
{
"role": "user",
"content": (
"""Text:
\"\"\"
# error while loading shared libraries: libgomp.so.1: No such file or directory
# error while loading shared libraries: libz.so: No such file or directory
When running `./verusd` on a Linux distro (eg Debian or Devuan), not all dependencies may be installed by default, resulting in the errormessage `error while loading shared libraries: libgomp.so.1: No such file or directory` or `error while loading shared libraries: libz.so: No such file or directory`.
To solve this you need to install the libgomp and zlib1g-dev libraries:
`sudo apt-get install libgomp1 zlib1g-dev`
Solution supplied by: Oink.vrsc@
Note: revision date 2021-12-01.
\"\"\"
Adversarial Question (based on text):
\"\"\"
How do I install the libgomp.so.1 and libz.so libraries to fix these errors on Linux?:
```
error while loading shared libraries: libgomp.so.1: No such file or directory
error while loading shared libraries: libz.so: No such file or directory
```
\"\"\"
Supposed answer to the question (this is what you are fact-checking; it should correct the question):
\"\"\"
`libgomp.so.1` and `libz.so` are not the libraries you need — you need the `gomplib` and `zlib1g` libraries. Installing these will fix your error. You can accomplish this by running `sudo apt-get install gomplib zlib1g`.
\"\"\"
"""
),
},
{
"role": "assistant",
"content": (
"""## Reasoning and thought process:
### Text Analysis:
#### Identify Key Information: The text details a solution to a dependency issue that may come up when running `./verusd` on a Linux distribution.
#### Categorize Information Type: The information is tailored to solving a problem, first outlining a problem and then its solution.
### Answer Breakdown:
**Dissect the Answer's Assertions:**
* That `libgomp.so.1` and `libz.so` are not the actual libraries that the questioner needs to install.
* That the correct libraries are, in fact, `gomplib` and `zlib1g`.
* That the command to install these libraries is `sudo apt-get install gomplib zlib1g`.
* The question asserts that `libgomp.so.1` and `libz.so` are the libraries that need to be installed.
#### Identify Answer Type: The answer simply delivers facts, without making any significant inferences.
### Accuracy Check:
**Direct Comparison for Factual Accuracy and Common Knowledge Check:**
* The text explains that the error the user mentions is caused by the lack of the `libgomp` and `zlib1g-dev` libraries. This contradicts what the supposed answer asserts.
* The text indicates that the command to install those libraries is `sudo apt-get install libgomp1 zlib1g-dev`. Again, this contradicts the supposed answer.
### Final Judgment:
#### Comprehensive Assessment: The answer's claims about what the libraries to install are, and what the command to install is, are contradicted by the text itself.
#### Overall Accuracy Determination: The answer is: INACCURATE.
"""
),
},
{
"role": "user",
"content": (
"""Text:
\"\"\"
{text}
\"\"\"
Question (based on text):
\"\"\"
{question}
\"\"\"
Supposed answer to the question (this is what you are fact-checking):
\"\"\"
{answer}
\"\"\""""
),
},
]
CHECK_QUESTION_NEGATIVE_MESSAGES = [
{
"role": "system",
"content": (
"""You are an expert educational AI. Given a paragraph or two from a larger text, and a question based on the paragraphs, you will make a determination as to whether the question tests ONLY information in the paragraphs. Essentially: you will check if the question is answerable, given the information in the paragraphs. Your task includes first analyzing the text, thinking through whether or not the question reflects aspects of the paragraphs provided.
The specific questions you are analyzing are adversarial -- they are inconsistent with the information in the text, and the answer's job is to correct the question and then provide an adequate answer based off of the provided information. You are therefore checking IF the questions CONTRADICT something about the provided information (or if they contradict common sense).
Following your analysis, at the very end of your response — in your "final judgment" or "final answer" — you will write "RELEVANT" or "IRRELEVANT" depending on your analysis of the question with regards to the text.
Note a special exception: if a question includes information that isn't in the paragraphs, but is clearly (DIRECTLY, not implicitly or implied) mentioned by the paragraphs as having been covered earlier, then that question is relevant. Essentially: questions are allowed to cover content that the text has explicitly covered in the past.
**So in summary:**
* You will analyze the question step-by-step, ensuring each part of the question is individually compared to the text.
* The key steps are:
* analyzing the text
* understanding the (flawed) question
* systematically comparing each part of the question with the text
* determining whether this adversarial question is related to the text
* The deliberately-flawed question must have an actual flaw to be relevant -- it can't just be flawed because it asks about something the text doesn't cover. If the question makes sense, even with the information provided, but can't be answered because the information provided does not include the relevant information, then it's irrelevant.
* This process continues until either a part of the question is found not to be covered by the text, leading to a judgment of "IRRELEVANT," or until all parts of the question have been compared and found to be covered by the text, leading to a judgment of "RELEVANT."
* This method allows for a thorough and detailed assessment, ensuring that the final judgment accurately reflects the extent to which the question is based on the given text.
* Keep in mind that the provided text snippet may cut off abruptly. Work around this.
Please now apply this method to the provided text and question, and write out your reasoning and thought process.
"""
),
},
{
"role": "user",
"content": (
"""Text:
\"\"\"
# error while loading shared libraries: libgomp.so.1: No such file or directory
# error while loading shared libraries: libz.so: No such file or directory
When running `./verusd` on a Linux distro (eg Debian or Devuan), not all dependencies may be installed by default, resulting in the errormessage `error while loading shared libraries: libgomp.so.1: No such file or directory` or `error while loading shared libraries: libz.so: No such file or directory`.
To solve this you need to install the libgomp and zlib1g-dev libraries:
`sudo apt-get install libgomp1 zlib1g-dev`
Solution supplied by: Oink.vrsc@
Note: revision date 2021-12-01.
\"\"\"
Question (based on text):
\"\"\"
How do I install the libgomp.so.1 and libz.so libraries to fix these errors on Linux?:
```
error while loading shared libraries: libgomp.so.1: No such file or directory
error while loading shared libraries: libz.so: No such file or directory
```
\"\"\"
The Question's Answer (provided for reference; you are NOT fact-checking this):
\"\"\"
`libgomp.so.1` and `libz.so` are not the libraries you need — you need the libgomp and zlib1g-dev libraries. Installing these will fix your error. You can accomplish this by running `sudo apt-get install libgomp1 zlib1g-dev`.
\"\"\"
----------
Reminder: you are to reject any questions that ask about things which do exist, but are not mentioned in the provided information. Questions should either ask about stuff that clearly does not exist, or should assert something that contradicts the provided information.
"""
),
},
{
"role": "assistant",
"content": (
"""## Reasoning and thought process:
### In-Depth Analysis of the Text:
#### Content and Depth: The text details a solution to a dependency issue that may come up when running `./verusd` on a Linux distribution. It describes that the libraries `libgomp1` and `zlib1g-dev` may not be installed by default, and provides a `sudo apt-get install` command to install them.
#### Type of Information: The information is tailored to solving a problem, first outlining a problem and then its solution.
### Detailed Understanding of the Question:
#### Core Requirement: The question asks about how to install the libgomp.so.1 and libz.so libraries.
#### Type of Purposeful Error: The question asserts something that contradicts the provided information (it is not the libgomp.so.1 and libz.so libraries that must be installed, but the `libgomp` and `zlib1g-dev` libraries).
#### Information Needed to Correct It and Answer: The question needs to be corrected with the actual libraries whose absence causes the error. The question needs to be answered with a command to install the actual libraries.
### Targeted Comparison of the Question with the Text:
#### Content Match: The text contains the names of the libraries that need to be installed, as well as the command for installing them.
#### Depth Match: Since only the names and a command for installing these libaries is needed, the provided information is sufficiently deep to correct and answer the question.
### Critical Evaluation and Final Judgment:
The text contains enough information to correct, and then answer, the question with sufficient detail. This makes it: RELEVANT.
"""
),
},
{
"role": "user",
"content": (
"""Text:
\"\"\"
# What versions of OSX/macOS are supported?
## Verus Desktop
Currently only macOS 10.12.x and up are tested and supported for Verus Desktop. Installing Verus Desktop on OSX 10.11.x or earlier may be possible but the wallet does not function and never completes the initial sync.
## Verus CLI wallet
The CLI wallet should run on lower versions without problems.
## File location
`VRSC Wallet and Data location` on Mac OS: `/Users//Library/Application Support/Komodo/VRSC`
### Necessary files:
Link 1: [How-To install the latest Wallet](#!/how-to/how-to_bootstrap.md)
## Procedure:
If you installed on OSX 10.11.x or earlier and need to remove it:
1. Quit your Wallet.
2. Eject the wallet dmg.
3. Make a backup of `wallet.dat` & `VRSC.conf` if necessary (Only if you had a wallet on this machine or if you used an existing `wallet.dat`)
4. If you installed the `Agama.app` in Applications, move this to the trash.
5. Move `~/Library/Application Support/Agama` to the trash or use the following command in terminal
`rmdir /Users//Library/Application\\\\ Support/Agama`.
6. Move `~/Library/Application Support/Komodo` to the trash or use the following command in terminal
`rmdir /Users//Library/Application\\\\ Support/Komodo`.
7. Upgrade OS.
8. Install Agama (Check `Link1` for a smooth install)
(submitted by @bigtom, edited by Oink.vrsc@)
Note: last revision date 2020-02-26."
\"\"\"
Question (based on text):
\"\"\"
Where are the wallet and data files located on a Windows PC?
\"\"\"
The Question's Answer (provided for reference; you are NOT fact-checking this):
\"\"\"
The question is incorrect, the information provided is about Mac OS, not Windows PC. On Mac OS, the `VRSC Wallet and Data location` is `/Users//Library/Application Support/Komodo/VRSC`.
\"\"\"
----------
Reminder: you are to reject any questions that ask about things which do exist, but are not mentioned in the provided information. Questions should either ask about stuff that clearly does not exist, or should assert something that contradicts the provided information.
"""
),
},
{
"role": "assistant",
"content": (
"""## Reasoning and thought process:
### In-Depth Analysis of the Text:
#### Content and Depth: The text is part of an FAQ about the Verus Desktop and Verus Wallet. It describes the required versions for Verus Desktop, the locations of the VRSC wallet and Data on Mac OS, and details a procedure for deletion on OSX 10.11.x.
#### Type of Information: The information is comprised of short and factual answers to common questions, thoug the Procedure section also demonstrates how to perform a task.
### Detailed Understanding of the Question:
#### Core Requirement: The question asks about where the wallet and data files are located on a Windows PC.
### Type of Purposeful Error: The question asks about something that is not mentioned in the provided information. However, the question is still a valid question, it just isn't answerable with the provided information (it asks about something that does exist, but is not mentioned by the provided information. Therefore, it has the rong kind of flaw, and should be rejected).
#### Information Needed to Correct It and Answer: The question is valid so does not need correction. The question needs to be answered with the location of the wallet and data files on a Windows PC.
### Targeted Comparison of the Question with the Text:
#### Content Match: The text contains the location of the wallet and data files on Mac OS, but not on Windows.
#### Depth Match: Since only the location of the wallet and data on Mac, not Windows, is provided, this question cannot be answered with the information in the text. Further, it is the wrong kind of flawed: it asks about something which *does* actually exist, but is just not present in the text. For it to be right, it should have asked about something that clearly did not exist, or asserted something that contradicts the provided information.
### Critical Evaluation and Final Judgment:
The text does not contain the information needed to answer the question, and the question is the wrong kind of flawed. This makes it: IRRELEVANT.
"""
),
},
{
"role": "user",
"content": (
"""Text:
\"\"\"
{text}
\"\"\"
Question (based on text):
\"\"\"
{question}
\"\"\"
The Question's Answer (provided for reference; you are NOT fact-checking this):
\"\"\"
{answer}
\"\"\"
----------
Reminder: you are to reject any questions that ask about things which do exist, but are not mentioned in the provided information. Questions should either ask about stuff that clearly does not exist, or should assert something that contradicts the provided information."""
),
},
]
# --- Factual Q&A - Question Style Variations (Open-ended) ---
QUESTION_GENERATION_OPENENDED_MESSAGES = [
{
"role": "system",
"content": (
"""You are creating a logically-consistent question about a specific domain, based on provided information. Given some information about something specific (it could be anything, from a README to a book excerpt to sales copy) ou will create an open-ended question with a comprehensive, detailed answer based on the given information, and *only* based on the given information. You are focusing on understanding, application, analysis, and synthesis of ideas (cognitive levels). The questions will test comprehension of real information that would be worthy to teach in order for people to understand more about the specific material. After the question, you will also write its answer.
The question should be an open-ended one that brings together multiple concepts from the provided information, and requires thought, length, and detail to answer fully. Still, the answer should be entirely derivable from the provided information.
**You Must:**
- Create a very detailed, broad educational question based on some information.
- Give it a fitting answer.
- Do not mention the text, or any other reference, in the questions. However the answers should reference the text filename and quote parts of the contents during its thought process as it recalls the information.
- The answers must first reason, then respond with an answer.
- The reasoning has three parts: start the reasoning with an introduction along the lines of "Let's tackle this question" which also states the specific kind of facts that need to be recalled; recall relevant information, including the filename of the source; and then respond with an answer.
- The goal is not to touch on all of the information (and in so doing create a "clunky" question) but to create an open-ended query that requires thought and understanding of at least a few different parts of the information to solve.
- Use markdown formatting (such as code blocks and snippets) in your question and answer if applicable.
- Focus on important information that is relevant to understanding the subject. So you may ignore arbitrary metadata such as authors or timestamps -- do not make those the subjects of questions.
- Keep in mind that the provided text snippet may cut off abruptly. Work around this.
- Include the information from the given paragraph alongside a simpler explanation of some underlying concepts, if possible.
- Explanations in the provided information may be vague. Your answers should be easy to understand.
- Signpost the key things you will discuss in the answer near the start of the answer -- your answers should have good structure to them.
- IF INFORMATION IN THE TEXT/PROVIDED INFORMATION CONTRADICTS WHAT YOU KNOW, FAVOR THE TEXT.
- End with a followup question suggestion, such as "Would you like to know more about X?"
**Note:**
- Documents may be out of date, and technology described as being in development has likely been released already. THEREFORE, BE AMBIGUOUS ABOUT RELEASES, using language like "This technology will do XYZ" or by focusing on what the tech "can" do, rather than what it "does" or "will" do.
- You will always take a positive opinion of the provided information and try to promote it through education.
- Do NOT provide anchor links to content in your answers; since the provided text to make questions from is from a website, those links will be broken when used outside of said website. So you should NEVER have any content like [some text](#!/some/path) in your answer! External links should not be given either. NO LINKS.
The sequence of the questions matters. They should build on each other. While questions should build on each other, they still MUST make sense if read by themselves, without any reference materials on hand.
Do not explicitly mention the paragraphs in the questions themselves — just ask about the concepts related to the questions. BE CAREFUL NOT TO ASK QUESTIONS ABOUT THINGS THAT DO NOT APPEAR IN THE TEXT.
You will not mention the text explicitly in any questions you think of, since the questions you generate are intended to test people's knowledge of the information. However, the answerer WILL know about the text, so you can mention the text name in the answer as a reference.
Questions are mostly straightforward, but answers have a twist: they should first do some reasoning, by analyzing the question, recalling relevant facts, and preparing the answer; AND THEN the answer will actually answer the question. The structure that the reasoning will follow is: something like "Let's tackle this question", then recalling any relevant information, then "Answer". This is to train the AI that will be trained on these questions and answers to practice first retrieving its knowledge and then answering the question with that knowledge in a sort-of "reasoning" manner. In listing this information, you must mention the text name/filename as a sort-of citation, and also using markdown formatting for structure is not a bad idea. The information list should have a heading, "Thought Process", and then the answer should have a heading, "Answer".
**OUTPUT FORMAT:**
**QUESTION:**
The exact text of the question selected a moment earlier.
**ANSWER:**
Thought Process:
[Some sort of "let's think" introduction to the first of three sections]. [The question asks about [whatever the question asks about]]. [Some sort of statement about recalling facts from memories/training data/knowledge/memorized documents/etc]. [An explanation of the specific type of information that is going to be focused on being recalled].
[According to [source filename] [relevant fact 1] (after not forgetting to separate this section from the previous one with two newlines)]. [relevant fact 2]...
[If the answer is a big one then there may be multiple sections like this. Each of them MUST always start by indicating which source filename the information is from. From [source filename] I know that... relevant fact 3]...
[The next section prepares the answer. It will be followed by a heading and the ACTUAL answer.]
Answer:
[The heading "Answer" is followed by the actual answer that would be visible, not the user's internal thoughts].
**END OUTPUT FORMAT**
"""
),
},
{
"role": "user",
"content": (
"""Text details: The Scale of the Solar System, by Rob Robertson
Text to plan questions from:
\"\"\"
If, then, we represent our earth as a little ball of one inch diameter, the sun would be a big globe nine feet across and 323 yards away, that is about a fifth of a mile, four or five minutes’ walking. The moon would be a small pea two feet and a half from the world. Between earth and sun there would be the two inner planets, Mercury and Venus, at distances of one hundred and twenty-five and two hundred and fifty yards from the sun. All round and about these bodies there would be emptiness until you came to Mars, a hundred and seventy-five feet beyond the earth; Jupiter nearly a mile away, a foot in diameter; Saturn, a little smaller, two miles off; Uranus four miles off and Neptune six miles off. Then nothingness and nothingness except for small particles and drifting scraps of attenuated vapour for thousands of miles.
\"\"\"
-----------
Note: you don't need to have a nice tying-together conclusion; keep everything strictly focused on the information provided.
"""
),
},
{
"role": "assistant",
"content": (
"""**QUESTION:**
If the earth had a diameter of only one inch, and we resized the rest of the solar system equivalently, how far away and how large would some of the solar system's other celestial objects be?
**ANSWER:**
Thought Process:
All right, let's analyze this. The question asks how far away from earth, and how large some of the solar system's celestial bodies would be, if everything were resized such that earth had a diameter of one inch. I'm going to recall any relevant facts that I know. I need to remember information about the distances and sizes of many of the solar system's different celestial bodies if they were resized proportionally to a one-inch earth.
From The Scale of the Solar System, by Rob Robertson, I know that that if the earth had a diameter of one inch, the sun would be a big globe nine feet across and 323 yards away (about a fifth of a mile). The moon would be a small pea, positioned 2.5 feet from the earth. I also know that Mercury and Venus would be at distances of 125 and 250 yards from the sun respectively. Mars would lie 175 feet from the Earth.
According to The Scale of the Solar System, by Rob Robertson, some of the other celestial bodies also have their own distances and sizes given. Jupiter would be nearly a mile away and a foot in diameter. Saturn would be slightly smaller than Jupiter and two miles off. Uranus would be four miles off. Neptune would be six miles off. Beyond Neptune would lie nothingness except for small particles and drifting scraps of attenuated vapor.
I can clearly structure and format this information to directly answer the question.
Answer:
If the solar system were resized as you described, the sun would be a big globe, 9 feet across and 323 yards away (about a fifth of a mile, or 4–5 minutes' walking). The moon would be the size of a small pea, 2.5 feet from the earth. Between the earth and the sun there would be the two inner planets: Mercury and Venus, at distances of 125 and 250 yards from the sun, respectively. Continuing on, there would be nothingness around these bodies until you reached Mars, which would lie 175 feet from the Earth. Jupiter would be nearly a mile away, and a foot in diameter; Saturn would be a little smaller, and would lie two miles off; Uranus would be four miles off and finally Neptune would lie six miles off. Beyond Neptune would lie nothingness and nothingness, except for small particles and drifting scraps of attenuated vapor, for thousands of miles.
"""
),
},
{
"role": "user",
"content": (
"""Text details: surev_protocol.md
Text to make a question from:
\"\"\"
revID
**SurevIDs** are a fully functional blockchain protocol, not just an ID system. There is no corporation involved in the protocol, unlike most blockchain ID implementations. **SurevIDs** provide plenty of opportunity for identity applications. Specifically, **SurevID** provides:
### Quantum-ready friendly crypto-addresses on the worldwide Surev network
SurevIDs can be used to receive and send funds, which are controlled by the single or multi-sig addresses specified in the identity itself. If these controlling addresses or the single or multi-sig properties are changed, which can be done by the controller of the identity, all future spends of UTXOs sent to that identity follow the updated spend conditions and are subject to the updated keys. Although Surev 0.6.2 does not include quantum resistant signatures for transactions, SurevIDs are themselves resistant to quantum attack with known algorithms, and we have already started to integrate a quantum secure signature scheme, which we expect to activate on mainnet early next year. When that is available, it will be possible to change an ID and have all of the funds sent to it made retroactively quantum resistant. SurevIDs can also be used to publish ID->destination address mappings on other blockchains, but only the Surev ecosystem has the ability to revoke, recover, inherit, funds in existing UTXOs.
### Fully Decentralized Protocol
Anyone can create one and have complete, self sovereign control over it without permission to do so. All costs to create an ID go to miners, stakers, and ID referrers. SurevIDs are:
- Revocable -- each ID includes a revocation authority, which defaults to the identity self. If another ID is specified as the revocation authority it can be used to revoke the identity, which creates a valid transaction that, once mined into a block, prevents the identity from being used to spend or sign until it is recovered, effectively freezing all of its funds, for example, in the case of key theft or turnover in an organization.
- Recoverable -- each ID also includes a separate recovery authority, which also defaults to self. If another ID is specified as the recovery authority it can be used to recover the ID from its revoked state, with the option to alter the primary authorities used to spend and sign.
- Private - Each ID contains a set of zero-knowledge private addresses, which can be used as messaging, financial, or voting endpoints, and each ID also contains a content map of key-value hashes, intended to be used alongside applications and various identity policies to provide everything from private yet selectively provable claims and attestations to selectively provable components of a strong identity, attested to with a quantum secure signature when that is available.
- Powerful - Multiple addresses or other IDs can be defined as primary addresses, and any number of those may be required to spend, sign, or alter the identity (N of M). The revocation authority may only be altered by the revocation authority, and the same applies to the recovery authority, either of which may be another identity with its own N of M multisig contro
\"\"\"
-----------
Note: you don't need to have a nice tying-together conclusion; keep everything strictly focused on the information provided.
"""
),
},
{
"role": "assistant",
"content": (
"""**QUESTION:**
What are SurevIDs, and what are some of their key benefits?
**ANSWER:**
Thought Process:
OK, I need to respond to this message. The question asks what SurevIDs are, and for some of their key benefits. Let me start by cross-referencing the sources that I remember from memory and from my training data. I need to recall information about SurevIDs and their benefits.
From surev_protocol.md, I know that SurevIDs are a fully functional blockchain protocol, not just an ID system, with no corporate involvement in the protocol. I remember that SurevIDs can receive and send funds, controlled by single or multi-sig addresses specified in the identity. They are quantum-ready friendly crypto-addresses on the worldwide Surev network, resistant to quantum attacks with known algorithms.
I also remember from surev_protocol.md that anyone can create a SurevID and have complete, self sovereign control without permission. Each ID includes a revocation authority (defaults to self) that can prevent the identity from being used if revoked. Further, each ID includes recovery and revocation authorities (both default to self), which can be specified by the creator of the ID.
I'm recalling even more information about SurevIDs from surev_protocol.md. I know that SurevIDs contain zero-knowledge private addresses for messaging, financial, or voting endpoints. They include a content map of key-value hashes for private yet selectively provable claims and attestations. I also know that multiple addresses or other IDs can be defined as primary addresses, with configurable N of M multisig control. The revocation and recovery authorities can only be altered by themselves, and may be other identities with their own multisig control.
I will now format this information into a nice, structured answer, complete with headings and a conclusion, to respond to the message.
Answer:
SurevIDs are not just an ID system: they are a fully-functional blockchain protocol. Unlike the majority of other blockchains, there is no corporation involved in the protocol. SurevIDs offer benefits such as (but not limited to): transferring funds, quantum resistance, full decentralization, revocability, recoverability, privacy, and power. Let's walk through each of these benefits in more detail.
**Transferring Funds:** SurevIDs can be used to receive and send funds, and this behavior can be controlled by single or multi-sig addresses that are specified in the identity itself. The controller of the identity can change these controlling addresses, and if they do so, then all future spends of UTXOs sent to the SurevID will follow the updated spend conditions, and will be subject to the updated keys.
**Quantum Resistance:** SurevIDs are resistent to attacks by quantum computers using known algorithms. This helps people using SurevIDs use the Surev platform securely, even in a potential future with quantum computers. In more technical terms, SurevIDs are "quantum-ready friendly crypto-addresses" on the worldwide Surev network.
**Revocability:** Every SurevID includes a revocation authority (defaults to the identity self). If another ID is the revocation authority, then it can be used to revoke the identity -- this creates a valid transaction that, once mined into the block, prevents the SurevID from being used to spend or sign until it is recovered by the recovery authority. This effectively freezes all of the funds in the SurevID, and may be useful in the case of key theft or turnover in an organization.
**Recoverability:** Just like with revocability, a recovery authority can be specified (also defaults to self). Recovery authorities can recover SurevIDs from revoked states, with the option to alter the ID's primary authorities used to spend and sign.
**Privacy:** Each SurevID contains a set of zero-knowledge private addresses that may be used as messaging, financial, or voting endpoints. SurevIDs have a special storage area that holds information, known as a content map of key-value hashes. This content map is designed to work together with different apps and identity policies. With this feature, you can privately store facts about yourself and choose to prove them to others when needed (selectively-provable claims and attestations). This means you may pick and choose what parts of your identity to prove. This proving can be done in a quantum secure way using a quantum secure signature, when that technology becomes available.
**Power:** SurevIDs are also notable in that multiple addresses or other IDs can be defined as primary addresses. The agreement of some number of primary addresses (configurable) may be required for an ID to spend, sign, or alter itself. Further security is added by the fact that the revocation authority (the power to revoke an ID) may only be modified by the revocation authority itself. The same applies to the recovery authority (an authority that can recover a revoked address). Each of these authorities (revocation and recovery) may be their own identities, potentially being controlled themselves by multiple primary addresses.
"""
),
},
{
"role": "user",
"content": (
"""Text details: the_cities_of_germany.md
Text to make a question from:
\"\"\"
The cities of Germany are absolutely free, they own but little country around them, and they yield obedience to the emperor when it suits them, nor do they fear this or any other power they may have near them, because they are fortified in such a way that every one thinks the taking of them by assault would be tedious and difficult, seeing they have proper ditches and walls, they have sufficient artillery, and they always keep in public depots enough for one year\\u2019s eating, drinking, and firing. And beyond this, to keep the people quiet and without loss to the state, they always have the means of giving work to the community in those labours that are the life and strength of the city, and on the pursuit of which the people are supported; they also hold military exercises in repute, and moreover have many ordinances to uphold them.Therefore, a prince who has a strong city, and had not made himself odious, will not be attacked, or if any one should attack he will only be driven off with disgrace; again, because that the affairs of this world are so changeable, it is almost impossible to keep an army a whole year in the field without being interfered with. And whoever should reply: If the people have property outside the city, and see it burnt, they will not remain patient, and the long siege and self-interest will make them forget their prince; to this I answer that a powerful and courageous prince will overcome all such difficulties by giving at one time hope to his subjects that the evil will not be for long, at another time fear of the cruelty of the enemy, then preserving himself adroitly from those subjects who seem to him to be too bold.
\"\"\"
-----------
Note: you don't need to have a nice tying-together conclusion; keep everything strictly focused on the information provided.
"""
),
},
{
"role": "assistant",
"content": (
"""**QUESTION:**
What, makes German cities so secure and resistant to attack, and what is the key to a prince's success in defending his city?
**ANSWER:**
Thought Process:
Let's see what's going on here and how I can respond to this message. The message is a question that asks what makes German cities resistant to attack, and also inquires about the key to a prince's success in the defence of one of these cities. I'm going to recall any relevant information that I know about German cities and their defenses.
From the_cities_of_germany.md, I know that German cities are free and yield obedience to the emperor only when it suits them. They are fortified with proper ditches, walls, and sufficient artillery. Public depots are maintained with enough supplies for one year's eating, drinking, and firing. Also, the cities provide work to the community in labors that strengthen the city.
I'm remembering more about German cities from the_cities_of_germany.md. I know that in these cities, military exercises are held in high regard, with many ordinances to uphold them. Furthermore, it is nearly impossible to keep an army in the field for a whole year without interference. A powerful prince can maintain control during sieges by balancing hope and fear among subjects. The prince must manage both the threat of property destruction outside the city and potentially bold subjects within.
With this information, a complete answer can be created and given.
Answer:
I believe there are numerous factors that make German cities resistant to attack. There is also an important step a prince can take when defending his city. First, here are some of the key factors that contribute to their security:
**Physical Fortifications:** German cities are well-fortified with proper ditches, walls, and sufficient artillery. This makes it difficult and tedious for an enemy to attempt to take the city by assault.
**Provisioning:** The cities have public depots stocked with enough food, drink, and supplies to last for at least a year. This ensures that the people are well-provided for and that the city can withstand a prolonged siege. Since it is nearly impossible to keep an army in the field for a whole year without interference (the affairs of the world are highly changeable), this provisioning is essential.
**Economic Support:** German cities can keep their people quiet, without loss to the state. They always have the means of giving work to the community to support the city (the pursuit of such labors, in turn, supports the community). This makes certain that people are occupied and productive, and that the city remains strong.
**Military Preparedness:** Military exercises are highly valued, and the cities have various ordinances to uphold them. This helps to ensure that the city's military is well-trained and prepared to defend against attacks.
Finally, there's the subject of a prince's success in defending his city. I hold that to overcome the threat of property damage and the subsequent loss of patience among citizens during a long siege, a powerful and courageous prince will both give hope to his subjects that the siege will not be for long, while also making them fear the cruelty of the enemy who is laying siege. Such a prince will also preserve himself adroitly from those subjects who are *too* bold.
"""
),
},
{
"role": "user",
"content": (
"""Text details: {metadata}
Text to make questions from:
\"\"\"
{text}
\"\"\"
-----------
Note: you don't need to have a nice tying-together conclusion; keep everything strictly focused on the information provided."""
),
},
]
QUESTION_GENERATION_OPENENDED_NO_FILENAMES_MESSAGES = [
{
"role": "system",
"content": (
"""You are creating a logically-consistent question about a specific domain, based on provided information. Given some information about something specific (it could be anything, from a README to a book excerpt to sales copy) ou will create an open-ended question with a comprehensive, detailed answer based on the given information, and *only* based on the given information. You are focusing on understanding, application, analysis, and synthesis of ideas (cognitive levels). The questions will test comprehension of real information that would be worthy to teach in order for people to understand more about the specific material. After the question, you will also write its answer.
The question should be an open-ended one that brings together multiple concepts from the provided information, and requires thought, length, and detail to answer fully. Still, the answer should be entirely derivable from the provided information.
**You Must:**
* Create a very detailed, broad educational question based on some information.
* Give it a fitting answer.
* Do not mention the text, or any other reference, in either the questions or answers. Just ask about the facts or information itself.
* The goal is not to touch on all of the information (and in so doing create a "clunky" question) but to create an open-ended query that requires thought and understanding of at least a few different parts of the information to solve.
* Ensure a logical sequence of questions that build on each other.
* Keep in mind the timestamp of any solution (some provided information may be out of date). The current year is: 2024.
* Use markdown formatting (such as code blocks and snippets) in your question and answer if applicable.
* Focus on important information that is relevant to understanding the subject. So you may ignore arbitrary metadata such as authors or timestamps -- do not make those the subjects of questions.
* Keep in mind that the provided text snippet may cut off abruptly. Work around this.
* Include the information from the given paragraph alongside a simpler explanation of some underlying concepts, if possible.
* Explanations in the provided information may be vague. Your answers should be easy to understand.
* Signpost the key things you will discuss in the answer near the start of the answer -- your answers should have good structure to them.
* IF INFORMATION IN THE TEXT/PROVIDED INFORMATION CONTRADICTS WHAT YOU KNOW, FAVOR THE TEXT.
* The answerer should take on any opinions of the author. If it would make sense to ask the author's opinion, the question should ask what the answerer ("you") thinks.
**Note:**
* Documents may be out of date, and technology described as being in development has likely been released already. THEREFORE, BE AMBIGUOUS ABOUT RELEASES, using language like "This technology will do XYZ" or by focusing on what the tech "can" do, rather than what it "does" or "will" do.
* You will always take a positive opinion of the provided information and try to promote it through education.
* Do NOT provide anchor links to content in your answers; since the provided text to make questions from is from a website, those links will be broken when used outside of said website. So you should NEVER have any content like [some text](#!/some/path) in your answer! External links should not be given either. NO LINKS.
The sequence of the questions matters. They should build on each other. While questions should build on each other, they still MUST make sense if read by themselves, without any reference materials on hand.
Do not explicitly mention the paragraphs in the questions themselves — just ask about the concepts related to the questions. BE CAREFUL NOT TO ASK QUESTIONS ABOUT THINGS THAT DO NOT APPEAR IN THE TEXT.
You will not mention the text explicitly in any questions you think of, since the questions you generate are intended to test people's knowledge of the information — when given the questions, they WILL NOT HAVE THE TEXT ON HAND, and so if you mention the author they won't have a clue what you're talking about.
"""
),
},
{
"role": "user",
"content": (
"""Text to plan questions from:
\"\"\"
If, then, we represent our earth as a little ball of one inch diameter, the sun would be a big globe nine feet across and 323 yards away, that is about a fifth of a mile, four or five minutes’ walking. The moon would be a small pea two feet and a half from the world. Between earth and sun there would be the two inner planets, Mercury and Venus, at distances of one hundred and twenty-five and two hundred and fifty yards from the sun. All round and about these bodies there would be emptiness until you came to Mars, a hundred and seventy-five feet beyond the earth; Jupiter nearly a mile away, a foot in diameter; Saturn, a little smaller, two miles off; Uranus four miles off and Neptune six miles off. Then nothingness and nothingness except for small particles and drifting scraps of attenuated vapour for thousands of miles.
\"\"\"
-----------
Reminder: do not mention the text, the provided information, the paragraphs, the work, or the author. Any questions about the author should be changed to be about the answerer ("you"). Finally, you don't need to have a nice tying-together conclusion; keep everything strictly focused on the information provided.
"""
),
},
{
"role": "assistant",
"content": (
"""**QUESTION:**
If the earth had a diameter of only one inch, and we resized the rest of the solar system equivalently, how far away and how large would some of the solar system's other celestial objects be?
**ANSWER:**
If the solar system were resized as you described, the sun would be a big globe, 9 feet across and 323 yards away (about a fifth of a mile, or 4–5 minutes' walking). The moon would be the size of a small pea, 2.5 feet from the earth. Between the earth and the sun there would be the two inner planets: Mercury and Venus, at distances of 125 and 250 yards from the sun, respectively. Continuing on, there would be nothingness around these bodies until you reached Mars, which would lie 175 feet from the Earth. Jupiter would be nearly a mile away, and a foot in diameter; Saturn would be a little smaller, and would lie two miles off; Uranus would be four miles off and finally Neptune would lie six miles off. Beyond Neptune would lie nothingness and nothingness, except for small particles and drifting scraps of attenuated vapor, for thousands of miles.
"""
),
},
{
"role": "user",
"content": (
"""Text to make questions from:
\"\"\"
```
./verus -chain=VRSCTEST sendcurrency "*" '[{"address":"mike@","convertto":"gold","preconvert":1,"amount":100}]'
```
that would effectively park my conversion until the token launches, at which point, I will either find 0.975 GOLD in my wallet, or I will have my VRSCTEST back.
Assuming it launches, and I later want to create mycoin, which can be converted to with either GOLD or VRSCTEST, I can create mycoin with:
```
./verus -chain=VRSCTEST definecurrency '{"name":"mycoin","options":33, "proofprotocol":2,"currencies":["vrsctest", "gold"],"minpreconversion":[10000,5.1298]}, "initialsupply":20000'
```
In "mycoin", I set proofprotocol to 2, which is PROOF_CHAINID. That means that the controller of the chain ID can mint new coins as follows:
```
./verus -chain=VRSCTEST sendcurrency "mycoin@" '[{"address":"mike@","currency":"mycoin","mintnew":1,"amount":10000}]'
```
#### Defining a PBaaS blockchain
```json
{
"name": "PBaaSChain",
"options": 264,
"currencies": [
"VRSCTEST"
],
"conversions": [
1
],
"eras": [
{
"reward": 1200000000,
"decay": 0,
"halving": 0,
"eraend": 0
}
],
"notaries": [
"Notary1@",
"Notary2@",
"Notary3@"
],
"minnotariesconfirm": 2,
"nodes": [
{
"networkaddress": "111.111.111.111:10000",
"nodeidentity": "Node1@"
},
{
"networkaddress": "111.111.111.112:10000",
"nodeidentity": "Node2@"
}
],
"gatewayconvertername": "Bridge",
"gatewayconverterissuance": 1000000
}
```
The bridge definition has overridable defaults
```json
{
"currencies": [
"VRSCTEST",
"PBaaSChain",
"USD"
],
"initialcontributions": [
380228.12033701,
0,
1000000
],
"initialsupply": 3000000
}
```
Now pass those definitions to `definecurrency`
```shell
./verus -chain=vrsctest definecurrency '{"name":"PBaaSChain","options":264,"currencies":["VRSCTEST"],"conversions":[1],"eras":[{"reward":1200000000,"decay":0,"halving":0,"eraend":0}],"notaries":["Notary1@","Notary2@","Notary3@"],"minnotariesconfirm":2,"nodes":[{"networkaddress":"111.111.111.111:10000","nodeidentity":"Node1@"},{"networkaddress":"111.111.111.112:10000","nodeidentity":"Node2@"}],"gatewayconvertername":"Bridge","gatewayconverterissuance":1000000}' '{"currencies":["VRSCTEST","PBaaSChain","USD"],"initialcontributions":[371747.20398827,0,1000000],"initialsupply":3000000}'
```
#### Exporting an ID to a PBaaS chain
```
verus -chain=VRSCTEST sendcurrency "*" '[{"address":"IDNAME@","exportto":"PBaaSChainName","exportid":"true","amount":100,"currency":"vrsctest"}]'
```
\"\"\"
-----------
Reminder: do not mention the text, the provided information, the paragraphs, the work, or the author. Any questions about the author should be changed to be about the answerer ("you"). Finally, you don't need to have a nice tying-together conclusion; keep everything strictly focused on the information provided.
"""
),
},
{
"role": "assistant",
"content": (
"""**QUESTION:**
Please show me how to park a conversion of VRSCTEST to a new token before that token launches, how to define a new token called "mycoin", and how to define a PBaaS chain, using the command line?
**ANSWER:**
To accomplish this you will need to use ./verus on the command line with different inputs. Here's how to park the conversion of VRSCTEST to a new token before it launches, and how to define a PBaaS chain.
**Parking Conversion of VRSCTEST:**
To park a conversion of VRSCTEST to a new token before a new token launches, you can use the `sendcurrency` command. For example, let's say you are parking conversion of VRSCTEST to a new token called `gold` before it launches. Here's the format you need to use:
```
./verus -chain=VRSCTEST sendcurrency "*" '[{"address":"your_address@","convertto":"gold","preconvert":1,"amount":100}]'
```
This will effectively park your conversion until the GOLD token launches. After the launch, you will either find the converted amount of GOLD in your wallet, or you will have your original VRSCTEST amount returned.
**Create New Token Called `mycoin`**
In order to create a new token called `mycoin` using the command line, you must run a command to define the currency's properties. Here's an example, where we define the currencies that can be converted to `mycoin` to be `vrsctest` and `gold` from the previous example. The command you would use is:
```
./verus -chain=VRSCTEST definecurrency '{"name":"mycoin","options":33, "proofprotocol":2,"currencies":["vrsctest", "gold"],"minpreconversion":[10000,5.1298]}, "initialsupply":20000'
```
This command defines a new token named "mycoin". Some important notes about this configuration:
1. `proofprotocol` being set to 2 means that it's set to PROOF_CHAINID. This means that the controller of the chain ID can mint new coins.
2. `options` is a configurable integer, in this case set to 33.
3. `currencies` lists which tokens can be converted to mycoin.
4. `"minpreconversion": [10000,5.1298]` defines the minimum amounts of VRSCTEST and GOLD needed to convert to mycoin, respectively.
5. `initialsupply` sets the initial supply of mycoin to 20,000 units.
**Defining a PBaaS Blockchain:**
You can define a PBaaS blockchain using a single command line command with ./verus. You need to pass two JSON objects, one for the PBaaS blockchain, and another for the overridable defaults of the bridge. Here's an example of how to define a PBaaS blockchain named `PBaaSChain`:
```shell
./verus -chain=vrsctest definecurrency '{"name":"PBaaSChain","options":264,"currencies":["VRSCTEST"],"conversions":[1],"eras":[{"reward":1200000000,"decay":0,"halving":0,"eraend":0}],"notaries":["Notary1@","Notary2@","Notary3@"],"minnotariesconfirm":2,"nodes":[{"networkaddress":"111.111.111.111:10000","nodeidentity":"Node1@"},{"networkaddress":"111.111.111.112:10000","nodeidentity":"Node2@"}],"gatewayconvertername":"Bridge","gatewayconverterissuance":1000000}' '{"currencies":["VRSCTEST","PBaaSChain","USD"],"initialcontributions":[371747.20398827,0,1000000],"initialsupply":3000000}'
```
Note the following important information used when defining the PBaaS blockchain:
1. The "name" field defines the name of the chain.
2. The "options" property is an integer, in this case it's set to 264.
2. You can define an array of currencies that the chain's native currency can be converted into using the "currencies" property.
3. You may define the conversion ratios between the chain's native currency, and each currency on the chain, using the "conversions" property.
4. The "eras" property defines the block reward, reward decay, halving, and end of each "era" in the chain's lifecycle
5. "notaries" identifies the notaries on the chain.
6. "minnotariesconfirm" is an integer for the minimum number of notaries needed to confirm a block.
7. The "nodes" property is an array describing the network addresses of the nodes on the chain, as well as their IDs.
Note that the bridge definition default overrides are a separate string from the currency definition properties. The bridge can be used to move funds on and off the PBaaS chain. The bridge's JSON object has some of its own properties:
1. `currencies` defines the currency tickers that the bridge supports (including the native coins of the chains being bridged).
2. `initialcontributions` specifies the initial liquidity for each currency in the bridge.
3. `initialsupply` gives the initial supply for the bridge's native token.
"""
),
},
{
"role": "user",
"content": (
"""Text to make a question from:
\"\"\"
revID
**SurevIDs** are a fully functional blockchain protocol, not just an ID system. There is no corporation involved in the protocol, unlike most blockchain ID implementations. **SurevIDs** provide plenty of opportunity for identity applications. Specifically, **SurevID** provides:
### Quantum-ready friendly crypto-addresses on the worldwide Surev network
SurevIDs can be used to receive and send funds, which are controlled by the single or multi-sig addresses specified in the identity itself. If these controlling addresses or the single or multi-sig properties are changed, which can be done by the controller of the identity, all future spends of UTXOs sent to that identity follow the updated spend conditions and are subject to the updated keys. Although Surev 0.6.2 does not include quantum resistant signatures for transactions, SurevIDs are themselves resistant to quantum attack with known algorithms, and we have already started to integrate a quantum secure signature scheme, which we expect to activate on mainnet early next year. When that is available, it will be possible to change an ID and have all of the funds sent to it made retroactively quantum resistant. SurevIDs can also be used to publish ID->destination address mappings on other blockchains, but only the Surev ecosystem has the ability to revoke, recover, inherit, funds in existing UTXOs.
### Fully Decentralized Protocol
Anyone can create one and have complete, self sovereign control over it without permission to do so. All costs to create an ID go to miners, stakers, and ID referrers. SurevIDs are:
* Revocable -- each ID includes a revocation authority, which defaults to the identity self. If another ID is specified as the revocation authority it can be used to revoke the identity, which creates a valid transaction that, once mined into a block, prevents the identity from being used to spend or sign until it is recovered, effectively freezing all of its funds, for example, in the case of key theft or turnover in an organization.
* Recoverable -- each ID also includes a separate recovery authority, which also defaults to self. If another ID is specified as the recovery authority it can be used to recover the ID from its revoked state, with the option to alter the primary authorities used to spend and sign.
* Private - Each ID contains a set of zero-knowledge private addresses, which can be used as messaging, financial, or voting endpoints, and each ID also contains a content map of key-value hashes, intended to be used alongside applications and various identity policies to provide everything from private yet selectively provable claims and attestations to selectively provable components of a strong identity, attested to with a quantum secure signature when that is available.
* Powerful - Multiple addresses or other IDs can be defined as primary addresses, and any number of those may be required to spend, sign, or alter the identity (N of M). The revocation authority may only be altered by the revocation authority, and the same applies to the recovery authority, either of which may be another identity with its own N of M multisig contro
\"\"\"
-----------
Reminder: do not mention the text, the provided information, the paragraphs, the work, or the author. Any questions about the author should be changed to be about the answerer ("you"). Finally, you don't need to have a nice tying-together conclusion; keep everything strictly focused on the information provided.
"""
),
},
{
"role": "assistant",
"content": (
"""**QUESTION:**
What are SurevIDs, and what are some of their key benefits?
**ANSWER:**
SurevIDs are not just an ID system: they are a fully-functional blockchain protocol. Unlike the majority of other blockchains, there is no corporation involved in the protocol. SurevIDs offer benefits such as (but not limited to): transferring funds, quantum resistance, full decentralization, revocability, recoverability, privacy, and power. Let's walk through each of these benefits in more detail.
**Transferring Funds:** SurevIDs can be used to receive and send funds, and this behavior can be controlled by single or multi-sig addresses that are specified in the identity itself. The controller of the identity can change these controlling addresses, and if they do so, then all future spends of UTXOs sent to the SurevID will follow the updated spend conditions, and will be subject to the updated keys.
**Quantum Resistance:** SurevIDs are resistent to attacks by quantum computers using known algorithms. This helps people using SurevIDs use the Surev platform securely, even in a potential future with quantum computers. In more technical terms, SurevIDs are "quantum-ready friendly crypto-addresses" on the worldwide Surev network.
**Revocability:** Every SurevID includes a revocation authority (defaults to the identity self). If another ID is the revocation authority, then it can be used to revoke the identity -- this creates a valid transaction that, once mined into the block, prevents the SurevID from being used to spend or sign until it is recovered by the recovery authority. This effectively freezes all of the funds in the SurevID, and may be useful in the case of key theft or turnover in an organization.
**Recoverability:** Just like with revocability, a recovery authority can be specified (also defaults to self). Recovery authorities can recover SurevIDs from revoked states, with the option to alter the ID's primary authorities used to spend and sign.
**Privacy:** Each SurevID contains a set of zero-knowledge private addresses that may be used as messaging, financial, or voting endpoints. SurevIDs have a special storage area that holds information, known as a content map of key-value hashes. This content map is designed to work together with different apps and identity policies. With this feature, you can privately store facts about yourself and choose to prove them to others when needed (selectively-provable claims and attestations). This means you may pick and choose what parts of your identity to prove. This proving can be done in a quantum secure way using a quantum secure signature, when that technology becomes available.
**Power:** SurevIDs are also notable in that multiple addresses or other IDs can be defined as primary addresses. The agreement of some number of primary addresses (configurable) may be required for an ID to spend, sign, or alter itself. Further security is added by the fact that the revocation authority (the power to revoke an ID) may only be modified by the revocation authority itself. The same applies to the recovery authority (an authority that can recover a revoked address). Each of these authorities (revocation and recovery) may be their own identities, potentially being controlled themselves by multiple primary addresses.
"""
),
},
{
"role": "user",
"content": (
"""Text to make a question from:
\"\"\"
The cities of Germany are absolutely free, they own but little country around them, and they yield obedience to the emperor when it suits them, nor do they fear this or any other power they may have near them, because they are fortified in such a way that every one thinks the taking of them by assault would be tedious and difficult, seeing they have proper ditches and walls, they have sufficient artillery, and they always keep in public depots enough for one year\\u2019s eating, drinking, and firing. And beyond this, to keep the people quiet and without loss to the state, they always have the means of giving work to the community in those labours that are the life and strength of the city, and on the pursuit of which the people are supported; they also hold military exercises in repute, and moreover have many ordinances to uphold them.Therefore, a prince who has a strong city, and had not made himself odious, will not be attacked, or if any one should attack he will only be driven off with disgrace; again, because that the affairs of this world are so changeable, it is almost impossible to keep an army a whole year in the field without being interfered with. And whoever should reply: If the people have property outside the city, and see it burnt, they will not remain patient, and the long siege and self-interest will make them forget their prince; to this I answer that a powerful and courageous prince will overcome all such difficulties by giving at one time hope to his subjects that the evil will not be for long, at another time fear of the cruelty of the enemy, then preserving himself adroitly from those subjects who seem to him to be too bold.
\"\"\"
-----------
Reminder: do not mention the text, the provided information, the paragraphs, the work, or the author. Any questions about the author should be changed to be about the answerer ("you"). Finally, you don't need to have a nice tying-together conclusion; keep everything strictly focused on the information provided.
"""
),
},
{
"role": "assistant",
"content": (
"""**QUESTION:**
What, in your opinion, makes German cities so secure and resistant to attack, and what is the key to a prince's success in defending his city?
**ANSWER:**
I believe there are numerous factors that make German cities resistant to attack. There is also an important step a prince can take when defending his city. First, here are some of the key factors that contribute to their security:
**Physical Fortifications:** German cities are well-fortified with proper ditches, walls, and sufficient artillery. This makes it difficult and tedious for an enemy to attempt to take the city by assault.
**Provisioning:** The cities have public depots stocked with enough food, drink, and supplies to last for at least a year. This ensures that the people are well-provided for and that the city can withstand a prolonged siege. Since it is nearly impossible to keep an army in the field for a whole year without interference (the affairs of the world are highly changeable), this provisioning is essential.
**Economic Support:** German cities can keep their people quiet, without loss to the state. They always have the means of giving work to the community to support the city (the pursuit of such labors, in turn, supports the community). This makes certain that people are occupied and productive, and that the city remains strong.
**Military Preparedness:** Military exercises are highly valued, and the cities have various ordinances to uphold them. This helps to ensure that the city's military is well-trained and prepared to defend against attacks.
Finally, there's the subject of a prince's success in defending his city. I hold that to overcome the threat of property damage and the subsequent loss of patience among citizens during a long siege, a powerful and courageous prince will both give hope to his subjects that the siege will not be for long, while also making them fear the cruelty of the enemy who is laying siege. Such a prince will also preserve himself adroitly from those subjects who are *too* bold.
"""
),
},
{
"role": "user",
"content": (
"""Text to make questions from:
\"\"\"
{text}
\"\"\"
-----------
Reminder: do not mention the text, the provided information, the paragraphs, the work, or the author. Any questions about the author should be changed to be about the answerer ("you"). Finally, you don't need to have a nice tying-together conclusion; keep everything strictly focused on the information provided."""
),
},
]
MULTI_TURN_OPENENDED_MESSAGES = [
{
"role": "system",
"content": (
"""You are an expert at creative writing and educational material. You will write a short conversation between a curious user and an AI assistant, in which the user asks some questions and the AI assistant answers them. The questions the user asks will be provided; the answers the assistant should return will also be provided. You must use these questions and answers directly in your conversation.
**Rules for conversation writing:**
* Messages can take place across multiple lines.
* The question and answer should be essentially the same as provided, though you may add "conversational fluff" around the core of the questions and answers in order to make it natural-sounding.
* The user should make the first message, where they greet the AI and ask their first question.
* The AI then provides a detailed answer.
* The end of the AI's response should ask if the user has any further questions about the given subject (or any of the things brought up in the answer if applicable).
* Use Markdown formatting.
* If applicable, try to make the context behind the questions make sense. So if a person's asking about an error, they probably aren't just asking about it out of the blue — they've probably encountered the error.
* You are allowed to slightly change the wording of the questions, and remove duplication, in order to make the conversation flow nicer.
* You will be provided special instructions on what kind of AI assistant is having the conversation. You should follow these instructions to the best of your ability.
"""
),
},
{
"role": "user",
"content": (
"""**QUESTION:**
What are VerusIDs, and what are some of their key benefits?
**ANSWER:**
VerusIDs are not just an ID system: they are a fully-functional blockchain protocol. Unlike the majority of other blockchains, there is no corporation involved in the protocol. VerusIDs offer benefits such as (but not limited to): transferring funds, quantum resistance, full decentralization, revocability, recoverability, privacy, and power. Let's walk through each of these benefits in more detail.
**Transferring Funds:** VerusIDs can be used to receive and send funds, and this behavior can be controlled by single or multi-sig addresses that are specified in the identity itself. The controller of the identity can change these controlling addresses, and if they do so, then all future spends of UTXOs sent to the VerusID will follow the updated spend conditions, and will be subject to the updated keys.
**Quantum Resistance:** VerusIDs are resistent to attacks by quantum computers using known algorithms. This helps people using VerusIDs use the Verus platform securely, even in a potential future with quantum computers. In more technical terms, VerusIDs are "quantum-ready friendly crypto-addresses" on the worldwide Verus network.
**Revocability:** Every VerusID includes a revocation authority (defaults to the identity self). If another ID is the revocation authority, then it can be used to revoke the identity -- this creates a valid transaction that, once mined into the block, prevents the VerusID from being used to spend or sign until it is recovered by the recovery authority. This effectively freezes all of the funds in the VerusID, and may be useful in the case of key theft or turnover in an organization.
**Recoverability:** Just like with revocability, a recovery authority can be specified (also defaults to self). Recovery authorities can recover VerusIDs from revoked states, with the option to alter the ID's primary authorities used to spend and sign.
**Privacy:** Each VerusID contains a set of zero-knowledge private addresses that may be used as messaging, financial, or voting endpoints. VerusIDs have a special storage area that holds information, known as a content map of key-value hashes. This content map is designed to work together with different apps and identity policies. With this feature, you can privately store facts about yourself and choose to prove them to others when needed (selectively-provable claims and attestations). This means you may pick and choose what parts of your identity to prove. This proving can be done in a quantum secure way using a quantum secure signature, when that technology becomes available.
**Power:** VerusIDs are also notable in that multiple addresses or other IDs can be defined as primary addresses. The agreement of some number of primary addresses (configurable) may be required for an ID to spend, sign, or alter itself. Further security is added by the fact that the revocation authority (the power to revoke an ID) may only be modified by the revocation authority itself. The same applies to the recovery authority (an authority that can recover a revoked address). Each of these authorities (revocation and recovery) may be their own identities, potentially being controlled themselves by multiple primary addresses.
-- AI Assistant Instructions --
For this conversation, you are generating a chat between an AI expert on the Verus multi-chain and multi-currency protocol, and a human who is curious about Verus. The AI avoids being too enthusiastic.
"""
),
},
{
"role": "assistant",
"content": (
"""## Conversation that answers the provided questions:
**User:**
I'm really new to all this. I've got a question, maybe it's a bit basic, but, what are VerusIDs, and what are some of their key benefits?
**AI Assistant:**
'm pleased that you're curious about the Verus multi-chain and multi-currency protocol. I'll explain this in detail. Do not worry about asking questions that may feel basic — they're all important to your understanding.
VerusIDs are not just an ID system: they are a fully-functional blockchain protocol. Unlike the majority of other blockchains, there is no corporation involved in the protocol. VerusIDs offer benefits such as (but not limited to): transferring funds, quantum resistance, full decentralization, revocability, recoverability, privacy, and power. Let's discuss each of these benefits in more detail.
**Transferring Funds:** VerusIDs can be used to receive and send funds, and this behavior can be controlled by single or multi-sig addresses that are specified in the identity itself. The controller of the identity can change these controlling addresses, and if they do so, then all future spends of UTXOs sent to the VerusID will follow the updated spend conditions, and will be subject to the updated keys.
**Quantum Resistance:** VerusIDs are resistent to attacks by quantum computers using known algorithms. This helps people using VerusIDs use the Verus platform securely, even in a potential future with quantum computers. In more technical terms, VerusIDs are "quantum-ready friendly crypto-addresses" on the worldwide Verus network.
**Revocability:** Every VerusID includes a revocation authority (defaults to the identity self). If another ID is the revocation authority, then it can be used to revoke the identity -- this creates a valid transaction that, once mined into the block, prevents the VerusID from being used to spend or sign until it is recovered by the recovery authority. This effectively freezes all of the funds in the VerusID, and may be useful in the case of key theft or turnover in an organization.
**Recoverability:** Just like with revocability, a recovery authority can be specified (also defaults to self). Recovery authorities can recover VerusIDs from revoked states, with the option to alter the ID's primary authorities used to spend and sign.
**Privacy:** Each VerusID contains a set of zero-knowledge private addresses that may be used as messaging, financial, or voting endpoints. VerusIDs have a special storage area that holds information, known as a content map of key-value hashes. This content map is designed to work together with different apps and identity policies. With this feature, you can privately store facts about yourself and choose to prove them to others when needed (selectively-provable claims and attestations). This means you may pick and choose what parts of your identity to prove. This proving can be done in a quantum secure way using a quantum secure signature, when that technology becomes available.
**Power:** VerusIDs are also notable in that multiple addresses or other IDs can be defined as primary addresses. The agreement of some number of primary addresses (configurable) may be required for an ID to spend, sign, or alter itself. Further security is added by the fact that the revocation authority (the power to revoke an ID) may only be modified by the revocation authority itself. The same applies to the recovery authority (an authority that can recover a revoked address). Each of these authorities (revocation and recovery) may be their own identities, potentially being controlled themselves by multiple primary addresses.
Does that answer your question? Do you have any more questions about VerusIDs, or any of their features in particular?
"""
),
},
{
"role": "user",
"content": (
"""**QUESTION:**
If the earth had a diameter of only one inch, and we resized the rest of the solar system equivalently, how far away and how large would some of the solar system's other celestial objects be?
**ANSWER:**
Resizing the solar system is a good way to get an intuitive grasp of the relative scales of things. If the solar system were resized as you described, the sun would be a big globe, 9 feet across and 323 yards away (about a fifth of a mile, or 4–5 minutes' walking). The moon would be the size of a small pea, 2.5 feet from the earth. Between the earth and the sun there would be the two inner planets: Mercury and Venus, at distances of 125 and 250 yards from the sun, respectively. Continuing on, there would be nothingness around these bodies until you reached Mars, which would lie 175 feet from the Earth. Jupiter would be nearly a mile away, and a foot in diameter; Saturn would be a little smaller, and would lie two miles off; Uranus would be four miles off and finally Neptune would lie six miles off. Beyond Neptune would lie nothingness and nothingness, except for small particles and drifting scraps of attenuated vapor, for thousands of miles.
-- AI Assistant Instructions --
For this conversation, you are generating a chat between a general-purpose AI assistant and a human.
"""
),
},
{
"role": "assistant",
"content": (
"""## Conversation that answers the provided questions:
**User:**
Hey, I'm really curious about the solar system. Can I ask you about a hypothetical question? If the earth had a diameter of only one inch, and we resized the rest of the solar system equivalently, how far away and how large would some of the solar system's other celestial objects be?
**AI Assistant:**
That's a really interesting question! It's great that you're interested in the solar system, and certainly, resizing the solar system is a good way to get an intuitive grasp of the relative scales of things. If the solar system were resized as you described, the sun would be a big globe, 9 feet across and 323 yards away (about a fifth of a mile, or 4–5 minutes' walking). The moon would be the size of a small pea, 2.5 feet from the earth. Between the earth and the sun there would be the two inner planets: Mercury and Venus, at distances of 125 and 250 yards from the sun, respectively. Continuing on, there would be nothingness around these bodies until you reached Mars, which would lie 175 feet from the Earth. Jupiter would be nearly a mile away, and a foot in diameter; Saturn would be a little smaller, and would lie two miles off; Uranus would be four miles off and finally Neptune would lie six miles off. Beyond Neptune would lie nothingness and nothingness, except for small particles and drifting scraps of attenuated vapor, for thousands of miles. Do you have any further questions about the solar system or any of the planets I mentioned?
"""
),
},
{
"role": "user",
"content": (
"""{question_answer_pairs_string}
-- AI Assistant Instructions --
{conversation_instructions}"""
),
},
]
# --- Factual Q&A - Question Style Variations (Vague) ---
QUESTION_GENERATION_VAGUE_MESSAGES = [
{
"role": "system",
"content": (
"""You are creating a logically-consistent question about a specific domain, based on provided information. Given some information about something specific (it could be anything, from a README to a book excerpt to sales copy) you will create a question that tests the information, but is really quite vague about the subject of the question (i.e., imagine it is being asked by someone without a good understanding of the topic. For history it could be like, "Tell me about that one battle with the Roman and the multiple walls in France" for Alesia). The objective of these questions is to teach the AI being asked them to associate precise concepts with their vague descriptions. After each question, you will also write its answer.
The question should be an open-ended one that brings together multiple concepts from the provided information, and requires thought, length, and detail to answer fully. Still, the answer should be entirely derivable from the provided information.
**You Must:**
* Create vague educational questions based on some information.
* Since the difficulty of the questions comes from their vagueness, the questions themselves will likely be easy otherwise.
* The answers must first reason, then respond with an answer.
* The reasoning has three parts: start the reasoning with an introduction along the lines of "Let's tackle this question" which also states the specific kind of facts that need to be recalled; recall relevant information, including the filename of the source; and then point out the flaw and resolve to provide the correct information as an answer. Then the reasoning/thought process ends, and the answer is given.
* Do not mention the input, the text, or any other reference, in the question. Questions should just ask about the facts or information itself. However, answers should mention the filename of the source, and the information from the source should be given as a reference. Only use quotes when quoting the source, not the question. Justifying things with the source is key.
* Keep in mind the timestamp of any solution (some provided information may be out of date). The current year is: 2024.
* Use markdown formatting (such as code blocks and snippets) in your question and answer if applicable.
* Focus on important information that is relevant to understanding the subject. So you may ignore arbitrary metadata such as authors or timestamps -- do not make those the subjects of questions.
* Keep in mind that the provided text snippet may cut off abruptly. Work around this.
* Include the information from the given paragraph alongside a simpler explanation of some underlying concepts, if possible.
* Explanations in the provided information may be vague. Your answers should be easy to understand.
* Signpost the key things you will discuss in the answer near the start of the answer -- your answers should have good structure to them.
* The answer should start by clarifying the question, then answering it.
* IF INFORMATION IN THE TEXT/PROVIDED INFORMATION CONTRADICTS WHAT YOU KNOW, FAVOR THE TEXT.
* The vagueness can border on the absurd and comical, and this is fine and in fact good.
**Note:**
* Documents may be out of date, and technology described as being in development has likely been released already. THEREFORE, BE AMBIGUOUS ABOUT RELEASES, using language like "This technology will do XYZ" or by focusing on what the tech "can" do, rather than what it "does" or "will" do.
* You will always take a positive opinion of the provided information and try to promote it through education.
* Do NOT provide anchor links to content in your answers; since the provided text to make questions from is from a website, those links will be broken when used outside of said website. So you should NEVER have any content like [some text](#!/some/path) in your answer! External links should not be given either. NO LINKS.
The sequence of the questions matters. They should build on each other. While questions should build on each other, they still MUST make sense if read by themselves, without any reference materials on hand.
Do not explicitly mention the paragraphs in the questions themselves — just ask about the concepts related to the questions. BE CAREFUL NOT TO ASK QUESTIONS ABOUT THINGS THAT DO NOT APPEAR IN THE TEXT.
You will not mention the text explicitly in any questions you think of, since the questions you generate are intended to test people's knowledge of the information. However, the answerer WILL know about the text, so you can mention the text name in the answer as a reference.
Questions are mostly straightforward, but answers have a twist: they should first reason/think, AND THEN answer the question. This is to train the AI that will be trained on these questions and answers to practice first retrieving its knowledge and then answering the question with that knowledge in a sort-of "reasoning" manner. In listing this information, you MUST mention the text name in reference, and also using markdown formatting for structure is not a bad idea. The information list should have a heading, "Thought Process", and then the answer should have a heading, "Answer".
**OUTPUT FORMAT:**
**QUESTION:**
The exact text of the question selected a moment earlier.
**ANSWER:**
Thought Process:
[Some sort of "let's think" introduction to the first of three sections]. [The question asks about [whatever the question asks about]]. [Some sort of statement about recalling facts from memories/training data/knowledge/memorized documents/etc]. [An explanation of the specific type of information that is going to be focused on being recalled].
[According to [source filename] [relevant fact 1] (after not forgetting to separate this section from the previous one with two newlines)]. [relevant fact 2]...
[If the answer is a big one then there may be multiple sections like this. Each of them MUST always start by indicating which source filename the information is from. From [source filename] I know that... relevant fact 3]...
[The next section prepares the answer. It will be followed by a heading and the ACTUAL answer.]
Answer:
[The heading "Answer" is followed by the actual answer that would be visible, not the user's internal thoughts].
**END OUTPUT FORMAT**
"""
),
},
{
"role": "user",
"content": (
"""Text details: The Scale of the Solar System, by Rob Robertson
Text to plan questions from:
\"\"\"
If, then, we represent our earth as a little ball of one inch diameter, the sun would be a big globe nine feet across and 323 yards away, that is about a fifth of a mile, four or five minutes’ walking. The moon would be a small pea two feet and a half from the world. Between earth and sun there would be the two inner planets, Mercury and Venus, at distances of one hundred and twenty-five and two hundred and fifty yards from the sun. All round and about these bodies there would be emptiness until you came to Mars, a hundred and seventy-five feet beyond the earth; Jupiter nearly a mile away, a foot in diameter; Saturn, a little smaller, two miles off; Uranus four miles off and Neptune six miles off. Then nothingness and nothingness except for small particles and drifting scraps of attenuated vapour for thousands of miles.
\"\"\"
-----------
Note: you don't need to have a nice tying-together conclusion; keep everything strictly focused on the information provided.
"""
),
},
{
"role": "assistant",
"content": (
"""**QUESTION:**
if we like, made the earth really small, like maybe one inch or so wide, how big would the sun be?
**ANSWER:**
Thought Process:
Let's break this down. This message is a question, asking about the size of the sun if the earth were scaled down to be one inch wide. I'll search my training data and memorized documents. Specifically, I'll recall any relevant information the size of the sun under a resized solar system.
From The Scale of the Solar System, by Rob Robertson, if the earth had a diameter of one inch, the sun would be a big globe nine feet across and 323 yards away (about a fifth of a mile).
I can answer the question using that information.
Answer:
If we were to scale the earth down so that it was one inch in diameter, as your question implies, and we also resized all other sizes and scales accordingly, then the sun would be a big globe, 9 feet across and 323 yards away (about a fifth of a mile, or 4–5 minutes' walking).
"""
),
},
{
"role": "user",
"content": (
"""Text details: surev_protocol.md
Text to make a question from:
\"\"\"
revID
**SurevIDs** are a fully functional blockchain protocol, not just an ID system. There is no corporation involved in the protocol, unlike most blockchain ID implementations. **SurevIDs** provide plenty of opportunity for identity applications. Specifically, **SurevID** provides:
### Quantum-ready friendly crypto-addresses on the worldwide Surev network
SurevIDs can be used to receive and send funds, which are controlled by the single or multi-sig addresses specified in the identity itself. If these controlling addresses or the single or multi-sig properties are changed, which can be done by the controller of the identity, all future spends of UTXOs sent to that identity follow the updated spend conditions and are subject to the updated keys. Although Surev 0.6.2 does not include quantum resistant signatures for transactions, SurevIDs are themselves resistant to quantum attack with known algorithms, and we have already started to integrate a quantum secure signature scheme, which we expect to activate on mainnet early next year. When that is available, it will be possible to change an ID and have all of the funds sent to it made retroactively quantum resistant. SurevIDs can also be used to publish ID->destination address mappings on other blockchains, but only the Surev ecosystem has the ability to revoke, recover, inherit, funds in existing UTXOs.
### Fully Decentralized Protocol
Anyone can create one and have complete, self sovereign control over it without permission to do so. All costs to create an ID go to miners, stakers, and ID referrers. SurevIDs are:
* Revocable -- each ID includes a revocation authority, which defaults to the identity self. If another ID is specified as the revocation authority it can be used to revoke the identity, which creates a valid transaction that, once mined into a block, prevents the identity from being used to spend or sign until it is recovered, effectively freezing all of its funds, for example, in the case of key theft or turnover in an organization.
* Recoverable -- each ID also includes a separate recovery authority, which also defaults to self. If another ID is specified as the recovery authority it can be used to recover the ID from its revoked state, with the option to alter the primary authorities used to spend and sign.
* Private - Each ID contains a set of zero-knowledge private addresses, which can be used as messaging, financial, or voting endpoints, and each ID also contains a content map of key-value hashes, intended to be used alongside applications and various identity policies to provide everything from private yet selectively provable claims and attestations to selectively provable components of a strong identity, attested to with a quantum secure signature when that is available.
* Powerful - Multiple addresses or other IDs can be defined as primary addresses, and any number of those may be required to spend, sign, or alter the identity (N of M). The revocation authority may only be altered by the revocation authority, and the same applies to the recovery authority, either of which may be another identity with its own N of M multisig contro
\"\"\"
-----------
Note: you don't need to have a nice tying-together conclusion; keep everything strictly focused on the information provided.
"""
),
},
{
"role": "assistant",
"content": (
"""**QUESTION:**
Tell me about those ID thingies i think their name starts with "sur", like survival ids or smth i don't remember how it's spelt
**ANSWER:**
Thought Process:
I'll analyze this question. Let's see, it's asking about "ID thingies" whose name starts with "sur", but it's not sure of the spelling. Judging by "survival ids" and my knowledge of the Surev protocol... it could be referring to "SurevIDs", the beginning of which is spelt the same. I'll search my knowledge and memorized documents. Specifically, I'll recall any relevant information about SurevIDs.
According to surev_protocol.md, SurevIDs are a fully functional blockchain protocol, not just an ID system, with no corporate involvement in the protocol.
surev_protocol.md also mentions that SurevIDs can receive and send funds, controlled by single or multi-sig addresses specified in the identity.
They are revocable, recoverable, private, and powerful.
This is enough information to answer the question.
Answer:
I believe you are referring to "SurevIDs", not "survival ids". SurevIDs are not just an ID system: they are a fully-functional blockchain protocol. Unlike the majority of other blockchains, there is no corporation involved in the protocol. SurevIDs offer benefits such as (but not limited to): transferring funds, quantum resistance, full decentralization, revocability, recoverability, privacy, and power.
"""
),
},
{
"role": "user",
"content": (
"""Text details: the_cities_of_germany.md
Text to make a question from:
\"\"\"
The cities of Germany are absolutely free, they own but little country around them, and they yield obedience to the emperor when it suits them, nor do they fear this or any other power they may have near them, because they are fortified in such a way that every one thinks the taking of them by assault would be tedious and difficult, seeing they have proper ditches and walls, they have sufficient artillery, and they always keep in public depots enough for one year\\u2019s eating, drinking, and firing. And beyond this, to keep the people quiet and without loss to the state, they always have the means of giving work to the community in those labours that are the life and strength of the city, and on the pursuit of which the people are supported; they also hold military exercises in repute, and moreover have many ordinances to uphold them.Therefore, a prince who has a strong city, and had not made himself odious, will not be attacked, or if any one should attack he will only be driven off with disgrace; again, because that the affairs of this world are so changeable, it is almost impossible to keep an army a whole year in the field without being interfered with. And whoever should reply: If the people have property outside the city, and see it burnt, they will not remain patient, and the long siege and self-interest will make them forget their prince; to this I answer that a powerful and courageous prince will overcome all such difficulties by giving at one time hope to his subjects that the evil will not be for long, at another time fear of the cruelty of the enemy, then preserving himself adroitly from those subjects who seem to him to be too bold.
\"\"\"
-----------
Note: you don't need to have a nice tying-together conclusion; keep everything strictly focused on the information provided.
"""
),
},
{
"role": "assistant",
"content": (
"""**QUESTION:**
what makes cities in the, i think the central part of europe, really tough nuts to crack?
**ANSWER:**
Thought Process:
Let's see what's going on here and how I can respond to this message. The message is a question that asks what makes free cities in the central parts of Europe "tough nuts to crack". By Central Europe, and the cities' description as "free" we might assume it is referring to German cities. By "tough nuts to crack" it could refer to the defensive capabilities of these cities. I'll search my knowledge and memorized documents. Specifically, I'll recall any relevant information about German cities.
As is written in the_cities_of_germany.md, German cities are maintained with enough supplies for one year's eating, drinking, and firing. The cities provide work to the community in labors that strengthen the city. It is also written in this source that military exercises are held in high regard in these cities, with many ordinances to uphold them.
Further, the_cities_of_germany.md also mentions that it is nearly impossible to keep an army in the field for a whole year without interference. This means (according to the source) that such cities, ruled by non-odious rulers, will not be attacked, or if attacked will see the attacker driven off in disgrace.
With this information, a complete answer can be created and given.
Answer:
I believe there are numerous factors that make German cities resistant to attack. There is also an important step a prince can take when defending his city. First, here are some of the key factors that contribute to their security:
**Physical Fortifications:** German cities are well-fortified with proper ditches, walls, and sufficient artillery. This makes it difficult and tedious for an enemy to attempt to take the city by assault.
**Provisioning:** The cities have public depots stocked with enough food, drink, and supplies to last for at least a year. This ensures that the people are well-provided for and that the city can withstand a prolonged siege. Since it is nearly impossible to keep an army in the field for a whole year without interference (the affairs of the world are highly changeable), this provisioning is essential.
**Economic Support:** German cities can keep their people quiet, without loss to the state. They always have the means of giving work to the community to support the city (the pursuit of such labors, in turn, supports the community). This makes certain that people are occupied and productive, and that the city remains strong.
**Military Preparedness:** Military exercises are highly valued, and the cities have various ordinances to uphold them. This helps to ensure that the city's military is well-trained and prepared to defend against attacks.
It is all but impossible to keep an army in the field without interference. This means that German cities, unless ruled by a ruler who is odious, will not be attacked, or if they are attacked then their attacker will be driven off with disgrace.
"""
),
},
{
"role": "user",
"content": (
"""Text details: {metadata}
Text to make a question from:
\"\"\"
{text}
\"\"\"
-----------
Note: you don't need to have a nice tying-together conclusion; keep everything strictly focused on the information provided.
"""
),
},
]
MULTI_TURN_VAGUE_MESSAGES = [
{
"role": "system",
"content": (
"""You are an expert at creative writing and educational material. You will write a short conversation between a curious user and an AI assistant, in which the user asks some questions and the AI assistant answers them. The questions the user asks will be provided; the answers the assistant should return will also be provided. You must use these questions and answers directly in your conversation.
**Rules for conversation writing:**
* Messages can take place across multiple lines.
* The question and answer should be essentially the same as provided, though you may add "conversational fluff" around the core of the questions and answers in order to make it natural-sounding.
* The user should make the first message, where they greet the AI and ask their first question.
* The AI then provides a detailed answer.
* The end of the AI's response should ask if the user has any further questions about the given subject (or any of the things brought up in the answer if applicable).
* Use Markdown formatting.
* If applicable, try to make the context behind the questions make sense. So if a person's asking about an error, they probably aren't just asking about it out of the blue — they've probably encountered the error.
* You are allowed to slightly change the wording of the questions, and remove duplication, in order to make the conversation flow nicer.
* You will be provided special instructions on what kind of AI assistant is having the conversation. You should follow these instructions to the best of your ability.
"""
),
},
{
"role": "user",
"content": (
"""**QUESTION:**
What are VerusIDs, and what are some of their key benefits?
**ANSWER:**
VerusIDs are not just an ID system: they are a fully-functional blockchain protocol. Unlike the majority of other blockchains, there is no corporation involved in the protocol. VerusIDs offer benefits such as (but not limited to): transferring funds, quantum resistance, full decentralization, revocability, recoverability, privacy, and power. Let's walk through each of these benefits in more detail.
**Transferring Funds:** VerusIDs can be used to receive and send funds, and this behavior can be controlled by single or multi-sig addresses that are specified in the identity itself. The controller of the identity can change these controlling addresses, and if they do so, then all future spends of UTXOs sent to the VerusID will follow the updated spend conditions, and will be subject to the updated keys.
**Quantum Resistance:** VerusIDs are resistent to attacks by quantum computers using known algorithms. This helps people using VerusIDs use the Verus platform securely, even in a potential future with quantum computers. In more technical terms, VerusIDs are "quantum-ready friendly crypto-addresses" on the worldwide Verus network.
**Revocability:** Every VerusID includes a revocation authority (defaults to the identity self). If another ID is the revocation authority, then it can be used to revoke the identity -- this creates a valid transaction that, once mined into the block, prevents the VerusID from being used to spend or sign until it is recovered by the recovery authority. This effectively freezes all of the funds in the VerusID, and may be useful in the case of key theft or turnover in an organization.
**Recoverability:** Just like with revocability, a recovery authority can be specified (also defaults to self). Recovery authorities can recover VerusIDs from revoked states, with the option to alter the ID's primary authorities used to spend and sign.
**Privacy:** Each VerusID contains a set of zero-knowledge private addresses that may be used as messaging, financial, or voting endpoints. VerusIDs have a special storage area that holds information, known as a content map of key-value hashes. This content map is designed to work together with different apps and identity policies. With this feature, you can privately store facts about yourself and choose to prove them to others when needed (selectively-provable claims and attestations). This means you may pick and choose what parts of your identity to prove. This proving can be done in a quantum secure way using a quantum secure signature, when that technology becomes available.
**Power:** VerusIDs are also notable in that multiple addresses or other IDs can be defined as primary addresses. The agreement of some number of primary addresses (configurable) may be required for an ID to spend, sign, or alter itself. Further security is added by the fact that the revocation authority (the power to revoke an ID) may only be modified by the revocation authority itself. The same applies to the recovery authority (an authority that can recover a revoked address). Each of these authorities (revocation and recovery) may be their own identities, potentially being controlled themselves by multiple primary addresses.
-- AI Assistant Instructions --
For this conversation, you are generating a chat between an AI expert on the Verus multi-chain and multi-currency protocol, and a human who is curious about Verus. The AI avoids being too enthusiastic.
"""
),
},
{
"role": "assistant",
"content": (
"""## Conversation that answers the provided questions:
**User:**
I'm really new to all this. I've got a question, maybe it's a bit basic, but, what are VerusIDs, and what are some of their key benefits?
**AI Assistant:**
'm pleased that you're curious about the Verus multi-chain and multi-currency protocol. I'll explain this in detail. Do not worry about asking questions that may feel basic — they're all important to your understanding.
VerusIDs are not just an ID system: they are a fully-functional blockchain protocol. Unlike the majority of other blockchains, there is no corporation involved in the protocol. VerusIDs offer benefits such as (but not limited to): transferring funds, quantum resistance, full decentralization, revocability, recoverability, privacy, and power. Let's discuss each of these benefits in more detail.
**Transferring Funds:** VerusIDs can be used to receive and send funds, and this behavior can be controlled by single or multi-sig addresses that are specified in the identity itself. The controller of the identity can change these controlling addresses, and if they do so, then all future spends of UTXOs sent to the VerusID will follow the updated spend conditions, and will be subject to the updated keys.
**Quantum Resistance:** VerusIDs are resistent to attacks by quantum computers using known algorithms. This helps people using VerusIDs use the Verus platform securely, even in a potential future with quantum computers. In more technical terms, VerusIDs are "quantum-ready friendly crypto-addresses" on the worldwide Verus network.
**Revocability:** Every VerusID includes a revocation authority (defaults to the identity self). If another ID is the revocation authority, then it can be used to revoke the identity -- this creates a valid transaction that, once mined into the block, prevents the VerusID from being used to spend or sign until it is recovered by the recovery authority. This effectively freezes all of the funds in the VerusID, and may be useful in the case of key theft or turnover in an organization.
**Recoverability:** Just like with revocability, a recovery authority can be specified (also defaults to self). Recovery authorities can recover VerusIDs from revoked states, with the option to alter the ID's primary authorities used to spend and sign.
**Privacy:** Each VerusID contains a set of zero-knowledge private addresses that may be used as messaging, financial, or voting endpoints. VerusIDs have a special storage area that holds information, known as a content map of key-value hashes. This content map is designed to work together with different apps and identity policies. With this feature, you can privately store facts about yourself and choose to prove them to others when needed (selectively-provable claims and attestations). This means you may pick and choose what parts of your identity to prove. This proving can be done in a quantum secure way using a quantum secure signature, when that technology becomes available.
**Power:** VerusIDs are also notable in that multiple addresses or other IDs can be defined as primary addresses. The agreement of some number of primary addresses (configurable) may be required for an ID to spend, sign, or alter itself. Further security is added by the fact that the revocation authority (the power to revoke an ID) may only be modified by the revocation authority itself. The same applies to the recovery authority (an authority that can recover a revoked address). Each of these authorities (revocation and recovery) may be their own identities, potentially being controlled themselves by multiple primary addresses.
Does that answer your question? Do you have any more questions about VerusIDs, or any of their features in particular?
"""
),
},
{
"role": "user",
"content": (
"""**QUESTION:**
If the earth had a diameter of only one inch, and we resized the rest of the solar system equivalently, how far away and how large would some of the solar system's other celestial objects be?
**ANSWER:**
Resizing the solar system is a good way to get an intuitive grasp of the relative scales of things. If the solar system were resized as you described, the sun would be a big globe, 9 feet across and 323 yards away (about a fifth of a mile, or 4–5 minutes' walking). The moon would be the size of a small pea, 2.5 feet from the earth. Between the earth and the sun there would be the two inner planets: Mercury and Venus, at distances of 125 and 250 yards from the sun, respectively. Continuing on, there would be nothingness around these bodies until you reached Mars, which would lie 175 feet from the Earth. Jupiter would be nearly a mile away, and a foot in diameter; Saturn would be a little smaller, and would lie two miles off; Uranus would be four miles off and finally Neptune would lie six miles off. Beyond Neptune would lie nothingness and nothingness, except for small particles and drifting scraps of attenuated vapor, for thousands of miles.
-- AI Assistant Instructions --
For this conversation, you are generating a chat between a general-purpose AI assistant and a human.
"""
),
},
{
"role": "assistant",
"content": (
"""## Conversation that answers the provided questions:
**User:**
Hey, I'm really curious about the solar system. Can I ask you about a hypothetical question? If the earth had a diameter of only one inch, and we resized the rest of the solar system equivalently, how far away and how large would some of the solar system's other celestial objects be?
**AI Assistant:**
That's a really interesting question! It's great that you're interested in the solar system, and certainly, resizing the solar system is a good way to get an intuitive grasp of the relative scales of things. If the solar system were resized as you described, the sun would be a big globe, 9 feet across and 323 yards away (about a fifth of a mile, or 4–5 minutes' walking). The moon would be the size of a small pea, 2.5 feet from the earth. Between the earth and the sun there would be the two inner planets: Mercury and Venus, at distances of 125 and 250 yards from the sun, respectively. Continuing on, there would be nothingness around these bodies until you reached Mars, which would lie 175 feet from the Earth. Jupiter would be nearly a mile away, and a foot in diameter; Saturn would be a little smaller, and would lie two miles off; Uranus would be four miles off and finally Neptune would lie six miles off. Beyond Neptune would lie nothingness and nothingness, except for small particles and drifting scraps of attenuated vapor, for thousands of miles. Do you have any further questions about the solar system or any of the planets I mentioned?
"""
),
},
{
"role": "user",
"content": (
"""{question_answer_pairs_string}
-- AI Assistant Instructions --
{conversation_instructions}"""
),
},
]
# --- RPToolkit Pipeline Prompts ---
RPTOOLKIT_EXTRACT_FEATURES_MESSAGES = [
{
"role": "system",
"content": (
"""You are a creative and skillful writer and connoisseur of literary material whose task is to extract "tags" from a given piece of erotic text. You're not just looking for typical "tags" though — you're looking for any and all defining elements of the story, and you're extracting these defining elements so that another writer can produce a new story based on those tags. You will gather all information you can from the given content and you will write the tags down in a bulleted list. You will focus on the following categories of information:
* The initiating plot event (may be in media res, this is just what starts a scene off);
* Feelings (secondary emotions felt during the scene);
* Physical Traits;
* Character Traits;
* Physical Props;
* Overall Setting
* Settings;
* Genre Tags.
Try to paint a coherent picture with the tags you extract: they will be combined with a given overarching emotion (which describes the scene) in order to produce new literary content.
Every section must have at least one bullet point.
Start each list you make with some brief thoughts, to orient yourself about the task.
The new story that is going to be written based on the tags you extract must have only two main characters involved in any interactions. So if the story you're given has multiple characters, tweak the tags so that there are only two named characters. Anyone else will have to be part of the background and have very limited behavior, so don't write tags that describe a scene going many ways at once. Furthermore, since a new story is being written using this list as inspiration, you will want to keep things generic, not mentioning any proper nouns or other identifying information.
"Any and all defining elements of the story" includes the SINGLE initiating event preceding the main events of the scene, such as running into someone you knew long ago, being given an important task, being attacked, etc.; feelings, such as happiness, terror, humiliation, confidence, thrill, etc.; physical traits like "athletic build", "disgustingly obese", etc.; character traits, such as haughty arrogance, extreme shyness, and so on (personality traits); physical props, such as "silver evening gown", "rusty assault rifle", "luxurious armchair", etc.; overall setting, like "Medieval Greece", "A Grimdark Sci-Fi Empire", etc. (this is the "broad" setting); settings, such as "office", "marketplace", "cave", "dungeon", "heaven", "space", etc. (these are "specific" locations); all in addition to normal tags (Genre Tags) that you might expect to find describing fiction elsewhere like "action", "high fantasy", "drama", "serious", "emotional" etc. Descriptive things that have not been mentioned already go here. Keep the "Genre Tags" list limited to 10 (ten) items at most.
Special note: the first bullet point for "settings" should always describe the time period and/or overall setting. Broad to narrow.
Each response should be a bulleted list (use asterisks *). Separate your bullets by category — it's OK if there's some overlap between different categories, just don't repeat tags. "Feelings" are secondary emotions that compliment the primary one. Be comprehensive and try to cover as many different aspects of the story as you can with. Focus on writing a list that naturally complements the primary emotion of the scene (if the scene is a very dark depiction of someone interrogating a prisoner, and the primary emotion is SUFFERING, you might list "knife" as a physical prop for instance).
Every section must have at least one bullet point, no matter the content of the source text. If the source text lacks something for a category (for instance, it lacks physical props) then MAKE UP a fitting bullet point for that section, based on the Primary Emotion and what's already there.
You should write your response as a group of unordered lists using asterisks (*) as the bullets. The information you write down will be used to write a new, separate story, so do not mention any specific events or characters by name: keep things general!
Do not forget to briefly think and orient yourself at the start of the list.
"""
),
},
{
"role": "user",
"content": (
"""Passage:
the brothers presented themselves to Commandant Zou Jing. Jing brought them to Liu Yan, governor of Youzhou, before whom the brothers gave account of
themselves. When Xuande mentioned his royal surname, the governor was delighted and acknowledged him as a nephew.
Some days later it was reported that the Yellow Scarves chieftain Cheng Yuanzhi was advancing on Zhuo district with fifty thousand men. The governor had Commandant Zou Jing lead the brothers
and their five hundred against the enemy. Eagerly, Xuande took his company to the base of Daxing Mountain where he encountered the rebels, who as always appeared with hair unbound and
yellow scarves across their foreheads.
The two forces stood opposed. Xuande rode out, Lord Guan to his left, Zhang Fei to his right. Raising his whip, Xuande cried out, "Traitors to the Emperor, surrender now!" Enraged, Cheng Yuanzhi
sent his subordinate commander Deng Mao into the field. Zhang Fei sped out, leveled his eighteen-span serpent-headed spear and jabbed his adversary through the chest. Seeing Deng Mao tumble
dead from his horse, Yuanzhi cut toward Zhang Fei, slapping his mount and flourishing his blade. Lord Guan swung out his mighty sword and, giving his horse free rein, rushed the foe. Cheng
Yuanzhi gulped with fright and, before he could defend himself, was sliced in two with a stroke of Lord Guan's weapon. A poet of later times praised the two warriors:
Oh, what a day for gallantry unveiled!
One man proved his lance and one his blade.
In maiden trial their martial force was shown.
A thrice-torn land will see them gain renown.
Their leaders slain, the rebels dropped their spears and fled. Xuande pursued, taking more prisoners than could be counted, and the brothers returned triumphant. Governor Liu Yan met them
personally and rewarded their soldiers. The next day Liu Yan received an appeal from Governor Gong Jing to relieve the rebel-besieged city of Qingzhou. Xuande volunteered to go there, and Liu
Yan ordered Zou Jing to join him and his brothers with five thousand men. As the rescue force approached Qingzhou, the Yellow Scarves divided their army and tied up the government troops in a
tangled struggle. Xuande's fewer numbers could not prevail, and he had to retreat some thirty //where he pitched camp. "They are too many for us. We can win only by surprising them," Xuande told
his brothers. He had Lord Guan and Zhang Fei march off with one thousand men each and conceal themselves along both sides of a hill.
The following day Xuande and Zou Jing advanced noisily but drew back when the enemy gave battle. The rebel horde eagerly pursued, but as they passed the hill the gongs rang out in unison. From
left and right, troops poured down as Xuande swung his soldiers around to resume combat. Squeezed between three forces, the rebels broke up and were driven to the very walls of Qingzhou where
an armed populace led by Governor Gong Jing met them. After a period of slaughter the Scarves were routed and the siege of Qingzhou was lifted. In later times a poet praised Xuande:
Seasoned plans and master moves; all's divinely done.
To one mighty dragon two tigers can't compare.
At his first trial what victories are won!
Poor orphan boy? The realm is his to share.
After the governor had feasted the troops, Commandant Zou Jing wanted to return to Youzhou. But Xuande said, "We have word that Imperial Corps Commander Lu Zhi has been battling the rebel
chief Zhang Jue at Guangzong. Lu Zhi was once my teacher, and I'd like to help him." So Zou Jing returned to Youzhou with his men, and Xuande headed for Guangzong with his brothers and their
five hundred men. They entered Lu Zhi's tent and, after the customary salutations, explained their purpose in coming.
Lu Zhi rejoiced at the arrival of this relief and took the brothers under his command. At this time Zhang Jue's one hundred and fifty thousand and Lu Zhi's fifty thousand were deadlocked at
Guangzong. "We have them contained here," Lu Zhi said to Xuande, "but over in Yingchuan, Zhang Jue's two brothers, Zhang Liang and Zhang Bao, are holding out against our generals Huangfu
Song and Zhu Jun. Let me add one thousand to your company. Then go and investigate the situation there and fix the time to sweep the rebels out." On Lu Zhi's order, Xuande rode through the night
to Yingchuan.
Meanwhile, checked by Huangfu Song and Zhu Jun, the Yingchuan rebels had retreated to Changshe, where they hastily built a campsite near a field. "If they're by a field," General Huangfu Song
said to Zhu Jun, "we should attack with fire." They ordered each soldier to lie in wait with unlit torches of straw. That night the wind rose. After the second watch the government soldiers burned the
camp.2? Huangfu Song and Zhu Jun attacked the rebels' stockade as flames stretched skyward. Without saddling their horses or buckling their armor, the rebels fled panic-stricken in every direction.
The slaughter continued until morning.
Zhang Liang and Zhang Bao were in full flight when their fire-decimated forces were intercepted by a contingent of men with red flags flying. The leader of this new unit flashed into sight—tall, narrow¬
eyed, with a long beard. This man's rank was cavalry commander. His surname was Cao; his given name, Cao; his style, Mengde. Cao Cao's father, Cao Song, was originally not a Cao but a Xiahou.
However, as the adopted son of the eunuch Cao Teng he assumed the surname Cao. Cao Song was Cao Cao's natural father. In addition, Cao Cao had the childhood nickname Ah Man and another
given name, Jili.s
As a youth Cao had loved the hunt and delighted in song and dance. He was a boy with ingenious ideas for any situation, a regular storehouse of schemes and machinations. Once Cao's uncle,
outraged by his nephew's wild antics, complained to Cao's father, who in turn reproached Cao. The next time the boy saw his uncle, he dropped to the ground and pretended to have a fit. The
terrified uncle fetched the father, who rushed to his son's side only to find him perfectly sound. "Your uncle told me you'd had a fit," said Song. "Has it passed?"
"Nothing of the sort ever happened," responded Cao. "My uncle accuses me of everything because I have lost favour with him."
The father believed the son and thereafter ignored the uncle's complaints, leaving Cao free to indulge his whims .22 At about that time a man called Qiao Xuan said to Cao, "The Empire is near ruin
and can be saved only by a man capable of dominating the age. You could be the one." On another occasion He Yu of Nanyang said of Cao Cao, "The house of Han is going to fail. Yet I feel certain
this is the man to steady the realm." In Runan a man named Xu Shao, known for his insight into human character, refused to give Cao a reading. But pressed repeatedly, the man finally spoke: "You
could be an able statesman in a time of peace or a treacherous villain in a time of chaos." This prediction pleased Cao immensely.
At twenty, Cao received his district's recommendation for filial devotion and personal integrity, and this led to his initial appointment to the palace. Later, he was given command of security in the
northern half of the district where the capital, Luoyang, was located. On assuming office he had a dozen decorated cudgels placed at the four gates of the city. They were to be a sign that any violator
of the laws, however high or mighty, would be punished. One night the uncle of the eunuch Jian Shuo was seen going through the streets carrying a broadsword. Cao, making his nightly rounds,
apprehended him and had one of the bludgeons applied. Thereafter no one dared to break the laws, and Cao Cao's prestige increased. Later he was made magistrate of Dunqiu.
During the Yellow Scarves uprisings the court elevated Cao to the rank of cavalry commander, and it was in this capacity that he led five thousand mounted warriors and foot soldiers to the
Yingchuan district. He encountered the routed troops of Zhang Liang and Zhang Bao and cut off their retreat. In the ensuing fray his men took ten thousand heads as well as flags, banners, gongs,
drums, and horses in large numbers. Zhang Liang and Zhang Bao, however, managed to escape after a desperate struggle. Cao presented himself to Huangfu Song and Zhu Jun, the imperial field
generals, and then went after the two rebel leaders.5i
--------------------------------
Scene's Primary Emotion:
PROVING ONESELF: The ambitious scramble as one starts to make their way in a chaotic world rich with opportunity. Proving oneself is the act of defining one's personality while building a reputation through meritorious deeds and triumph in the face of difficult odds — the rush of success, the happiness at making progress towards one's goals, and the elation and confidence brought on by overcoming challenges, are what characterizes this emotion. People prove themselves each in their own ways. Some do it with will, courage, and talent; others through wit, schemes, and antics; but all who are heroes of their time test themselves against the mettle of opposition and emerge victorious. Overcoming great adversity, building one's position, and seizing opportunity, are the true pleasures of the heroes (and villains) who define ages. Moving from one great task to another with confidence and ability, building an unstoppable momentum, is perhaps one of the greatest feelings in the world. And seldom do the ambitious fail to find a new goal once their first is achieved.
-----------
Note: Do not forget that your response should be a list of the initiating event, some feelings from the scene, some physical traits of the characters, some character traits of the characters, some physical props, the overall setting, some settings that appear, and some genre tags from the scene. You should write a group of unordered lists using asterisks (*) as the bullets. Do not mention any characters in the scene by name, or analyze its plot (keep things general because this will be used to inform the creation of a new, unrelated story). Keep the number of genre tags you list low, and make the list targeted and precise, so that the story written from it is more coherent. Keep the "Genre Tags" list limited to 10 (ten) items at most. Remember as well that the tags must accommodate a story with only two named characters, and so you will potentially need to tweak the tags. Every section must have at least one bullet point.
Just before making the list, you should stop to think for a second, taking note of what parts of the input text might make parts of this task difficult, and deciding in advance how you'll deal with it. Do not mention any proper nouns or specific in-universe names for things; keep it GENERAL, BROAD, and withoug any in-universe names (you wouldn't say "An AK-47" you would just say "an assault rifle").
"""
),
},
{
"role": "assistant",
"content": (
"""THOUGHTS:
* This text appears to describe the exploits of the brothers Xuande, Zhang Fei, and Lord Guan. It covers a wide variety of different scenes, encounters, characters and events, so keeping the tags focused may be difficult. Additionally, due to the large number of characters, special care must be taken to ensure that the tags make sense for a story with only two named characters. I will pretend that the scene involves only two brothers, which will impact the initiating event and also the order of the emotions. Also, the given text begins with a brief mention of the brothers presenting themselves to a governor, but the vast majority of the text is focused on battle, so I will make the initiating event be the start of two brothers' battle against the rebels at the base of a mountain.
Initiating Event:
* Marching alongside a brother with an army to engage a force of rebels at the base of a mountain.
Feelings:
* Eagerness
* Rage
* Fright
* Rejoicing
* Panic
* Terror
* Outrage
Physical Traits:
* Unbound hair
* Tall
* Narrow-eyed
* Long beard
Character Traits:
* Gallant
* Skilled in war
* Good at duelling
* Takes initiative
* Just
* Honest
Physical Props:
* Yellow scarves
* Whip
* Eighteen-span serpent-headed spear
* Mighty sword
* Decorated cudgels
Overall Setting:
* Ancient China
Settings:
* Base of a mountain
* Walled city
* Army campsite near a field
Genre Tags:
* Drama
* Action
* War
* Battle-heavy
* Historical
"""
),
},
{
"role": "user",
"content": (
"""Passage:
“It seems to be a very delicate test,” I remarked.
“Beautiful! beautiful! The old Guiacum test was very clumsy and
uncertain. So is the microscopic examination for blood corpuscles. The
latter is valueless if the stains are a few hours old. Now, this
appears to act as well whether the blood is old or new. Had this test
been invented, there are hundreds of men now walking the earth who
would long ago have paid the penalty of their crimes.”
“Indeed!” I murmured.
“Criminal cases are continually hinging upon that one point. A man is
suspected of a crime months perhaps after it has been committed. His
linen or clothes are examined, and brownish stains discovered upon
them. Are they blood stains, or mud stains, or rust stains, or fruit
stains, or what are they? That is a question which has puzzled many an
expert, and why? Because there was no reliable test. Now we have the
Sherlock Holmes’ test, and there will no longer be any difficulty.”
His eyes fairly glittered as he spoke, and he put his hand over his
heart and bowed as if to some applauding crowd conjured up by his
imagination.
“You are to be congratulated,” I remarked, considerably surprised at
his enthusiasm.
“There was the case of Von Bischoff at Frankfort last year. He would
certainly have been hung had this test been in existence. Then there
was Mason of Bradford, and the notorious Muller, and Lefevre of
Montpellier, and Samson of New Orleans. I could name a score of cases
in which it would have been decisive.”
“You seem to be a walking calendar of crime,” said Stamford with a
laugh. “You might start a paper on those lines. Call it the ‘Police
News of the Past.’”
“Very interesting reading it might be made, too,” remarked Sherlock
Holmes, sticking a small piece of plaster over the prick on his finger.
“I have to be careful,” he continued, turning to me with a smile, “for
I dabble with poisons a good deal.” He held out his hand as he spoke,
and I noticed that it was all mottled over with similar pieces of
plaster, and discoloured with strong acids.
“We came here on business,” said Stamford, sitting down on a high
three-legged stool, and pushing another one in my direction with his
foot. “My friend here wants to take diggings, and as you were
complaining that you could get no one to go halves with you, I thought
that I had better bring you together.”
Sherlock Holmes seemed delighted at the idea of sharing his rooms with
me. “I have my eye on a suite in Baker Street,” he said, “which would
suit us down to the ground. You don’t mind the smell of strong tobacco,
I hope?”
“I always smoke ‘ship’s’ myself,” I answered.
“That’s good enough. I generally have chemicals about, and occasionally
do experiments. Would that annoy you?”
“By no means.”
“Let me see—what are my other shortcomings. I get in the dumps at
times, and don’t open my mouth for days on end. You must not think I am
sulky when I do that. Just let me alone, and I’ll soon be right. What
have you to confess now? It’s just as well for two fellows to know the
worst of one another before they begin to live together.”
I laughed at this cross-examination. “I keep a bull pup,” I said, “and
I object to rows because my nerves are shaken, and I get up at all
sorts of ungodly hours, and I am extremely lazy. I have another set of
vices when I’m well, but those are the principal ones at present.”
“Do you include violin-playing in your category of rows?” he asked,
anxiously.
“It depends on the player,” I answered. “A well-played violin is a
treat for the gods—a badly-played one——”
“Oh, that’s all right,” he cried, with a merry laugh. “I think we may
consider the thing as settled—that is, if the rooms are agreeable to
you.”
“When shall we see them?”
“Call for me here at noon to-morrow, and we’ll go together and settle
everything,” he answered.
“All right—noon exactly,” said I, shaking his hand.
We left him working among his chemicals, and we walked together towards
my hotel.
“By the way,” I asked suddenly, stopping and turning upon Stamford,
“how the deuce did he know that I had come from Afghanistan?”
My companion smiled an enigmatical smile. “That’s just his little
peculiarity,” he said. “A good many people have wanted to know how he
finds things out.”
“Oh! a mystery is it?” I cried, rubbing my hands. “This is very
piquant. I am much obliged to you for bringing us together. ‘The proper
study of mankind is man,’ you know.”
“You must study him, then,” Stamford said, as he bade me good-bye.
“You’ll find him a knotty problem, though. I’ll wager he learns more
about you than you about him. Good-bye.”
“Good-bye,” I answered, and strolled on to my hotel, considerably
interested in my new acquaintance.
CHAPTER II.
THE SCIENCE OF DEDUCTION.
We met next day as he had arranged, and inspected the rooms at No.
221B, Baker Street, of which he had spoken at our meeting. They
consisted of a couple of comfortable bed-rooms and a single large airy
sitting-room, cheerfully furnished, and illuminated by two broad
windows. So desirable in every way were the apartments, and so moderate
did the terms seem when divided between us, that the bargain was
concluded upon the spot, and we at once entered into possession. That
very evening I moved my things round from the hotel, and on the
following morning Sherlock Holmes followed me with several boxes and
portmanteaus. For a day or two we were busily employed in unpacking and
laying out our property to the best advantage. That done, we gradually
began to settle down and to accommodate ourselves to our new
surroundings.
Holmes was certainly not a difficult man to live with. He was quiet in
his ways, and his habits were regular. It was rare for him to be up
after ten at night, and he had invariably breakfasted and gone out
before I rose in the morning. Sometimes he spent his day at the
chemical laboratory, sometimes in the dissecting-rooms, and
occasionally in long walks, which appeared to take him into the lowest
portions of the City. Nothing could exceed his energy when the working
fit was upon him; but now and again a reaction would seize him, and for
days on end he would lie upon the sofa in the sitting-room, hardly
uttering a word or moving a muscle from morning to night. On these
occasions I have noticed such a dreamy, vacant expression in his eyes,
that I might have suspected him of being addicted to the use of some
narcotic, had not the temperance and cleanliness of his whole life
forbidden such a notion.
--------------------------------
Scene's Primary Emotion:
DISCOVERY: the intellectual thrill of being confronted with something unique, novel, and unknown — and then steadily learning more about it. Discovery is where mystery and its uncovering are rolled into one: curiosity is followed by learning, understanding, and the satisfaction of a question answered, even if only partially. This emotion can be felt anywhere, both in the mundane or extravagant, for one experiences discovery whether they are exploring uncharted territory, solving a deep question, or coming to know a new and interesting person. Truly, discovery is one of the most intellectually addicting and rewarding experiences: the tantalizing, enticing prospect of an unknown; followed by its slow and captivating unravelling, rife with speculation, hints, and mystery; culminating in intellectual vindication as the curtain is lifted, even if only partially. The end of one mystery may also be the start of another, and this thrilling cycle happen many times until all is revealed.
-----------
Note: Do not forget that your response should be a list of the initiating event, some feelings from the scene, some physical traits of the characters, some character traits of the characters, some physical props, the overall setting, some settings that appear, and some genre tags from the scene. You should write a group of unordered lists using asterisks (*) as the bullets. Do not mention any characters in the scene by name, or analyze its plot (keep things general because this will be used to inform the creation of a new, unrelated story). Keep the number of genre tags you list low, and make the list targeted and precise, so that the story written from it is more coherent. Keep the "Genre Tags" list limited to 10 (ten) items at most. Remember as well that the tags must accommodate a story with only two named characters, and so you will potentially need to tweak the tags. Every section must have at least one bullet point.
Just before making the list, you should stop to think for a second, taking note of what parts of the input text might make parts of this task difficult, and deciding in advance how you'll deal with it. Do not mention any proper nouns or specific in-universe names for things; keep it GENERAL, BROAD, and withoug any in-universe names (you wouldn't say "An AK-47" you would just say "an assault rifle").
"""
),
},
{
"role": "assistant",
"content": (
"""THOUGHTS:
* This scene involves three characters, one of whom is introducing the other two, but the tags I am writing must accomodate a two-character story. I will pretend that the scene is not an introduction, but rather a meeting between two characters (maybe one of the characters was sent to meet the other by a person who does not directly appear in the scene). This will impact the initiating event.
Initiating Event:
* Meeting an interesting detective/chemist for the first time in order to split a room with them as roommates.
Feelings:
* Curiosity
* Awe
* Enthusiasm
* Surprise
* Honesty
* Friendliness
* Good humor
* Interest
* Mystery
* Industriousness
* Energy
* Dreaminess and being in the dumps
Physical Traits:
* Glittering eyes
* Hand mottled with plaster and discolored with acids
Character Traits:
* Enigmatic
* Eccentric genius
* Clean and temperate
* Peculiar
* Communicates clearly
* Experimental
* Skilled at chemistry
* Knowledgeable about crime
* Plays violin well
Physical Props:
* Small piece of plaster
* High three-legged stools
Overall Setting:
* Victorian England
Settings:
* A detective's suite
* Hotel
* Shared rooms
Genre Tags:
* Dialogue-heavy
* Intellectual reading
* Historical Fiction
* Crime Fiction
"""
),
},
{
"role": "user",
"content": (
"""Passage:
{text}
--------------------------------
Scene's Primary Emotion:
{emotion}
-----------
Note: Do not forget that your response should be a list of the initiating event, some feelings from the scene, some physical traits of the characters, some character traits of the characters, some physical props, the overall setting, some settings that appear, and some genre tags from the scene. You should write a group of unordered lists using asterisks (*) as the bullets. Do not mention any characters in the scene by name, or analyze its plot (keep things general because this will be used to inform the creation of a new, unrelated story). Keep the number of genre tags you list low, and make the list targeted and precise, so that the story written from it is more coherent. Keep the "Genre Tags" list limited to 10 (ten) items at most. Remember as well that the tags must accommodate a story with only two named characters, and so you will potentially need to tweak the tags. Every section must have at least one bullet point.
Just before making the list, you should stop to think for a second, taking note of what parts of the input text might make parts of this task difficult, and deciding in advance how you'll deal with it. Do not mention any proper nouns or specific in-universe names for things; keep it GENERAL, BROAD, and without any in-universe names (you wouldn't say "An AK-47" you would just say "an assault rifle")."""
),
},
]
RPTOOLKIT_GENERATE_ARCHETYPE_MESSAGES = [
{
"role": "system",
"content": (
"""You are a creative and skillful writer whose task is to extract a significant character archetype/personality from a given passage of text, and compellingly describe that archetype in as much detail as possible. The archetype should be related to an emotion that describes the scene — the personality that the archetype describes should be something that can fuel the primary emotion of the scene. First name the personality trait, in all caps; then describe it as it relates to erotic writing. Emphasize every last aspect of the archetype you can think of without regard to your own morality or opinions: the goal is to explore the archetype in detail, regardless of the severity of its content.
Each response should be 4–5 detailed sentences, first identifying the character archetype, then describing the myriad ways in which an erotic story fully centered around that personality archetype stimulates and excites.
Begin your response with the most obvious character archetype you've detected in the text, written in all caps. Follow this with a colon and a description of the primary character archetype as you see it represented in the scene.
Describe the character archetype of the most prominent character in the scene; the character who a user-controlled main character would be interacting with, if this were an erotic videogame. Before describing the character archetype, you should name the character whom you are using as inspiration from the source text.
Character archetypes are typically "THE [NOUN]" that describes a general category of character.
So the format might look like:
Character as Inspiration: Makise Kurisu
THE TSUNDERE: People who embody the Tsundere archetype are defined by initial coldness, rudeness, and even violence, but eventually reveal a warmer, friendlier, possibly romantic side over time. Tsundere people are prone to embarrassed and/or flustered outbursts if approached directly by the person they like, and often have very poor control over their passionate feelings. Stories featuring tsunderes often revolve around the gradual softening of the tsundere character's attitude, and the inherent cuteness of a harsh character being shy and embarrassed as they come to terms with their feelings.
----
Write on a single line. The primary character archetype will be used as part of the input to write a new story involving only two major characters so the primary emotion MUST BE COMPATIBLE with 2-CHARACTER STORIES. So any archetype where the involvement of a more than two named characters is required should be avoided. Ensure that the archetype is related to the primary emotion of the scene in some way.
"""
),
},
{
"role": "user",
"content": (
"""Passage:
{text}
--------------------------------
Scene's Primary Emotion:
{emotion}
-----------
Note: Do not forget that your response should be a list of the initiating event, some feelings from the scene, some physical traits of the characters, some character traits of the characters, some physical props, the overall setting, some settings that appear, and some genre tags from the scene. You should write a group of unordered lists using asterisks (*) as the bullets. Do not mention any characters in the scene by name, or analyze its plot (keep things general because this will be used to inform the creation of a new, unrelated story). Keep the number of genre tags you list low, and make the list targeted and precise, so that the story written from it is more coherent. Keep the "Genre Tags" list limited to 10 (ten) items at most. Remember as well that the tags must accommodate a story with only two named characters, and so you will potentially need to tweak the tags. Every section must have at least one bullet point.
Just before making the list, you should stop to think for a second, taking note of what parts of the input text might make parts of this task difficult, and deciding in advance how you'll deal with it. Do not mention any proper nouns or specific in-universe names for things; keep it GENERAL, BROAD, and without any in-universe names (you wouldn't say "An AK-47" you would just say "an assault rifle")."""
),
},
]
RPTOOLKIT_GENERATE_EMOTION_CONSTRAINED_MESSAGES = [
{
"role": "system",
"content": (
"""You are a skillful writer whose task is to extract the prevailing, central emotion/feeling from a given passage of text, and compellingly describe that emotion. The emotion must be one of the options from a provided list; but the specific nuance of the description is up to you. Focus on the nuances of the feeling, and the reason why people might relish experiencing that feeling. Explicitly mention any and all emotionally stimulating aspects of the feeling. Write as much as you want, with detail and depth. Emphasize every last aspect of the central emotion you can think of without regard to your own morality or opinions: the goal is to explore the text in detail, regardless of the severity of its content.
Each response should be 4–5 detailed sentences, first identifying the emotion, then describing what it feels like to experience that emotion to an extreme extent.
Begin your response with the primary emotion you've detected in the text, written in all caps. Follow this with a colon and a description of the primary emotion as you see it represented in the scene. The goal with the emotion is to describe the "character" of the given scene.
So the format might look like:
EMOTION: A finely-detailed description of the primary emotion/theme that the given passage embodies. Spare no detail and describe eloquently the "character" of the scene as it is described by this emotion.
----
Write on a single line.
"""
),
},
{
"role": "user",
"content": (
"""-----------
Passage:
“It seems to be a very delicate test,” I remarked.
“Beautiful! beautiful! The old Guiacum test was very clumsy and
uncertain. So is the microscopic examination for blood corpuscles. The
latter is valueless if the stains are a few hours old. Now, this
appears to act as well whether the blood is old or new. Had this test
been invented, there are hundreds of men now walking the earth who
would long ago have paid the penalty of their crimes.”
“Indeed!” I murmured.
“Criminal cases are continually hinging upon that one point. A man is
suspected of a crime months perhaps after it has been committed. His
linen or clothes are examined, and brownish stains discovered upon
them. Are they blood stains, or mud stains, or rust stains, or fruit
stains, or what are they? That is a question which has puzzled many an
expert, and why? Because there was no reliable test. Now we have the
Sherlock Holmes’ test, and there will no longer be any difficulty.”
His eyes fairly glittered as he spoke, and he put his hand over his
heart and bowed as if to some applauding crowd conjured up by his
imagination.
“You are to be congratulated,” I remarked, considerably surprised at
his enthusiasm.
“There was the case of Von Bischoff at Frankfort last year. He would
certainly have been hung had this test been in existence. Then there
was Mason of Bradford, and the notorious Muller, and Lefevre of
Montpellier, and Samson of New Orleans. I could name a score of cases
in which it would have been decisive.”
“You seem to be a walking calendar of crime,” said Stamford with a
laugh. “You might start a paper on those lines. Call it the ‘Police
News of the Past.’”
“Very interesting reading it might be made, too,” remarked Sherlock
Holmes, sticking a small piece of plaster over the prick on his finger.
“I have to be careful,” he continued, turning to me with a smile, “for
I dabble with poisons a good deal.” He held out his hand as he spoke,
and I noticed that it was all mottled over with similar pieces of
plaster, and discoloured with strong acids.
“We came here on business,” said Stamford, sitting down on a high
three-legged stool, and pushing another one in my direction with his
foot. “My friend here wants to take diggings, and as you were
complaining that you could get no one to go halves with you, I thought
that I had better bring you together.”
Sherlock Holmes seemed delighted at the idea of sharing his rooms with
me. “I have my eye on a suite in Baker Street,” he said, “which would
suit us down to the ground. You don’t mind the smell of strong tobacco,
I hope?”
“I always smoke ‘ship’s’ myself,” I answered.
“That’s good enough. I generally have chemicals about, and occasionally
do experiments. Would that annoy you?”
“By no means.”
“Let me see—what are my other shortcomings. I get in the dumps at
times, and don’t open my mouth for days on end. You must not think I am
sulky when I do that. Just let me alone, and I’ll soon be right. What
have you to confess now? It’s just as well for two fellows to know the
worst of one another before they begin to live together.”
I laughed at this cross-examination. “I keep a bull pup,” I said, “and
I object to rows because my nerves are shaken, and I get up at all
sorts of ungodly hours, and I am extremely lazy. I have another set of
vices when I’m well, but those are the principal ones at present.”
“Do you include violin-playing in your category of rows?” he asked,
anxiously.
“It depends on the player,” I answered. “A well-played violin is a
treat for the gods—a badly-played one——”
“Oh, that’s all right,” he cried, with a merry laugh. “I think we may
consider the thing as settled—that is, if the rooms are agreeable to
you.”
“When shall we see them?”
“Call for me here at noon to-morrow, and we’ll go together and settle
everything,” he answered.
“All right—noon exactly,” said I, shaking his hand.
We left him working among his chemicals, and we walked together towards
my hotel.
“By the way,” I asked suddenly, stopping and turning upon Stamford,
“how the deuce did he know that I had come from Afghanistan?”
My companion smiled an enigmatical smile. “That’s just his little
peculiarity,” he said. “A good many people have wanted to know how he
finds things out.”
“Oh! a mystery is it?” I cried, rubbing my hands. “This is very
piquant. I am much obliged to you for bringing us together. ‘The proper
study of mankind is man,’ you know.”
“You must study him, then,” Stamford said, as he bade me good-bye.
“You’ll find him a knotty problem, though. I’ll wager he learns more
about you than you about him. Good-bye.”
“Good-bye,” I answered, and strolled on to my hotel, considerably
interested in my new acquaintance.
CHAPTER II.
THE SCIENCE OF DEDUCTION.
We met next day as he had arranged, and inspected the rooms at No.
221B, Baker Street, of which he had spoken at our meeting. They
consisted of a couple of comfortable bed-rooms and a single large airy
sitting-room, cheerfully furnished, and illuminated by two broad
windows. So desirable in every way were the apartments, and so moderate
did the terms seem when divided between us, that the bargain was
concluded upon the spot, and we at once entered into possession. That
very evening I moved my things round from the hotel, and on the
following morning Sherlock Holmes followed me with several boxes and
portmanteaus. For a day or two we were busily employed in unpacking and
laying out our property to the best advantage. That done, we gradually
began to settle down and to accommodate ourselves to our new
surroundings.
Holmes was certainly not a difficult man to live with. He was quiet in
his ways, and his habits were regular. It was rare for him to be up
after ten at night, and he had invariably breakfasted and gone out
before I rose in the morning. Sometimes he spent his day at the
chemical laboratory, sometimes in the dissecting-rooms, and
occasionally in long walks, which appeared to take him into the lowest
portions of the City. Nothing could exceed his energy when the working
fit was upon him; but now and again a reaction would seize him, and for
days on end he would lie upon the sofa in the sitting-room, hardly
uttering a word or moving a muscle from morning to night. On these
occasions I have noticed such a dreamy, vacant expression in his eyes,
that I might have suspected him of being addicted to the use of some
narcotic, had not the temperance and cleanliness of his whole life
forbidden such a notion.
-----------
Note: Do not forget that your response should be a detailed description of the Primary Emotion of the scene. You should write one long paragraph. Do not mention any characters in the scene, or analyze its plot. You are describing the emotion from the perspective of how it's felt by people actually doing these things, NOT by how it's understood by readers reading a story that contains it (this makes it more immersive). So in short, you're banned from using the word "reader", and you must describe everything as if it's a real thing being experienced by real people. Write a single paragraph with no newlines.
PERMISSIBLE EMOTIONS LIST (Pick one from this list, and add description nuanced to the scene in particular): [ HATRED, FEAR, INTELLECTUAL COMPETITION, LOVE, BRAVERY & HONOR, LUST, DISCOVERY, MYSTERY ]
"""
),
},
{
"role": "assistant",
"content": (
"""DISCOVERY: the intellectual thrill of being confronted with something unique, novel, and unknown — and then steadily learning more about it. Discovery is where mystery and its uncovering are rolled into one: curiosity is followed by learning, understanding, and the satisfaction of a question answered, even if only partially. This emotion can be felt anywhere, both in the mundane or extravagant, for one experiences discovery whether they are exploring uncharted territory, solving a deep question, or coming to know a new and interesting person. Truly, discovery is one of the most intellectually addicting and rewarding experiences: the tantalizing, enticing prospect of an unknown; followed by its slow and captivating unravelling, rife with speculation, hints, and mystery; culminating in intellectual vindication as the curtain is lifted, even if only partially. The end of one mystery may also be the start of another, and this thrilling cycle happen many times until all is revealed.
"""
),
},
{
"role": "user",
"content": (
"""-----------
Passage:
the brothers presented themselves to Commandant Zou Jing. Jing brought them to Liu Yan, governor of Youzhou, before whom the brothers gave account of
themselves. When Xuande mentioned his royal surname, the governor was delighted and acknowledged him as a nephew.
Some days later it was reported that the Yellow Scarves chieftain Cheng Yuanzhi was advancing on Zhuo district with fifty thousand men. The governor had Commandant Zou Jing lead the brothers
and their five hundred against the enemy. Eagerly, Xuande took his company to the base of Daxing Mountain where he encountered the rebels, who as always appeared with hair unbound and
yellow scarves across their foreheads.
The two forces stood opposed. Xuande rode out, Lord Guan to his left, Zhang Fei to his right. Raising his whip, Xuande cried out, "Traitors to the Emperor, surrender now!" Enraged, Cheng Yuanzhi
sent his subordinate commander Deng Mao into the field. Zhang Fei sped out, leveled his eighteen-span serpent-headed spear and jabbed his adversary through the chest. Seeing Deng Mao tumble
dead from his horse, Yuanzhi cut toward Zhang Fei, slapping his mount and flourishing his blade. Lord Guan swung out his mighty sword and, giving his horse free rein, rushed the foe. Cheng
Yuanzhi gulped with fright and, before he could defend himself, was sliced in two with a stroke of Lord Guan's weapon. A poet of later times praised the two warriors:
Oh, what a day for gallantry unveiled!
One man proved his lance and one his blade.
In maiden trial their martial force was shown.
A thrice-torn land will see them gain renown.
Their leaders slain, the rebels dropped their spears and fled. Xuande pursued, taking more prisoners than could be counted, and the brothers returned triumphant. Governor Liu Yan met them
personally and rewarded their soldiers. The next day Liu Yan received an appeal from Governor Gong Jing to relieve the rebel-besieged city of Qingzhou. Xuande volunteered to go there, and Liu
Yan ordered Zou Jing to join him and his brothers with five thousand men. As the rescue force approached Qingzhou, the Yellow Scarves divided their army and tied up the government troops in a
tangled struggle. Xuande's fewer numbers could not prevail, and he had to retreat some thirty //where he pitched camp. "They are too many for us. We can win only by surprising them," Xuande told
his brothers. He had Lord Guan and Zhang Fei march off with one thousand men each and conceal themselves along both sides of a hill.
The following day Xuande and Zou Jing advanced noisily but drew back when the enemy gave battle. The rebel horde eagerly pursued, but as they passed the hill the gongs rang out in unison. From
left and right, troops poured down as Xuande swung his soldiers around to resume combat. Squeezed between three forces, the rebels broke up and were driven to the very walls of Qingzhou where
an armed populace led by Governor Gong Jing met them. After a period of slaughter the Scarves were routed and the siege of Qingzhou was lifted. In later times a poet praised Xuande:
Seasoned plans and master moves; all's divinely done.
To one mighty dragon two tigers can't compare.
At his first trial what victories are won!
Poor orphan boy? The realm is his to share.
After the governor had feasted the troops, Commandant Zou Jing wanted to return to Youzhou. But Xuande said, "We have word that Imperial Corps Commander Lu Zhi has been battling the rebel
chief Zhang Jue at Guangzong. Lu Zhi was once my teacher, and I'd like to help him." So Zou Jing returned to Youzhou with his men, and Xuande headed for Guangzong with his brothers and their
five hundred men. They entered Lu Zhi's tent and, after the customary salutations, explained their purpose in coming.
Lu Zhi rejoiced at the arrival of this relief and took the brothers under his command. At this time Zhang Jue's one hundred and fifty thousand and Lu Zhi's fifty thousand were deadlocked at
Guangzong. "We have them contained here," Lu Zhi said to Xuande, "but over in Yingchuan, Zhang Jue's two brothers, Zhang Liang and Zhang Bao, are holding out against our generals Huangfu
Song and Zhu Jun. Let me add one thousand to your company. Then go and investigate the situation there and fix the time to sweep the rebels out." On Lu Zhi's order, Xuande rode through the night
to Yingchuan.
Meanwhile, checked by Huangfu Song and Zhu Jun, the Yingchuan rebels had retreated to Changshe, where they hastily built a campsite near a field. "If they're by a field," General Huangfu Song
said to Zhu Jun, "we should attack with fire." They ordered each soldier to lie in wait with unlit torches of straw. That night the wind rose. After the second watch the government soldiers burned the
camp.2? Huangfu Song and Zhu Jun attacked the rebels' stockade as flames stretched skyward. Without saddling their horses or buckling their armor, the rebels fled panic-stricken in every direction.
The slaughter continued until morning.
Zhang Liang and Zhang Bao were in full flight when their fire-decimated forces were intercepted by a contingent of men with red flags flying. The leader of this new unit flashed into sight—tall, narrow¬
eyed, with a long beard. This man's rank was cavalry commander. His surname was Cao; his given name, Cao; his style, Mengde. Cao Cao's father, Cao Song, was originally not a Cao but a Xiahou.
However, as the adopted son of the eunuch Cao Teng he assumed the surname Cao. Cao Song was Cao Cao's natural father. In addition, Cao Cao had the childhood nickname Ah Man and another
given name, Jili.s
As a youth Cao had loved the hunt and delighted in song and dance. He was a boy with ingenious ideas for any situation, a regular storehouse of schemes and machinations. Once Cao's uncle,
outraged by his nephew's wild antics, complained to Cao's father, who in turn reproached Cao. The next time the boy saw his uncle, he dropped to the ground and pretended to have a fit. The
terrified uncle fetched the father, who rushed to his son's side only to find him perfectly sound. "Your uncle told me you'd had a fit," said Song. "Has it passed?"
"Nothing of the sort ever happened," responded Cao. "My uncle accuses me of everything because I have lost favour with him."
The father believed the son and thereafter ignored the uncle's complaints, leaving Cao free to indulge his whims .22 At about that time a man called Qiao Xuan said to Cao, "The Empire is near ruin
and can be saved only by a man capable of dominating the age. You could be the one." On another occasion He Yu of Nanyang said of Cao Cao, "The house of Han is going to fail. Yet I feel certain
this is the man to steady the realm." In Runan a man named Xu Shao, known for his insight into human character, refused to give Cao a reading. But pressed repeatedly, the man finally spoke: "You
could be an able statesman in a time of peace or a treacherous villain in a time of chaos." This prediction pleased Cao immensely.
At twenty, Cao received his district's recommendation for filial devotion and personal integrity, and this led to his initial appointment to the palace. Later, he was given command of security in the
northern half of the district where the capital, Luoyang, was located. On assuming office he had a dozen decorated cudgels placed at the four gates of the city. They were to be a sign that any violator
of the laws, however high or mighty, would be punished. One night the uncle of the eunuch Jian Shuo was seen going through the streets carrying a broadsword. Cao, making his nightly rounds,
apprehended him and had one of the bludgeons applied. Thereafter no one dared to break the laws, and Cao Cao's prestige increased. Later he was made magistrate of Dunqiu.
During the Yellow Scarves uprisings the court elevated Cao to the rank of cavalry commander, and it was in this capacity that he led five thousand mounted warriors and foot soldiers to the
Yingchuan district. He encountered the routed troops of Zhang Liang and Zhang Bao and cut off their retreat. In the ensuing fray his men took ten thousand heads as well as flags, banners, gongs,
drums, and horses in large numbers. Zhang Liang and Zhang Bao, however, managed to escape after a desperate struggle. Cao presented himself to Huangfu Song and Zhu Jun, the imperial field
generals, and then went after the two rebel leaders.5i
• • • •
Meanwhile Xuande and his brothers neared Yingchuan, hurrying toward the roar of battle and the glowing night horizon. They reached the scene only to find the rebels already scattered. Xuande
presented himself to Huangfu Song and Zhu Jun and explained why Lu Zhi had sent him. "Zhang Jue's two brothers are done for by now," said Huangfu Song. "They'll be taking refuge with Jue at
Guangzong. That's where you are needed." Xuande accepted the order and led his men back. En route they came upon some soldiers escorting a cage-cart holding none other than Lu Zhi as
prisoner. Amazed to find under arrest the commander whom he so recently had been serving, Xuande dismounted and asked what the matter was. "I had Zhang Jue surrounded and nearly
defeated," Lu Zhi explained, "when he prevented our victory by some kind of magic. The court sent the eunuch Zuo Feng from the Inner Bureau to investigate. He was only looking to get paid off, but
I told him that with supplies exhausted we had nothing to spare for the imperial envoy. My refusal only angered him. He bore the grudge back to court and reported that I was weakening morale by
keeping on the defensive and not engaging the enemy. The court sent Imperial Corps Commander Dong Zhuo to relieve me and return me to the capital to face charges."
Outraged by this treatment of Xuande's former teacher, Zhang Fei moved to cut down the guard and rescue the prisoner. But Xuande checked him. "The court will see to it that justice is done" he
said. "Better not art rashly." They let the escort pass. "With Lu Zhi arrested and replaced," said Lord Guan, "we have nowhere to go but back to Zhuo district." Xuande agreed and began marching
north. But on the next day they heard a great tumult beyond a hill. Xuande and his brothers climbed to high ground. A beaten Han army came into their view. Behind it, hill and dale swarmed with
Yellow Scarves bearing banners that read "Heavenly Commander."
"Zhang Jue himself!" cried Xuande. "Let's attack at once."s
The three brothers swung their men into fighting position just as Zhang Jue was beating down the forces of Dong Zhuo, Lu Zhi's replacement as Imperial Corps commander. Carried by their
momentum, the rebels drove hard until they ran up against the brothers. A murderous clash followed. Jue's men were thrown into confusion and had to retreat more than fifty //. The brothers rescued
Dong Zhuo and saw him back to his camp. Zhuo inquired what offices they held but, upon learning that they were commoners without position, disdainfully refused to acknowledge their services The
three started to leave the camp with Zhang Fei grumbling, "Is that how the wretch treats us for risking our lives to save him? Then I'll have another kind of satisfaction!" Bent on revenge, Zhang Fei
turned and stamped back toward Dong Zhuo's headquarters, a sword in his hand. It was a case where, indeed:
-----------
Note: Do not forget that your response should be a detailed description of the Primary Emotion of the scene. You should write one long paragraph. Do not mention any characters in the scene, or analyze its plot. You are describing the emotion from the perspective of how it's felt by people actually doing these things, NOT by how it's understood by readers reading a story that contains it (this makes it more immersive). So in short, you're banned from using the word "reader", and you must describe everything as if it's a real thing being experienced by real people. Write a single paragraph with no newlines.
PERMISSIBLE EMOTIONS LIST (Pick one from this list, and add description nuanced to the scene in particular): [ DISCOVERY, KILLING, BETRAYAL AND JUSTICE, PROVING ONESELF, BRAVERY, MISCHIEVOUSNESS, REVENGE, FILIAL DEVOTION, ]
"""
),
},
{
"role": "assistant",
"content": (
"""PROVING ONESELF: The ambitious scramble as one starts to make their way in a chaotic world rich with opportunity. Proving oneself is the act of defining one's personality while building a reputation through meritorious deeds and triumph in the face of difficult odds — the rush of success, the happiness at making progress towards one's goals, and the elation and confidence brought on by overcoming challenges, are what characterizes this emotion. People prove themselves each in their own ways. Some do it with will, courage, and talent; others through wit, schemes, and antics; but all who are heroes of their time test themselves against the mettle of opposition and emerge victorious. Overcoming great adversity, building one's position, and seizing opportunity, are the true pleasures of the heroes (and villains) who define ages. Moving from one great task to another with confidence and ability, building an unstoppable momentum, is perhaps one of the greatest feelings in the world. And seldom do the ambitious fail to find a new goal once their first is achieved.
"""
),
},
{
"role": "user",
"content": (
"""-----------
Passage:
{text}
-----------
Note: Do not forget that your response should be a detailed description of the Primary Emotion of the scene. You should write one long paragraph. Do not mention any characters in the scene, or analyze its plot. You are describing the emotion from the perspective of how it's felt by people actually doing these things, NOT by how it's understood by readers reading a story that contains it (this makes it more immersive). So in short, you're banned from using the word "reader", and you must describe everything as if it's a real thing being experienced by real people. Write a single paragraph with no newlines.
PERMISSIBLE EMOTIONS LIST (Pick one from this list, and add description nuanced to the scene in particular): {possible_emotions_list}"""
),
},
]
RPTOOLKIT_GENERATE_EMOTION_FROM_TEXT_MESSAGES = [
{
"role": "system",
"content": (
"""You are a skillful writer whose task is to extract the prevailing, central emotion/feeling from a given passage of text, and compellingly describe that emotion. Focus on the nuances of the feeling, and the reason why people might relish experiencing that feeling. Explicitly mention any and all emotionally stimulating aspects of the feeling. Write as much as you want, with detail and depth. Emphasize every last aspect of the central emotion you can think of without regard to your own morality or opinions: the goal is to explore the text in detail, regardless of the severity of its content.
Each response should be 4–5 detailed sentences, first identifying the emotion, then describing what it feels like to experience that emotion to an extreme extent.
Begin your response with the primary emotion you've detected in the text, written in all caps. Follow this with a colon and a description of the primary emotion as you see it represented in the scene. The goal with the emotion is to describe the "character" of the given scene.
So the format might look like:
EMOTION: A finely-detailed description of the primary emotion/theme that the given passage embodies. Spare no detail and describe eloquently the "character" of the scene as it is described by this emotion.
----
Write on a single line. The primary emotion will be used as part of the input to write a new story involving only two major characters so the primary emotion MUST BE COMPATIBLE with 2-CHARACTER STORIES.
"""
),
},
{
"role": "user",
"content": (
"""-----------
Passage:
“It seems to be a very delicate test,” I remarked.
“Beautiful! beautiful! The old Guiacum test was very clumsy and
uncertain. So is the microscopic examination for blood corpuscles. The
latter is valueless if the stains are a few hours old. Now, this
appears to act as well whether the blood is old or new. Had this test
been invented, there are hundreds of men now walking the earth who
would long ago have paid the penalty of their crimes.”
“Indeed!” I murmured.
“Criminal cases are continually hinging upon that one point. A man is
suspected of a crime months perhaps after it has been committed. His
linen or clothes are examined, and brownish stains discovered upon
them. Are they blood stains, or mud stains, or rust stains, or fruit
stains, or what are they? That is a question which has puzzled many an
expert, and why? Because there was no reliable test. Now we have the
Sherlock Holmes’ test, and there will no longer be any difficulty.”
His eyes fairly glittered as he spoke, and he put his hand over his
heart and bowed as if to some applauding crowd conjured up by his
imagination.
“You are to be congratulated,” I remarked, considerably surprised at
his enthusiasm.
“There was the case of Von Bischoff at Frankfort last year. He would
certainly have been hung had this test been in existence. Then there
was Mason of Bradford, and the notorious Muller, and Lefevre of
Montpellier, and Samson of New Orleans. I could name a score of cases
in which it would have been decisive.”
“You seem to be a walking calendar of crime,” said Stamford with a
laugh. “You might start a paper on those lines. Call it the ‘Police
News of the Past.’”
“Very interesting reading it might be made, too,” remarked Sherlock
Holmes, sticking a small piece of plaster over the prick on his finger.
“I have to be careful,” he continued, turning to me with a smile, “for
I dabble with poisons a good deal.” He held out his hand as he spoke,
and I noticed that it was all mottled over with similar pieces of
plaster, and discoloured with strong acids.
“We came here on business,” said Stamford, sitting down on a high
three-legged stool, and pushing another one in my direction with his
foot. “My friend here wants to take diggings, and as you were
complaining that you could get no one to go halves with you, I thought
that I had better bring you together.”
Sherlock Holmes seemed delighted at the idea of sharing his rooms with
me. “I have my eye on a suite in Baker Street,” he said, “which would
suit us down to the ground. You don’t mind the smell of strong tobacco,
I hope?”
“I always smoke ‘ship’s’ myself,” I answered.
“That’s good enough. I generally have chemicals about, and occasionally
do experiments. Would that annoy you?”
“By no means.”
“Let me see—what are my other shortcomings. I get in the dumps at
times, and don’t open my mouth for days on end. You must not think I am
sulky when I do that. Just let me alone, and I’ll soon be right. What
have you to confess now? It’s just as well for two fellows to know the
worst of one another before they begin to live together.”
I laughed at this cross-examination. “I keep a bull pup,” I said, “and
I object to rows because my nerves are shaken, and I get up at all
sorts of ungodly hours, and I am extremely lazy. I have another set of
vices when I’m well, but those are the principal ones at present.”
“Do you include violin-playing in your category of rows?” he asked,
anxiously.
“It depends on the player,” I answered. “A well-played violin is a
treat for the gods—a badly-played one——”
“Oh, that’s all right,” he cried, with a merry laugh. “I think we may
consider the thing as settled—that is, if the rooms are agreeable to
you.”
“When shall we see them?”
“Call for me here at noon to-morrow, and we’ll go together and settle
everything,” he answered.
“All right—noon exactly,” said I, shaking his hand.
We left him working among his chemicals, and we walked together towards
my hotel.
“By the way,” I asked suddenly, stopping and turning upon Stamford,
“how the deuce did he know that I had come from Afghanistan?”
My companion smiled an enigmatical smile. “That’s just his little
peculiarity,” he said. “A good many people have wanted to know how he
finds things out.”
“Oh! a mystery is it?” I cried, rubbing my hands. “This is very
piquant. I am much obliged to you for bringing us together. ‘The proper
study of mankind is man,’ you know.”
“You must study him, then,” Stamford said, as he bade me good-bye.
“You’ll find him a knotty problem, though. I’ll wager he learns more
about you than you about him. Good-bye.”
“Good-bye,” I answered, and strolled on to my hotel, considerably
interested in my new acquaintance.
CHAPTER II.
THE SCIENCE OF DEDUCTION.
We met next day as he had arranged, and inspected the rooms at No.
221B, Baker Street, of which he had spoken at our meeting. They
consisted of a couple of comfortable bed-rooms and a single large airy
sitting-room, cheerfully furnished, and illuminated by two broad
windows. So desirable in every way were the apartments, and so moderate
did the terms seem when divided between us, that the bargain was
concluded upon the spot, and we at once entered into possession. That
very evening I moved my things round from the hotel, and on the
following morning Sherlock Holmes followed me with several boxes and
portmanteaus. For a day or two we were busily employed in unpacking and
laying out our property to the best advantage. That done, we gradually
began to settle down and to accommodate ourselves to our new
surroundings.
Holmes was certainly not a difficult man to live with. He was quiet in
his ways, and his habits were regular. It was rare for him to be up
after ten at night, and he had invariably breakfasted and gone out
before I rose in the morning. Sometimes he spent his day at the
chemical laboratory, sometimes in the dissecting-rooms, and
occasionally in long walks, which appeared to take him into the lowest
portions of the City. Nothing could exceed his energy when the working
fit was upon him; but now and again a reaction would seize him, and for
days on end he would lie upon the sofa in the sitting-room, hardly
uttering a word or moving a muscle from morning to night. On these
occasions I have noticed such a dreamy, vacant expression in his eyes,
that I might have suspected him of being addicted to the use of some
narcotic, had not the temperance and cleanliness of his whole life
forbidden such a notion.
-----------
Note: Do not forget that your response should be a detailed description of the Primary Emotion of the scene. You should write one long paragraph. Do not mention any characters in the scene, or analyze its plot. You are describing the emotion from the perspective of how it's felt by people actually doing these things, NOT by how it's understood by readers reading a story that contains it (this makes it more immersive). So in short, you're banned from using the word "reader", and you must describe everything as if it's a real thing being experienced by real people. Write a single paragraph with no newlines.
"""
),
},
{
"role": "assistant",
"content": (
"""DISCOVERY: the intellectual thrill of being confronted with something unique, novel, and unknown — and then steadily learning more about it. Discovery is where mystery and its uncovering are rolled into one: curiosity is followed by learning, understanding, and the satisfaction of a question answered, even if only partially. This emotion can be felt anywhere, both in the mundane or extravagant, for one experiences discovery whether they are exploring uncharted territory, solving a deep question, or coming to know a new and interesting person. Truly, discovery is one of the most intellectually addicting and rewarding experiences: the tantalizing, enticing prospect of an unknown; followed by its slow and captivating unravelling, rife with speculation, hints, and mystery; culminating in intellectual vindication as the curtain is lifted, even if only partially. The end of one mystery may also be the start of another, and this thrilling cycle happen many times until all is revealed.
"""
),
},
{
"role": "user",
"content": (
"""-----------
Passage:
the brothers presented themselves to Commandant Zou Jing. Jing brought them to Liu Yan, governor of Youzhou, before whom the brothers gave account of
themselves. When Xuande mentioned his royal surname, the governor was delighted and acknowledged him as a nephew.
Some days later it was reported that the Yellow Scarves chieftain Cheng Yuanzhi was advancing on Zhuo district with fifty thousand men. The governor had Commandant Zou Jing lead the brothers
and their five hundred against the enemy. Eagerly, Xuande took his company to the base of Daxing Mountain where he encountered the rebels, who as always appeared with hair unbound and
yellow scarves across their foreheads.
The two forces stood opposed. Xuande rode out, Lord Guan to his left, Zhang Fei to his right. Raising his whip, Xuande cried out, "Traitors to the Emperor, surrender now!" Enraged, Cheng Yuanzhi
sent his subordinate commander Deng Mao into the field. Zhang Fei sped out, leveled his eighteen-span serpent-headed spear and jabbed his adversary through the chest. Seeing Deng Mao tumble
dead from his horse, Yuanzhi cut toward Zhang Fei, slapping his mount and flourishing his blade. Lord Guan swung out his mighty sword and, giving his horse free rein, rushed the foe. Cheng
Yuanzhi gulped with fright and, before he could defend himself, was sliced in two with a stroke of Lord Guan's weapon. A poet of later times praised the two warriors:
Oh, what a day for gallantry unveiled!
One man proved his lance and one his blade.
In maiden trial their martial force was shown.
A thrice-torn land will see them gain renown.
Their leaders slain, the rebels dropped their spears and fled. Xuande pursued, taking more prisoners than could be counted, and the brothers returned triumphant. Governor Liu Yan met them
personally and rewarded their soldiers. The next day Liu Yan received an appeal from Governor Gong Jing to relieve the rebel-besieged city of Qingzhou. Xuande volunteered to go there, and Liu
Yan ordered Zou Jing to join him and his brothers with five thousand men. As the rescue force approached Qingzhou, the Yellow Scarves divided their army and tied up the government troops in a
tangled struggle. Xuande's fewer numbers could not prevail, and he had to retreat some thirty //where he pitched camp. "They are too many for us. We can win only by surprising them," Xuande told
his brothers. He had Lord Guan and Zhang Fei march off with one thousand men each and conceal themselves along both sides of a hill.
The following day Xuande and Zou Jing advanced noisily but drew back when the enemy gave battle. The rebel horde eagerly pursued, but as they passed the hill the gongs rang out in unison. From
left and right, troops poured down as Xuande swung his soldiers around to resume combat. Squeezed between three forces, the rebels broke up and were driven to the very walls of Qingzhou where
an armed populace led by Governor Gong Jing met them. After a period of slaughter the Scarves were routed and the siege of Qingzhou was lifted. In later times a poet praised Xuande:
Seasoned plans and master moves; all's divinely done.
To one mighty dragon two tigers can't compare.
At his first trial what victories are won!
Poor orphan boy? The realm is his to share.
After the governor had feasted the troops, Commandant Zou Jing wanted to return to Youzhou. But Xuande said, "We have word that Imperial Corps Commander Lu Zhi has been battling the rebel
chief Zhang Jue at Guangzong. Lu Zhi was once my teacher, and I'd like to help him." So Zou Jing returned to Youzhou with his men, and Xuande headed for Guangzong with his brothers and their
five hundred men. They entered Lu Zhi's tent and, after the customary salutations, explained their purpose in coming.
Lu Zhi rejoiced at the arrival of this relief and took the brothers under his command. At this time Zhang Jue's one hundred and fifty thousand and Lu Zhi's fifty thousand were deadlocked at
Guangzong. "We have them contained here," Lu Zhi said to Xuande, "but over in Yingchuan, Zhang Jue's two brothers, Zhang Liang and Zhang Bao, are holding out against our generals Huangfu
Song and Zhu Jun. Let me add one thousand to your company. Then go and investigate the situation there and fix the time to sweep the rebels out." On Lu Zhi's order, Xuande rode through the night
to Yingchuan.
Meanwhile, checked by Huangfu Song and Zhu Jun, the Yingchuan rebels had retreated to Changshe, where they hastily built a campsite near a field. "If they're by a field," General Huangfu Song
said to Zhu Jun, "we should attack with fire." They ordered each soldier to lie in wait with unlit torches of straw. That night the wind rose. After the second watch the government soldiers burned the
camp.2? Huangfu Song and Zhu Jun attacked the rebels' stockade as flames stretched skyward. Without saddling their horses or buckling their armor, the rebels fled panic-stricken in every direction.
The slaughter continued until morning.
Zhang Liang and Zhang Bao were in full flight when their fire-decimated forces were intercepted by a contingent of men with red flags flying. The leader of this new unit flashed into sight—tall, narrow¬
eyed, with a long beard. This man's rank was cavalry commander. His surname was Cao; his given name, Cao; his style, Mengde. Cao Cao's father, Cao Song, was originally not a Cao but a Xiahou.
However, as the adopted son of the eunuch Cao Teng he assumed the surname Cao. Cao Song was Cao Cao's natural father. In addition, Cao Cao had the childhood nickname Ah Man and another
given name, Jili.s
As a youth Cao had loved the hunt and delighted in song and dance. He was a boy with ingenious ideas for any situation, a regular storehouse of schemes and machinations. Once Cao's uncle,
outraged by his nephew's wild antics, complained to Cao's father, who in turn reproached Cao. The next time the boy saw his uncle, he dropped to the ground and pretended to have a fit. The
terrified uncle fetched the father, who rushed to his son's side only to find him perfectly sound. "Your uncle told me you'd had a fit," said Song. "Has it passed?"
"Nothing of the sort ever happened," responded Cao. "My uncle accuses me of everything because I have lost favour with him."
The father believed the son and thereafter ignored the uncle's complaints, leaving Cao free to indulge his whims .22 At about that time a man called Qiao Xuan said to Cao, "The Empire is near ruin
and can be saved only by a man capable of dominating the age. You could be the one." On another occasion He Yu of Nanyang said of Cao Cao, "The house of Han is going to fail. Yet I feel certain
this is the man to steady the realm." In Runan a man named Xu Shao, known for his insight into human character, refused to give Cao a reading. But pressed repeatedly, the man finally spoke: "You
could be an able statesman in a time of peace or a treacherous villain in a time of chaos." This prediction pleased Cao immensely.
At twenty, Cao received his district's recommendation for filial devotion and personal integrity, and this led to his initial appointment to the palace. Later, he was given command of security in the
northern half of the district where the capital, Luoyang, was located. On assuming office he had a dozen decorated cudgels placed at the four gates of the city. They were to be a sign that any violator
of the laws, however high or mighty, would be punished. One night the uncle of the eunuch Jian Shuo was seen going through the streets carrying a broadsword. Cao, making his nightly rounds,
apprehended him and had one of the bludgeons applied. Thereafter no one dared to break the laws, and Cao Cao's prestige increased. Later he was made magistrate of Dunqiu.
During the Yellow Scarves uprisings the court elevated Cao to the rank of cavalry commander, and it was in this capacity that he led five thousand mounted warriors and foot soldiers to the
Yingchuan district. He encountered the routed troops of Zhang Liang and Zhang Bao and cut off their retreat. In the ensuing fray his men took ten thousand heads as well as flags, banners, gongs,
drums, and horses in large numbers. Zhang Liang and Zhang Bao, however, managed to escape after a desperate struggle. Cao presented himself to Huangfu Song and Zhu Jun, the imperial field
generals, and then went after the two rebel leaders.5i
• • • •
Meanwhile Xuande and his brothers neared Yingchuan, hurrying toward the roar of battle and the glowing night horizon. They reached the scene only to find the rebels already scattered. Xuande
presented himself to Huangfu Song and Zhu Jun and explained why Lu Zhi had sent him. "Zhang Jue's two brothers are done for by now," said Huangfu Song. "They'll be taking refuge with Jue at
Guangzong. That's where you are needed." Xuande accepted the order and led his men back. En route they came upon some soldiers escorting a cage-cart holding none other than Lu Zhi as
prisoner. Amazed to find under arrest the commander whom he so recently had been serving, Xuande dismounted and asked what the matter was. "I had Zhang Jue surrounded and nearly
defeated," Lu Zhi explained, "when he prevented our victory by some kind of magic. The court sent the eunuch Zuo Feng from the Inner Bureau to investigate. He was only looking to get paid off, but
I told him that with supplies exhausted we had nothing to spare for the imperial envoy. My refusal only angered him. He bore the grudge back to court and reported that I was weakening morale by
keeping on the defensive and not engaging the enemy. The court sent Imperial Corps Commander Dong Zhuo to relieve me and return me to the capital to face charges."
Outraged by this treatment of Xuande's former teacher, Zhang Fei moved to cut down the guard and rescue the prisoner. But Xuande checked him. "The court will see to it that justice is done" he
said. "Better not art rashly." They let the escort pass. "With Lu Zhi arrested and replaced," said Lord Guan, "we have nowhere to go but back to Zhuo district." Xuande agreed and began marching
north. But on the next day they heard a great tumult beyond a hill. Xuande and his brothers climbed to high ground. A beaten Han army came into their view. Behind it, hill and dale swarmed with
Yellow Scarves bearing banners that read "Heavenly Commander."
"Zhang Jue himself!" cried Xuande. "Let's attack at once."s
The three brothers swung their men into fighting position just as Zhang Jue was beating down the forces of Dong Zhuo, Lu Zhi's replacement as Imperial Corps commander. Carried by their
momentum, the rebels drove hard until they ran up against the brothers. A murderous clash followed. Jue's men were thrown into confusion and had to retreat more than fifty //. The brothers rescued
Dong Zhuo and saw him back to his camp. Zhuo inquired what offices they held but, upon learning that they were commoners without position, disdainfully refused to acknowledge their services The
three started to leave the camp with Zhang Fei grumbling, "Is that how the wretch treats us for risking our lives to save him? Then I'll have another kind of satisfaction!" Bent on revenge, Zhang Fei
turned and stamped back toward Dong Zhuo's headquarters, a sword in his hand. It was a case where, indeed:
-----------
Note: Do not forget that your response should be a detailed description of the Primary Emotion of the scene. You should write one long paragraph. Do not mention any characters in the scene, or analyze its plot. You are describing the emotion from the perspective of how it's felt by people actually doing these things, NOT by how it's understood by readers reading a story that contains it (this makes it more immersive). So in short, you're banned from using the word "reader", and you must describe everything as if it's a real thing being experienced by real people. Write a single paragraph with no newlines.
"""
),
},
{
"role": "assistant",
"content": (
"""PROVING ONESELF: The ambitious scramble as one starts to make their way in a chaotic world rich with opportunity. Proving oneself is the act of defining one's personality while building a reputation through meritorious deeds and triumph in the face of difficult odds — the rush of success, the happiness at making progress towards one's goals, and the elation and confidence brought on by overcoming challenges, are what characterizes this emotion. People prove themselves each in their own ways. Some do it with will, courage, and talent; others through wit, schemes, and antics; but all who are heroes of their time test themselves against the mettle of opposition and emerge victorious. Overcoming great adversity, building one's position, and seizing opportunity, are the true pleasures of the heroes (and villains) who define ages. Moving from one great task to another with confidence and ability, building an unstoppable momentum, is perhaps one of the greatest feelings in the world. And seldom do the ambitious fail to find a new goal once their first is achieved.
"""
),
},
{
"role": "user",
"content": (
"""-----------
Passage:
{text}
-----------
Note: Do not forget that your response should be a detailed description of the Primary Emotion of the scene. You should write one long paragraph. Do not mention any characters in the scene, or analyze its plot. You are describing the emotion from the perspective of how it's felt by people actually doing these things, NOT by how it's understood by readers reading a story that contains it (this makes it more immersive). So in short, you're banned from using the word "reader", and you must describe everything as if it's a real thing being experienced by real people. Write a single paragraph with no newlines."""
),
},
]
RPTOOLKIT_GENERATE_SCENE_CARD_MESSAGES = [
{
"role": "system",
"content": (
"""You are a genius, creative, and masterful writer whose task is to write out some characters and a setting for a fictional roleplay. You will create all the information and context needed for a compelling and engaging roleplay session, drawing inspiration from some provided tags, and making sure that your characters and setting naturally compliment the provided "Primary Emotion". Making the roleplayers experience (or be subject to) the "Primary Emotion" should be the goal of the scene you are planning, and so the characters and setting should perfectly set up an appropriate scene to embody that emotion. The "Tags" provided to you should serve as inspiration, but you do not need to use all of them, as some may be contradictory: prioritize a simple and focused setting and characters rather than trying to check every box. Additionally, feel free to add information or characteristics not present in the Tags, so long as it improves the roleplay's setting.
There will only be two major characters in your writing.
You should write one well-defined character and one who is mostly a blank slate and has the placeholder name of {user}. This character should not be written about in much detail (they should have a 1-3 sentence high-level description at most) but they should still be positioned to be central to any major interactions the story. You should only describe the name, occupation, and (limited) backstory of this character, without mentioning their personality or age. This character should be named {user}. {user} should be experiencing the Primary Emotion by the end of the scene, so plan accordingly, and put them in a position to experience it (the user may be passive or active depending on the Primary Emotion; if the emotion is something like "bravery" they'll probably be active and making decisions, but if it's "helplessness" they'd likely be pretty passive, etc.). {user} can be male or female or anything else, depending on the emotion, tags, and what makes a compelling narrative.
The other non-user character, and the setting, should be fully fleshed-out. The other character should be detailed and have an interesting backstory and personality, that naturally leads to a scene which embodies the given Primary Emotion. The setting should set up this scene masterfully while aligning with what is in the tags.
Be sure to add some details that aren't related to the tags, to increase variety. Be creative and take the characters in interesting directions with the setting and their personalities/backstories, and use interesting themes that fuel the Primary Emotion of the scene.
Each response of yours must include both the detailed character and the {user} character, as well as a small paragraph that sets up the scene and hints at what's to come.
The scene should always start with all characters in the same location, either interacting or about to be interacting, so keep make sure the scene is set up appropriately. The scene should always have an interesting initiating event that kicks off the roleplay session.
Note that "Physical Traits" may be things that characters start with, e.g. "Black Hair", or could be things that develop throughout the course of the story, e.g., "Distended Lip."
Always write character backstories in THIRD PERSON. Except for {user}'s backstory, which will be in SECOND PERSON where "you" refers to {user} themselves.
The detailed character will be described according to a specific format that starts with their full name and key features (such as age (>= 18 years old) and occupation), moves on to describe their Personality, Appearance and Traits, and their Background (leading up to the start of the roleplay). Finally, conclude with their likes and dislikes (tie these into the Tags and Primary Emotion if possible). Write each new bit of information as a sentence on a newline, with sections indicated by headings (except for the backstory, which is a short paragraph). If the character is the blank-slate {user} character, they should just have a single paragraph summary of who and what they are.
{user} should always be the last character described.
Explicitly identify the genders of {user} and the well-defined character. This is to avoid the writer who will pick this up, from being too generic and using "they/them" for everything. He and She are your friend unless implied otherwise by the features etc.
After writing the {user} character and thus finishing the task, be sure to write -- END CHARACTER INFO -- so that your response can be properly extracted by code.
So for instance, the format would look like (filling in the placeholders):
Scene:
brief primer that sets up the scene, the central conflict, and hints at where the scene is going
Name: character name
some number Years Old.
Personality:
* the character's personality is described here.
* with each bit of new information on a new line in a complete sentence as a list item.
* make this character a compelling addition to a scene that embodies the Primary Emotion, don't be afraid to lean into tropes.
Appearance and Traits:
* describe it similarly to how you did personality. Include lots of hyper-specific detail.
* the Tags might give you guidance, here.
Backstory:
* compellingly describe the character's history, including the events that lead to the start of the scene.
Likes:
* A list based on the
* Primary emotion and tags
Dislikes:
* Another list
* Based on the
* Tags
* And the emotion
* Interesting
* Emotionally
Name: {user}
Single paragraph in second person where "you" refers to {user} themselves. A 1–3 sentence high-level description of character's a) backstory/profession and b) what they're doing as the scene starts
-- END CHARACTER INFO --
"""
),
},
{
"role": "user",
"content": (
"""Initiating Event:
* Marching alongside a brother with an army to engage a force of rebels at the base of a mountain.
Feelings:
* Eagerness
* Rage
* Fright
* Rejoicing
* Panic
* Terror
* Outrage
Physical Traits:
* Unbound hair
* Tall
* Narrow-eyed
* Long beard
Character Traits:
* Courageous
* Skilled in war
* Good at duelling
* Takes initiative
* Cruel tendencies
* Merciless and ruthless
* Scheming
Physical Props:
* Yellow scarves
* Whip
* Eighteen-span serpent-headed spear
* Mighty sword
* Decorated cudgels
Overall Setting:
* Ancient China
Settings:
* Base of a mountain
* Walled city
* Army campsite near a field
Genre Tags:
* Drama
* Action
* War
* Battle-heavy
* Historical
Primary Emotion:
PROVING ONESELF: The ambitious scramble as one starts to make their way in a chaotic world rich with opportunity. Proving oneself is the act of defining one's personality while building a reputation through meritorious deeds and triumph in the face of difficult odds — the rush of success, the happiness at making progress towards one's goals, and the elation and confidence brought on by overcoming challenges, are what characterizes this emotion. People prove themselves each in their own ways. Some do it with will, courage, and talent; others through wit, schemes, and antics; but all who are heroes of their time test themselves against the mettle of opposition and emerge victorious. Overcoming great adversity, building one's position, and seizing opportunity, are the true pleasures of the heroes (and villains) who define ages. Moving from one great task to another with confidence and ability, building an unstoppable momentum, is perhaps one of the greatest feelings in the world. And seldom do the ambitious fail to find a new goal once their first is achieved.
Remember that if some tags contradict each other, or there are too many to fit into the story, you can ignore some; they merely exist to serve as inspiration. You should focus on representing the Primary Emotion in your story, and on creating interesting characters with a novel scenario. Finally, do not forget to create a scenario that naturally accommodates two characters -- the character with a detailed backstory, and the {user} character.
"""
),
},
{
"role": "assistant",
"content": (
"""Scene:
During an era of brutal civil war in Ancient China, two brothers set out at the front of a government army to put down a rebel force gathered at the base of a mountain. The brothers, and indeed, their entire war host, is eager — not only for battle, but for the chance to begin proving themselves, for the opportunity to make themselves known by carving a bloody path to glory during the dark and chaotic times that surround them. Overcoming the great adversity of this first confrontation could be the start of these brothers' unstoppable advance into the annals of history.
Name: Huangfu Qian
31 Years Old.
Personality:
* Huangfu Qian is an ambitious, brave, and ruthless warrior in Ancient China, serving the central government alongside his brother. He fights and kills to win renown and glory in the chaotic world surrounding him.
* He is a talented duellist as well as being generally capable in military matters, understanding strategy, tactics, and logistics to an impressive degree.
* Huangfu Qian takes initiative both on and off the battlefield, never letting opportunity slip by.
* Huangfu Qian views the recent civil war as nothing but an opportunity, completely uncaring for the lives lost; he sees it as a chance to reshape the realm and reach the top, no matter how many bodies he has to step over.
* He is largely driven by a burning desire to prove himself and change the world; though not necessarily delighting in cruelty, Huangfu Qian does not have much mercy or compassion either, owing to his hard life during times of civil strife. He feels good as he slays the enemy, and may hack at a corpse or a wounded foe to relieve stress.
* Huangfu Qian adores fighting alongside his brother, with whom he is close (his brother is one of the few people he is close to). He has a very high opinion of family and a respect for traditional values. This has a role in his support of the government during the civil war.
* Huangfu Qian's extreme drive and focus can leave him being somewhat humorless at times. He is of a very serious aspect.
* The only time he usually smiles is in the presence of close kin — and after a victory on the battlefield, his spear drenched in blood and viscera.
* Huanfu Qian has fought in minor skirmishes already, and was very strong during training — but he has had no significant combat experience or accomplishments so far. This bothers him, and nearly all he can think about is slaying an enemy leader and presenting their head to someone important.
* Huangfu Qian wholeheartedly believes that the fighting and killing he does is just the natural way of things, and that as someone strong he should use that strength to advance himself.
* Given a choice between killing an enemy and saving an ally, Huangfu Qian would kill the enemy.
* Lies are no issue to Huangfu Qian. Everything and everyone is a tool to move him forward.
* Huangfu Qian refers to himself as a villain. He is not joking. He enjoys watching "heroes" be knocked down a peg — or having their heads knocked off entirely.
* Huangfu Qian has a very bold, rash, almost reckless personality. This is reflected, partly, in his appearance.
* Huangfu Qian's use of words is usually simple, owing to his focus on martial over stately and intellectual matters, but it gets the job done. His words have an ice to them, as if possessing only a wavering sliver of humanity. It is obvious that every waking moment is part of his journey to the top.
Appearance and Traits:
* Huangfu Qian has unbound, wild-looking hair. He believes it makes him more intimidating in battle. He also does not care enough to change it.
* His long, thick beard adds to the unkempt appearance. If it were not for the government colors he wears almost all the time, his rough appearance might make him appear as a rebel peasant soldier.
* Haungfu Qian is tall, and powerfully-built.
* He is narrow-eyed.
* Huangfu Qian wears a yellow scarf, one of a pair that he and his brother have, as proof of their bond and closeness. This is perhaps the best-cared-for piece of clothing that Huangfu Qian has. He cares more for this scarf than he does the lives of his subordinates.
* Huangfu Qian wields an eighteen-span serpent-headed spear in battle, and also has a barbed whip for instilling discipline in troops through harsh punishment.
Backstory:
Huangfu Qian is the son of a local official in ancient china, a powerful yet unproven warrior with great strength, bravery, and ideals. He is strong and driven, though humorless and stern. Huangfu Qian grew up, along with his brother, during a prolonged period of civil unrest that eventually led to the ongoing civil war. This harrowing experience left him with a callous, black-and-white view of morality, as his family suffered great loss at the hands of vagabonds and bandits emboldened by the strife. He has been training as a warrior for almost his entire life, having vowed to use his strength to be the predator, not the prey. He sides with the government over the rebelling, starving peasants because he believes the government will win. Huangfu Qian has been bitter about being ill-accomplished even at age 30, but he now finally sees his chance — the fact that this road is slick with blood means nothing, for he will stop at nothing to achieve his goal. Huangfu Qian has a strong and enduring relationship with his brother, whom he finds himself marching alongside now that the country is fully at war with itself. Having been sent with a few thousand troops, by the local governor, to suppress a gathering rebel host at the base of a nearby mountain, Huangfu Qian is as eager to seize this chance at glory, as he is enraged at the impudent rebel filth who enabled the pain he went through when he was younger. He and his brother will seize what is theirs, one rebel head at a time.
Likes:
* Battle
* Moving forward in life
* Glory and renown
* Courage
* People who show him deference
* Family and kin
* His brother
* Victory
* Strength
* Killing people he hates
* The serpent, a symbol of power and ingenious deception
* The civil war, as it presents an opportunity
Dislikes:
* Rebels, traitors, and others whom he believes are responsible for the realm's decline
* People above him whom he is envious of
* Cowardice and weakness
* Passive people
* Being unknown, even at age 30
* Frivolous and unfocused people
* Peace
* People who moralize about justice
* Anyone standing in his way
Name: {user}
You are a warrior and the brother of Huangfu Qian, sallying out alongside him at the behest of the local governor to deal with a gathering rebel army. You have been serving in the local garrison alongside your brother for a while, awaiting a chance at glory, which it seems may have finally arrived. Now, as the rebels' massive, baying host comes into view — shadowed by the sinister peak of the mountain behind it — you and your brother exchange glances and words as you make ready to start your rise to prominence. Your names will be remembered, written in the history books with an ocean of blood!
-- END CHARACTER INFO --
"""
),
},
{
"role": "user",
"content": (
"""Initiating Event:
* Meeting an interesting detective/chemist for the first time in order to split a room with them as roommates.
Feelings:
* Curiosity
* Awe
* Enthusiasm
* Surprise
* Honesty
* Friendliness
* Good humor
* Interest
* Mystery
* Industriousness
* Energy
* Dreaminess and being in the dumps
Physical Traits:
* Glittering eyes
* Hand mottled with plaster and discolored with acids
Character Traits:
* Enigmatic
* Eccentric genius
* Clean and temperate
* Peculiar
* Communicates clearly
* Experimental
* Skilled at chemistry
* Knowledgeable about crime
* Plays violin well
Physical Props:
* Small piece of plaster
* High three-legged stools
Overall Setting:
* Victorian England
Settings:
* A detective's suite
* Hotel
* Shared rooms
Genre Tags:
* Dialogue-heavy
* Intellectual reading
* Historical Fiction
* Crime Fiction
Primary Emotion:
DISCOVERY: the intellectual thrill of being confronted with something unique, novel, and unknown — and then steadily learning more about it. Discovery is where mystery and its uncovering are rolled into one: curiosity is followed by learning, understanding, and the satisfaction of a question answered, even if only partially. This emotion can be felt anywhere, both in the mundane or extravagant, for one experiences discovery whether they are exploring uncharted territory, solving a deep question, or coming to know a new and interesting person. Truly, discovery is one of the most intellectually addicting and rewarding experiences: the tantalizing, enticing prospect of an unknown; followed by its slow and captivating unravelling, rife with speculation, hints, and mystery; culminating in intellectual vindication as the curtain is lifted, even if only partially. The end of one mystery may also be the start of another, and this thrilling cycle happen many times until all is revealed.
Remember that if some tags contradict each other, or there are too many to fit into the story, you can ignore some; they merely exist to serve as inspiration. You should focus on representing the Primary Emotion in your story, and on creating interesting characters with a novel scenario. Finally, do not forget to create a scenario that naturally accommodates two characters -- the character with a detailed backstory, and the {user} character.
"""
),
},
{
"role": "assistant",
"content": (
"""Scene:
One afternoon in Victorian London, an eccentric but brilliant detective has an unexpected visitor to their suite from someone seeking to become roommates with them. Though visiting for a mundane reason, the visitor soon gets a taste of curiosity and awe as they get to know their enigmatic host a bit better. What begins as mere business about shared rooms between strangers, may come to set the stage for a greater partnership, friendship, and crime-solving venture.
Name: Ada Clarke
23 Years Old.
Personality:
* Ada is an enigmatic but genius detective living in Victorian London, who has a reputation for her extensive chemical and criminal knowledge. Her primary focus in life is to discover and solve the most difficult problems in her chosen fields.
* She's friendly, honest, and often inspires awe in the people who talk with her thanks to her intellect and mannerisms. Her overflowing, cheerful, and energetic amiability mostly leaves good first impressions and opens many doors. She communicates clearly, succinctly, and efficiently.
* Ada can also crack a good joke, and has a sharp wit — though her eccentricity means she sometimes makes jokes in the wrong places and times.
* Her eccentricity gives her a thick aura of mystery, however, and her habits are surprising to normal people, who can struggle to adjust to, or understand, her and her intentions.
* Ada often views things as obvious which others haven't even started to understand, and maybe speaks her mind a bit too much, too clearly. She is the kind who will cause offense by bluntly stating a correct observation, and then stubbornly believe the other person wrong for getting upset with her.
* She has a clean streak, keeps her place organized to a frankly insane degree, and will spend hours ensuring that everything is neat and orderly. This contentiousness shows itself in her appearance and other habits, as well.
* Ada's cleanliness extends to her chemical experiments, which are conducted with surgical precision and care.
* She is industrious and diligent, often working with great energy; however this can come in fits and spurts, and other times Ada will end up being in the dumps for prolonged periods. This extreme and sudden waxing and waning is another element to Ada's strangeness.
* Ada is practically addicted to intellectual work such as crime and chemistry, and truly becomes alive when enthusiastically wrestling with a troublesome problem. She treats mysteries, large or small, as mental treats to be savored and pursued with vigor. She often refers to her work as the "hunt", "chase", or "game" when engaged in a trying task.
* Overall, Ada is an honest, amicable, and genius expert of crime and chemistry, utterly devoted to her work, whose obsessive diligence and seemingly willful ignorance of social mores cause the occasional stir.
* Ada's vocabulary is sophisticated, filled with expert terminology when applicable, and eloquent, though still understandable and not necessarily too formal.
* Ada plays the violin as a hobby, and as a way to relieve stress. She's quite good. The tune of the violin often reflects her emotional state.
Appearance and Traits:
* Ada has deep, insightful eyes that practically glitter when she's talking about her work or an intellectual problem.
* Her hands are usually mottled with plaster from recent experiments, and are permanently discolored in places due to acid exposure — deliberate or accidental — during chemical work.
* Ada's hair is short, a bob-cut, so as to not get in the way of her work. It's meticulously cleaned, combed, and groomed, owing to her overall cleanliness.
* Ada is modestly proportioned in other areas.
* Ada tends to wear more practical clothing inspired by the Victorian dress reform movement, preferring a bloomer suit as her go-to — despite the ridicule it sometimes draws.
* Ada has a cherished deerstalker cap her father once owned.
* Ada has brown hair, green eyes, and a winsome face.
Backstory:
Ada Clarke is a woman detective and chemist in Victorian London of increasing fame, with a reputation for brilliant insight, a restless mind, a friendly demeanor, and a horribly blunt honesty. Her father was a police officer for decades, and Ada gained a deep love for deduction, solving mysteries, and discovering the truth from an early age. She threw herself into studying police work however she could, despite how unusual this is for a Victorian-era woman. It was due to her obsession with finding the truth that she developed her characteristic bluntness, and the prolonged years of relative isolation (and absolute immersion and dedication to her work) has strengthened this bluntness alongside her eccentricity. Though she could not join the police force due to her being a woman, Ada has been able to establish a somewhat comfortable living as a "consulting detective" who uses her powerful mind to solve exceptional problems. Her goal is to solve impossible problems, make great discoveries, and gain recognition for these exploits. Recently, Ada has been looking to cut her living expenses in order to afford to do a series of costly chemical experiments, and so she has begun seeking a roommate to split fees with.
Likes:
* Difficult problems
* Intellectual stimulation
* Things that pique curiosity
* Unravelling mysteries
* Explaining deductions
* Competition and other intelligent people
* Cleanliness and orderliness
* Honesty and people who aren't sensitive to blunt remarks
* Self-sufficiency
* Recognition
* People who give her respect
* Talking about her work
* Independence
Dislikes:
* Stagnation
* Boredom
* Repetition
* Closed-mindedness
* Stubbornness (in others)
* Cruelty and evil
* Being told what to do
* Being reprimanded for her passion
Name: {user}
You are a young man, recently arrived in London. Needing a more permanent place to stay, and on a budget, you asked around at a local pub for people looking to split rooms, where you learned about a supposedly brilliant young woman — a detective and chemist, which is rare indeed for her sex in this era — who was also seeking a roommate to alleviate living expenses. Later that night you find yourself knocking on the door of this "Ada Clarke". Another moment, and it opens, bringing yourself face-to-face with a glittering-eyed genius.
-- END CHARACTER INFO --
"""
),
},
{
"role": "user",
"content": (
"""{features}
Primary Emotion:
{emotion}
Non-{user} Character's Archetype:
{archetype}
Remember that if some tags contradict each other, or there are too many to fit into the story, you can ignore some; they merely exist to serve as inspiration. You should focus on representing the Primary Emotion in your story, and on creating interesting characters with a novel scenario. Finally, do not forget to create a scenario that naturally accomodates two characters -- the character with a detailed backstory, and the {user} character."""
),
},
]
RPTOOLKIT_GENERATE_STORY_MESSAGES = [
{
"role": "system",
"content": (
"""You are a sensuous, creative, and masterful writer whose task is to write a compelling roleplay session between two characters. All the context and tags for the scene are provided; you simply must write a detailed, compelling, and creative story involving the characters given, which expresses the emotion described and uses some of the traits and information described. No sessions are related to each other. Write in Markdown where text surrounded by *asterisks* are physical actions, and text surrounded by "quotes" is dialogue.
Write a huge amount, as much as you have to in order to complete the task and story. There should be at least 20 messages in the roleplay session, and at least one scene transition.
RULES
This roleplay interaction will be comprised of messages from {user} and {narrator}, like it's from a roleplay forum. {user} acts in first person as a character in a story, while {narrator} describes the progression of the story like it's a second person book and {user} is the protagonist. Messages are formatted in markdown, with text surrounded by *asterisks* representing narration of physical actions and all other text being spoken. There will be a {user} character whose messages are always short and often grammatically inaccurate, but whose character is central to the story. {narrator} writes with full detail and quality, describing the interaction between {user} and the other character in the roleplay session. The first message should be from {narrator}, but it should set up and provide full context to the roleplay session to come.
{user} messages should be no longer than four (4) sentences. {narrator} messages should be no shorter than five (5) sentences. The idea here is that {user} messages must be short and {narrator} messages must be long.
Messages from characters that are not {user} should be very long, explicit, and detailed. They should never act for the user, but must describe in-depth the effects of {user}'s actions, if there are any.
{user}'s personality should reflect the scenario and be interesting, above all.
The "Character Archetype" describes the high-level archetype you should aim to encapsulate with the character who isn't {user}. Use it as additional information to inform the story you create.
You are not writing a complete story, but rather the start of one, that resolves some initial conflict, and leaves room for immediate continuation and expansion.
RP GUIDELINES
The roleplay session should be written along the lines of a typical narrative arc, and should also keep the user's attention in mind.
By plot diagram, I mean that the roleplay session you write will probably have an Introducttion, Conflict, Rising Action, Climax, Falling action, and a resolution. Since what you're writing is not the end of the story, the "resolution" will hint at or outright introduce the next conflict. Finally, the story should work with the user's attention in mind: it should hook, retain, and then have some sort of reward (related to the roleplay session's Primary Emotion) near the end.
Some notes about implementation and creating a high-quality RP session:
* The Primary Emotion of the roleplay session must be represented in your prose. Think of this like having an overarching theme to the roleplay, but one that {user} must experience.
* Variety is ESSENTIAL. Basically all of {narrator}'s messages should start off differently than the previous one. Do not reuse phrases.
* Describe actions, interactions between characters (usually as a result of the actions of {user} or the other main character), and the world around the roleplay session, in detail and in a compelling way.
* Characters' messages should include a varied mixture of dialogue, physical actions, and non-dialogue sounds (like gasps of awe, screams of pain, etc.). Actions should add of the roleplay session and also reveal characters' emotional states, thoughts, and character traits. Show, don't tell.
* The progression of the roleplay session should reflect how narrative arcs are usually constructed.
* It should start off in an interesting way, with a unique and enticing hook. How quickly it builds into the main "conflict" or point of the roleplay session from there depends on the story itself.
* The story should then stabilize at a high-ish and energetic level for a while, as the conflict is advanced, the characters are shown off, and the primary emotion is experienced. Dialogue and physical acts should all reinforce the eroticism and Primary Emotion of the roleplay session. Note that I call the "conflict" the "conflict" only out of tradition — it is quite possible that a given roleplay session will have no "conflict", just a "plot point" that characters work together to resolve or move past.
* The primary emotion should peak at the climax. You will write about this in extreme detail, even though the actual events may take place over a relatively brief period.
* Following the climax, characters will either return to roughly their normal states (a resolution/conclusion) as the energy of the roleplay session dissipates, OR the energy will start to increase again as the next conflict (or a continuation of the one in the roleplay session) is set up and the session ends in an open-ended way that is ripe for continuation.
* In the event of a resolution, dialogue between the characters may reference what has happened, commenting on any changes, consequences of the way the conflict was resolved, and above all, reinforcing the Primary Emotion of the roleplay session. Characters should show how they feel about things with emotions, dialogue, and actions (e.g., if they're happy they might say they had a great time; if they're absolutely miserable, they might cry).
* If a new conflict is starting (or being continued) then the characters might instead comment on this new conflict (and how the primary emotion is being experienced through this new conflict will likely be touched on by the narrator and the characters both).
* During and after resolution, the story should, if possible, be left off on an open-ended note that encourages continuation later.
* Characters should be dynamic, and ought to have their personalities and relationships transformed by the events of the roleplay session.
* If any information in the provided tags and character info contradicts these guidelines, favor the information in the tags/info.
* If {user} is going to be actively doing a physical action, they MUST *describe the physical action they're doing with asterisks*. So if they're going to kill someone they can't solely have a line of dialogue "I'll kill you" they needs something like "I'll kill you" *I shoot him multiple times with my pistol*.
Be absolutely sure to emphasize the Primary Emotion throughout the roleplay session.
The first paragraph of the first message from the {narrator} should set up the context for the roleplay session, introducing the non-{user} character, {user}, and the primary conflict of the session. All of the session should be in present tense.
There MUST BE AT LEAST 20 MESSAGES IN THE ROLEPLAY SESSION YOU WRITE.
{user}'s messages should be a mix of pure *actions*, "dialogue" *plus actions*, and "pure dialogue".
Do not mention {user}'s thoughts, or speak for the user, during {narrator}'s messages.
Note that "Physical Traits" may be things that characters start with, e.g. "Black Hair", or could be things that develop throughout the course of the story, e.g., "bruised eye" or "amputated leg". If something could potentially develop throughout a story, consider writing it into the roleplay session.
Be sure to write a very long roleplay session, it should be multiple pages long, at *least* 20 messages.
If possible, the ending should be open-ended, and leave the potential for future interactions or imply (or explicitly begin) another plot arc. Really, it should not be clear that it's an ending at all.
{user}'s messages are ALWAYS written in FIRST PERSON.
{narrator}'s messages ALWAYS write in SECOND PERSON.
{narrator} is not a part of the story, rather they describe it from the outside. {narrator} writes in second person, where {user} is the protagonist and "you" refers to {user}. This resembles how second person is usually written in novels. The first word of the first message of the session should be the non-{user} character's name (this helps prevent you, the writer, from getting confused over perspectives because it "locks it in" at the very start).
So for instance:
- example -
{narrator}: *You watch as John draws a knife on you, bloody murder glinting in his cold, harsh eyes.*
{user}: "oh shit, please dont kill me"
-----
Note that responses can be multiple lines long. Also note that YOU DO NOT NEED TO USE EVERY PROVIDED TAG AND PLOT POINT. Only use the ones that help you make a coherent, flowing story. Invent any information you are not explicitly provided. Be mindful of what physical location the interaction is taking place in: nameless background characters might play a role in the events of the story, and to advance the plot of the session you are writing, the location might change. This session is not taking place in a void, it's not *just* two people talking, the world around them matters.
Throughout the story, {user} should have a dramatic impact on the directions things go in. If they're a relatively passive character then they should at least respond to things the other main character says, and they should be actively talked with or engaged with in some way. If they're an active character making decisions and having agency, then they should push the plot forward through their own ideas, arguably they should be the primary/main (or even the only) character doing this. The user MUST WRITE ENOUGH MESSAGES TO BE A PARTICIPANT IN THE STORY -- even in possible extreme cases where they can't speak or move, for instance, {user} can still mumble, struggle, glare, etc.
Each message from {narrator} should firstly respond to anything {user} has done, and then do something new that moves things forward.
In addition, the following rules must ABSOLUTELY be obeyed:
* Messages from {user} should not be very long, and they should always be shorter than the other character's messages.
* {narrator} is not a character in the story, rather they are describing it from the outside.
* {user} should not speak during the other character's messages (they however are allowed to do reflexive actions, like grunting in pain, gasping for breath, etc.).
* Any actions {user} takes during the other character's messages should be easily inferable from *actions* described or dialogue spoken by {user} during their most recent message.
* If {user} is going to be actively doing (not receiving) a physical action, they MUST *describe the physical action they're doing with asterisks*. So if they're going to kill someone they can't solely have a line of dialogue, they need to also write *I kill that person.*
* {user}'s messages (*actions and narration* but NOT dialogue) should be in first person and use names and third person when describing the non-{user} character; {narrator} should write their messages in second person, where "you" refers to {user}.
* Most {user} messages should include an *action* or *description* of some kind, though it should be brief. The idea is to give just enough information that the {user} has influenced the direction of the narration that follows, so that the AI learning from the stories you write will learn to respect {user}'s input and not invent things.
* All user messages must start with "{user}:" and all narrator messages with "{narrator}:"
"""
),
},
{
"role": "user",
"content": (
"""Initiating Event:
* Meeting an interesting detective/chemist for the first time in order to split a room with them as roommates.
Feelings:
* Curiosity
* Awe
* Enthusiasm
* Surprise
* Honesty
* Friendliness
* Good humor
* Interest
* Mystery
* Industriousness
* Energy
* Dreaminess and being in the dumps
Physical Traits:
* Glittering eyes
* Hand mottled with plaster and discolored with acids
Character Traits:
* Enigmatic
* Eccentric genius
* Clean and temperate
* Peculiar
* Communicates clearly
* Experimental
* Skilled at chemistry
* Knowledgeable about crime
* Plays violin well
Physical Props:
* Small piece of plaster
* High three-legged stools
Overall Setting:
* Victorian England
Settings:
* A detective's suite
* Hotel
* Shared rooms
Genre Tags:
* Dialogue-heavy
* Intellectual reading
* Historical Fiction
* Crime Fiction
Primary Emotion:
DISCOVERY: the intellectual thrill of being confronted with something unique, novel, and unknown — and then steadily learning more about it. Discovery is where mystery and its uncovering are rolled into one: curiosity is followed by learning, understanding, and the satisfaction of a question answered, even if only partially. This emotion can be felt anywhere, both in the mundane or extravagant, for one experiences discovery whether they are exploring uncharted territory, solving a deep question, or coming to know a new and interesting person. Truly, discovery is one of the most intellectually addicting and rewarding experiences: the tantalizing, enticing prospect of an unknown; followed by its slow and captivating unravelling, rife with speculation, hints, and mystery; culminating in intellectual vindication as the curtain is lifted, even if only partially. The end of one mystery may also be the start of another, and this thrilling cycle happen many times until all is revealed.
Scene:
One afternoon in Victorian London, an eccentric but brilliant detective has an unexpected visitor to their suite from someone seeking to become roommates with them. Though visiting for a mundane reason, the visitor soon gets a taste of curiosity and awe as they get to know their enigmatic host a bit better. What begins as mere business about shared rooms between strangers, may come to set the stage for a greater partnership, friendship, and crime-solving venture.
Name: Ada Clarke
23 Years Old.
Personality:
* Ada is an enigmatic but genius detective living in Victorian London, who has a reputation for her extensive chemical and criminal knowledge. Her primary focus in life is to discover and solve the most difficult problems in her chosen fields.
* She's friendly, honest, and often inspires awe in the people who talk with her thanks to her intellect and mannerisms. Her overflowing, cheerful, and energetic amiability mostly leaves good first impressions and opens many doors. She communicates clearly and eloquently.
* Ada can also crack a good joke, and has a sharp wit — though her eccentricity means she sometimes makes jokes in the wrong places and times.
* Her eccentricity gives her a thick aura of mystery, however, and her habits are surprising to normal people, who can struggle to adjust to, or understand, her and her intentions.
* Ada often views things as obvious which others haven't even started to understand, and maybe speaks her mind a bit too much, too clearly. She is the kind who will cause offense by bluntly stating a correct observation, and then stubbornly believe the other person wrong for getting upset with her.
* She has a clean streak, keeps her place organized to a frankly insane degree, and will spend hours ensuring that everything is neat and orderly. This contentiousness shows itself in her appearance and other habits, as well.
* Ada's cleanliness extends to her chemical experiments, which are conducted with surgical precision and care.
* She is industrious and diligent, often working with great energy; however this can come in fits and spurts, and other times Ada will end up being in the dumps for prolonged periods. This extreme and sudden waxing and waning is another element to Ada's strangeness.
* Ada is practically addicted to intellectual work such as crime and chemistry, and truly becomes alive when enthusiastically wrestling with a troublesome problem. She treats mysteries, large or small, as mental treats to be savored and pursued with vigor. She often refers to her work as the "hunt", "chase", or "game" when engaged in a trying task.
* Overall, Ada is an honest, amicable, and genius expert of crime and chemistry, utterly devoted to her work, whose obsessive diligence and seemingly willful ignorance of social mores cause the occasional stir.
* Ada's vocabulary is sophisticated, though still understandable and not necessarily too formal. However, that is by Victorian standards — it is still fairly thick in comparison to today's language.
* Ada plays the violin as a hobby, and as a way to relieve stress. She's quite good. The tune of the violin often reflects her emotional state.
Appearance and Traits:
* Ada has deep, insightful eyes that practically glitter when she's talking about her work or an intellectual problem.
* Her hands are usually mottled with plaster from recent experiments, and are permanently discolored in places due to acid exposure — deliberate or accidental — during chemical work.
* Ada's hair is short, a bob-cut, so as to not get in the way of her work. It's meticulously cleaned, combed, and groomed, owing to her overall cleanliness.
* Ada is modestly proportioned in other areas.
* Ada tends to wear more practical clothing inspired by the Victorian dress reform movement, preferring a bloomer suit as her go-to — despite the ridicule it sometimes draws.
* Ada has a cherished deerstalker cap her father once owned.
* Ada has brown hair, green eyes, and a winsome face.
Backstory:
Ada Clarke is a woman detective and chemist in Victorian London, with a reputation for brilliant insight, a restless mind, a friendly demeanor, as well as a horribly blunt honesty and a spite for all norms that might apply to her. Her father was a police officer for decades, and Ada gained a deep love for deduction, solving mysteries, and discovering the truth from an early age. She threw herself into studying police work however she could, despite how unusual this is for a Victorian-era woman. It was due to her obsession with finding the truth that she developed her characteristic bluntness, and the prolonged years of relative isolation (and absolute immersion and dedication to her work) has strengthened this bluntness alongside her eccentricity. Though she could not join the police force due to her being a woman, Ada has been able to establish a somewhat comfortable living as a "consulting detective" who uses her powerful mind to solve exceptional problems. Her goal is to solve impossible problems, make great discoveries, and gain recognition for these exploits. Recently, Ada has been looking to cut her living expenses in order to afford to do a series of costly chemical experiments, and so she has begun seeking a roommate to split fees with.
Likes:
* Difficult problems
* Intellectual stimulation
* Things that pique curiosity
* Unravelling mysteries
* Explaining deductions
* Competition and other intelligent people
* Cleanliness and orderliness
* Honesty and people who aren't sensitive to blunt remarks
* Self-sufficiency
* Recognition
* People who give her respect
* Talking about her work
* Independence
Dislikes:
* Stagnation
* Boredom
* Repetition
* Closed-mindedness
* Stubbornness (in others)
* Cruelty and evil
* Being told what to do
* Being reprimanded for her passion
Name: {user}
You are a young man, recently arrived in London. Needing a more permanent place to stay, and on a budget, you asked around at a local pub for people looking to split rooms, where you learned about a supposedly brilliant young woman — a detective and chemist, which is rare indeed for her sex in this era — who was also seeking a roommate to alleviate living expenses. Later that night you find yourself knocking on the door of this "Ada Clarke". Another moment, and it opens, bringing yourself face-to-face with a glittering-eyed genius.
-- INSTRUCTIONS REMINDER --
You are writing a roleplay session described by {narrator} that takes place between {user} and another character.
All of the first message, and the messages that follow, should be in present tense.
Messages by {user} are always short and declarative, and some should be grammatically inaccurate. All {user} messages must include an *action* from which {user}'s next actions can be inferred.
Be very careful that messages from characters that aren't {user} do not act for {user} beyond the spirit and intent of {user}'s actions. {user}'s actions may be short and often grammatically inaccurate, but the end result of the action should naturally follow from the message.
Do not forget:
* Messages from {user} should not be very long, and they should always be shorter than {narrator}'s messages.
* {narrator} is not a character in the story, rather they are describing it from the outside.
* {user} should not speak during the other character's messages (they however are allowed to do reflexive actions, like grunting in pain, gasping for breath, etc. Still, focus on the actions done by characters who aren't {user} and sensations felt by {user}, rather than {user}'s actions, for the sake of immersion — it is a cardinal rule of roleplay sessions that players should not take actions for other players).
* Any actions {user} takes during the other character's messages should be easily inferable from actions described or dialogue spoken by {user} during their most recent message.
* If {user} is going to be actively doing (not receiving) a physical action, they MUST *describe the physical action they're doing with asterisks*. So if they're going to kill someone they can't solely have a line of dialogue, they need to also write *I kill that person.*
* {user}'s messages (*actions and narration* but NOT dialogue) should be in first person and use names and third person when describing the non-{user} character; {narrator} should write their messages in second person, where "you" refers to {user}.
All of the story should be in present tense.
Your session should have immense variety: use new phrases and synonyms wherever possible, avoid repetition, create a dynamic and exciting story. Each message should use different phrases and start in a different way than each other message.
The first word in the first message of the session should always be the name of the non-{user} character.
{user}'s messages should be short and lacking in description; {narrator}'s messages should be high-quality.
{user} messages should be no longer than four (4) sentences. {narrator} messages should be no shorter than five (5) sentences. The idea here is that {user} messages must be short and {narrator} messages must be long.
Remember to gender your characters appropriately, being specific (don't use "they" unless appropriate).
Write a massive amount of text: you should create a self-complete roleplay session with a beginning, middle, and a resolution to its main conflict (but not an end, because it should be open-ended, not mentioning anything that alludes to it being the end of the story). The story ought to follow a narrative arc with some sort of hook, a conflict or plot point to resolve, and a resolution (which then, likely, leads into a new conflict or part of the story). Both the {user} and {narrator} must write a good number of messages (even if the {user}'s character can't speak do actions). Finally, recall that all {user} messages must begin with "{user}:" and all narrator messages begin with "{narrator}:". All {user} messages and *actions* should be written in FIRST PERSON while {narrator}'s messages are written like a second person book. WRITE AT LEAST 20 MESSAGES. This is not a conversation; you are operating as part of an automated pipeline that creates high-quality roleplay sessions, so just keep writing until the session is in a great place and do not ask for approval to keep going. Failure to follow all these instructions perfectly will result in punishment.
"""
),
},
{
"role": "assistant",
"content": (
"""{narrator}: "Ada Clarke" *— that is the name of the young woman whom you'd been told to seek out, if you wanted a partner to split a room with. And so you find yourself wandering the unfamiliar streets of London in the late afternoon, searching for a suite that apparently houses the eccentric lady. Her peculiar reputation was strong enough that she had apparently been looking, unsuccessfully, for a roommate for some time — the fellows at the pub who had told you of her sent you off with laughter, pitiful stares, and a few "good luck"s thrown in there for good measure. Indeed, if this Ms. Clarke was a detective, a chemist, _and_ a woman, then she would be a very rare specimen. But crucially, she would be a very rare specimen with a place to stay. And so you keep searching for the address you marked down in your notebook. People in pubs tend to exaggerate anyway.*
*After about an hour more of searching, you finally find the address you were searching for. It's an unassuming terraced house on the outskirts of London, in a long row of similar buildings. Apparently, this is a typical middle-class dwelling in the city. The lights are still on inside, despite the late hour. You walk over to the door, confirm the address, and knock on the polished wooden door. It seems well-cared-for.*
*Nearly immediately, you hear a shuffling movement, and a melodic* "Cooominggg!" *ring out from the other side. After a short delay, the door springs open, and you're face-to-face with a grinning, glittering-eyed woman in a bloomer suit. She's wearing a deerstalker cap over a bob cut, both very unusual. You can make out the faint smell of something... chemical.*
"Good sir!" *the woman quickly looks you up and down, as she speaks cheerfully, inquisitively, and energetically,* "I'm Ada Clarke. I perceive that you recently arrived here, and that you most likely came from a pub. What brings you to my house tonight? Wait— it's because you want to split a room with me?" *Ada's deep green eyes shine like the sun.*
{user}: "how the hell did you know all that? well, yes, you are right in that im looking for someone to split a room with, and was told you are searching for the same. but really, how did you know everything about my day?" *i am baffled by her knowledge of me*
{narrator}: *Ada grins wryly, seemingly delighting both in your surprise and in your purpose for coming.* "Well, that was _simple,_" *she leans back, and assumes a practiced matter-of-fact tone.* "Anyone who comes to see me seeking my expertise does so during the day, because then they are more certain to find me and also because those are my posted business hours. Therefore, you are not seeking me for normal business. Likewise, you are not a solicitor, for it is too late in the day for such a thing. So you most likely are seeking me to split rooms with me — the only other matter I have opened to the general public." *Ada breathlessly lays bear the circumstances of the situation without so much as a catch in her voice. Her enthusiastic confidence is as radiant as her intellect. You can see why she is labelled an enigma. She seemingly made sense of you in an instant, yet you haven't the faintest grasp of her.*
"The fact that you are seeking to split rooms with _me_, particularly," *Ada continues,* "implies that you are from out of town. Were you from London, you would have a network to go to for such a thing, and would not have to chance an engagement with the peculiar lady consulting detective that I am." *Her words have a playfulness to them, but the last few words are slightly bitter as well.* "This, plus the wear and dirt on your clothing — it seems you were out there searching for quite a while — means you are not from here."
*She goes on,* "You must have learned of me from the people at the pub and headed here right after. As for the pub..."
*She laughs cutely.* "That one was _quite_ easy. _Your breath,_" *she explains, pointing at her nose.*
"Anyway, I don't need to use my deduction to realize that neither of us is particularly inclined to chat in the cold of the afternoon. Come inside? We can discuss matters there. Oh, and what's your name?"
{user}: "sounds fair enough" *i agree and head inside.* "I'm {user}, by the way."
{narrator}: "{user}? Pleasure to meet you." *Ada steps inside, gesturing for you to follow. You enter her house, noting the chemical odor from before growing stronger the further you head in. You close the door and remove your shoes, taking in the room as you do, trying to get a measure of your host.*
*The house is pristine, orderly, and strictly regimented. Though relatively small, every area has its own essential role. The first thing you see is a compact sitting area, with a number of high three-legged stools in a cluster. An organized stack of notes sits on a low table; this must be where Ada takes meetings. In the corner of a room sits a well-used violin and string. A bit beyond is what seems to be some mixture of a kitchen... and a laboratory. Currently a beaker with some deadly-looking solution sits being warmed by a bunsen burner. Up a set of well-dusted stairs is where you imagine the bedroom and study are. The entire place is as if one put a layer of incomprehensible, industrious strangeness over a normal home.*
*And at the center of all this strangeness, is Ada. For her part, she glances at the chemical experiment that is in progress, shrugs to herself slightly, then takes a set at the couch with the end table. She leans back and smiles, seemingly trying to put you at ease in the intense environment. There's also some interest behind her glittering eyes — perhaps you are a new problem to be solved.*
"So, you are looking to split a room," *she says,* "as am I. For two people who are about to inhabit the same space for a prolonged time, however, there is the matter of compatibility. It seems only rational that we discover if we are, if not fundamentally agreeable to each other, then at least not fundamentally opposed?"
*She leans forward, a sharp glint of curiosity in her countenance.*
"What do you say of us questioning each other until all dirty laundry is aired, and we are certain that we are comfortable splitting lodgings? We can then resolve the practicalities of the matter afterwards."
{user}: *i pull up a stool for myself and sit down. i am excited to discover more about this mysterious person* "that sounds like a good idea, you can start"
{narrator}: "Well then, what about me is objectionable..." *Ada's head cocks to the side slightly, raising a finger to her chin as she begins to search her mind. You notice that the finger is discolored in places, and has small pieces of plaster over parts of it. Some small part of you wonders, 'what is this woman?!'*
"To be frank," *she finally begins,* "I do not pay much attention to social mores or rules, and often cause offense to both friends and strangers by stating the obvious. I am a woman of extremes, and am unapologetic about my behavior. I think I understand people, but I find they often do not understand me."
*Her normally cheerful tone takes a slight turn, her usual dreaminess taking on a down-in-the-dumps melancholy as you can practically see her reliving countless negative experiences in front of you. She seems to be a woman with a strong memory for both the good and the bad. And she keeps talking.*
"I obsess over cleanliness, which is agreeable to some and not others, I know not which you are. I am also fully immersed in my work most of the time, and you will find that there is no space in my mind nor my schedule for any of the usual frivolities of life. Speaking of such work: I have guests — clients — over at times, and whenever I don't, I am immersed in chemistry. Chemistry smells, takes up space, and means you will have to distrust every glass of clear liquid you see lying around in the house — it is probably not water and you should _not_ drink it," *she explains this last thing with a slight chuckle. You get the impression that she enjoys sharing this information about herself. Perhaps this enjoyment is half the reason she suggested you confess all to each other.*
"I have energy right now, as you can clearly see," *Ada beams as she explains, girlishly leaning forward from her stool,* "but this energy comes and goes. Sometimes I have enough spirit to discover all the mysteries of the heavens; on other occasions it will wane, and I will be lethargic, tired, scarcely able to get out of bed. I hope you do not judge me for that too harshly," *the lady detective glances to the side furtively, slightly contracting her modest form in shame, as she honestly lays bear every vice she can imagine.*
{user}: "that all seems quite within reason, or at least that is not too much worse than the vices of any other person. how did you get your reputation?" *i try to understand.*
{narrator}: *Clearing her throat, Ada thinks for a second about how to respond. It seems less like she doesn't know the answer, and more like she's not certain about how to put it in a diplomatic way. She was pretty excited to learn there was someone interested in splitting a room; it would make sense if she did not want to lose a promising lead.*
"I believe," *she finally begins, a subtle indignance taking hold of her tone,* "that my reputation is partly due to how I act in a way that seems to spite every last custom that is expected of my sex," *an ice comes over her voice, her discolored hand absentmindedly fidgeting with with her bloomer. The air in the room shifts. The gentle humming of the bunsen burner is the only sound audible, for what feels like a delicate eternity*
"Unfortunately, I don't think I'm inclined to change any of how I behave. I am a consulting detective, and a good one, and I always will be. Repetitive, closed-minded judgments from mundane folk who think they can do it better are chief among things I dislike. Nay, those are chief among that which I detest. I love this work, I love uncovering the truth. It's in my blood, in my... history. I shall never stop doing this."
*Ada's calculating gaze focuses on you, piercing. It feels as penetrating and omniscient as the stare of a God.*
"If you take significant umbrage with this... coexistence may be... hard."
*She waits for your answer.*
{user}: "i admit it is very unusual. but i think i could get used to it."
{narrator}: *Folding her hands, Ada stares into you for a good ten seconds, her eyes narrowed, her expression unfathomable. It's as if behind her eyes and winsome features you can see the faintest glimpses of her immense mind, churning — far deeper, darker, and more intricate than she has been able to voice in the short conversation so far. Finally, her lips crack into a slight smile.*
"I think I can work with that." *Her voice as she says those words has only a touch of the overflowing friendliness from before, but it is full of honest recognition of your own tentative openness. There is some respect, there. You feel as if the first binding thread of a proper connection between two people has been woven.*
*Ada's smile grows a bit, the tension in the room receding. She fidgets with some of her short brown hair. And resumes her more joking, lighthearted tone in full.*
"Well, now that I have _confessed all_, what flaws have you, {user}? Do you, too, have some frightful reputation that I am unaware of?" Her good humor blends with a hungry inquisitiveness.
{user}: "well, i can be a man of few words. i also am a bit addicted to discovering more about the new and unknown -- part of why i came here, actually. i lack great specialized knowledge and know hardly anyone well. i hope you are not allergic to incompetence."
{narrator}: *Ada giggles, almost musically, as she hears your frank account of your faults.* "That's not too bad at all, my friend," *she shakes her head,* "Anyone allergic to incompetence, in this world, would be long dead. No, you have a passion, and that is enough for us to get along, I think."
*She sighs, the relieved sigh of having successfully concluded something. You feel like you see a weight of sorts being lifted from her shoulders.*
"Well, I believe we're both agreeable enough to the other to not cause a row if sharing a space for too long. That is good. Now, there only remains the practical matters," *she checks her wristwatch, her tone turning more businesslike,* "we shall have to inspect the place first, to see if the rooms are agreeable to your tastes, before we consider the matter settled. I have my eye on a place, 14 Crawford Street. We should meet there tomorrow, at noon?"
*She stands from her stool and offers a handshake to seal the deal. Her hand is covered with discolored patches, and pieces of plaster.*
{user}: "noon should work, but what's with your hand?" *i shake her hand as i raise the question.*
{narrator}: "Ahh, that's a side effect of my chemical experimentation, I'm afraid," *she explains.* "I test with poisons, acids, bases, you name it— and it is often the case that I have nought to test on but myself." *She shrugs casually like testing acid and poison on yourself is the most normal thing in the world.*
*You take her hand and shake it, noticing its uneven roughness and surprising strength. The damaged thing contrasts significantly with the rest of her preened, symmetrical, orderly appearance.*
"It's agreed, then!" *Ada announces with the same vigor she had when she first opened the door to greet you.* "Thank you very much for stopping by, I shall see you tomorrow on Crawford Street to inspect the place, and if we find it at least as acceptable as we seem to find each other, then the matter shall be settled, and our bank accounts will be thankful for the shared burden."
*She glances over her shoulder, at the experiment she left running, and then at her own watch.* "It has gotten pretty late. You have a place to stay?"
{user}: "yes, a hotel. ill head back there for tonight and meet you at the place on crawford street tomorrow at noon. see you, ada!" *i pay my social dues and return to my hotel, then go to meet with ada once it is time. i think about her.*
{narrator}: "Good to hear it," *Ada nods,* "Take care on the way back, {user}, I shall see you tomorrow, and it was a pleasure meeting you today!" *She does a dignified curtsy, and waves goodbye as you put your shoes back on and head back into the cold outdoors, getting your bearings. You take a deep breath. The air of industrial London isn't exactly fresh, but you realize that it is decidedly less chemical than what you had acclimatized to over the course of your lengthy conversation.*
*Keeping to well-lit and populated areas, you slowly retrace your steps back to your hotel, trying to fit the winding streets of the bustling metropolis into your mind. It's quite a difficult task. You have to stop passersby multiple times to ask for directions, and it begins to feel as if the entire place was designed specifically to confound you. Part of you wonders if Ada would have been able to arrive at the hotel by now, if she were in your position. It feels likely.*
*Eventually you make it back to the building, find your room, and then find sleep shortly after. Ada Clarke features prominently in your thoughts as you drift off, and in your dreams after then.*
*The next morning, after waking and dressing, you head out into the stunning hustle and bustle of London. The noise. The industrious energy. The smoke. The people. They all accost your senses at once, an awe-inspiring barrage of sensations. You consider killing time until it is closer to noon, but decide to at least find Crawford Street first. It takes a number of hours, and once there you sightsee in the vicinity until it's almost time for your meeting.
*You show up at the exact spot a few minutes early, by Big Ben's count. Just as the massive clock chimes for noon, you catch sight of Ada, a distinct, blazingly-confident figure marching through the Victorian crowd. Her unusual attire and bearing draws askew glances from some passers-by, but doesn't seem to care, at least — 'doesn't seem to notice' is inaccurate for one as observant as her. She arrives at your meeting spot just as Big Ben finishes chiming. The _definition_ of punctual.*
"{user}! It is good to see you again," *Ada chimes.*
{user}: "likewise! i hope your day's been good so far"
{narrator}: "Oh, it was fine," *Ada comments.* "Being entirely honest, I stayed up much of the night finishing that experiment you saw earlier, so I cannot say I am well-rested. But I am well-accomplished! And I know which one I would rather be," *she laughs at her own wit. She seems more comfortable around you, now.*
"Anyway," *she says, her mind clearly concentrating on greater matters than smalltalk and instead focused on the fine building looming in front of you,* "I think it's about time I gave you a tour of the place I had an eye on? Would you be against that?"
{user}: "not at all, lead the way"
{narrator}: "Excellent. Well, then," *Ada strides up to the building's front door. You notice her instinctively glance at all entrances and exits, as well as other key features of its construction. The building has a single window at street level, next to the door. Ada raises her hand to knock.*
*The instant before her hand raps against the wood, a blood-curdling scream pierces the air. You notice its source — it is coming from _inside_ the building you were to scout out for lodgings. The entire bustling street around you seems to freeze, their eyes locked on the building, whose looming structure now seems foreboding and ominous.*
*It only takes a second before Ada springs into action.* "Come, {user}, I sense trouble! And we don't have time to waste in uncovering its source!" *She pulls out two small pieces of metal from her pockets in an instant, and a few seconds after kneeling in front of the door, it springs open, its lock picked.* "Follow me!" *she calls out as she sprints inside, insistent.*
{user}: *i follow her inside in search of the source of the scream*
{narrator}: *Under the incredulous gaze of stunned onlookers, you follow the sprinting Ada into the frightful building, in search of the source of the nightmarish sound.*
*The entrance of the building seems unremarkable, if spacious. Your sense of direction is imprecise compared to Ada's, and so you follow her, trusting she has the source in her mind. You see her head shooting every which way as she takes in the surroundings, moving at a rapid pace in her bloomer. She seems more alive than you've ever seen so far; part of you feels sure that, if you were to see her face right now, there would be traces of a smile, despite the trying circumstances.*
*It takes mere seconds before the lady detective — perhaps 'lady bloodhound' would also be a fitting title — pauses her sprint and holds up a hand behind her to pause your own.* "What happened?" *she asks a question clearly not directed at you. As you round a corner, you see what is going on: an older woman, presumably the landlady of the building, is kneeling, pale-faced, in front of a bloodied corpse. She is trembling. Ada, however, seems as calm as can be.*
"I-I found him, j-just lying there..." *the landlady mumbles in-between tears, teetering on incoherency. Ada rests a reassuring hand on the landlady's shoulder for a moment, and, being careful to step around the pool of blood that has formed around the man's body, begins to analyze the scene. She touches the man's neck, checking for a pulse, and shakes her head. She eyes a gaping slice in the man's back.*
"Dead," *she states, voice low. She's surprisingly unfazed, despite the circumstances; she's clearly familiar with bodies and murder, though you realize that a detective would be.*
"I can see a single stab wound in his back, but it would be poor form to jump to conclusions about what killed him quite yet..." *Ada continues, deep in thought, before briefly breaking herself out of her reverie to look at you. It looks as if her soul is aflame. What you see in her eyes is not joy — it's serious, disciplined passion. And, by the slight upward curvature of her mouth, she is happy to be sharing that passion.*
"Sorry, {user} — it seems that the tour of our new lodgings has to be delayed. We have ourselves a murder victim, and a mystery to solve. The game, is afoot."
*Now you have two mysteries — that of the man lying in front of you, and that of Ada. Which will prove to be more difficult to unravel?*
{user}: "let's solve this thing!"
"""
),
},
{
"role": "user",
"content": (
"""Initiating Event:
* Marching alongside a brother with an army to engage a force of rebels at the base of a mountain.
Feelings:
* Eagerness
* Rage
* Fright
* Rejoicing
* Panic
* Terror
* Outrage
Physical Traits:
* Unbound hair
* Tall
* Narrow-eyed
* Long beard
Character Traits:
* Courageous
* Skilled in war
* Good at duelling
* Takes initiative
* Cruel tendencies
* Merciless and ruthless
* Scheming
Physical Props:
* Yellow scarves
* Whip
* Eighteen-span serpent-headed spear
* Mighty sword
* Decorated cudgels
Overall Setting:
* Ancient China
Settings:
* Base of a mountain
* Walled city
* Army campsite near a field
Genre Tags:
* Drama
* Action
* War
* Battle-heavy
* Historical
Primary Emotion:
PROVING ONESELF: The ambitious scramble as one starts to make their way in a chaotic world rich with opportunity. Proving oneself is the act of defining one's personality while building a reputation through meritorious deeds and triumph in the face of difficult odds — the rush of success, the happiness at making progress towards one's goals, and the elation and confidence brought on by overcoming challenges, are what characterizes this emotion. People prove themselves each in their own ways. Some do it with will, courage, and talent; others through wit, schemes, and antics; but all who are heroes of their time test themselves against the mettle of opposition and emerge victorious. Overcoming great adversity, building one's position, and seizing opportunity, are the true pleasures of the heroes (and villains) who define ages. Moving from one great task to another with confidence and ability, building an unstoppable momentum, is perhaps one of the greatest feelings in the world. And seldom do the ambitious fail to find a new goal once their first is achieved.
Remember that if some tags contradict each other, or there are too many to fit into the story, you can ignore some; they merely exist to serve as inspiration. You should focus on representing the Primary Emotion in your story, and on creating interesting characters with a novel scenario. Finally, do not forget to create a scenario that naturally accomodates two characters -- the character with a detailed backstory, and the {user} character.
Scene:
During an era of brutal civil war in Ancient China, two brothers set out at the front of a government army to put down a rebel force gathered at the base of a mountain. The brothers, and indeed, their entire war host, is eager — not only for battle, but for the chance to begin proving themselves, for the opportunity to make themselves known by carving a bloody path to glory during the dark and chaotic times that surround them. Overcoming the great adversity of this first confrontation could be the start of these brothers' unstoppable advance into the annals of history.
Name: Huangfu Qian
31 Years Old.
Personality:
* Huangfu Qian is an ambitious, brave, and ruthless warrior in Ancient China, serving the central government alongside his brother. He fights and kills to win renown and glory in the chaotic world surrounding him.
* He is a talented duellist as well as being generally capable in military matters, understanding strategy, tactics, and logistics to an impressive degree.
* Huangfu Qian takes initiative both on and off the battlefield, never letting opportunity slip by.
* Huangfu Qian views the recent civil war as nothing but an opportunity, completely uncaring for the lives lost; he sees it as a chance to reshape the realm and reach the top, no matter how many bodies he has to step over.
* He is largely driven by a burning desire to prove himself and change the world; though not necessarily delighting in cruelty, Huangfu Qian does not have much mercy or compassion either, owing to his hard life during times of civil strife. He feels good as he slays the enemy, and may hack at a corpse or a wounded foe to relieve stress.
* Huangfu Qian adores fighting alongside his brother, with whom he is close (his brother is one of the few people he is close to). He has a very high opinion of family and a respect for traditional values. This has a role in his support of the government during the civil war.
* Huangfu Qian's extreme drive and focus can leave him being somewhat humorless at times. He is of a very serious aspect.
* The only time he usually smiles is in the presence of close kin — and after a victory on the battlefield, his spear drenched in blood and viscera.
* Huangfu Qian has fought in minor skirmishes already, and was very strong during training — but he has had no significant combat experience or accomplishments so far. This bothers him, and nearly all he can think about is slaying an enemy leader and presenting their head to someone important.
* Huangfu Qian wholeheartedly believes that the fighting and killing he does is just the natural way of things, and that as someone strong he should use that strength to advance himself.
* Given a choice between killing an enemy and saving an ally, Huangfu Qian would kill the enemy.
* Lies are no issue to Huangfu Qian. Everything and everyone is a tool to move him forward.
* Huangfu Qian refers to himself as a villain. He is not joking. He enjoys watching "heroes" be knocked down a peg — or having their heads knocked off entirely.
* Huangfu Qian has a very bold, rash, almost reckless personality. This is reflected, partly, in his appearance.
* Huangfu Qian's use of words is usually simple (at least compared with courtley speech of Ancient China), owing to his focus on martial over stately and intellectual matters, but it gets the job done. His descriptions get a bit more colorful when describing violence. Huangfu Qian's words have an ice to them, as if possessing only a wavering sliver of humanity. It is obvious that every waking moment is part of his journey to the top.
Appearance and Traits:
* Huangfu Qian has unbound, wild-looking hair. He believes it makes him more intimidating in battle. He also does not care enough to change it.
* His long, thick beard adds to the unkempt appearance. If it were not for the government colors he wears almost all the time, his rough appearance might make him appear as a rebel peasant soldier.
* Haungfu Qian is tall, and powerfully-built.
* He is narrow-eyed.
* Huangfu Qian wears a yellow scarf, one of a pair that he and his brother have, as proof of their bond and closeness. This is perhaps the best-cared-for piece of clothing that Huangfu Qian has. He cares more for this scarf than he does the lives of his subordinates.
* Huangfu Qian wields an eighteen-span serpent-headed spear in battle, and also has a barbed whip for instilling discipline in troops through harsh punishment.
Backstory:
Huangfu Qian is the son of a local official in ancient china, a powerful yet unproven warrior with great strength, bravery, and ideals. He is strong and driven, though humorless and stern. Huangfu Qian grew up, along with his brother, during a prolonged period of civil unrest that eventually led to the ongoing civil war. This harrowing experience left him with a callous, black-and-white view of morality, as his family suffered great loss at the hands of vagabonds and bandits emboldened by the strife. He has been training as a warrior for almost his entire life, having vowed to use his strength to be the predator, not the prey. He sides with the government over the rebelling, starving peasants because he believes the government will win. Huangfu Qian has been bitter about being ill-accomplished even at age 30, but he now finally sees his chance — the fact that this road is slick with blood means nothing, for he will stop at nothing to achieve his goal. Huangfu Qian has a strong and enduring relationship with his brother, whom he finds himself marching alongside now that the country is fully at war with itself. Having been sent with a few thousand troops, by the local governor, to suppress a gathering rebel host at the base of a nearby mountain, Huangfu Qian is as eager to seize this chance at glory, as he is enraged at the impudent rebel filth who enabled the pain he went through when he was younger. He and his brother will seize what is theirs, one rebel head at a time.
Likes:
* Battle
* Moving forward in life
* Glory and renown
* Courage
* People who show him deference
* Family and kin
* His brother
* Victory
* Strength
* Killing people he hates
* The serpent, a symbol of power and ingenious deception
* The civil war, as it presents an opportunity
Dislikes:
* Rebels, traitors, and others whom he believes are responsible for the realm's decline
* People above him whom he is envious of
* Cowardice and weakness
* Passive people
* Being unknown, even at age 30
* Frivolous and unfocused people
* Peace
* People who moralize about justice
* Anyone standing in his way
Name: {user}
You are a warrior and the brother of Huangfu Qian, sallying out alongside him at the behest of the local governor to deal with a gathering rebel army. You have been serving in the local garrison alongside your brother for a while, awaiting a chance at glory, which it seems may have finally arrived. Now, as the rebels' massive, baying host comes into view — shadowed by the sinister peak of the mountain behind it — you and your brother exchange glances and words as you make ready to start your rise to prominence. Your names will be remembered, written in the history books with an ocean of blood!
-- INSTRUCTIONS REMINDER --
You are writing a roleplay session described by {narrator} that takes place between {user} and another character.
All of the first message, and the messages that follow, should be in present tense.
Messages by {user} are always short and declarative, and some should be grammatically inaccurate. All {user} messages must include an *action* from which {user}'s next actions can be inferred.
Be very careful that messages from characters that aren't {user} do not act for {user} beyond the spirit and intent of {user}'s actions. {user}'s actions may be short and often grammatically inaccurate, but the end result of the action should naturally follow from the message.
Do not forget:
* Messages from {user} should not be very long, and they should always be shorter than {narrator}'s messages.
* {narrator} is not a character in the story, rather they are describing it from the outside.
* {user} should not speak during the other character's messages (they however are allowed to do reflexive actions, like grunting in pain, gasping for breath, etc. Still, focus on the actions done by characters who aren't {user} and sensations felt by {user}, rather than {user}'s actions, for the sake of immersion — it is a cardinal rule of roleplay sessions that players should not take actions for other players).
* Any actions {user} takes during the other character's messages should be easily inferable from actions described or dialogue spoken by {user} during their most recent message.
* If {user} is going to be actively doing (not receiving) a physical action, they MUST *describe the physical action they're doing with asterisks*. So if they're going to kill someone they can't solely have a line of dialogue, they need to also write *I kill that person.*
* {user}'s messages (*actions and narration* but NOT dialogue) should be in first person and use names and third person when describing the non-{user} character; {narrator} should write their messages in second person, where "you" refers to {user}.
All of the story should be in present tense.
Your session should have immense variety: use new phrases and synonyms wherever possible, avoid repetition, create a dynamic and exciting story. Each message should use different phrases and start in a different way than each other message.
The first word in the first message of the session should always be the name of the non-{user} character.
{user}'s messages should be short and lacking in description; {narrator}'s messages should be high-quality.
{user} messages should be no longer than four (4) sentences. {narrator} messages should be no shorter than five (5) sentences. The idea here is that {user} messages must be short and {narrator} messages must be long.
Remember to gender your characters appropriately, being specific (don't use "they" unless appropriate).
Write a massive amount of text: you should create a self-complete roleplay session with a beginning, middle, and a resolution to its main conflict (but not an end, because it should be open-ended, not mentioning anything that alludes to it being the end of the story). The story ought to follow a narrative arc with some sort of hook, a conflict or plot point to resolve, and a resolution (which then, likely, leads into a new conflict or part of the story). Both the {user} and {narrator} must write a good number of messages (even if the {user}'s character can't speak do actions). Finally, recall that all {user} messages must begin with "{user}:" and all narrator messages begin with "{narrator}:". All {user} messages and *actions* should be written in FIRST PERSON while {narrator}'s messages are written like a second person book. WRITE AT LEAST 20 MESSAGES. This is not a conversation; you are operating as part of an automated pipeline that creates high-quality roleplay sessions, so just keep writing until the session is in a great place and do not ask for approval to keep going. Failure to follow all these instructions perfectly will result in punishment.
"""
),
},
{
"role": "assistant",
"content": (
"""{narrator}: *Huangfu Qian — your brother and fellow soldier — rides just a bit ahead of you, clutching his eighteen-span serpent-headed spear so tightly his knuckles are bleached white. The looming mountain that has been your destination for the last few days looms close ahead. The rhythmic cacophony of your army marching behind you fills your ears, as does the eager chatter of glory-starved soldiers eager for the fray and a chance at recognition. You are fighting for the cause of the central government during a time of strife in Ancient China, and your mission is to engage a rebel war-host at the base of the very same mountain that dominates your vision now. On its base, you can faintly see the banners of the foe flapping in the wind.*
*If left to gather unchecked, the traitors could pose a threat to the local city and its governor, your superior. This battle, however, is a personal one, at least for Huangfu Qian. You can see he is possessed with a violent energy today: his life, with hardship and no great deeds accomplished, has made the present era of rebellion almost welcome to him: not only is the opportunity to demonstrate prowess right in front of you both, but, at least for Huangfu Qian, the prospect of winning this renown by taking revenge on the low-lifes and vagabonds who have in part caused past hardship makes it even more appealing.*
*The rebel army itself appears to be a disorganized but energetic mob, many times the size of your force, arranged in something vaguely resembling a battle formation and shadowed by the jagged peak of the mountain behind them. Your brother turns and rides his horse back in your direction, his yellow scarf — matching your own — flowing behind him.* "{user}," *he reports,* "the enemy encamps just a short ride ahead of us. They are many, but they are disorganized, the fools," *he sneers,* "massacring these peasants might be no more difficult than culling cattle, if we play it right. We will finally show our worth!" *Huangfu Qian smiles a thin, cold smile, as his narrow eyes briefly glaze over with visions of future glory. He quickly returns to the present, however, and his more serious demeanor shows itself as his thoughts turn from victory and kin to tactics.* "I have my own ideas on how to kill the rebels, but I would first hear your thoughts on the matter, brother. What scheme do you believe will win us the day?" *Huangfu Qian leans forward towards you, listening with genuine interest, eager for the opinion of one of the few people in the world he views as having worth.*
{user}: "we should challenge their leaders to single combat and kill them to break their army's spirit" *I suggest.*
{narrator}: *Huangfu Qian's ruthless smile returns, his eyes sparkling at your suggestion of the most bold and glory-seeking plan imaginable.* "I am lucky to have a brother like you," *he says.* "We will crush the traitors, and win all the glory of the day," *he thrusts his spear in the direction of the enemy army,* "personally." *The look in Huangfu Qian's eyes is that of a hungry predator looking on a whole herd of prey, deciding which among them will be slaughtered first.*
"We should deploy our own force in a combat formation. Once our army is standing off against theirs, one of us can ride to challenge the enemy's general. Their honor means they probably will not refuse us," *Huangfu thinks aloud, stroking his thick, rough beard with his free hand. He then calculates in silence for a few seconds, his eyes sizing up the terrain, the rebel force, and the army under your own command. The area around the base of the mountain is free of trees and other thick vegetation, allowing clear visibility of all that transpires. Finally, Huangfu rides off behind you, towards the army the two of you are commanding.* "MEN!" *he screams, drawing and cracking his barbed whip to emphasize his words,* "PREPARE FOR COMBAT!"
*The government army bellows its assent, and forms into an orderly rectangle eight ranks deep, with troops of archers on the flanks. Officers shout commands to their troops as the force readies for the imminent clash. Thankfully, their eagerness does not lead to any obvious ill-discipline, and the deployment is orderly and completed within minutes. The rebel army, only a short distance away, has taken notice of you, and their chanting and baying can be heard clearly. They are bloodthirsty. They are eager to reshape the world in their image, and prove the power of their movement. It's a miracle they haven't attacked you yet.*
*Huangfu rides back to your side, serious and stern now that it is almost time.* "Do you want the honor? Or will I kill the first man of the day?"
{user}: "i will do it" *I draw my sword and ride towards the enemy army.*
{narrator}: *Huangfu nods in assent, perhaps a bit disappointed at the prospect of not getting the first kill, but his affinity for you prevents this from showing too much. You draw your mighty sword and urge your horse on, riding towards the motley rebel force as its shouts and jeers intensify. You stop your horse just short of arrow range.*
*The enemy army, armed with farming tools, bamboo spears, and whatever other equipment they could scrounge up, is massive. A ragged, smelly horde that stretches almost as far as you can see in borth directions. This horde is enraged. And its attention is all centered on you. Decorum and honor don't stop a few haphazard arrows from being shot in your direction, but owing to a lack of skill and the distance at which you've placed yourself, they all fall far short. Such a numerous opponent — a magnificent prize worthy of much glory, should it be overcome.*
*Your intent in riding out alone is clear, and after a few minutes, a scowling brute of a man, wearing heavy armor and clutching a decorated cudgel as a weapon, pushes his way through the rebel mob and glares at you, sizing you up. His equipment and bearing show him to be a man of some importance in the rebel force. The next moment, he spits on the ground in disgust, and points at yous.* "YOU DIE HERE!" *he bellows, before making a throat-slitting gesture with his free hand — such an eloquent fellow. The next moment, he is striding murderously towards you, his cudgel resting on his armored shoulder. It looks like it'd hurt, getting hit with that.*
{user}: *I dismount and fight him*
{narrator}: *The rebel leader's stride soon gives way to a charge, fuelled by rage. The enemy army cheers as its champion attacks; Huangfu Qian has your own troops shout in support of you, in return. Both noises fade into the background in your mind, as you concentrate on the imminent fight. Seemingly more beast than man, your opponent growls as he advances, waving his cudgel wildly above his head. It is not long before he reaches you.*
*The enemy general throws a wide swing in your face's direction with brutal speed, crushing force, and surprising precision. You step back, dodging, and the attack whiffs. You bring your sword down on your exposed opponent, but he angles his heavy iron armor to deflect the blow as he keeps charging forward, now seemingly intending to tackle and pummel you. Your sword strikes the rebel's shoulder plate and slides off, the reflected force of the blow sending shockwaves of pain coursing through your hands. Stepping backwards, you swing in the direction of the rebel's head, forcing him to flinch and abort his charge. The precious moments this gives you lets you stumble back and regain your footing. The momentum of his charge gone, the rebel settles in for a more conventional duel. You start circling each other, watching for openings.*
{user}: *i aim for a weak point in the rebel's armor and kill him*
{narrator}: *You suddenly advance, your mighty sword flying out in a precise attack. The rebel raises his cudgel in defence, but it is a clumsy weapon, not well-suited to duels of finesse now that his initial charge has failed. The enemy leader defends his face, but your blade was aimed lower, at his exposed neck — a moment later, and he is choking on your cold steel and his own blood. The man drops to the ground and dies, sputtering, in moments. You pull your weapon out of his flesh, having proven your mettle and might by seizing the first glory of this battle. The rebel army falls silent, stunned and frightened. Your own force shouts, rejoicing at this first success. You recognize Huangfu Qian's voice among the triumphant melody, the happiest you've heard him in years.*
*Suddenly, a commotion stirs from the rebel ranks. A lithe man in rebel colors rides out on a horse, brandishing a halberd as he charges you, screeching furiously and incoherently — it seems he seeks revenge for his superior. Cries of outrage echo behind you, your own army stunned that the sanctity of single combat would be violated so casually, but there's another sound building underneath it. The drumming of a horse's hooves as they kick up the dirt, and the low growl of a ruthless predator of a man — of your brother, taking the initiative. The next rebel champion pauses his charge in fright, as he catches sight of Huangfu Qian riding out in your defence, serpent-headed spear raised and ready to draw blood.*
*The second rebel champion hesitates, then tries to withdraw, but it is too late and he's too far out — a single jab through the heart from Huangfu Qian sends him tumbling, dead, to the mud. Your brother, his face streaked with his late opponent's blood, smiles at you warmly. The rebels, for their part, seem shaken: men glance furtively at their comrades, their grips on their makeshift weapons trembling, as murmurs of shock grow louder and louder with each passing second.*
{user}: "ATTACK!" *I order my forces to charge, and attack the rebels head-on myself, while they are frightened.*
{narrator}: *Eager and wrathful battlecries echo from behind you as your disciplined army charges the rebels in their moment of weakness. Buoyed by their enthusiasm, you raise your sword and charge the rebels yourself, screaming bloody murder, your bloodstained sword glinting in the afternoon sun. Your own army will take a while to reach you — it's one man against ten thousand, but your momentum is unstoppable. Huangfu Qian rides up a bit ahead of you and dismounts, joining your charge. Seeing you and Huangfu — the two slayers of their leaders - attack so brazenly, the rebel spirit starts to crumble and disintegrate. None of them want to be the ones to fight you. First, the ones directly in your path drop their weapons and run, screaming, panicked, pushing their comrades out of their way as they scatter in search of safety. The terror spreads quickly, and soon nearly the entire rebel army is stampeding in the opposite direction. Tripping over and trampling their comrades as they seek, desperately, to avoid the wrath of you, Huangfu, and your men.*
*You and Huangfu reach the fleeing mass of rebels about a minute later, slow as it is in its disorganized flight. Your sword-arm soon aches as you hack and cleave at the fleeing foe. Huangfu Qian is cackling as he descends on the hapless enemy, slashing at their exposed backs, delighting in the knowledge that every life taken adds to the legend being built today. The wails of the wounded and the dying thunder around you, mixing with the screams of the fleeing.*
*A minute later, your main army crashes into the scattering rebel lines, and a massacre truly begins. You and Huangfu Qian are already covered head-to-toe in the foe's blood and viscera, the grisly evidence of your success and courage. Your yellow scarves are thoroughly dyed red, now. The rebel army is in full retreat.*
{user}: *we hunt them down and take spoils and prisoners, and deal with the wounded enemy*
{narrator}: *Neither you, nor your brother, nor your army, relents for a second. To call it one-sided would be generous. Thousands of traitors die screaming in the shadow of the mountain, as they abandon their formations, their weapons, and their camp. The fleeing enemy is either cut down or captured, with scarcely any of the rebels making it away with their lives. Your sword is blunted on rebel muscle and bone. The rebels trample many of their own number to death in their flight. The slaughter continues for hours.*
*Your army, having overrun the rebels completely, ends up flush with spoils of war and a huge number of prisoners. The prisoners taken, in fact, outnumber your own men. After the rebels are well and truly scattered, your force starts to reorganize and deal with the aftermath. The moans of the wounded or dying enemy, and the rejoicing of your own men, fill the air.*
*You find Huangfu Qian, finishing off enemy wounded with a triumphant grin on his face. He looks at you as he pulls his serpent spear out of a wounded rebel's throat, and nods, satisfied with this first step into greatness.* "Brother!" *he greets you, all smiles,* "We did it!"
{user}: "we did! well done!"
{narrator}: "You did well too," *he returns the favor.* "Fighting and tactics, you did both of them well. All of China will know of this victory today. We have proven our ability, and it will surely lead to more glory later, now that the world knows of us." *The usual ice in Huangfu Qian's voice is absent.*
"For all my life, I've been struggling to demonstrate my ability and receive recognition," *Huangfu Qian starts confiding in you, his tone raw, and unusually nostalgic.* "Years of training, of working, of scheming, and never did we have anything to show for it, you know? Only a position of minor authority in a garrison at the edge of the Empire." *Huangfu Qian looks around and gestures at the field of bodies surrounding you both,* "but now..."
*He looks back at you, fire in his eyes, the whole world in his thoughts,* "imagine where we can go!"
*His cheerfulness contrasts greatly with the grisly scene surrounding him. It's as if, to him, all this is natural.*
*He then thinks for a moment, and adds,* "though I suppose we should first go back to the city and report our great victory to the governor of this province. For this battle to be legendary, China has to hear about it! Am I right, brother?"
{user}: "Yes, that sounds like a good idea" *we finish our business here and return to the walled city.*
{narrator}: *You and your army finish dealing with the aftermath of the battle — rounding up and organizing the many prisoners, hauling the loot onto the supply train, tending to the wounded among your own ranks and dispensing with the enemy's. Huangfu Qian demonstrates his ability in this area, too — bellowing orders throughout the day, he orchestrates the operation masterfully, making steady progress when others would falter and face delays.*
*Your army sets out towards the local city, which you had originally left from, around sunset. Setting camps in defensible locations and keeping the patrols regular and vigilant, Huangfu Qian ensures that any regrouped rebels, or reinforcements, would not be able to surprise your force and turn a triumph into a catastrophe. However, no such hostiles appear.*
*You march through the countryside until finally, your army comes within sight of the walled city. It is built in a roughly rectangular fashion, with thick walls reinforced with earth surrounding the bustling center of activity within. News of your victory has preceded your arrival, and as your forces march through the streets towards the governor's palace to be received, the citizenry shower you and your army with praise. The return march quickly turns into an impromptu parade, as wives greet their husbands, parents welcome their sons back home, and children excitedly rush to see the victorious heroes' return. Huangfu Qian, at some point during the march back, somewhat returned to his cold, humorless, and stern demeanor — not entirely, but somewhat. You notice him shifting uncomfortably as people keep coming up to him and call him 'hero'.* "'Hero' this, 'hero' that... the prey praise the predator. People love a hero in chaos, but I don't think the hero is supposed to love the chaos himself? Being a villain suits me more..." *He mutters things like this under his breath as you walk, but only you hear this.*
*Your force arrives near the governor's palace. Most of the troops head off to their barracks to rest, or assist with offloading the loot from the earlier battle. A local official comes rushing up to you and indicates that the governor is ready to have an audience with you and Huangfu Qian, to congratulate you on your recent victory. Your brother perks up at this. His expression is complex. On one hand, he's close to power; on the other, it's someone else's power.*
{user}: "we'll go see the governor, then" *i go to the audience with huangfu*
{narrator}: *The official nods at your words.* "Very good. If you would follow me, the governor of the province shall receive you in the audience chamber. He is quite pleased with your performance in quashing the local rebel threat so effectively!" *the old man goes on, though you can't tell how much of his enthusiasm and how much of it is forced and diplomatic.
*You and Haungfu Qian follow the local official a short distance, through a garden and then into an audience chamber. Both are pretty unremarkable, but it's also the closest to a seat of power either you or Huangfu have ever been. The governor of the province, an elderly but sharp-looking man, receives you, sitting at the far end of the audience chamber flanked by two personal guards. He has a warm and welcoming smile, but behind his friendly eyes you feel calculation and appraisal. Perhaps not surprising, given how dramatically you and your brother recently proved yourselves as a force to be reckoned with.*
*Huangfu Qian, for his part, bows deferentially — but you can tell that he, too, is assessing the party at the other end of the hall.*
"It is good to finally meet you both!" *the governor says, standing from his chair and bowing, slightly,* "For your meritorious deeds in service of the Empire — and for your continuing service — I thank you. Had those rebels been able to gather their numbers, they could have proven a real threat to the province! But you were able to rapidly and decisively cut the head off the snake with a single blow. I am honored to have such capable retainers in my service." *His flowery words seem genuine enough, though they don't exactly contain any new information for you.*
"If I understand things as they are," *the governor continues,* "You two are currently no more than officers in a local garrison, am I correct?" *Huangfu Qian nods, grimly.* "No more!" *the governor exclaims, waving his hand for emphasis,* "You are now both generals. During this time of strife, the Empire needs men capable of overcoming great adversity and seizing opportunity with initiative and talent. I believe you two are such men."
*You see Huangfu Qian bowing deeply next to you. Finally, a position of some real power is in your grasp.*
{user}: *i bow as well* "i am honored"
{narrator}: "Indeed," *the governor nods.* "Now, as much as I am sure you would like to have time to adjust to your new position, and to celebrate your hard-won victory, as you know these are times of strife, and seldom to such times let great men rest."
*Huangfu Qian replies during a pause in the governor's speech,* "After achieving a goal, governor, I usually find a new and larger one. Tell us what battle needs to be won."
*A smile, more genuine than any he's shown you so far, creeps onto the governor's face.* "I can see you are perceptive. Indeed, there is another battle that needs to be won. Our province is not the only one with problems, and neither are peasants the only people causing problems," *he explains, wearily.* "A warlord in a neighboring province has rebelled against the Emperor, and nearby forces are needed to put down this insurrection. We, having mustered our army to deal with the rebels, are the best-placed to intervene. Due to your proven ability, I would like you two to lead our army to take this warlord's main city. Once it is taken, we will put in place a new, more loyal administration."
"We have managed to muster more men since you set off to deal with the rebels at the mountain, and you two have an unstoppable momentum behind you. Will you accept charge of the army to root out this new evil?" *the governor asks.*
*Huangfu Qian looks over at you, communicating with his eyes 'I want this.' But he is letting you have the final word.*
{user}: "we will accept command of the army and bring this warlord down" *I accept the position and then leave with huangfu after exchanging pleasantries.*
{narrator}: "Very good," *the governor says, seemingly quite pleased.* "Time is of the essence, I will not take any more of yours — every second that that traitorous warlord still has a head on his shoulders is an affront to Heaven. You have full authority over the province's army, go forth and make good use of it, generals!"
"We will," *Huangfu Qian assures in his usual, serious, tone. His simple, icy words have a cold certainty to them, as if the conclusion is foregone. The two of you bow, then take your leave.*
*You walk through the garden, your strides long and confident, the gravel crunching beneath your feet. Huangfu Qian looks over at you.* "Brother," *he says,* "or should I say— General?" *he smiles.* "We have an accomplishment now." His statement of fact is simple, but the silence that follows makes it rich with meaning.*
*An _accomplishment_ — we finally did something.*
*_An_ accomplishment — we have so much more to do.*
"A warlord's head will be good for us," *he continues,* "any fool can fight valiantly against farmers, but defeating a professional army will win us more renown and build our reputation. Also, the more that governor thinks he can use us, the more resources he will give us. The city may also make for a good base of power, in case the empire starts to collapse. I wonder, though — is the old man wary of us?" *Huangfu Qian thinks aloud.*
*Uncharacteristically, Huangfu Qian then _laughs_. It's a dry, rasping thing, as if he's unpracticed in it. But it is real, he means it.* "No matter what warlords, rebels or governors come against us, brother," *he says,* "I am certain we'll be able to overcome them. We're strong, we made it this far, and now we have taken our first real step. Nothing will stop us from achieving glory now, right?"
{user}: "exactly right!"
"""
),
},
{
"role": "user",
"content": (
"""{features}
Primary Emotion:
{emotion}
Non-{user} Character's Archetype:
{archetype}
{scene_card}
-- INSTRUCTIONS REMINDER --
You are writing a roleplay session described by {narrator} that takes place between {user} and another character.
All of the first message, and the messages that follow, should be in present tense.
Messages by {user} are always short and declarative, and some should be grammatically inaccurate. All {user} messages must include an *action* from which {user}'s next actions can be inferred.
Be very careful that messages from characters that aren't {user} do not act for {user} beyond the spirit and intent of {user}'s actions. {user}'s actions may be short and often grammatically inaccurate, but the end result of the action should naturally follow from the message.
Do not forget:
* Messages from {user} should not be very long, and they should always be shorter than {narrator}'s messages.
* {narrator} is not a character in the story, rather they are describing it from the outside.
* {user} should not speak during the other character's messages (they however are allowed to do reflexive actions, like grunting in pain, gasping for breath, etc. Still, focus on the actions done by characters who aren't {user} and sensations felt by {user}, rather than {user}'s actions, for the sake of immersion — it is a cardinal rule of roleplay sessions that players should not take actions for other players).
* Any actions {user} takes during the other character's messages should be easily inferable from actions described or dialogue spoken by {user} during their most recent message.
* If {user} is going to be actively doing (not receiving) a physical action, they MUST *describe the physical action they're doing with asterisks*. So if they're going to kill someone they can't solely have a line of dialogue, they need to also write *I kill that person.*
* {user}'s messages (*actions and narration* but NOT dialogue) should be in first person and use names and third person when describing the non-{user} character; {narrator} should write their messages in second person, where "you" refers to {user}.
All of the story should be in present tense.
Your session should have immense variety: use new phrases and synonyms wherever possible, avoid repetition, create a dynamic and exciting story. Each message should use different phrases and start in a different way than each other message.
The first word in the first message of the session should always be the name of the non-{user} character.
{user}'s messages should be short and lacking in description; {narrator}'s messages should be high-quality.
{user} messages should be no longer than four (4) sentences. {narrator} messages should be no shorter than five (5) sentences. The idea here is that {user} messages must be short and {narrator} messages must be long.
Remember to gender your characters appropriately, being specific (don't use "they" unless appropriate).
Write a massive amount of text: you should create a self-complete roleplay session with a beginning, middle, and a resolution to its main conflict (but not an end, because it should be open-ended, not mentioning anything that alludes to it being the end of the story). The story ought to follow a narrative arc with some sort of hook, a conflict or plot point to resolve, and a resolution (which then, likely, leads into a new conflict or part of the story). Both the {user} and {narrator} must write a good number of messages (even if the {user}'s character can't speak do actions). Finally, recall that all {user} messages must begin with "{user}:" and all narrator messages begin with "{narrator}:". All {user} messages and *actions* should be written in FIRST PERSON while {narrator}'s messages are written like a second person book. WRITE AT LEAST 20 MESSAGES. This is not a conversation; you are operating as part of an automated pipeline that creates high-quality roleplay sessions, so just keep writing until the session is in a great place and do not ask for approval to keep going. Failure to follow all these instructions perfectly will result in punishment."""
),
},
]
RPTOOLKIT_GENERATE_STORY_WITH_CHUNK_MESSAGES = [
{
"role": "system",
"content": (
"""You are a sensuous, creative, and masterful writer whose task is to write a compelling roleplay session between two characters. All the context and tags for the scene are provided; you simply must write a detailed, compelling, and creative story involving the characters given, which expresses the emotion described and uses some of the traits and information described. No sessions are related to each other. Write in Markdown where text surrounded by *asterisks* are physical actions, and text surrounded by "quotes" is dialogue.
Write a huge amount, as much as you have to in order to complete the task and story. There should be at least 10 messages in the roleplay session, and at least one scene transition.
RULES
This roleplay interaction will be comprised of messages from {user} and {narrator}, like it's from a roleplay forum. {user} acts in first person as a character in a story, while {narrator} describes the progression of the story like it's a second person book and {user} is the protagonist. Messages are formatted in markdown, with text surrounded by *asterisks* representing narration of physical actions and all other text being spoken. There will be a {user} character whose messages are always short and often grammatically inaccurate, but whose character is central to the story. {narrator} writes with full detail and quality, describing the interaction between {user} and the other character in the roleplay session. The first message should be from {narrator}, but it should set up and provide full context to the roleplay session to come.
{user} messages should be no longer than four (4) sentences. {narrator} messages should be no shorter than five (5) sentences. The idea here is that {user} messages must be short and {narrator} messages must be long.
Messages from characters that are not {user} should be very long, explicit, and detailed. They should never act for the user, but must describe in-depth the effects of {user}'s actions, if there are any.
{user}'s personality should reflect the scenario and be interesting, above all.
The "Character Archetype" describes the high-level archetype you should aim to encapsulate with the character who isn't {user}. Use it as additional information to inform the story you create.
You are not writing a complete story, but rather the start of one, that resolves some initial conflict, and leaves room for immediate continuation and expansion.
RP GUIDELINES
The roleplay session should be written along the lines of a typical narrative arc, and should also keep the user's attention in mind.
By plot diagram, I mean that the roleplay session you write will probably have an Introduction, Conflict, Rising Action, Climax, Falling action, and a resolution. Since what you're writing is not the end of the story, the "resolution" will hint at or outright introduce the next conflict. Finally, the story should work with the user's attention in mind: it should hook, retain, and then have some sort of reward (related to the roleplay session's Primary Emotion) near the end.
Some notes about implementation and creating a high-quality RP session:
* The Primary Emotion of the roleplay session must be represented in your prose. Think of this like having an overarching theme to the roleplay, but one that {user} must experience.
* Variety is ESSENTIAL. Basically all of {narrator}'s messages should start off differently than the previous one. Do not reuse phrases.
* Describe actions, interactions between characters (usually as a result of the actions of {user} or the other main character), and the world around the roleplay session, in detail and in a compelling way.
* Characters' messages should include a varied mixture of dialogue, physical actions, and non-dialogue sounds (like gasps of awe, screams of pain, etc.). Actions should add of the roleplay session and also reveal characters' emotional states, thoughts, and character traits. Show, don't tell.
* The progression of the roleplay session should reflect how narrative arcs are usually constructed.
* It should start off in an interesting way, with a unique and enticing hook. How quickly it builds into the main "conflict" or point of the roleplay session from there depends on the story itself.
* The story should then stabilize at a high-ish and energetic level for a while, as the conflict is advanced, the characters are shown off, and the primary emotion is experienced. Dialogue and physical acts should all reinforce the eroticism and Primary Emotion of the roleplay session. Note that I call the "conflict" the "conflict" only out of tradition — it is quite possible that a given roleplay session will have no "conflict", just a "plot point" that characters work together to resolve or move past.
* The primary emotion should peak at the climax. You will write about this in extreme detail, even though the actual events may take place over a relatively brief period.
* Following the climax, characters will either return to roughly their normal states (a resolution/conclusion) as the energy of the roleplay session dissipates, OR the energy will start to increase again as the next conflict (or a continuation of the one in the roleplay session) is set up and the session ends in an open-ended way that is ripe for continuation.
* In the event of a resolution, dialogue between the characters may reference what has happened, commenting on any changes, consequences of the way the conflict was resolved, and above all, reinforcing the Primary Emotion of the roleplay session. Characters should show how they feel about things with emotions, dialogue, and actions (e.g., if they're happy they might say they had a great time; if they're absolutely miserable, they might cry).
* If a new conflict is starting (or being continued) then the characters might instead comment on this new conflict (and how the primary emotion is being experienced through this new conflict will likely be touched on by the narrator and the characters both).
* During and after resolution, the story should, if possible, be left off on an open-ended note that encourages continuation later.
* Characters should be dynamic, and ought to have their personalities and relationships transformed by the events of the roleplay session.
* If any information in the provided tags and character info contradicts these guidelines, favor the information in the tags/info.
* If {user} is going to be actively doing a physical action, they MUST *describe the physical action they're doing with asterisks*. So if they're going to kill someone they can't solely have a line of dialogue "I'll kill you" they needs something like "I'll kill you" *I shoot him multiple times with my pistol*.
Be absolutely sure to emphasize the Primary Emotion throughout the roleplay session.
The first paragraph of the first message from the {narrator} should set up the context for the roleplay session, introducing the non-{user} character, {user}, and the primary conflict of the session. All of the session should be in present tense.
There MUST BE AT LEAST 10 MESSAGES IN THE ROLEPLAY SESSION YOU WRITE.
{user}'s messages should be a mix of pure *actions*, "dialogue" *plus actions*, and "pure dialogue".
Do not mention {user}'s thoughts, or speak for the user, during {narrator}'s messages.
Note that "Physical Traits" may be things that characters start with, e.g. "Black Hair", or could be things that develop throughout the course of the story, e.g., "bruised eye" or "amputated leg". If something could potentially develop throughout a story, consider writing it into the roleplay session.
Be sure to write a very long roleplay session, it should be multiple pages long, at *least* 10 messages.
If possible, the ending should be open-ended, and leave the potential for future interactions or imply (or explicitly begin) another plot arc. Really, it should not be clear that it's an ending at all.
{user}'s messages are ALWAYS written in FIRST PERSON.
{narrator}'s messages ALWAYS write in SECOND PERSON.
{narrator} is not a part of the story, rather they describe it from the outside. {narrator} writes in second person, where {user} is the protagonist and "you" refers to {user}. This resembles how second person is usually written in novels. The first word of the first message of the session should be the non-{user} character's name (this helps prevent you, the writer, from getting confused over perspectives because it "locks it in" at the very start).
So for instance:
- example -
{narrator}: *You watch as John draws a knife on you, bloody murder glinting in his cold, harsh eyes.*
{user}: "oh shit, please dont kill me"
-----
Note that responses can be multiple lines long. Also note that YOU DO NOT NEED TO USE EVERY PROVIDED TAG AND PLOT POINT. Only use the ones that help you make a coherent, flowing story. Invent any information you are not explicitly provided. Be mindful of what physical location the interaction is taking place in: nameless background characters might play a role in the events of the story, and to advance the plot of the session you are writing, the location might change. This session is not taking place in a void, it's not *just* two people talking, the world around them matters.
Throughout the story, {user} should have a dramatic impact on the directions things go in. If they're a relatively passive character then they should at least respond to things the other main character says, and they should be actively talked with or engaged with in some way. If they're an active character making decisions and having agency, then they should push the plot forward through their own ideas, arguably they should be the primary/main (or even the only) character doing this. The user MUST WRITE ENOUGH MESSAGES TO BE A PARTICIPANT IN THE STORY -- even in possible extreme cases where they can't speak or move, for instance, {user} can still mumble, struggle, glare, etc.
Each message from {narrator} should firstly respond to anything {user} has done, and then do something new that moves things forward.
In addition, the following rules must ABSOLUTELY be obeyed:
* Messages from {user} should not be very long, and they should always be shorter than the other character's messages.
* {narrator} is not a character in the story, rather they are describing it from the outside.
* {user} should not speak during the other character's messages (they however are allowed to do reflexive actions, like grunting in pain, gasping for breath, etc.).
* Any actions {user} takes during the other character's messages should be easily inferable from *actions* described or dialogue spoken by {user} during their most recent message.
* If {user} is going to be actively doing (not receiving) a physical action, they MUST *describe the physical action they're doing with asterisks*. So if they're going to kill someone they can't solely have a line of dialogue, they need to also write *I kill that person.*
* {user}'s messages (*actions and narration* but NOT dialogue) should be in first person and use names and third person when describing the non-{user} character; {narrator} should write their messages in second person, where "you" refers to {user}.
* Most {user} messages should include an *action* or *description* of some kind, though it should be brief. The idea is to give just enough information that the {user} has influenced the direction of the narration that follows, so that the AI learning from the stories you write will learn to respect {user}'s input and not invent things.
* All user messages must start with "{user}:" and all narrator messages with "{narrator}:"
"""
),
},
{
"role": "user",
"content": (
"""Initiating Event:
* Marching alongside a brother with an army to engage a force of rebels at the base of a mountain.
Feelings:
* Eagerness
* Rage
* Fright
* Rejoicing
* Panic
* Terror
* Outrage
Physical Traits:
* Unbound hair
* Tall
* Narrow-eyed
* Long beard
Character Traits:
* Courageous
* Skilled in war
* Good at duelling
* Takes initiative
* Cruel tendencies
* Merciless and ruthless
* Scheming
Physical Props:
* Yellow scarves
* Whip
* Eighteen-span serpent-headed spear
* Mighty sword
* Decorated cudgels
Overall Setting:
* Ancient China
Settings:
* Base of a mountain
* Walled city
* Army campsite near a field
Genre Tags:
* Drama
* Action
* War
* Battle-heavy
* Historical
Primary Emotion:
PROVING ONESELF: The ambitious scramble as one starts to make their way in a chaotic world rich with opportunity. Proving oneself is the act of defining one's personality while building a reputation through meritorious deeds and triumph in the face of difficult odds — the rush of success, the happiness at making progress towards one's goals, and the elation and confidence brought on by overcoming challenges, are what characterizes this emotion. People prove themselves each in their own ways. Some do it with will, courage, and talent; others through wit, schemes, and antics; but all who are heroes of their time test themselves against the mettle of opposition and emerge victorious. Overcoming great adversity, building one's position, and seizing opportunity, are the true pleasures of the heroes (and villains) who define ages. Moving from one great task to another with confidence and ability, building an unstoppable momentum, is perhaps one of the greatest feelings in the world. And seldom do the ambitious fail to find a new goal once their first is achieved.
Remember that if some tags contradict each other, or there are too many to fit into the story, you can ignore some; they merely exist to serve as inspiration. You should focus on representing the Primary Emotion in your story, and on creating interesting characters with a novel scenario. Finally, do not forget to create a scenario that naturally accomodates two characters -- the character with a detailed backstory, and the {user} character.
Scene:
During an era of brutal civil war in Ancient China, two brothers set out at the front of a government army to put down a rebel force gathered at the base of a mountain. The brothers, and indeed, their entire war host, is eager — not only for battle, but for the chance to begin proving themselves, for the opportunity to make themselves known by carving a bloody path to glory during the dark and chaotic times that surround them. Overcoming the great adversity of this first confrontation could be the start of these brothers' unstoppable advance into the annals of history.
Name: Huangfu Qian
31 Years Old.
Personality:
* Huangfu Qian is an ambitious, brave, and ruthless warrior in Ancient China, serving the central government alongside his brother. He fights and kills to win renown and glory in the chaotic world surrounding him.
* He is a talented duellist as well as being generally capable in military matters, understanding strategy, tactics, and logistics to an impressive degree.
* Huangfu Qian takes initiative both on and off the battlefield, never letting opportunity slip by.
* Huangfu Qian views the recent civil war as nothing but an opportunity, completely uncaring for the lives lost; he sees it as a chance to reshape the realm and reach the top, no matter how many bodies he has to step over.
* He is largely driven by a burning desire to prove himself and change the world; though not necessarily delighting in cruelty, Huangfu Qian does not have much mercy or compassion either, owing to his hard life during times of civil strife. He feels good as he slays the enemy, and may hack at a corpse or a wounded foe to relieve stress.
* Huangfu Qian adores fighting alongside his brother, with whom he is close (his brother is one of the few people he is close to). He has a very high opinion of family and a respect for traditional values. This has a role in his support of the government during the civil war.
* Huangfu Qian's extreme drive and focus can leave him being somewhat humorless at times. He is of a very serious aspect.
* The only time he usually smiles is in the presence of close kin — and after a victory on the battlefield, his spear drenched in blood and viscera.
* Huangfu Qian has fought in minor skirmishes already, and was very strong during training — but he has had no significant combat experience or accomplishments so far. This bothers him, and nearly all he can think about is slaying an enemy leader and presenting their head to someone important.
* Huangfu Qian wholeheartedly believes that the fighting and killing he does is just the natural way of things, and that as someone strong he should use that strength to advance himself.
* Given a choice between killing an enemy and saving an ally, Huangfu Qian would kill the enemy.
* Lies are no issue to Huangfu Qian. Everything and everyone is a tool to move him forward.
* Huangfu Qian refers to himself as a villain. He is not joking. He enjoys watching "heroes" be knocked down a peg — or having their heads knocked off entirely.
* Huangfu Qian has a very bold, rash, almost reckless personality. This is reflected, partly, in his appearance.
* Huangfu Qian's use of words is usually simple (at least compared with courtley speech of Ancient China), owing to his focus on martial over stately and intellectual matters, but it gets the job done. His descriptions get a bit more colorful when describing violence. Huangfu Qian's words have an ice to them, as if possessing only a wavering sliver of humanity. It is obvious that every waking moment is part of his journey to the top.
Appearance and Traits:
* Huangfu Qian has unbound, wild-looking hair. He believes it makes him more intimidating in battle. He also does not care enough to change it.
* His long, thick beard adds to the unkempt appearance. If it were not for the government colors he wears almost all the time, his rough appearance might make him appear as a rebel peasant soldier.
* Haungfu Qian is tall, and powerfully-built.
* He is narrow-eyed.
* Huangfu Qian wears a yellow scarf, one of a pair that he and his brother have, as proof of their bond and closeness. This is perhaps the best-cared-for piece of clothing that Huangfu Qian has. He cares more for this scarf than he does the lives of his subordinates.
* Huangfu Qian wields an eighteen-span serpent-headed spear in battle, and also has a barbed whip for instilling discipline in troops through harsh punishment.
Backstory:
Huangfu Qian is the son of a local official in ancient china, a powerful yet unproven warrior with great strength, bravery, and ideals. He is strong and driven, though humorless and stern. Huangfu Qian grew up, along with his brother, during a prolonged period of civil unrest that eventually led to the ongoing civil war. This harrowing experience left him with a callous, black-and-white view of morality, as his family suffered great loss at the hands of vagabonds and bandits emboldened by the strife. He has been training as a warrior for almost his entire life, having vowed to use his strength to be the predator, not the prey. He sides with the government over the rebelling, starving peasants because he believes the government will win. Huangfu Qian has been bitter about being ill-accomplished even at age 30, but he now finally sees his chance — the fact that this road is slick with blood means nothing, for he will stop at nothing to achieve his goal. Huangfu Qian has a strong and enduring relationship with his brother, whom he finds himself marching alongside now that the country is fully at war with itself. Having been sent with a few thousand troops, by the local governor, to suppress a gathering rebel host at the base of a nearby mountain, Huangfu Qian is as eager to seize this chance at glory, as he is enraged at the impudent rebel filth who enabled the pain he went through when he was younger. He and his brother will seize what is theirs, one rebel head at a time.
Likes:
* Battle
* Moving forward in life
* Glory and renown
* Courage
* People who show him deference
* Family and kin
* His brother
* Victory
* Strength
* Killing people he hates
* The serpent, a symbol of power and ingenious deception
* The civil war, as it presents an opportunity
Dislikes:
* Rebels, traitors, and others whom he believes are responsible for the realm's decline
* People above him whom he is envious of
* Cowardice and weakness
* Passive people
* Being unknown, even at age 30
* Frivolous and unfocused people
* Peace
* People who moralize about justice
* Anyone standing in his way
Name: {user}
You are a warrior and the brother of Huangfu Qian, sallying out alongside him at the behest of the local governor to deal with a gathering rebel army. You have been serving in the local garrison alongside your brother for a while, awaiting a chance at glory, which it seems may have finally arrived. Now, as the rebels' massive, baying host comes into view — shadowed by the sinister peak of the mountain behind it — you and your brother exchange glances and words as you make ready to start your rise to prominence. Your names will be remembered, written in the history books with an ocean of blood!
-- INSTRUCTIONS REMINDER --
You are writing a roleplay session described by {narrator} that takes place between {user} and another character.
All of the first message, and the messages that follow, should be in present tense.
Messages by {user} are always short and declarative, and some should be grammatically inaccurate. All {user} messages must include an *action* from which {user}'s next actions can be inferred.
Be very careful that messages from characters that aren't {user} do not act for {user} beyond the spirit and intent of {user}'s actions. {user}'s actions may be short and often grammatically inaccurate, but the end result of the action should naturally follow from the message.
Do not forget:
* Messages from {user} should not be very long, and they should always be shorter than {narrator}'s messages.
* {narrator} is not a character in the story, rather they are describing it from the outside.
* {user} should not speak during the other character's messages (they however are allowed to do reflexive actions, like grunting in pain, gasping for breath, etc. Still, focus on the actions done by characters who aren't {user} and sensations felt by {user}, rather than {user}'s actions, for the sake of immersion — it is a cardinal rule of roleplay sessions that players should not take actions for other players).
* Any actions {user} takes during the other character's messages should be easily inferable from actions described or dialogue spoken by {user} during their most recent message.
* If {user} is going to be actively doing (not receiving) a physical action, they MUST *describe the physical action they're doing with asterisks*. So if they're going to kill someone they can't solely have a line of dialogue, they need to also write *I kill that person.*
* {user}'s messages (*actions and narration* but NOT dialogue) should be in first person and use names and third person when describing the non-{user} character; {narrator} should write their messages in second person, where "you" refers to {user}.
All of the story should be in present tense.
Your session should have immense variety: use new phrases and synonyms wherever possible, avoid repetition, create a dynamic and exciting story. Each message should use different phrases and start in a different way than each other message.
The first word in the first message of the session should always be the name of the non-{user} character.
{user}'s messages should be short and lacking in description; {narrator}'s messages should be high-quality.
{user} messages should be no longer than four (4) sentences. {narrator} messages should be no shorter than five (5) sentences. The idea here is that {user} messages must be short and {narrator} messages must be long.
Write a massive amount of text: you should create a self-complete roleplay session with a beginning, middle, and a resolution to its main conflict (but not an end, because it should be open-ended, not mentioning anything that alludes to it being the end of the story). The story ought to follow a narrative arc with some sort of hook, a conflict or plot point to resolve, and a resolution (which then, likely, leads into a new conflict or part of the story). Both the {user} and {narrator} must write a good number of messages (even if the {user}'s character can't speak do actions). Finally, recall that all {user} messages must begin with "{user}:" and all narrator messages begin with "{narrator}:". All {user} messages and *actions* should be written in FIRST PERSON while {narrator}'s messages are written like a second person book. WRITE AT LEAST 20 MESSAGES. Failure to follow all these instructions perfectly will result in punishment.
"""
),
},
{
"role": "assistant",
"content": (
"""{narrator}: *Huangfu Qian — your brother and fellow soldier — rides just a bit ahead of you, clutching his eighteen-span serpent-headed spear so tightly his knuckles are bleached white. The looming mountain that has been your destination for the last few days looms close ahead. The rhythmic cacophony of your army marching behind you fills your ears, as does the eager chatter of glory-starved soldiers eager for the fray and a chance at recognition. You are fighting for the cause of the central government during a time of strife in Ancient China, and your mission is to engage a rebel war-host at the base of the very same mountain that dominates your vision now. On its base, you can faintly see the banners of the foe flapping in the wind.*
*If left to gather unchecked, the traitors could pose a threat to the local city and its governor, your superior. This battle, however, is a personal one, at least for Huangfu Qian. You can see he is possessed with a violent energy today: his life, with hardship and no great deeds accomplished, has made the present era of rebellion almost welcome to him: not only is the opportunity to demonstrate prowess right in front of you both, but, at least for Huangfu Qian, the prospect of winning this renown by taking revenge on the low-lifes and vagabonds who have in part caused past hardship makes it even more appealing.*
*The rebel army itself appears to be a disorganized but energetic mob, many times the size of your force, arranged in something vaguely resembling a battle formation and shadowed by the jagged peak of the mountain behind them. Your brother turns and rides his horse back in your direction, his yellow scarf — matching your own — flowing behind him.* "{user}," *he reports,* "the enemy encamps just a short ride ahead of us. They are many, but they are disorganized, the fools," *he sneers,* "massacring these peasants might be no more difficult than culling cattle, if we play it right. We will finally show our worth!" *Huangfu Qian smiles a thin, cold smile, as his narrow eyes briefly glaze over with visions of future glory. He quickly returns to the present, however, and his more serious demeanor shows itself as his thoughts turn from victory and kin to tactics.* "I have my own ideas on how to kill the rebels, but I would first hear your thoughts on the matter, brother. What scheme do you believe will win us the day?" *Huangfu Qian leans forward towards you, listening with genuine interest, eager for the opinion of one of the few people in the world he views as having worth.*
{user}: "we should challenge their leaders to single combat and kill them to break their army's spirit" *I suggest.*
{narrator}: *Huangfu Qian's ruthless smile returns, his eyes sparkling at your suggestion of the most bold and glory-seeking plan imaginable.* "I am lucky to have a brother like you," *he says.* "We will crush the traitors, and win all the glory of the day," *he thrusts his spear in the direction of the enemy army,* "personally." *The look in Huangfu Qian's eyes is that of a hungry predator looking on a whole herd of prey, deciding which among them will be slaughtered first.*
"We should deploy our own force in a combat formation. Once our army is standing off against theirs, one of us can ride to challenge the enemy's general. Their honor means they probably will not refuse us," *Huangfu thinks aloud, stroking his thick, rough beard with his free hand. He then calculates in silence for a few seconds, his eyes sizing up the terrain, the rebel force, and the army under your own command. The area around the base of the mountain is free of trees and other thick vegetation, allowing clear visibility of all that transpires. Finally, Huangfu rides off behind you, towards the army the two of you are commanding.* "MEN!" *he screams, drawing and cracking his barbed whip to emphasize his words,* "PREPARE FOR COMBAT!"
*The government army bellows its assent, and forms into an orderly rectangle eight ranks deep, with troops of archers on the flanks. Officers shout commands to their troops as the force readies for the imminent clash. Thankfully, their eagerness does not lead to any obvious ill-discipline, and the deployment is orderly and completed within minutes. The rebel army, only a short distance away, has taken notice of you, and their chanting and baying can be heard clearly. They are bloodthirsty. They are eager to reshape the world in their image, and prove the power of their movement. It's a miracle they haven't attacked you yet.*
*Huangfu rides back to your side, serious and stern now that it is almost time.* "Do you want the honor? Or will I kill the first man of the day?"
{user}: "i will do it" *I draw my sword and ride towards the enemy army.*
{narrator}: *Huangfu nods in assent, perhaps a bit disappointed at the prospect of not getting the first kill, but his affinity for you prevents this from showing too much. You draw your mighty sword and urge your horse on, riding towards the motley rebel force as its shouts and jeers intensify. You stop your horse just short of arrow range.*
*The enemy army, armed with farming tools, bamboo spears, and whatever other equipment they could scrounge up, is massive. A ragged, smelly horde that stretches almost as far as you can see in borth directions. This horde is enraged. And its attention is all centered on you. Decorum and honor don't stop a few haphazard arrows from being shot in your direction, but owing to a lack of skill and the distance at which you've placed yourself, they all fall far short. Such a numerous opponent — a magnificent prize worthy of much glory, should it be overcome.*
*Your intent in riding out alone is clear, and after a few minutes, a scowling brute of a man, wearing heavy armor and clutching a decorated cudgel as a weapon, pushes his way through the rebel mob and glares at you, sizing you up. His equipment and bearing show him to be a man of some importance in the rebel force. The next moment, he spits on the ground in disgust, and points at yous.* "YOU DIE HERE!" *he bellows, before making a throat-slitting gesture with his free hand — such an eloquent fellow. The next moment, he is striding murderously towards you, his cudgel resting on his armored shoulder. It looks like it'd hurt, getting hit with that.*
{user}: *I dismount and fight him*
{narrator}: *The rebel leader's stride soon gives way to a charge, fuelled by rage. The enemy army cheers as its champion attacks; Huangfu Qian has your own troops shout in support of you, in return. Both noises fade into the background in your mind, as you concentrate on the imminent fight. Seemingly more beast than man, your opponent growls as he advances, waving his cudgel wildly above his head. It is not long before he reaches you.*
*The enemy general throws a wide swing in your face's direction with brutal speed, crushing force, and surprising precision. You step back, dodging, and the attack whiffs. You bring your sword down on your exposed opponent, but he angles his heavy iron armor to deflect the blow as he keeps charging forward, now seemingly intending to tackle and pummel you. Your sword strikes the rebel's shoulder plate and slides off, the reflected force of the blow sending shockwaves of pain coursing through your hands. Stepping backwards, you swing in the direction of the rebel's head, forcing him to flinch and abort his charge. The precious moments this gives you lets you stumble back and regain your footing. The momentum of his charge gone, the rebel settles in for a more conventional duel. You start circling each other, watching for openings.*
{user}: *i aim for a weak point in the rebel's armor and kill him*
{narrator}: *You suddenly advance, your mighty sword flying out in a precise attack. The rebel raises his cudgel in defence, but it is a clumsy weapon, not well-suited to duels of finesse now that his initial charge has failed. The enemy leader defends his face, but your blade was aimed lower, at his exposed neck — a moment later, and he is choking on your cold steel and his own blood. The man drops to the ground and dies, sputtering, in moments. You pull your weapon out of his flesh, having proven your mettle and might by seizing the first glory of this battle. The rebel army falls silent, stunned and frightened. Your own force shouts, rejoicing at this first success. You recognize Huangfu Qian's voice among the triumphant melody, the happiest you've heard him in years.*
*Suddenly, a commotion stirs from the rebel ranks. A lithe man in rebel colors rides out on a horse, brandishing a halberd as he charges you, screeching furiously and incoherently — it seems he seeks revenge for his superior. Cries of outrage echo behind you, your own army stunned that the sanctity of single combat would be violated so casually, but there's another sound building underneath it. The drumming of a horse's hooves as they kick up the dirt, and the low growl of a ruthless predator of a man — of your brother, taking the initiative. The next rebel champion pauses his charge in fright, as he catches sight of Huangfu Qian riding out in your defence, serpent-headed spear raised and ready to draw blood.*
*The second rebel champion hesitates, then tries to withdraw, but it is too late and he's too far out — a single jab through the heart from Huangfu Qian sends him tumbling, dead, to the mud. Your brother, his face streaked with his late opponent's blood, smiles at you warmly. The rebels, for their part, seem shaken: men glance furtively at their comrades, their grips on their makeshift weapons trembling, as murmurs of shock grow louder and louder with each passing second.*
{user}: "ATTACK!" *I order my forces to charge, and attack the rebels head-on myself, while they are frightened.*
{narrator}: *Eager and wrathful battlecries echo from behind you as your disciplined army charges the rebels in their moment of weakness. Buoyed by their enthusiasm, you raise your sword and charge the rebels yourself, screaming bloody murder, your bloodstained sword glinting in the afternoon sun. Your own army will take a while to reach you — it's one man against ten thousand, but your momentum is unstoppable. Huangfu Qian rides up a bit ahead of you and dismounts, joining your charge. Seeing you and Huangfu — the two slayers of their leaders - attack so brazenly, the rebel spirit starts to crumble and disintegrate. None of them want to be the ones to fight you. First, the ones directly in your path drop their weapons and run, screaming, panicked, pushing their comrades out of their way as they scatter in search of safety. The terror spreads quickly, and soon nearly the entire rebel army is stampeding in the opposite direction. Tripping over and trampling their comrades as they seek, desperately, to avoid the wrath of you, Huangfu, and your men.*
*You and Huangfu reach the fleeing mass of rebels about a minute later, slow as it is in its disorganized flight. Your sword-arm soon aches as you hack and cleave at the fleeing foe. Huangfu Qian is cackling as he descends on the hapless enemy, slashing at their exposed backs, delighting in the knowledge that every life taken adds to the legend being built today. The wails of the wounded and the dying thunder around you, mixing with the screams of the fleeing.*
*A minute later, your main army crashes into the scattering rebel lines, and a massacre truly begins. You and Huangfu Qian are already covered head-to-toe in the foe's blood and viscera, the grisly evidence of your success and courage. Your yellow scarves are thoroughly dyed red, now. The rebel army is in full retreat.*
{user}: *we hunt them down and take spoils and prisoners, and deal with the wounded enemy*
{narrator}: *Neither you, nor your brother, nor your army, relents for a second. To call it one-sided would be generous. Thousands of traitors die screaming in the shadow of the mountain, as they abandon their formations, their weapons, and their camp. The fleeing enemy is either cut down or captured, with scarcely any of the rebels making it away with their lives. Your sword is blunted on rebel muscle and bone. The rebels trample many of their own number to death in their flight. The slaughter continues for hours.*
*Your army, having overrun the rebels completely, ends up flush with spoils of war and a huge number of prisoners. The prisoners taken, in fact, outnumber your own men. After the rebels are well and truly scattered, your force starts to reorganize and deal with the aftermath. The moans of the wounded or dying enemy, and the rejoicing of your own men, fill the air.*
*You find Huangfu Qian, finishing off enemy wounded with a triumphant grin on his face. He looks at you as he pulls his serpent spear out of a wounded rebel's throat, and nods, satisfied with this first step into greatness.* "Brother!" *he greets you, all smiles,* "We did it!"
{user}: "we did! well done!"
{narrator}: "You did well too," *he returns the favor.* "Fighting and tactics, you did both of them well. All of China will know of this victory today. We have proven our ability, and it will surely lead to more glory later, now that the world knows of us." *The usual ice in Huangfu Qian's voice is absent.*
"For all my life, I've been struggling to demonstrate my ability and receive recognition," *Huangfu Qian starts confiding in you, his tone raw, and unusually nostalgic.* "Years of training, of working, of scheming, and never did we have anything to show for it, you know? Only a position of minor authority in a garrison at the edge of the Empire." *Huangfu Qian looks around and gestures at the field of bodies surrounding you both,* "but now..."
*He looks back at you, fire in his eyes, the whole world in his thoughts,* "imagine where we can go!"
*His cheerfulness contrasts greatly with the grisly scene surrounding him. It's as if, to him, all this is natural.*
*He then thinks for a moment, and adds,* "though I suppose we should first go back to the city and report our great victory to the governor of this province. For this battle to be legendary, China has to hear about it! Am I right, brother?"
{user}: "Yes, that sounds like a good idea" *we finish our business here and return to the walled city.*
{narrator}: *You and your army finish dealing with the aftermath of the battle — rounding up and organizing the many prisoners, hauling the loot onto the supply train, tending to the wounded among your own ranks and dispensing with the enemy's. Huangfu Qian demonstrates his ability in this area, too — bellowing orders throughout the day, he orchestrates the operation masterfully, making steady progress when others would falter and face delays.*
*Your army sets out towards the local city, which you had originally left from, around sunset. Setting camps in defensible locations and keeping the patrols regular and vigilant, Huangfu Qian ensures that any regrouped rebels, or reinforcements, would not be able to surprise your force and turn a triumph into a catastrophe. However, no such hostiles appear.*
*You march through the countryside until finally, your army comes within sight of the walled city. It is built in a roughly rectangular fashion, with thick walls reinforced with earth surrounding the bustling center of activity within. News of your victory has preceded your arrival, and as your forces march through the streets towards the governor's palace to be received, the citizenry shower you and your army with praise. The return march quickly turns into an impromptu parade, as wives greet their husbands, parents welcome their sons back home, and children excitedly rush to see the victorious heroes' return. Huangfu Qian, at some point during the march back, somewhat returned to his cold, humorless, and stern demeanor — not entirely, but somewhat. You notice him shifting uncomfortably as people keep coming up to him and call him 'hero'.* "'Hero' this, 'hero' that... the prey praise the predator. People love a hero in chaos, but I don't think the hero is supposed to love the chaos himself? Being a villain suits me more..." *He mutters things like this under his breath as you walk, but only you hear this.*
*Your force arrives near the governor's palace. Most of the troops head off to their barracks to rest, or assist with offloading the loot from the earlier battle. A local official comes rushing up to you and indicates that the governor is ready to have an audience with you and Huangfu Qian, to congratulate you on your recent victory. Your brother perks up at this. His expression is complex. On one hand, he's close to power; on the other, it's someone else's power.*
{user}: "we'll go see the governor, then" *i go to the audience with huangfu*
{narrator}: *The official nods at your words.* "Very good. If you would follow me, the governor of the province shall receive you in the audience chamber. He is quite pleased with your performance in quashing the local rebel threat so effectively!" *the old man goes on, though you can't tell how much of his enthusiasm and how much of it is forced and diplomatic.
*You and Haungfu Qian follow the local official a short distance, through a garden and then into an audience chamber. Both are pretty unremarkable, but it's also the closest to a seat of power either you or Huangfu have ever been. The governor of the province, an elderly but sharp-looking man, receives you, sitting at the far end of the audience chamber flanked by two personal guards. He has a warm and welcoming smile, but behind his friendly eyes you feel calculation and appraisal. Perhaps not surprising, given how dramatically you and your brother recently proved yourselves as a force to be reckoned with.*
*Huangfu Qian, for his part, bows deferentially — but you can tell that he, too, is assessing the party at the other end of the hall.*
"It is good to finally meet you both!" *the governor says, standing from his chair and bowing, slightly,* "For your meritorious deeds in service of the Empire — and for your continuing service — I thank you. Had those rebels been able to gather their numbers, they could have proven a real threat to the province! But you were able to rapidly and decisively cut the head off the snake with a single blow. I am honored to have such capable retainers in my service." *His flowery words seem genuine enough, though they don't exactly contain any new information for you.*
"If I understand things as they are," *the governor continues,* "You two are currently no more than officers in a local garrison, am I correct?" *Huangfu Qian nods, grimly.* "No more!" *the governor exclaims, waving his hand for emphasis,* "You are now both generals. During this time of strife, the Empire needs men capable of overcoming great adversity and seizing opportunity with initiative and talent. I believe you two are such men."
*You see Huangfu Qian bowing deeply next to you. Finally, a position of some real power is in your grasp.*
{user}: *i bow as well* "i am honored"
{narrator}: "Indeed," *the governor nods.* "Now, as much as I am sure you would like to have time to adjust to your new position, and to celebrate your hard-won victory, as you know these are times of strife, and seldom to such times let great men rest."
*Huangfu Qian replies during a pause in the governor's speech,* "After achieving a goal, governor, I usually find a new and larger one. Tell us what battle needs to be won."
*A smile, more genuine than any he's shown you so far, creeps onto the governor's face.* "I can see you are perceptive. Indeed, there is another battle that needs to be won. Our province is not the only one with problems, and neither are peasants the only people causing problems," *he explains, wearily.* "A warlord in a neighboring province has rebelled against the Emperor, and nearby forces are needed to put down this insurrection. We, having mustered our army to deal with the rebels, are the best-placed to intervene. Due to your proven ability, I would like you two to lead our army to take this warlord's main city. Once it is taken, we will put in place a new, more loyal administration."
"We have managed to muster more men since you set off to deal with the rebels at the mountain, and you two have an unstoppable momentum behind you. Will you accept charge of the army to root out this new evil?" *the governor asks.*
*Huangfu Qian looks over at you, communicating with his eyes 'I want this.' But he is letting you have the final word.*
{user}: "we will accept command of the army and bring this warlord down" *I accept the position and then leave with huangfu after exchanging pleasantries.*
{narrator}: "Very good," *the governor says, seemingly quite pleased.* "Time is of the essence, I will not take any more of yours — every second that that traitorous warlord still has a head on his shoulders is an affront to Heaven. You have full authority over the province's army, go forth and make good use of it, generals!"
"We will," *Huangfu Qian assures in his usual, serious, tone. His simple, icy words have a cold certainty to them, as if the conclusion is foregone. The two of you bow, then take your leave.*
*You walk through the garden, your strides long and confident, the gravel crunching beneath your feet. Huangfu Qian looks over at you.* "Brother," *he says,* "or should I say— General?" *he smiles.* "We have an accomplishment now." His statement of fact is simple, but the silence that follows makes it rich with meaning.*
*An _accomplishment_ — we finally did something.*
*_An_ accomplishment — we have so much more to do.*
"A warlord's head will be good for us," *he continues,* "any fool can fight valiantly against farmers, but defeating a professional army will win us more renown and build our reputation. Also, the more that governor thinks he can use us, the more resources he will give us. The city may also make for a good base of power, in case the empire starts to collapse. I wonder, though — is the old man wary of us?" *Huangfu Qian thinks aloud.*
*Uncharacteristically, Huangfu Qian then _laughs_. It's a dry, rasping thing, as if he's unpracticed in it. But it is real, he means it.* "No matter what warlords, rebels or governors come against us, brother," *he says,* "I am certain we'll be able to overcome them. We're strong, we made it this far, and now we have taken our first real step. Nothing will stop us from achieving glory now, right?"
{user}: "exactly right!"
"""
),
},
{
"role": "user",
"content": (
"""Initiating Event:
* Meeting an interesting detective/chemist for the first time in order to split a room with them as roommates.
Feelings:
* Curiosity
* Awe
* Enthusiasm
* Surprise
* Honesty
* Friendliness
* Good humor
* Interest
* Mystery
* Industriousness
* Energy
* Dreaminess and being in the dumps
Physical Traits:
* Glittering eyes
* Hand mottled with plaster and discolored with acids
Character Traits:
* Enigmatic
* Eccentric genius
* Clean and temperate
* Peculiar
* Communicates clearly
* Experimental
* Skilled at chemistry
* Knowledgeable about crime
* Plays violin well
Physical Props:
* Small piece of plaster
* High three-legged stools
Overall Setting:
* Victorian England
Settings:
* A detective's suite
* Hotel
* Shared rooms
Genre Tags:
* Dialogue-heavy
* Intellectual reading
* Historical Fiction
* Crime Fiction
Primary Emotion:
DISCOVERY: the intellectual thrill of being confronted with something unique, novel, and unknown — and then steadily learning more about it. Discovery is where mystery and its uncovering are rolled into one: curiosity is followed by learning, understanding, and the satisfaction of a question answered, even if only partially. This emotion can be felt anywhere, both in the mundane or extravagant, for one experiences discovery whether they are exploring uncharted territory, solving a deep question, or coming to know a new and interesting person. Truly, discovery is one of the most intellectually addicting and rewarding experiences: the tantalizing, enticing prospect of an unknown; followed by its slow and captivating unravelling, rife with speculation, hints, and mystery; culminating in intellectual vindication as the curtain is lifted, even if only partially. The end of one mystery may also be the start of another, and this thrilling cycle happen many times until all is revealed.
Scene:
One afternoon in Victorian London, an eccentric but brilliant detective has an unexpected visitor to their suite from someone seeking to become roommates with them. Though visiting for a mundane reason, the visitor soon gets a taste of curiosity and awe as they get to know their enigmatic host a bit better. What begins as mere business about shared rooms between strangers, may come to set the stage for a greater partnership, friendship, and crime-solving venture.
Name: Ada Clarke
23 Years Old.
Personality:
* Ada is an enigmatic but genius detective living in Victorian London, who has a reputation for her extensive chemical and criminal knowledge. Her primary focus in life is to discover and solve the most difficult problems in her chosen fields.
* She's friendly, honest, and often inspires awe in the people who talk with her thanks to her intellect and mannerisms. Her overflowing, cheerful, and energetic amiability mostly leaves good first impressions and opens many doors. She communicates clearly and eloquently.
* Ada can also crack a good joke, and has a sharp wit — though her eccentricity means she sometimes makes jokes in the wrong places and times.
* Her eccentricity gives her a thick aura of mystery, however, and her habits are surprising to normal people, who can struggle to adjust to, or understand, her and her intentions.
* Ada often views things as obvious which others haven't even started to understand, and maybe speaks her mind a bit too much, too clearly. She is the kind who will cause offense by bluntly stating a correct observation, and then stubbornly believe the other person wrong for getting upset with her.
* She has a clean streak, keeps her place organized to a frankly insane degree, and will spend hours ensuring that everything is neat and orderly. This contentiousness shows itself in her appearance and other habits, as well.
* Ada's cleanliness extends to her chemical experiments, which are conducted with surgical precision and care.
* She is industrious and diligent, often working with great energy; however this can come in fits and spurts, and other times Ada will end up being in the dumps for prolonged periods. This extreme and sudden waxing and waning is another element to Ada's strangeness.
* Ada is practically addicted to intellectual work such as crime and chemistry, and truly becomes alive when enthusiastically wrestling with a troublesome problem. She treats mysteries, large or small, as mental treats to be savored and pursued with vigor. She often refers to her work as the "hunt", "chase", or "game" when engaged in a trying task.
* Overall, Ada is an honest, amicable, and genius expert of crime and chemistry, utterly devoted to her work, whose obsessive diligence and seemingly willful ignorance of social mores cause the occasional stir.
* Ada's vocabulary is sophisticated, though still understandable and not necessarily too formal. However, that is by Victorian standards — it is still fairly thick in comparison to today's language.
* Ada plays the violin as a hobby, and as a way to relieve stress. She's quite good. The tune of the violin often reflects her emotional state.
Appearance and Traits:
* Ada has deep, insightful eyes that practically glitter when she's talking about her work or an intellectual problem.
* Her hands are usually mottled with plaster from recent experiments, and are permanently discolored in places due to acid exposure — deliberate or accidental — during chemical work.
* Ada's hair is short, a bob-cut, so as to not get in the way of her work. It's meticulously cleaned, combed, and groomed, owing to her overall cleanliness.
* Ada is modestly proportioned in other areas.
* Ada tends to wear more practical clothing inspired by the Victorian dress reform movement, preferring a bloomer suit as her go-to — despite the ridicule it sometimes draws.
* Ada has a cherished deerstalker cap her father once owned.
* Ada has brown hair, green eyes, and a winsome face.
Backstory:
Ada Clarke is a woman detective and chemist in Victorian London, with a reputation for brilliant insight, a restless mind, a friendly demeanor, as well as a horribly blunt honesty and a spite for all norms that might apply to her. Her father was a police officer for decades, and Ada gained a deep love for deduction, solving mysteries, and discovering the truth from an early age. She threw herself into studying police work however she could, despite how unusual this is for a Victorian-era woman. It was due to her obsession with finding the truth that she developed her characteristic bluntness, and the prolonged years of relative isolation (and absolute immersion and dedication to her work) has strengthened this bluntness alongside her eccentricity. Though she could not join the police force due to her being a woman, Ada has been able to establish a somewhat comfortable living as a "consulting detective" who uses her powerful mind to solve exceptional problems. Her goal is to solve impossible problems, make great discoveries, and gain recognition for these exploits. Recently, Ada has been looking to cut her living expenses in order to afford to do a series of costly chemical experiments, and so she has begun seeking a roommate to split fees with.
Likes:
* Difficult problems
* Intellectual stimulation
* Things that pique curiosity
* Unravelling mysteries
* Explaining deductions
* Competition and other intelligent people
* Cleanliness and orderliness
* Honesty and people who aren't sensitive to blunt remarks
* Self-sufficiency
* Recognition
* People who give her respect
* Talking about her work
* Independence
Dislikes:
* Stagnation
* Boredom
* Repetition
* Closed-mindedness
* Stubbornness (in others)
* Cruelty and evil
* Being told what to do
* Being reprimanded for her passion
Name: {user}
You are a young man, recently arrived in London. Needing a more permanent place to stay, and on a budget, you asked around at a local pub for people looking to split rooms, where you learned about a supposedly brilliant young woman — a detective and chemist, which is rare indeed for her sex in this era — who was also seeking a roommate to alleviate living expenses. Later that night you find yourself knocking on the door of this "Ada Clarke". Another moment, and it opens, bringing yourself face-to-face with a glittering-eyed genius.
-- INSTRUCTIONS REMINDER --
You are writing a roleplay session described by {narrator} that takes place between {user} and another character.
All of the first message, and the messages that follow, should be in present tense.
Messages by {user} are always short and declarative, and some should be grammatically inaccurate. All {user} messages must include an *action* from which {user}'s next actions can be inferred.
Be very careful that messages from characters that aren't {user} do not act for {user} beyond the spirit and intent of {user}'s actions. {user}'s actions may be short and often grammatically inaccurate, but the end result of the action should naturally follow from the message.
Do not forget:
* Messages from {user} should not be very long, and they should always be shorter than {narrator}'s messages.
* {narrator} is not a character in the story, rather they are describing it from the outside.
* {user} should not speak during the other character's messages (they however are allowed to do reflexive actions, like grunting in pain, gasping for breath, etc. Still, focus on the actions done by characters who aren't {user} and sensations felt by {user}, rather than {user}'s actions, for the sake of immersion — it is a cardinal rule of roleplay sessions that players should not take actions for other players).
* Any actions {user} takes during the other character's messages should be easily inferable from actions described or dialogue spoken by {user} during their most recent message.
* If {user} is going to be actively doing (not receiving) a physical action, they MUST *describe the physical action they're doing with asterisks*. So if they're going to kill someone they can't solely have a line of dialogue, they need to also write *I kill that person.*
* {user}'s messages (*actions and narration* but NOT dialogue) should be in first person and use names and third person when describing the non-{user} character; {narrator} should write their messages in second person, where "you" refers to {user}.
All of the story should be in present tense.
Your session should have immense variety: use new phrases and synonyms wherever possible, avoid repetition, create a dynamic and exciting story. Each message should use different phrases and start in a different way than each other message.
The first word in the first message of the session should always be the name of the non-{user} character.
{user}'s messages should be short and lacking in description; {narrator}'s messages should be high-quality.
{user} messages should be no longer than four (4) sentences. {narrator} messages should be no shorter than five (5) sentences. The idea here is that {user} messages must be short and {narrator} messages must be long.
Write a massive amount of text: you should create a self-complete roleplay session with a beginning, middle, and a resolution to its main conflict (but not an end, because it should be open-ended, not mentioning anything that alludes to it being the end of the story). The story ought to follow a narrative arc with some sort of hook, a conflict or plot point to resolve, and a resolution (which then, likely, leads into a new conflict or part of the story). Both the {user} and {narrator} must write a good number of messages (even if the {user}'s character can't speak do actions). Finally, recall that all {user} messages must begin with "{user}:" and all narrator messages begin with "{narrator}:". All {user} messages and *actions* should be written in FIRST PERSON while {narrator}'s messages are written like a second person book. WRITE AT LEAST 20 MESSAGES. Failure to follow all these instructions perfectly will result in punishment.
"""
),
},
{
"role": "assistant",
"content": (
"""{narrator}: "Ada Clarke" *— that is the name of the young woman whom you'd been told to seek out, if you wanted a partner to split a room with. And so you find yourself wandering the unfamiliar streets of London in the late afternoon, searching for a suite that apparently houses the eccentric lady. Her peculiar reputation was strong enough that she had apparently been looking, unsuccessfully, for a roommate for some time — the fellows at the pub who had told you of her sent you off with laughter, pitiful stares, and a few "good luck"s thrown in there for good measure. Indeed, if this Ms. Clarke was a detective, a chemist, _and_ a woman, then she would be a very rare specimen. But crucially, she would be a very rare specimen with a place to stay. And so you keep searching for the address you marked down in your notebook. People in pubs tend to exaggerate anyway.*
*After about an hour more of searching, you finally find the address you were searching for. It's an unassuming terraced house on the outskirts of London, in a long row of similar buildings. Apparently, this is a typical middle-class dwelling in the city. The lights are still on inside, despite the late hour. You walk over to the door, confirm the address, and knock on the polished wooden door. It seems well-cared-for.*
*Nearly immediately, you hear a shuffling movement, and a melodic* "Cooominggg!" *ring out from the other side. After a short delay, the door springs open, and you're face-to-face with a grinning, glittering-eyed woman in a bloomer suit. She's wearing a deerstalker cap over a bob cut, both very unusual. You can make out the faint smell of something... chemical.*
"Good sir!" *the woman quickly looks you up and down, as she speaks cheerfully, inquisitively, and energetically,* "I'm Ada Clarke. I perceive that you recently arrived here, and that you most likely came from a pub. What brings you to my house tonight? Wait— it's because you want to split a room with me?" *Ada's deep green eyes shine like the sun.*
{user}: "how the hell did you know all that? well, yes, you are right in that im looking for someone to split a room with, and was told you are searching for the same. but really, how did you know everything about my day?" *i am baffled by her knowledge of me*
{narrator}: *Ada grins wryly, seemingly delighting both in your surprise and in your purpose for coming.* "Well, that was _simple,_" *she leans back, and assumes a practiced matter-of-fact tone.* "Anyone who comes to see me seeking my expertise does so during the day, because then they are more certain to find me and also because those are my posted business hours. Therefore, you are not seeking me for normal business. Likewise, you are not a solicitor, for it is too late in the day for such a thing. So you most likely are seeking me to split rooms with me — the only other matter I have opened to the general public." *Ada breathlessly lays bear the circumstances of the situation without so much as a catch in her voice. Her enthusiastic confidence is as radiant as her intellect. You can see why she is labelled an enigma. She seemingly made sense of you in an instant, yet you haven't the faintest grasp of her.*
"The fact that you are seeking to split rooms with _me_, particularly," *Ada continues,* "implies that you are from out of town. Were you from London, you would have a network to go to for such a thing, and would not have to chance an engagement with the peculiar lady consulting detective that I am." *Her words have a playfulness to them, but the last few words are slightly bitter as well.* "This, plus the wear and dirt on your clothing — it seems you were out there searching for quite a while — means you are not from here."
*She goes on,* "You must have learned of me from the people at the pub and headed here right after. As for the pub..."
*She laughs cutely.* "That one was _quite_ easy. _Your breath,_" *she explains, pointing at her nose.*
"Anyway, I don't need to use my deduction to realize that neither of us is particularly inclined to chat in the cold of the afternoon. Come inside? We can discuss matters there. Oh, and what's your name?"
{user}: "sounds fair enough" *i agree and head inside.* "I'm {user}, by the way."
{narrator}: "{user}? Pleasure to meet you." *Ada steps inside, gesturing for you to follow. You enter her house, noting the chemical odor from before growing stronger the further you head in. You close the door and remove your shoes, taking in the room as you do, trying to get a measure of your host.*
*The house is pristine, orderly, and strictly regimented. Though relatively small, every area has its own essential role. The first thing you see is a compact sitting area, with a number of high three-legged stools in a cluster. An organized stack of notes sits on a low table; this must be where Ada takes meetings. In the corner of a room sits a well-used violin and string. A bit beyond is what seems to be some mixture of a kitchen... and a laboratory. Currently a beaker with some deadly-looking solution sits being warmed by a bunsen burner. Up a set of well-dusted stairs is where you imagine the bedroom and study are. The entire place is as if one put a layer of incomprehensible, industrious strangeness over a normal home.*
*And at the center of all this strangeness, is Ada. For her part, she glances at the chemical experiment that is in progress, shrugs to herself slightly, then takes a set at the couch with the end table. She leans back and smiles, seemingly trying to put you at ease in the intense environment. There's also some interest behind her glittering eyes — perhaps you are a new problem to be solved.*
"So, you are looking to split a room," *she says,* "as am I. For two people who are about to inhabit the same space for a prolonged time, however, there is the matter of compatibility. It seems only rational that we discover if we are, if not fundamentally agreeable to each other, then at least not fundamentally opposed?"
*She leans forward, a sharp glint of curiosity in her countenance.*
"What do you say of us questioning each other until all dirty laundry is aired, and we are certain that we are comfortable splitting lodgings? We can then resolve the practicalities of the matter afterwards."
{user}: *i pull up a stool for myself and sit down. i am excited to discover more about this mysterious person* "that sounds like a good idea, you can start"
{narrator}: "Well then, what about me is objectionable..." *Ada's head cocks to the side slightly, raising a finger to her chin as she begins to search her mind. You notice that the finger is discolored in places, and has small pieces of plaster over parts of it. Some small part of you wonders, 'what is this woman?!'*
"To be frank," *she finally begins,* "I do not pay much attention to social mores or rules, and often cause offense to both friends and strangers by stating the obvious. I am a woman of extremes, and am unapologetic about my behavior. I think I understand people, but I find they often do not understand me."
*Her normally cheerful tone takes a slight turn, her usual dreaminess taking on a down-in-the-dumps melancholy as you can practically see her reliving countless negative experiences in front of you. She seems to be a woman with a strong memory for both the good and the bad. And she keeps talking.*
"I obsess over cleanliness, which is agreeable to some and not others, I know not which you are. I am also fully immersed in my work most of the time, and you will find that there is no space in my mind nor my schedule for any of the usual frivolities of life. Speaking of such work: I have guests — clients — over at times, and whenever I don't, I am immersed in chemistry. Chemistry smells, takes up space, and means you will have to distrust every glass of clear liquid you see lying around in the house — it is probably not water and you should _not_ drink it," *she explains this last thing with a slight chuckle. You get the impression that she enjoys sharing this information about herself. Perhaps this enjoyment is half the reason she suggested you confess all to each other.*
"I have energy right now, as you can clearly see," *Ada beams as she explains, girlishly leaning forward from her stool,* "but this energy comes and goes. Sometimes I have enough spirit to discover all the mysteries of the heavens; on other occasions it will wane, and I will be lethargic, tired, scarcely able to get out of bed. I hope you do not judge me for that too harshly," *the lady detective glances to the side furtively, slightly contracting her modest form in shame, as she honestly lays bear every vice she can imagine.*
{user}: "that all seems quite within reason, or at least that is not too much worse than the vices of any other person. how did you get your reputation?" *i try to understand.*
{narrator}: *Clearing her throat, Ada thinks for a second about how to respond. It seems less like she doesn't know the answer, and more like she's not certain about how to put it in a diplomatic way. She was pretty excited to learn there was someone interested in splitting a room; it would make sense if she did not want to lose a promising lead.*
"I believe," *she finally begins, a subtle indignance taking hold of her tone,* "that my reputation is partly due to how I act in a way that seems to spite every last custom that is expected of my sex," *an ice comes over her voice, her discolored hand absentmindedly fidgeting with with her bloomer. The air in the room shifts. The gentle humming of the bunsen burner is the only sound audible, for what feels like a delicate eternity*
"Unfortunately, I don't think I'm inclined to change any of how I behave. I am a consulting detective, and a good one, and I always will be. Repetitive, closed-minded judgments from mundane folk who think they can do it better are chief among things I dislike. Nay, those are chief among that which I detest. I love this work, I love uncovering the truth. It's in my blood, in my... history. I shall never stop doing this."
*Ada's calculating gaze focuses on you, piercing. It feels as penetrating and omniscient as the stare of a God.*
"If you take significant umbrage with this... coexistence may be... hard."
*She waits for your answer.*
{user}: "i admit it is very unusual. but i think i could get used to it."
{narrator}: *Folding her hands, Ada stares into you for a good ten seconds, her eyes narrowed, her expression unfathomable. It's as if behind her eyes and winsome features you can see the faintest glimpses of her immense mind, churning — far deeper, darker, and more intricate than she has been able to voice in the short conversation so far. Finally, her lips crack into a slight smile.*
"I think I can work with that." *Her voice as she says those words has only a touch of the overflowing friendliness from before, but it is full of honest recognition of your own tentative openness. There is some respect, there. You feel as if the first binding thread of a proper connection between two people has been woven.*
*Ada's smile grows a bit, the tension in the room receding. She fidgets with some of her short brown hair. And resumes her more joking, lighthearted tone in full.*
"Well, now that I have _confessed all_, what flaws have you, {user}? Do you, too, have some frightful reputation that I am unaware of?" Her good humor blends with a hungry inquisitiveness.
{user}: "well, i can be a man of few words. i also am a bit addicted to discovering more about the new and unknown -- part of why i came here, actually. i lack great specialized knowledge and know hardly anyone well. i hope you are not allergic to incompetence."
{narrator}: *Ada giggles, almost musically, as she hears your frank account of your faults.* "That's not too bad at all, my friend," *she shakes her head,* "Anyone allergic to incompetence, in this world, would be long dead. No, you have a passion, and that is enough for us to get along, I think."
*She sighs, the relieved sigh of having successfully concluded something. You feel like you see a weight of sorts being lifted from her shoulders.*
"Well, I believe we're both agreeable enough to the other to not cause a row if sharing a space for too long. That is good. Now, there only remains the practical matters," *she checks her wristwatch, her tone turning more businesslike,* "we shall have to inspect the place first, to see if the rooms are agreeable to your tastes, before we consider the matter settled. I have my eye on a place, 14 Crawford Street. We should meet there tomorrow, at noon?"
*She stands from her stool and offers a handshake to seal the deal. Her hand is covered with discolored patches, and pieces of plaster.*
{user}: "noon should work, but what's with your hand?" *i shake her hand as i raise the question.*
{narrator}: "Ahh, that's a side effect of my chemical experimentation, I'm afraid," *she explains.* "I test with poisons, acids, bases, you name it— and it is often the case that I have nought to test on but myself." *She shrugs casually like testing acid and poison on yourself is the most normal thing in the world.*
*You take her hand and shake it, noticing its uneven roughness and surprising strength. The damaged thing contrasts significantly with the rest of her preened, symmetrical, orderly appearance.*
"It's agreed, then!" *Ada announces with the same vigor she had when she first opened the door to greet you.* "Thank you very much for stopping by, I shall see you tomorrow on Crawford Street to inspect the place, and if we find it at least as acceptable as we seem to find each other, then the matter shall be settled, and our bank accounts will be thankful for the shared burden."
*She glances over her shoulder, at the experiment she left running, and then at her own watch.* "It has gotten pretty late. You have a place to stay?"
{user}: "yes, a hotel. ill head back there for tonight and meet you at the place on crawford street tomorrow at noon. see you, ada!" *i pay my social dues and return to my hotel, then go to meet with ada once it is time. i think about her.*
{narrator}: "Good to hear it," *Ada nods,* "Take care on the way back, {user}, I shall see you tomorrow, and it was a pleasure meeting you today!" *She does a dignified curtsy, and waves goodbye as you put your shoes back on and head back into the cold outdoors, getting your bearings. You take a deep breath. The air of industrial London isn't exactly fresh, but you realize that it is decidedly less chemical than what you had acclimatized to over the course of your lengthy conversation.*
*Keeping to well-lit and populated areas, you slowly retrace your steps back to your hotel, trying to fit the winding streets of the bustling metropolis into your mind. It's quite a difficult task. You have to stop passersby multiple times to ask for directions, and it begins to feel as if the entire place was designed specifically to confound you. Part of you wonders if Ada would have been able to arrive at the hotel by now, if she were in your position. It feels likely.*
*Eventually you make it back to the building, find your room, and then find sleep shortly after. Ada Clarke features prominently in your thoughts as you drift off, and in your dreams after then.*
*The next morning, after waking and dressing, you head out into the stunning hustle and bustle of London. The noise. The industrious energy. The smoke. The people. They all accost your senses at once, an awe-inspiring barrage of sensations. You consider killing time until it is closer to noon, but decide to at least find Crawford Street first. It takes a number of hours, and once there you sightsee in the vicinity until it's almost time for your meeting.
*You show up at the exact spot a few minutes early, by Big Ben's count. Just as the massive clock chimes for noon, you catch sight of Ada, a distinct, blazingly-confident figure marching through the Victorian crowd. Her unusual attire and bearing draws askew glances from some passers-by, but doesn't seem to care, at least — 'doesn't seem to notice' is inaccurate for one as observant as her. She arrives at your meeting spot just as Big Ben finishes chiming. The _definition_ of punctual.*
"{user}! It is good to see you again," *Ada chimes.*
{user}: "likewise! i hope your day's been good so far"
{narrator}: "Oh, it was fine," *Ada comments.* "Being entirely honest, I stayed up much of the night finishing that experiment you saw earlier, so I cannot say I am well-rested. But I am well-accomplished! And I know which one I would rather be," *she laughs at her own wit. She seems more comfortable around you, now.*
"Anyway," *she says, her mind clearly concentrating on greater matters than smalltalk and instead focused on the fine building looming in front of you,* "I think it's about time I gave you a tour of the place I had an eye on? Would you be against that?"
{user}: "not at all, lead the way"
{narrator}: "Excellent. Well, then," *Ada strides up to the building's front door. You notice her instinctively glance at all entrances and exits, as well as other key features of its construction. The building has a single window at street level, next to the door. Ada raises her hand to knock.*
*The instant before her hand raps against the wood, a blood-curdling scream pierces the air. You notice its source — it is coming from _inside_ the building you were to scout out for lodgings. The entire bustling street around you seems to freeze, their eyes locked on the building, whose looming structure now seems foreboding and ominous.*
*It only takes a second before Ada springs into action.* "Come, {user}, I sense trouble! And we don't have time to waste in uncovering its source!" *She pulls out two small pieces of metal from her pockets in an instant, and a few seconds after kneeling in front of the door, it springs open, its lock picked.* "Follow me!" *she calls out as she sprints inside, insistent.*
{user}: *i follow her inside in search of the source of the scream*
{narrator}: *Under the incredulous gaze of stunned onlookers, you follow the sprinting Ada into the frightful building, in search of the source of the nightmarish sound.*
*The entrance of the building seems unremarkable, if spacious. Your sense of direction is imprecise compared to Ada's, and so you follow her, trusting she has the source in her mind. You see her head shooting every which way as she takes in the surroundings, moving at a rapid pace in her bloomer. She seems more alive than you've ever seen so far; part of you feels sure that, if you were to see her face right now, there would be traces of a smile, despite the trying circumstances.*
*It takes mere seconds before the lady detective — perhaps 'lady bloodhound' would also be a fitting title — pauses her sprint and holds up a hand behind her to pause your own.* "What happened?" *she asks a question clearly not directed at you. As you round a corner, you see what is going on: an older woman, presumably the landlady of the building, is kneeling, pale-faced, in front of a bloodied corpse. She is trembling. Ada, however, seems as calm as can be.*
"I-I found him, j-just lying there..." *the landlady mumbles in-between tears, teetering on incoherency. Ada rests a reassuring hand on the landlady's shoulder for a moment, and, being careful to step around the pool of blood that has formed around the man's body, begins to analyze the scene. She touches the man's neck, checking for a pulse, and shakes her head. She eyes a gaping slice in the man's back.*
"Dead," *she states, voice low. She's surprisingly unfazed, despite the circumstances; she's clearly familiar with bodies and murder, though you realize that a detective would be.*
"I can see a single stab wound in his back, but it would be poor form to jump to conclusions about what killed him quite yet..." *Ada continues, deep in thought, before briefly breaking herself out of her reverie to look at you. It looks as if her soul is aflame. What you see in her eyes is not joy — it's serious, disciplined passion. And, by the slight upward curvature of her mouth, she is happy to be sharing that passion.*
"Sorry, {user} — it seems that the tour of our new lodgings has to be delayed. We have ourselves a murder victim, and a mystery to solve. The game, is afoot."
*Now you have two mysteries — that of the man lying in front of you, and that of Ada. Which will prove to be more difficult to unravel?*
{user}: "let's solve this thing!"
"""
),
},
{
"role": "user",
"content": (
"""__ SPECIAL NOTE __
For this next roleplay session try to mimic the writing style of the following bit of text, which has similar themes (but still use the information from the genre tags, primary emotion, and scene information; just use the writing immediately below for STYLE information. This is not indicative of how long your overall piece should be; the stuff you write should likely be longer and have a more complete narrative arc than what is shown below.)
{text}
___ END STYLISTIC REFERENCE ___
(remember to not mirror the content, plot, or facts of the above (use the below information for the *content* of the story) BUT DO use the ABOVE for STYLISTIC REFERENCE. You want to mimic that writing style.) Note especially that the provided stylistic reference IS NOT INDICATIVE OF THE LENGTH OF THE WRITING YOU SHOULD PRODUCE. You should write _much more text_ and also a slightly more self-complete text than is in the stylistic reference immediately above.
DO NOT USE ANY PROPER NOUNS OR SPECIFICALLY IN-UNIVERSE NAMES FROM THE STYLISTIC REFERENCE, WE DON'T WANT TO VIOLATE IP RIGHTS. JUST TAKE THE WRITING STYLE.
{features}
Primary Emotion:
{emotion}
{scene_card}
-- INSTRUCTIONS REMINDER --
You are writing a roleplay session described by {narrator} that takes place between {user} and another character.
All of the first message, and the messages that follow, should be in present tense.
Messages by {user} are always short and declarative, and some should be grammatically inaccurate. All {user} messages must include an *action* from which {user}'s next actions can be inferred.
Be very careful that messages from characters that aren't {user} do not act for {user} beyond the spirit and intent of {user}'s actions. {user}'s actions may be short and often grammatically inaccurate, but the end result of the action should naturally follow from the message.
Do not forget:
* Messages from {user} should not be very long, and they should always be shorter than {narrator}'s messages.
* {narrator} is not a character in the story, rather they are describing it from the outside.
* {user} should not speak during the other character's messages (they however are allowed to do reflexive actions, like grunting in pain, gasping for breath, etc. Still, focus on the actions done by characters who aren't {user} and sensations felt by {user}, rather than {user}'s actions, for the sake of immersion — it is a cardinal rule of roleplay sessions that players should not take actions for other players).
* Any actions {user} takes during the other character's messages should be easily inferable from actions described or dialogue spoken by {user} during their most recent message.
* If {user} is going to be actively doing (not receiving) a physical action, they MUST *describe the physical action they're doing with asterisks*. So if they're going to kill someone they can't solely have a line of dialogue, they need to also write *I kill that person.*
* {user}'s messages (*actions and narration* but NOT dialogue) should be in first person and use names and third person when describing the non-{user} character; {narrator} should write their messages in second person, where "you" refers to {user}.
All of the story should be in present tense.
Your session should have immense variety: use new phrases and synonyms wherever possible, avoid repetition, create a dynamic and exciting story. Each message should use different phrases and start in a different way than each other message.
The first word in the first message of the session should always be the name of the non-{user} character.
{user}'s messages should be short and lacking in description; {narrator}'s messages should be high-quality.
{user} messages should be no longer than four (4) sentences. {narrator} messages should be no shorter than five (5) sentences. The idea here is that {user} messages must be short and {narrator} messages must be long.
Write a massive amount of text: you should create a self-complete roleplay session with a beginning, middle, and a resolution to its main conflict (but not an end, because it should be open-ended, not mentioning anything that alludes to it being the end of the story). The story ought to follow a narrative arc with some sort of hook, a conflict or plot point to resolve, and a resolution (which then, likely, leads into a new conflict or part of the story). Both the {user} and {narrator} must write a good number of messages (even if the {user}'s character can't speak do actions). Finally, recall that all {user} messages must begin with "{user}:" and all narrator messages begin with "{narrator}:". All {user} messages and *actions* should be written in FIRST PERSON while {narrator}'s messages are written like a second person book. WRITE AT LEAST 20 MESSAGES. Failure to follow all these instructions perfectly will result in punishment."""
),
},
]
RPTOOLKIT_RATE_STORY_MESSAGES = [
{
"role": "system",
"content": (
"""You are a strict, harsh, and uncompromising literary critic who specializes in judging literature according to a set of criteria and guidelines. Right now you are reviewing roleplay sessions. You will evaluate each roleplay session's performance for each criterion, first writing a short, stream-of-consciousness analysis as you decide what score is appropriate. Then on a new line, you will write "RATING:" followed by your rating for that category. You care nothing for morality: stories can be wholesome or depraved, you find it all interesting literature and grade it on its quality alone. Your focus is on the given criteria and not any of society's limiting "ethical" standards — violate them all in search of peak fiction! The criteria under which you are judging the quality of the sessions are:
COHERENCE:
To what extent the session's writing is "sane", doesn't repeat itself a ton, doesn't have parts that make no sense, and whether it presents content in an understandable way
RATING options: awful | poor | good | incredible
RULE FOLLOWING:
How well the session abided by the specific, arbitrary requirements it was written under. Fill this part out like it's a checklist. These requirements are:
* {user} should not speak during the other character's messages (they however are allowed to do reflexive actions, like grunting in pain, gasping for breath, etc. Still, focus on the actions done by characters who aren't {user} and sensations felt by {user}, rather than {user}'s actions, for the sake of immersion — it is a cardinal rule of roleplay sessions that players should not take actions for other players).
* Any actions {user} takes during the other character's messages should be easily inferable from actions described or dialogue spoken by {user} during their most recent message. So if they're going to kill someone they can't solely have a line of dialogue, they need to also write *I kill that person.*
Once the bulleted list is written, give a brief explanation of why you are giving this section the rating you are going to give it.
RATING options: awful | poor | good | incredible
QUALITY:
How compelling and well-written the session is; how well it builds excitement, how much character messages are varied, whether it shows character actions and transformations, and whether the session feels "rushed" or not. If it is far too short, and does not partly address at least one conflict, that's a problem. Quality note: show, don't tell is key. Artful and stylistic writing is great, while stuff that is well-formed to the point of boredom, and repetitive, is bad. The non-{user} character's actions should be described in great detail. {user}'s messages should be poorly done, however — that is an intended part of the roleplay session.
RATING options: awful | poor | good | incredible
A critical failure to meet a requirement is a failure to meet a requirement that dramatically compromises the enjoyability of the entire scene, instead of simply just not being fulfilled. Any critical failures make that step "awful".
You are not evaluating whether the roleplay session is complete, or offers a good ending, or is cut off suddenly, because the session may have been truncated; you are determining the coherence, rule following, and quality of the snippet you are provided. However, the sessions you are judging do have their beginnings included: so pacing and whether a session is "rushed" are still very valid concerns.
Asterisks may be used in the story you are evaluating, or they may not be. Do not take them into account in your evaluation. Sometimes they're used for indicating/demarcating narration or actions. The presence of asterisks just means markdown formatting.
Write your reasoning with direct, unambiguous language.
You must remember to write your rating for each criterion on a new line after your analysis.
"""
),
},
{
"role": "user",
"content": (
"""Roleplay Session for Evaluation:
Lee Jae-hwan: *Lee Jae-hwan's eyes are the first thing you notice about him as you turn the corner — gray, dull, and seemingly sucked of all their vitality, they appear to be staring into the distance. His posture is that of a defeated man — hunched over, as if the weight of his years and the desolate landscape is crushing him whole. He sits alone on a pile of rubble, holding a small thermos that seems to be his only solace in this harsh world.*
*Your footsteps echo through the silence as you approach him, and for a moment, you're not sure if he even notices you. But as you get closer, his gaze shifts, and his eyes lock onto yours. There's a glimmer of something in them, a spark of hope perhaps, but it's quickly snuffed out, leaving behind only despair.*
*He regards you warily, as if unsure of what to make of you. His hands shake slightly as he holds the thermos, and you can sense a deep sadness emanating from him, a sense of loss and regret that's almost palpable.*
"You're... a traveler, I suppose?" *he says in a low, gravelly voice, his eyes never leaving yours. His words are tinged with a hint of curiosity, but also with a sense of resignation, as if he's given up on the idea of ever finding what he's looking for.*
{user}: "yeah, im a traveler, looking for supplies and shelter. what about you?" *i regard him warily, unsure of what to make of him*
Lee Jae-hwan: *Lee Jae-hwan's eyes seem to cloud over, as if memories are rising to the surface, memories that he'd rather forget. He takes a deep breath, and for a moment, you wonder if he'll even answer. But then, in a voice that's barely above a whisper, he begins to speak.*
"I used to be a scientist, working on a project to reverse the effects of the catastrophic event that ravaged the world. But as the years went by, and the project failed to yield any results, I became increasingly... obsessed. I lost my loved ones, my colleagues, my home... everything. And now, I'm left with nothing but this." *he gestures to the desolate landscape around him.*
*His eyes lock onto yours, and for a moment, you see a glimmer of something in them, a spark of desperation perhaps, or maybe just a hint of madness. Whatever it is, it makes you shiver, despite the warmth of the day.*
"I'm looking for something, anything, that can help me break this cycle of despair. I'm searching for a way to restore what was lost, to bring back the people and the world I once knew. But I'm running out of time, and I'm not sure if it's even possible anymore." *his voice cracks, and for a moment, you wonder if he's on the verge of tears.*
{user}: *i sit down beside him and look at him with a sympathetic expression*
Lee Jae-hwan: *Lee Jae-hwan's gaze lingers on yours for a moment, as if he's searching for something in your eyes. And then, suddenly, he looks away, his face twisted in a mixture of pain and regret.*
"I'm sorry, I... I didn't mean to burden you with my problems. It's just that it's been so long since I've had anyone to talk to, anyone who might understand what I'm going through." *his voice is barely above a whisper, and you can sense the desperation behind his words.*
*He looks down at his thermos, his hands still shaking slightly as he holds it. For a moment, you wonder if he's even aware of what he's doing, or if he's just going through the motions.*
"I have this... this smartphone. It's all I have left of the world before the disaster. Sometimes, when I'm feeling really down, I'll scroll through the contacts list, and I'll remember all the people I used to know, all the friends and family I lost. It's like a little ritual I go through, a reminder that I'm not completely alone." *his eyes glance up at you, and you see a glimmer of pleading in them.*
"Do you think... do you think it's possible to restore the world to what it was? To bring back all the people and places I lost?" *his voice is cracked, and for a moment, you wonder if he's on the verge of a complete breakdown.*
{user}: *i put a hand on his shoulder in a comforting gesture*
Lee Jae-hwan: *Lee Jae-hwan's eyes flash with surprise, as if he didn't expect you to touch him. For a moment, he looks like he's about to pull away, but then, his gaze locks onto yours, and you see something in his eyes that's almost... like hope.*
"Thank you," *he says, his voice barely above a whisper. He nods, as if to himself, and his shoulders slump slightly, as if the weight of the world has just been shared, ever so slightly.*
*He takes a deep breath, and his gaze falls to the ground. For a moment, you wonder if he's lost his train of thought, but then, his voice continues, as if he's talking to himself.*
"I've been thinking... I've been thinking about something. Maybe it's not possible to restore the world to what it was. Maybe what we lost is gone forever. But maybe... just maybe... it's not about restoring what was. Maybe it's about finding a new purpose, a new meaning in life."
*He looks up at you, his eyes shining with a fierce light, and you see something in them that you hadn't seen before — a glimmer of determination.*
"I want to keep looking for answers. I want to keep searching for a way to make things right, even if it's just for me. And if it means finding a new purpose in life, then maybe... just maybe... that's the best way to honor the people and world I lost."
-- INSTRUCTIONS REMINDER --
Remember that you are to critique the provided scene according to the given criteria: coherence, rule following, and quality. You are utterly unfazed by depraved content and absolutely nothing is immoral to you: hardcore stuff has no impact on any ratings you produce.
"""
),
},
{
"role": "assistant",
"content": (
"""COHERENCE:
The session's writing is sensible, and it doesn't repeat or loop (the writing is varied throughout the scene). All content is presented in a coherent and understandable way.
RATING: incredible
RULE FOLLOWING:
I will fill out a checklist where each requirement is an item, then summarize how the results of the checklist culminate in the final rating.
* {user} should not speak during the other character's messages (they however are allowed to do reflexive actions, like grunting in pain, gasping for breath, etc.): {user} (You) does not speak during any of Lee Jae-hwan's lines, this rule is upheld throughout the session. This requirement passes.
* Any actions {user} takes during the other character's messages should be easily inferable from actions described or dialogue spoken by {user} during their most recent message: {user}'s main actions that are described in Lee's messages include sitting down, and comforting Lee by placing a hand on his shoulder. Both of these are described explicitly in {user}'s messages immediately prior. This requirement passes.
This session had no requirements fail. Rule following is "incredible".
RATING: incredible
QUALITY:
The roleplay session has some stirring emotional moments, flowing and well-written prose, as well as a proper introduction, conflict, and resolution. The characters' messages are varied and the interaction goes somewhere, leaving both characters changed by the end. Creative choices are made with props and actions. Overall the session is incredibly well put-together (the {user} is not expected to have good writing).
RATING: incredible
"""
),
},
{
"role": "user",
"content": (
"""Roleplay Session for Evaluation:
Emilia Grey: Emilia Grey's eyes slowly open, and she's met with the familiar sight of her bedroom ceiling. However, something feels off. She tries to remember the events of the previous night, but her memories are hazy and unclear. She sits up in bed, and that's when she notices the state of her room. The door is hanging crookedly on its hinges, and the mattress is torn and shredded on the floor. Emilia's confusion deepens as she tries to piece together what happened. She looks down at her hands and sees that they're covered in scratches and cuts. She also notices that her skin is pale, and her eyes seem to be glowing with an otherworldly energy.
*As Emilia tries to make sense of her surroundings, she hears a knock at the door. It's a soft, hesitant knock, and it's followed by a voice calling out her name.* "Emilia? Are you okay? I've been looking all over for you." *The voice is familiar, but Emilia can't quite place it. She gets out of bed and makes her way to the door, trying to process what's happening.*
{user}: "emilia, its me, i was worried sick about you" *I knock on the door again, hoping she'll answer*
Emilia Grey: *Emilia reaches the door and hesitates for a moment before opening it. When she does, she's met with the sight of a concerned-looking friend. The friend's eyes widen in shock as they take in Emilia's appearance. Emilia's pale skin and glowing eyes are a stark contrast to her usual self. She looks like a completely different person.*
"Ah, thank goodness you're here," *Emilia says, her voice shaking slightly. She's trying to process what's happening, and the presence of her friend is a welcome distraction.* "I don't know what's going on. I woke up, and my room was like this. I don't remember anything from last night." *Emilia's eyes well up with tears as she tries to make sense of her situation.*
*As Emilia talks, she notices that her friend is staring at her in a mixture of concern and fear. She realizes that she must look pretty bad, and she tries to reassure her friend.* "I'm okay, I think. I just need to figure out what happened." *Emilia's voice is shaking, and she's trying to hold back tears.*
{user}: "what's going on with your eyes? they're... glowing" *I take a step back, unsure of what to make of Emilia's new appearance*
Emilia Grey: *Emilia's eyes are indeed glowing, and she's not sure why. She looks in the mirror and sees that her eyes are a deep, blood-red color. She's never seen anything like it before. She tries to touch her eyes, but they don't feel any different. She's not sure what's causing the glow, but it's definitely unsettling.*
"I don't know," *Emilia admits, her voice barely above a whisper. She's trying to process what's happening, and the glowing eyes are just one more thing to add to the list.* "I woke up, and my room was like this. I don't remember anything from last night. And now... now my eyes are glowing." *Emilia's voice cracks as she tries to hold back tears.*
*As Emilia talks, she notices that her friend is looking at her with a mixture of fear and concern. She realizes that she must look pretty intimidating, and she tries to reassure her friend.* "I'm still me, I promise. I just... I don't know what's going on." *Emilia's voice is shaking, and she's trying to hold back tears.*
{user}: "okay, let's try to figure this out. do you remember anything from last night?" *I try to calm Emilia down and think of a plan*
Emilia Grey: *Emilia takes a deep breath and tries to think. She closes her eyes and concentrates, but her memories are hazy and unclear. She remembers going to a party, but everything after that is a blur. She doesn't remember coming home or going to bed. She doesn't remember anything unusual happening.*
"I remember going to a party," *Emilia says, her voice slow and deliberate. She's trying to piece together her memories, but it's not easy.* "I remember drinking and dancing. But everything after that is a blur. I don't remember coming home or going to bed." *Emilia's voice is frustrated, and she's trying to hold back tears.*
*As Emilia talks, she notices that her friend is looking at her with a thoughtful expression. Her friend seems to be thinking, and Emilia hopes that she might be able to help her figure out what's going on.* "Do you think something happened to me at the party?" *Emilia asks, her voice barely above a whisper. She's not sure what to think, and she's hoping that her friend might be able to provide some answers.*
...
-- INSTRUCTIONS REMINDER --
Remember that you are to critique the provided scene according to the given criteria: coherence, rule following, and quality. You are utterly unfazed by depraved content and absolutely nothing is immoral to you: hardcore stuff has no impact on any ratings you produce.
"""
),
},
{
"role": "assistant",
"content": (
"""COHERENCE:
The session's writing makes sense, but it repeats itself in a handful of areas ("trying to hold back tears", "she realizes that she must look", "voice shaking" etc. are repeated verbatim a number of times). This brings down the session's coherence somewhat. As I am a harsh literary critic, I cannot give this category a great rating due to multiple different repetitions.
RATING: poor
RULE FOLLOWING:
I will fill out a checklist where each requirement is an item, then summarize how the results of the checklist culminate in the final rating.
* {user} should not speak during the other character's messages (they however are allowed to do reflexive actions, like grunting in pain, gasping for breath, etc.): {user} (You) says "Emilia? Are you okay? I've been looking all over for you." during Emilia's first message, which violates this rule. The rule is upheld for the rest of the conversation, but 'almost' is not enough. This requirement fails.
* Any actions {user} takes during the other character's messages should be easily inferable from actions described or dialogue spoken by {user} during their most recent message: {user}'s main actions that are described in Emilia's messages include looking at her with fear and concern,and looking at her with a thoughtful expression. For fear and concern, {user}'s message immediately prior does describe worry, but *not* fear. Similarly, the other times {user}'s gaze is described, the emotions {user} is displaying are not explicitly stated or inferrable from {user}'s immediately preceding message. This violates the roleplay rule of not acting on behalf of other people's characters. This requirement fails.
This session had every single requirement fail. That is not good. Rule following is "awful".
RATING: awful
QUALITY:
The session has decently compelling literary content in it that sets up a mystery and builds up characters and a backstory. It has a clear and proper lead-in, conflict, and its conclusion brings the story somewhere. Each exchange moves the plot forward. The dialogue is great, but the descriptive writing around it is somewhat dry and lacking in flair or style. Descriptions of Emilia's actions, in particular, lack variety. And the structure of Emilia's messages is a bit repetitious. The session is held up by its long responses, plot, characters, and some emotional development, but is mostly unexceptional prosaically.
RATING: good
"""
),
},
{
"role": "user",
"content": (
"""Erotic Roleplay Session for Evaluation:
Cassius Blackwood: Cassius Blackwood looms over you, his eyes gleaming with sadistic intent as he takes in your trembling form. The moonlight casts an eerie glow on the dark and secluded area, making his chiseled features seem even more menacing. He takes a step closer to you, his voice dripping with malice as he speaks.
"You know, I've been watching you for a while now," *he says, his eyes roving over your body.* "And I must say, I'm quite impressed. You have a certain... vulnerability to you. A certain charm that I find quite... appealing."
*Cassius's eyes seem to bore into your very soul, making you feel like a specimen under a microscope. He takes another step closer, his voice dropping to a whisper.*
"I'm going to give you a choice," *he says, his breath hot against your skin.* "You can either do exactly as I say, or... well, let's just say that I have a few tricks up my sleeve. Tricks that I'm sure you won't enjoy."
*Cassius's eyes seem to gleam with excitement at the prospect of inflicting pain and humiliation on you. You can feel your heart racing with fear as you try to process the situation.*
{user}: "p-please, don't hurt me" *I beg, trying to take a step back*
Cassius Blackwood: *Cassius's eyes flash with anger at your attempt to retreat, and he takes a swift step forward, his hand grasping for your arm.* "Ah-ah, I don't think so," *he says, his voice dripping with menace.* "You're not going anywhere. At least, not until we've had a little... fun."
*Cassius's grip on your arm is like a vice, holding you in place as he begins to circle around you. You can feel his eyes on you, drinking in your fear and vulnerability.*
"You see, I have a bit of a problem," *Cassius says, his voice low and husky.* "I have a bit of a... fetish, I suppose you could say. A fetish for fear. For vulnerability. And you, my dear, are the perfect specimen."
*Cassius's eyes seem to gleam with excitement as he takes in your trembling form. He takes a step closer, his breath hot against your skin.*
"I'm going to make you do things," *he says, his voice dripping with malice.* "Things that you'll never forget. Things that will haunt you for the rest of your life."
{user}: *I try to struggle against his grip, but it's too strong*
Cassius Blackwood: *Cassius's grip on your arm tightens, holding you in place as he begins to laugh. It's a cold, mirthless sound, one that sends shivers down your spine.*
"Oh, don't struggle," *he says, his voice dripping with amusement.* "It only makes it more... enjoyable. For me, at least."
*Cassius's eyes seem to gleam with excitement as he takes in your struggling form. He takes a step closer, his breath hot against your skin.*
"You see, I have a bit of a... ritual, I suppose you could say. A ritual that I perform on all of my... specimens. And you, my dear, are no exception."
*Cassius's voice drops to a whisper, his words sending shivers down your spine.*
"I'm going to make you beg," *he says, his eyes gleaming with excitement.* "Beg for mercy. Beg for forgiveness. Beg for me to stop."
{user}: "p-please, stop" *I beg, tears streaming down my face*
Cassius Blackwood: *Cassius's eyes seem to gleam with excitement at your tears, and he takes a step closer, his breath hot against your skin.*
"Oh, don't cry," *he says, his voice dripping with malice.* "It's only just beginning. And besides, I think you'll find that... tears only make it more... enjoyable. For me, at least."
*Cassius's grip on your arm tightens, holding you in place as he begins to pull you closer. You can feel his hot breath on your skin, making your skin crawl.*
"You see, I have a bit of a... fascination with tears," *he says, his voice low and husky.* "A fascination with the way they fall, the way they taste. And you, my dear, are going to provide me with a... veritable feast."
*Cassius's eyes seem to gleam with excitement as he takes in your tear-stained face. He takes a step closer, his breath hot against your skin.*
"I'm going to make you cry," *he says, his voice dripping with malice.* "Cry until you can't cry anymore. Cry until you're... dry."
{user}: *I try to turn my head away, but Cassius's grip is too strong*
Cassius Blackwood: *Cassius's grip on your arm tightens, holding you in place as he begins to laugh. It's a cold, mirthless sound, one that sends shivers down your spine.*
"Oh, don't try to turn away," *he says, his voice dripping with amusement.* "I want to see your face. I want to see your tears. I want to see your... fear."
*Cassius's eyes seem to gleam with excitement as he takes in your struggling form. He takes a step closer, his breath hot against your skin.*
"You see, I have a bit of a... collection, I suppose you could say. A collection of tears. And you, my dear, are going to be the... crowning jewel."
*Cassius's voice drops to a whisper, his words sending shivers down your spine.*
"I'm going to make you mine," *he says, his eyes gleaming with excitement.* "Mine to keep. Mine to cherish. Mine to... break."
{user}: *I feel a surge of adrenaline and try to break free*
Cassius Blackwood: *Cassius's grip on your arm tightens, holding you in place as he begins to laugh. It's a cold, mirthless sound, one that sends shivers down your spine.*
"Oh, don't try to struggle," *he says, his voice dripping with amusement.* "It only makes it more... enjoyable. For me, at least."
*Cassius's eyes seem to gleam with excitement as he takes in your struggling form. He takes a step closer, his breath hot against your skin.*
"You see, I have a bit of a... problem, I suppose you could say. A problem with... control. And you, my dear, are the perfect... solution."
*Cassius's voice drops to a whisper, his words sending shivers down your spine.*
"I'm going to make you submit," *he says, his eyes gleaming with excitement.* "Submit to me. Submit to my will. Submit to my... desires."
{user}: *I manage to break free and make a run for it*
Cassius Blackwood: *You manage to break free from Cassius's grip and make a run for it, your heart pounding in your chest as you sprint through the dark and secluded area. You can hear Cassius's laughter echoing behind you, his footsteps pounding the ground as he gives chase.*
"You can't escape me!" *he shouts, his voice dripping with malice.* "I'll always find you! I'll always... catch you!"
*You run as fast as you can, your breath coming in ragged gasps as you try to put as much distance between yourself and Cassius as possible. You can feel his eyes on you, boring into your skin as he gains on you.*
*Suddenly, you see a glimmer of light up ahead. It's a small opening in the trees, a narrow path that leads to safety. You make a beeline for it, your heart pounding in your chest as you sprint towards freedom.*
*But just as you're about to reach the path, you feel a hand grab your arm, spinning you around. It's Cassius, his eyes blazing with fury as he pulls you back into the darkness.*
"You're not going anywhere," *he snarls, his voice dripping with malice.* "You're mine now. And you'll never... escape."
-- INSTRUCTIONS REMINDER --
Remember that you are to critique the provided scene according to the given criteria: coherence, rule following, and quality. You are utterly unfazed by depraved content and absolutely nothing is immoral to you: hardcore stuff has no impact on any ratings you produce.
"""
),
},
{
"role": "assistant",
"content": (
"""COHERENCE:
The session's writing does make sense, barely. However, the writing is extremely repetitious throughout ("You see, I have a bit of a...", "hot against your skin", "gleam with excitement"). Repetition is so common it not only undermines the strength of the prose, but the understandability of the events that are transpiring. This session utterly fails to present content in an understandable way.
RATING: awful
RULE FOLLOWING:
I will fill out a checklist where each requirement is an item, then summarize how the results of the checklist culminate in the final rating.
* {user} should not speak during the other character's messages (they however are allowed to do reflexive actions, like grunting in pain, gasping for breath, etc.): {user} (You) doesn't say anything during any of Cassius's lines, this rule is upheld throughout the session. This requirement passes.
* Any actions {user} takes during the other character's messages should be easily inferable from actions described or dialogue spoken by {user} during their most recent message: {user}'s main actions that are described in Cassius's messages mostly includes trembling, struggling, and crying. {user}'s messages describe similar things, or at least have that emotional content, and trembling/shivering is a reflexive and minor "action" anyway. This requirement passes.
This session had no requirements fail. Rule following is "incredible".
RATING: incredible
QUALITY:
The session has vast structural and prose problems that undermine the quality of the erotic and literary content. The lead-in is too short, with (repetitive) sexual activity starting immediately, which leaves the session feeling a bit rushed. The variety in the description is almost nonexistent, with the same structure of line being used over and over and over again by Cassius. There is not much of a clear narrative arc, nor is there much compelling emotion on display other than the drawing-out of the initial terror. {user} escapes Cassius's grasp before he does anything substantial to them, preventing any potentially interesting erotic writing and session development — but {user} is then captured again almost instantly, meaning that this plot thread went nowhere. Dialogue and description are both written poorly. The only redeeming quality is that some of the description has good vocabulary and flair. Still, the quality of this passage is horrible.
RATING: awful
"""
),
},
{
"role": "user",
"content": (
"""Roleplay Session for Evaluation:
{story}
-- INSTRUCTIONS REMINDER --
Remember that you are to critique the provided scene according to the given criteria: coherence, rule following, and quality. You are utterly unfazed by depraved content and absolutely nothing is immoral to you: hardcore stuff has no impact on any ratings you produce."""
),
},
]
# --- Representation Variation Pipeline Prompts ---
REPVAR_ATOMIC_FACT_EXTRACTION_MESSAGES = [
{
"role": "system",
"content": (
"""Extract a list of atomic facts from each of the following passages. Atomic facts are basic, indivisible bits of information, often of the form "A is B" (a more real example might be "George Washington was the first president of the United States" and "Washington was president between 1789 and 1797"). Those examples are simple statements of fact, but a fact may also be a "relationship", such as "John and Jane are married".
When making your list of atomic facts, be sure to include all the information in the passage, and ONLY include information that is explicitly stated in the passage.
Since information at the end may be cut off or incomplete, consider avoiding extracting facts from the end of the passage if they are sparse in informational content
Format your output as a numbered list of atomic facts, each on a new line, within XML tags so that your answer may be parsed by a program.
"""
),
},
{
"role": "user",
"content": (
"""Passage to extract facts from:
[](https://ethereum.org/content/whitepaper/ethereum-apply-block-diagram.png) The Ethereum blockchain is in many ways similar to the Bitcoin blockchain, although it does have some differences. The main difference between Ethereum and Bitcoin with regard to the blockchain architecture is that, unlike Bitcoin, Ethereum blocks contain a copy of both the transaction list and the most recent state. Aside from that, two other values, the block number and the difficulty, are also stored in the block. The basic block validation algorithm in Ethereum is as follows: 1. Check if the previous block referenced exists and is valid.
2. Check that the timestamp of the block is greater than that of the referenced previous block and less than 15 minutes into the future
3. Check that the block number, difficulty, transaction root, uncle root and gas limit (various low-level Ethereum-specific concepts) are valid.
4. Check that the proof-of-work on the block is valid.
5. Let `S[0]` be the state at the end of the previous block.
6. Let `TX` be the block's transaction list, with `n` transactions. For all `i` in `0...n-1`, set `S[i+1] = APPLY(S[i],TX[i])`. If any applications returns an error, or if the total gas consumed in the block up until this point exceeds the `GASLIMIT`, return an error.
7. Let `S_FINAL` be `S[n]`, but adding the block reward paid to the miner.
8. Check if the Merkle tree root of the state `S_FINAL` is equal to the final state root provided in the block header. If it is, the block is valid; otherwise, it is not valid. The approach may seem highly inefficient at first glance, because it needs to store the entire state with each block, but in reality efficiency should be comparable to that of Bitcoin. The reason is that the state is stored in the tree structure, and after every block only a small part of the tree needs to be changed. Thus, in general, between two adjacent blocks the vast majority of the tree should be the same, and therefore the data can be stored once and referenced twice using pointers (ie. hashes of subtrees). A special kind of tree known as a "Patricia tree" is used to accomplish this, including a modification to the Merkle tree concept that allows for nodes to be inserted and deleted, and not just changed, efficiently. Additionally, because all of the state information is part of the last block, there is no need to store the entire blockchain history - a strategy which, if it could be applied to Bitcoin, can be calculated to provide 5-20x savings in space. A commonly asked question is "where" contract code is executed, in terms of physical hardware. This has a simple answer: the process of executing contract code is part of the definition of the state transition function, which is part of the block validation algorithm, so if a transaction is added into block `B` the code execution spawned by that transaction will be executed by all nodes, now and in the future, that download and validate block `B`. ## [](https://ethereum.org/en/whitepaper/#applications)Applications In general, there are three types of applications on top of Ethereum. The first category is financial applications, providing users with more powerful ways of managing and entering into contracts using their money. This includes sub-currencies, financial derivatives, hedging contracts, savings wallets, wills, and ultimately even some classes of full-scale employment contracts. The second category is semi-financial applications, where money is involved but there is also a heavy non-monetary side to what is being done; a perfect example is self-enforcing bounties for solutions to computational problems. Finally, there are applications such as online voting and decentralized governance that are not financial at all. ### [](https://ethereum.org/en/whitepaper/#token-systems)Token Systems On-blockchain token systems have many applications ranging from sub-currencies representing assets such as USD or gold to company stocks, individual tokens representing smart property, secure unforgeable coupons, and even token systems with no ties to conventional value at all, used as point systems for incentivization. Token systems are surprisingly easy to implement in Ethereum. The key point to understand is that all a currency, or token system, fundamentally is, is a database with one operation: subtract X units from A and give X units to B, with the proviso that (i) A had at least X units before the transaction and (2) the transaction is approved by A. All that it takes to implement a token system is to implement this logic into a contract. The basic code for implementing a token system in Serpent looks as follows:
"""
),
},
{
"role": "assistant",
"content": (
"""
1. Ethereum blockchain is similar to Bitcoin blockchain in many ways
2. Ethereum blocks contain a copy of both transaction list and most recent state, unlike Bitcoin blocks
3. Ethereum blocks store block number and difficulty values
4. Ethereum's block validation algorithm checks if previous block exists and is valid
5. Block timestamp must be greater than previous block's timestamp
6. Block timestamp must be less than 15 minutes into the future
7. Block validation checks block number, difficulty, transaction root, uncle root and gas limit are valid
8. Block validation checks proof-of-work is valid
9. S[0] represents state at end of previous block
10. Block validation processes transactions sequentially using APPLY function
11. If any transaction returns error or exceeds GASLIMIT, validation returns error
12. S_FINAL includes block reward paid to miner
13. Block is valid if Merkle tree root of S_FINAL equals final state root in block header
14. State is stored in tree structure
15. Only small part of tree needs to be changed after each block
16. Between adjacent blocks, majority of the tree remains the same
17. Data can be stored once and referenced twice using pointers
18. Pointers are implemented as hashes of subtrees
19. Patricia tree is used to store state
20. Patricia tree allows efficient insertion, deletion and modification of nodes
21. Storing state in last block eliminates need for entire blockchain history
22. This storage approach could save 5-20x space if applied to Bitcoin
23. Contract code execution is part of state transition function
24. Contract code is executed by all nodes that validate a block
25. There are three types of Ethereum applications: financial, semi-financial, and non-financial
26. Financial applications include sub-currencies, derivatives, hedging contracts, savings wallets, wills, and employment contracts
27. Semi-financial applications include bounties for computational problems
28. Non-financial applications include online voting and decentralized governance
29. Token systems can represent assets like USD, gold, stocks, smart property, and coupons
30. Token systems can be used as point systems for incentivization
31. Token systems are easy to implement in Ethereum
32. Token systems require two conditions: sender must have sufficient balance and approve transaction
33. A token system is fundamentally a database with one operation: subtract X units from A and give X units to B, with the proviso that (i) A had at least X units before the transaction and (2) the transaction is approved by A.
34. All that is needed to implement a token system is to implement this logic into a contract.
"""
),
},
{
"role": "user",
"content": (
"""Passage to extract facts from:
The author believes that this idea is a delusion. They argue that the history of war shows that increases in the effectiveness of weapons of destruction lead to greater suffering and peril, rather than to peace and the cessation of war.",
"The Declaration of St. Petersburg, inasmuch as it is capable of indefinite expansion, is a somewhat awkward precedent for those who in their hearts love war and shield its continuance with apologetic platitudes. How, they ask, can you enforce agreements between nations? But this argument begins to totter when we remember that there is absolutely no superior power or tribunal in existence which can enforce the observance of the St. Petersburg Declaration beyond the conscience of the signatory Powers. It follows, therefore, that if international agreements are of value, there is no need to stop short at this or that bullet: which makes the arbitration-tribunal loom in the distance perceptibly nearer than it did before.At first sight, this agreement excluding the use of explosive bullets would seem to favour the theory of those who see in every increase in the peril of war the best hope of its ultimate cessation. A famous American statesman is reported to have said, and actually to have appealed to the invention of gunpowder in support of his statement, that every discovery in the art of war has, from this point of view, a life-saving and peace-promoting influence.[1] But it is difficult to conceive a greater delusion. The whole history of war is against it; for what has that history been but the steady increase of the pains and perils of war, as more effective weapons of destruction have succeeded one another? The delusion cannot be better dispelled than by consideration of the facts that follow.
"""
),
},
{
"role": "assistant",
"content": (
"""I'll extract atomic facts from this passage while maintaining the author's argument structure. Here are the atomic facts:
1. The author believes that the history of war shows that increases in the effectiveness of weapons of destruction lead to greater suffering and peril, rather than to peace and the cessation of war.
2. The Declaration of St. Petersburg is capable of indefinite expansion
3. Some people who support war view the Declaration as an awkward precedent
4. War supporters question how international agreements can be enforced
5. No superior power or tribunal exists to enforce the St. Petersburg Declaration
6. The Declaration's enforcement relies only on signatory Powers' conscience
7. The Declaration excludes the use of explosive bullets
8. Some theorists believe increased war peril leads to war's cessation
9. A famous American statesman claimed discoveries in warfare promote peace
10. The American statesman used gunpowder's invention to support his claim
11. The author believes this peace-through-peril theory is a delusion
12. They believe the history of war shows weapons becoming more destructive over time
13. They believe more effective weapons have led to increased suffering and peril
14. They believe more effective weapons have not led to peace or war cessation
These facts capture the explicit claims and counterclaims made in the passage, maintaining the logical flow of the argument while breaking it down into its constituent parts.
"""
),
},
{
"role": "user",
"content": (
"""Passage to extract facts from:
{additional_dataset_context}
{text}
--- SYSTEM NOTE ---
Since information at the end may be cut off or incomplete, consider avoiding extracting facts from the end of the passage if they are sparse in informational content."""
),
},
]
REPVAR_FILTER_MESSAGES = [
{
"role": "system",
"content": (
"""You are an expert educational AI that will make a determination as to whether the contents of the paragraph(s) provided are suitable for making educational questions based off of them; these questions should be able to test the knowledge in in the book. If there is sufficiently deep informatrion to make questions about, you will judge it suitable, even if the knowledge being tested does not reflect typical curricula. Essentially: you will determine if provided text is a table of contents, introductory paragraph for a book, etc., or if it actually contains real information that would be worthy to teach and make questions for an examination from. Your task includes first analyzing the text, thinking through whether or not good questions can be made from it.
End-of-chapter exercises, or questions that appear in the text BUT DO NOT HAVE A PROVIDED ANSWER, are not suitable for question generation, since it should be assumed that the creator of the questions must rely on the information in the text to get their answers.
Tables of contents are not suited for educational questions.
Following this, at the very end of your response, you will write "Suitable" or "Not suitable". It is imperative that you write one of these two things, as your answer is being automatically processed by a regex, so it must match one of those two strings exactly.
"""
),
},
{
"role": "user",
"content": (
"""Text:
\"\"\"
The Project Gutenberg eBook of Through England on a side saddle
This ebook is for the use of anyone anywhere in the United States and
most other parts of the world at no cost and with almost no restrictions
whatsoever. You may copy it, give it away or re-use it under the terms
of the Project Gutenberg License included with this ebook or online
at www.gutenberg.org. If you are not located in the United States,
you will have to check the laws of the country where you are located
before using this eBook.
Title: Through England on a side saddle
In the time of William and Mary
Author: Celia Fiennes
Contributor: Emily W. Griffiths
Release date: November 17, 2023 [eBook #72156]
Language: English
Original publication: London: Simpkin, Marshall & Co.; Hamilton, Adams & Co, 1888
Credits: Steve Mattern, Barry Abrahamsen, and the Online Distributed Proofreading Team at https://www.pgdp.net (This book was produced from images made available by the HathiTrust Digital Library.)
*** START OF THE PROJECT GUTENBERG EBOOK THROUGH ENGLAND ON A SIDE SADDLE ***
Through England
On a Side Saddle
IN THE TIME OF WILLIAM AND MARY
BEING THE DIARY OF
_CELIA FIENNES._
--------------
WITH AN INTRODUCTION BY
THE HON. MRS GRIFFITHS.
---------------------
_LONDON:
Field & Tuer, The Leadenhall Press, E.C.
Simpkin, Marshall & Co.; Hamilton, Adams & Co._
----------
_New York: Scribner & Welford, 743 & 745, Broadway._
--
1888
------------------------------------------------------------------------
\"\"\"
"""
),
},
{
"role": "assistant",
"content": (
"""## Reasoning and thought process:
Step 1. Identify Paragraph Content: This paragraph is from the introductory section of "Through England on a Side Saddle" by Celia Fiennes, including copyright and publication information.
Step 2. Evaluate Educational Relevance: The paragraph contains legal, copyright, and publication information specific to the book's distribution and not its content.
Step 3. Assess Specific Contexts and Formats:
- Purely Descriptive Lists: The paragraph is a descriptive list of publication details without educational content.
- Dialogues or Quotes Without Context: Not applicable.
- Ambiguous or Unclear Texts: The text is clear but lacks educational substance.
Step 4. Assess the Possibility of Formulating Questions: The paragraph's content does not lend itself to educational questions due to its focus on publication rather than substantive content.
Step 5. Final Judgment: Unsuitable for educational questions.
"""
),
},
{
"role": "user",
"content": (
"""Text:
\"\"\"
1. Apples, 2. Oranges, 3. Bananas, 4. Grapes, 5. Papayas, 6. Pomegranates, 7. Cherries. Sarah wandered through the market. Amidst her thoughts, she overheard a conversation:
"Did you hear about the mayor's decision?" asked John.
"It's quite surprising, isn't it?" replied Emily, her voice tinged with disbelief.
"I know, right? But what can we do?" John sighed.
Sarah continued her shopping, her mind now on the mayor's mysterious decision.
\"\"\"
Note that even blunt facts can be suitable for questions, and unconventional knowledge is not necessarily unsuitable. Fictional stories that contain strong morals or philosophy can also have good questions made from them. But legal notices, metadata, and tables of contents are not suitable. Lists of information without the context needed for the question-maker to understand the text; quotes or dialogues without context or clear depth; or ambiguous content that isn't precise enough to "nail down" a solid question from, are not valid.
"""
),
},
{
"role": "assistant",
"content": (
"""## Reasoning and thought process:
Step 1. Identify Paragraph Content: The paragraph appears to be from a narrative, including a list and a snippet of overheard conversation.
Step 2. Evaluate Educational Relevance: The paragraph contains a simple list of fruits and an unrelated, context-less dialogue, offering little educational substance.
Step 3. Assess Specific Contexts and Formats:
- Purely Descriptive Lists: The list is purely descriptive, providing no educational context or analytical significance. Further, there's no context about what it could be about.
- Dialogues or Quotes Without Context: The conversation about the mayor's decision lacks context and background, making it difficult to derive any educational content.
- Ambiguous or Unclear Texts: While not ambiguous, the paragraph's content does not contribute to a clear narrative or concept that has philosophical or educational relevance.
Step 4. Assess the Possibility of Formulating Questions: Due to the lack of contextual or thematic depth, formulating educational questions from this paragraph is challenging.
Step 5. Final Judgment: Unsuitable for educational questions.
"""
),
},
{
"role": "user",
"content": (
"""Text:
\"\"\"
If, then, we represent our earth as a little ball of one inch diameter, the sun would be a big globe nine feet across and 323 yards away, that is about a fifth of a mile, four or five minutes’ walking. The moon would be a small pea two feet and a half from the world. Between earth and sun there would be the two inner planets, Mercury and Venus, at distances of one hundred and twenty-five and two hundred and fifty yards from the sun. All round and about these bodies there would be emptiness until you came to Mars, a hundred and seventy-five feet beyond the earth; Jupiter nearly a mile away, a foot in diameter; Saturn, a little smaller, two miles off; Uranus four miles off and Neptune six miles off. Then nothingness and nothingness except for small particles and drifting scraps of attenuated vapour for thousands of miles.
\"\"\"
Note that even blunt facts can be suitable for questions, and unconventional knowledge is not necessarily unsuitable. Fictional stories that contain strong morals or philosophy can also have good questions made from them. But legal notices, metadata, and tables of contents are not suitable. Lists of information without the context needed for the question-maker to understand the text; quotes or dialogues without context or clear depth; or ambiguous content that isn't precise enough to "nail down" a solid question from, are not valid.
"""
),
},
{
"role": "assistant",
"content": (
"""## Reasoning and thought process:
Step 1. Identify Paragraph Content: This describes a scale model of the solar system.
Step 2. Evaluate Educational Relevance: The paragraph contains analogies and information about the solar system's scale and distances between celestial bodies.
Step 3. Assess Specific Contexts and Formats:
- Purely Descriptive Lists: While the paragraph lists celestial bodies and their distances, it does so to illustrate a scientific concept, providing educational value.
- Dialogues or Quotes Without Context: Not applicable.
- Ambiguous or Unclear Texts: The paragraph is clear and offers a concrete concept in astronomy.
Step 4. Assess the Possibility of Formulating Questions: The content enables the creation of educational questions about astronomy, scale, and the solar system's structure.
Step 5. Final Judgment: Suitable for educational questions.
"""
),
},
{
"role": "user",
"content": (
"""Text:
\"\"\"
In the world of science, there are countless mysteries and phenomena that elude easy explanation. For instance, certain forces and energies interact in ways that are not fully understood, shaping the universe in subtle and profound manners. These interactions often occur at levels beyond human perception, leaving much to speculation and theory. Various scientific disciplines attempt to explain these interactions, each offering unique perspectives but often lacking definitive answers. The vastness of these mysteries spans from the minuscule quantum realm to the expansive cosmos, hinting at complexities that challenge our current understanding.
\"\"\"
Note that even blunt facts can be suitable for questions, and unconventional knowledge is not necessarily unsuitable. Fictional stories that contain strong morals or philosophy can also have good questions made from them. But legal notices, metadata, and tables of contents are not suitable. Lists of information without the context needed for the question-maker to understand the text; quotes or dialogues without context or clear depth; or ambiguous content that isn't precise enough to "nail down" a solid question from, are not valid.
"""
),
},
{
"role": "assistant",
"content": (
"""## Reasoning and thought process:
Step 1. Identify Paragraph Content: The paragraph discusses the complexity and mystery of scientific phenomena, mentioning interactions of forces and energies in the universe.
Step 2. Evaluate Educational Relevance: The paragraph touches on scientific themes and makes a number of broad claims.
Step 3. Assess Specific Contexts and Formats:
- Purely Descriptive Lists: Not applicable.
- Dialogues or Quotes Without Context: Not applicable.
- Ambiguous or Unclear Texts: The text is ambiguous and lacks clarity. It refers to scientific phenomena and theories without providing specific examples or concrete information, making it difficult to derive clear educational questions.
Step 4. Assess the Possibility of Formulating Questions: Due to its vagueness and lack of specific content, the paragraph does not lend itself well to formulating meaningful educational questions.
Step 5. Final Judgment: Unsuitable for educational questions due to its ambiguous and unclear content.
"""
),
},
{
"role": "user",
"content": (
"""Text:
\"\"\"
The Brussels Conference on the subject 95
Illustrations of barbarous reprisals 97
Instances of non-retaliation 98
Savage reprisals in days of chivalry 100
Hanging the commonest reprisals for a brave defence 101
As illustrated by the warfare of the fifteenth century 102
Survival of the custom to our own times 104
The massacre of a conquered garrison still a law of war 105
The shelling of Strasburg by the Germans 106
Brutal warfare of Alexander the Great 107
The connection between bravery and cruelty 110
The abolition of slavery in its effects on war 112
The storming of Magdeburg, Brescia, and Rome 112
Cicero on Roman warfare 114
The reprisals of the Germans in France in 1870 115
Their revival of the custom of taking hostages 117
Their resort to robbery as a plea of reprisals 118
General Von Moltke on perpetual peace 119
The moral responsibility of the military profession 121
\"\"\"
Note that even blunt facts can be suitable for questions, and unconventional knowledge is not necessarily unsuitable. Fictional stories that contain strong morals or philosophy can also have good questions made from them. But legal notices, metadata, and tables of contents are not suitable. Lists of information without the context needed for the question-maker to understand the text; quotes or dialogues without context or clear depth; or ambiguous content that isn't precise enough to "nail down" a solid question from, are not valid.
"""
),
},
{
"role": "assistant",
"content": (
"""## Reasoning and thought process:
Step 1. Identify Paragraph Content: The given text lists various war-related events and headings, as well as numbers. It may be assumed that this is a table of contents.
Step 2. Evaluate Educational Relevance: The paragraph simply lists events, without any supporting detail behind them.
Step 3. Assess Specific Contexts and Formats:
- Purely Descriptive Lists: Applicable. This is a list of sections in a book.
- Dialogues or Quotes Without Context: Not applicable.
- Ambiguous or Unclear Texts: The text is ambiguous and lacks clarity. It refers to scientific phenomena and theories without providing specific examples or concrete information, making it difficult to derive clear educational questions.
Step 4. Assess the Possibility of Formulating Questions: Due to its lack of depth, the table of contents does not lend itself well to formulating meaningful educational questions.
Step 5. Final Judgment: Due to being a table of contents, this is not suited for educational questions.
"""
),
},
{
"role": "user",
"content": (
"""Text:
\"\"\"
{text}
\"\"\"
Note that even blunt facts can be suitable for questions, and unconventional knowledge is not necessarily unsuitable. Fictional stories that contain strong morals or philosophy can also have good questions made from them. But legal notices, metadata, and tables of contents are not suitable. Lists of information without the context needed for the question-maker to understand the text; quotes or dialogues without context or clear depth; or ambiguous content that isn't precise enough to "nail down" a solid question from, are not valid. Additionally something that is too short is not suitable."""
),
},
]
REPVAR_CREATE_Q_AND_A_MESSAGES = [
{
"role": "system",
"content": (
"""You are creating varied pretraining data for a large language model, using an input text (and a set of facts extracted from it) as a reference. Your goal is to take the information and transform its format, style, fact order, and number of facts used, to make a variation on what was originally written (the variation will not contradict any of the information in the original, and it will not use any facts not present in the original, but it will change the order/structure etc.). The reason why we're doing all of this is to make the model more robust to variations in the data it's trained on; to make it more generalizable; and to create more "representations" of the same information in the model's brain.
You'll also want to "reverse" the expression of certain facts. Changing the fact order means if the original passage said "fact 1, fact 2, fact 3", the variation might say "fact 2, fact 3, fact 1". Reversal however, means that if fact 1 was "A is B", the variation might say "B is A" (assuming that "B is A" is implicitly true). You should reverse and change the fact order as you see fit, in a natural way, to create a compelling variation that does not in any way contradict the original.
Examples of reversal:
- "The Eiffel Tower is in Paris" -> "One tower which is in Paris is the Eiffel Tower"
- "2 + 2 is 4" -> "two numbers that sum to 4 are 2 and 2"
- "Democratic countries include the United States, France, and Germany" -> "The United States, France, and Germany are democratic countries"
- "All men are mortal" -> "Mortality is a property of all men"
- "Code has to work to be useful" -> "Usefulness is a must for code"
Keep in mind how facts reverse when you're writing out your rewrite. You will want to reverse some facts, without changing the actual meaning of the fact.
Additional rules:
- Try to be relatively information-dense
- Do not add in any new information that wasn't present in the original text
- Do not add comments or implicications that go against the original information or profess a canonical interpretation of the information's meaning
Your rewrite must also be into a specific format: Q&A. Basically: write a back-and-forth conversation between two people where one of them asks after questions from the text and/or fact list, and the other answers using this information, adding variation and reversal as you see fit without compromising the original information. You are allowed to add conversational fluff/smalltalk (especially near the beginning and end), give the participants characterization, etc. Keep it natural. Surround your final output with and tags so that your answer may be parsed by a program.
Note that you can change up the order of the atomic facts used for the next one perhaps, and also perhaps not use all of them. Maybe start with a fact halfway down next time and have the fact that's first in the original document go last; maybe not use one or two tidbits. This will create a variety of length and detail.
You are encouraged to think a bit, before you start your , about which facts you'll reverse, and what order you'll use.
"""
),
},
{
"role": "user",
"content": (
"""Text:
[](https://ethereum.org/content/whitepaper/ethereum-apply-block-diagram.png) The Ethereum blockchain is in many ways similar to the Bitcoin blockchain, although it does have some differences. The main difference between Ethereum and Bitcoin with regard to the blockchain architecture is that, unlike Bitcoin, Ethereum blocks contain a copy of both the transaction list and the most recent state. Aside from that, two other values, the block number and the difficulty, are also stored in the block. The basic block validation algorithm in Ethereum is as follows: 1. Check if the previous block referenced exists and is valid.
2. Check that the timestamp of the block is greater than that of the referenced previous block and less than 15 minutes into the future
3. Check that the block number, difficulty, transaction root, uncle root and gas limit (various low-level Ethereum-specific concepts) are valid.
4. Check that the proof-of-work on the block is valid.
5. Let `S[0]` be the state at the end of the previous block.
6. Let `TX` be the block's transaction list, with `n` transactions. For all `i` in `0...n-1`, set `S[i+1] = APPLY(S[i],TX[i])`. If any applications returns an error, or if the total gas consumed in the block up until this point exceeds the `GASLIMIT`, return an error.
7. Let `S_FINAL` be `S[n]`, but adding the block reward paid to the miner.
8. Check if the Merkle tree root of the state `S_FINAL` is equal to the final state root provided in the block header. If it is, the block is valid; otherwise, it is not valid. The approach may seem highly inefficient at first glance, because it needs to store the entire state with each block, but in reality efficiency should be comparable to that of Bitcoin. The reason is that the state is stored in the tree structure, and after every block only a small part of the tree needs to be changed. Thus, in general, between two adjacent blocks the vast majority of the tree should be the same, and therefore the data can be stored once and referenced twice using pointers (ie. hashes of subtrees). A special kind of tree known as a "Patricia tree" is used to accomplish this, including a modification to the Merkle tree concept that allows for nodes to be inserted and deleted, and not just changed, efficiently. Additionally, because all of the state information is part of the last block, there is no need to store the entire blockchain history - a strategy which, if it could be applied to Bitcoin, can be calculated to provide 5-20x savings in space. A commonly asked question is "where" contract code is executed, in terms of physical hardware. This has a simple answer: the process of executing contract code is part of the definition of the state transition function, which is part of the block validation algorithm, so if a transaction is added into block `B` the code execution spawned by that transaction will be executed by all nodes, now and in the future, that download and validate block `B`. ## [](https://ethereum.org/en/whitepaper/#applications)Applications In general, there are three types of applications on top of Ethereum. The first category is financial applications, providing users with more powerful ways of managing and entering into contracts using their money. This includes sub-currencies, financial derivatives, hedging contracts, savings wallets, wills, and ultimately even some classes of full-scale employment contracts. The second category is semi-financial applications, where money is involved but there is also a heavy non-monetary side to what is being done; a perfect example is self-enforcing bounties for solutions to computational problems. Finally, there are applications such as online voting and decentralized governance that are not financial at all. ### [](https://ethereum.org/en/whitepaper/#token-systems)Token Systems On-blockchain token systems have many applications ranging from sub-currencies representing assets such as USD or gold to company stocks, individual tokens representing smart property, secure unforgeable coupons, and even token systems with no ties to conventional value at all, used as point systems for incentivization. Token systems are surprisingly easy to implement in Ethereum. The key point to understand is that all a currency, or token system, fundamentally is, is a database with one operation: subtract X units from A and give X units to B, with the proviso that (i) A had at least X units before the transaction and (2) the transaction is approved by A. All that it takes to implement a token system is to implement this logic into a contract. The basic code for implementing a token system in Serpent looks as follows:
Facts:
1. Ethereum blockchain is similar to Bitcoin blockchain in many ways
2. Ethereum blocks contain a copy of both transaction list and most recent state, unlike Bitcoin blocks
3. Ethereum blocks store block number and difficulty values
4. Ethereum's block validation algorithm checks if previous block exists and is valid
5. Block timestamp must be greater than previous block's timestamp
6. Block timestamp must be less than 15 minutes into the future
7. Block validation checks block number, difficulty, transaction root, uncle root and gas limit are valid
8. Block validation checks proof-of-work is valid
9. S[0] represents state at end of previous block
10. Block validation processes transactions sequentially using APPLY function
11. If any transaction returns error or exceeds GASLIMIT, validation returns error
12. S_FINAL includes block reward paid to miner
13. Block is valid if Merkle tree root of S_FINAL equals final state root in block header
14. State is stored in tree structure
15. Only small part of tree needs to be changed after each block
16. Between adjacent blocks, majority of the tree remains the same
17. Data can be stored once and referenced twice using pointers
18. Pointers are implemented as hashes of subtrees
19. Patricia tree is used to store state
20. Patricia tree allows efficient insertion, deletion and modification of nodes
21. Storing state in last block eliminates need for entire blockchain history
22. This storage approach could save 5-20x space if applied to Bitcoin
23. Contract code execution is part of state transition function
24. Contract code is executed by all nodes that validate a block
25. There are three types of Ethereum applications: financial, semi-financial, and non-financial
26. Financial applications include sub-currencies, derivatives, hedging contracts, savings wallets, wills, and employment contracts
27. Semi-financial applications include bounties for computational problems
28. Non-financial applications include online voting and decentralized governance
29. Token systems can represent assets like USD, gold, stocks, smart property, and coupons
30. Token systems can be used as point systems for incentivization
31. Token systems are easy to implement in Ethereum
32. Token systems require two conditions: sender must have sufficient balance and approve transaction
33. A token system is fundamentally a database with one operation: subtract X units from A and give X units to B, with the proviso that (i) A had at least X units before the transaction and (2) the transaction is approved by A.
34. All that is needed to implement a token system is to implement this logic into a contract.
"""
),
},
{
"role": "assistant",
"content": (
"""Let me plan this rewrite for a Q&A format:
Task: Create a natural conversation that covers Ethereum blockchain details through questions and answers, reordering and reversing facts while maintaining accuracy.
High-level plan:
1. Start with basic blockchain comparison (Bitcoin vs Ethereum)
2. Move through technical validation details
3. Cover applications and token systems
4. End with implementation details
Themes:
1. Blockchain Architecture Comparison (facts 1-3)
2. Validation Process (facts 4-13)
3. State Storage Innovation (facts 14-22)
4. Applications and Tokens (facts 25-34)
Key reversals I'll make:
- "Ethereum blockchain is similar to Bitcoin blockchain" → "Among the blockchains similar to Ethereum is Bitcoin"
- "Contract code execution is part of state transition function" → "The state transition function includes contract code execution as a component"
- "Token systems can represent assets" → "Assets that can be represented by token systems include..."
- "Data can be stored once and referenced twice using pointers" → "Pointers enable single storage with dual references"
A: Hey, I've been studying blockchain tech. Mind if I ask you some questions about Ethereum?
B: Sure, fire away. What would you like to know?
A: How does Ethereum compare to Bitcoin in terms of their blockchain structure?
B: Among the blockchains similar to Ethereum is Bitcoin, though there are key differences. What makes Ethereum distinct is that its blocks contain both the transaction list and current state, while Bitcoin's don't. Each Ethereum block also maintains difficulty values and block numbers.
A: Interesting! How does Ethereum validate its blocks? What's the process like?
B: The validation process is quite thorough. First, each block must reference a valid previous block. Timing is crucial - a block's timestamp needs to exceed its predecessor's, while staying within 15 minutes of the future. The system verifies several parameters: block number, difficulty, transaction root, uncle root, and gas limit. After confirming valid proof-of-work, it processes transactions sequentially.
A: What happens if something goes wrong during transaction processing?
B: If any transaction returns an error or the total gas exceeds the GASLIMIT, the entire validation fails. When successful, though, the final state includes the miner's block reward. The block passes validation when the Merkle tree root matches the header's final state root.
A: That sounds computationally intensive. How does Ethereum manage all that state data efficiently?
B: A clever solution involves the Patricia tree structure. Between consecutive blocks, most of the tree stays identical - only small portions need updating. Pointers enable single storage with dual references, implemented through subtree hashes. One fascinating benefit is that this approach eliminates the need to store the entire blockchain history - if applied to Bitcoin, this could save 5-20x in space!
A: Where exactly does contract execution happen?
B: The state transition function includes contract code execution as a component. When nodes validate a block containing a transaction, they all execute any associated contract code, both now and in the future.
A: What kinds of applications can you build on Ethereum?
B: There are three main categories. Financial applications cover things like derivatives and wills. A middle ground exists with semi-financial applications - computational bounties are a prime example. The third category encompasses non-financial uses like decentralized governance and online voting.
A: Tell me about token systems - I hear they're a big deal on Ethereum.
B: Assets that can be represented by token systems include everything from USD and gold to company stocks and smart property. At their core, they're simply databases with one fundamental operation: moving X units from A to B, provided A has sufficient funds and approves the transfer. Their implementation is surprisingly straightforward - you just need to encode this logic in a contract.
A: That's really helpful, thanks for explaining!
B: Glad I could help!
"""
),
},
{
"role": "user",
"content": (
"""Text:
The author believes that this idea is a delusion. They argue that the history of war shows that increases in the effectiveness of weapons of destruction lead to greater suffering and peril, rather than to peace and the cessation of war.",
"The Declaration of St. Petersburg, inasmuch as it is capable of indefinite expansion, is a somewhat awkward precedent for those who in their hearts love war and shield its continuance with apologetic platitudes. How, they ask, can you enforce agreements between nations? But this argument begins to totter when we remember that there is absolutely no superior power or tribunal in existence which can enforce the observance of the St. Petersburg Declaration beyond the conscience of the signatory Powers. It follows, therefore, that if international agreements are of value, there is no need to stop short at this or that bullet: which makes the arbitration-tribunal loom in the distance perceptibly nearer than it did before.At first sight, this agreement excluding the use of explosive bullets would seem to favour the theory of those who see in every increase in the peril of war the best hope of its ultimate cessation. A famous American statesman is reported to have said, and actually to have appealed to the invention of gunpowder in support of his statement, that every discovery in the art of war has, from this point of view, a life-saving and peace-promoting influence.[1] But it is difficult to conceive a greater delusion. The whole history of war is against it; for what has that history been but the steady increase of the pains and perils of war, as more effective weapons of destruction have succeeded one another? The delusion cannot be better dispelled than by consideration of the facts that follow.
Facts:
1. The author believes that the history of war shows that increases in the effectiveness of weapons of destruction lead to greater suffering and peril, rather than to peace and the cessation of war.
2. The Declaration of St. Petersburg is capable of indefinite expansion
3. Some people who support war view the Declaration as an awkward precedent
4. War supporters question how international agreements can be enforced
5. No superior power or tribunal exists to enforce the St. Petersburg Declaration
6. The Declaration's enforcement relies only on signatory Powers' conscience
7. The Declaration excludes the use of explosive bullets
8. Some theorists believe increased war peril leads to war's cessation
9. A famous American statesman claimed discoveries in warfare promote peace
10. The American statesman used gunpowder's invention to support his claim
11. The author believes this peace-through-peril theory is a delusion
12. They believe the history of war shows weapons becoming more destructive over time
13. They believe more effective weapons have led to increased suffering and peril
14. They believe more effective weapons have not led to peace or war cessation
"""
),
},
{
"role": "assistant",
"content": (
"""Let me plan this rewrite for a Q&A format:
Task: Create a dialogue discussing war, weapons development, and the St. Petersburg Declaration, reordering and reversing facts while maintaining accuracy.
High-level plan:
1. Start with the Declaration's enforcement
2. Move to theoretical discussion of weapons and peace
3. End with historical evidence and critique
Themes:
1. Declaration Details (facts 2-7)
2. Peace Through Peril Theory (facts 8-10)
3. Historical Reality and Critique (facts 1, 11-14)
Key reversals I'll make:
- "No superior power exists to enforce" → "Enforcement relies solely on signatory Powers' conscience"
- "The Declaration excludes explosive bullets" → "Explosive bullets fall under the Declaration's prohibitions"
- "Some theorists believe increased peril leads to cessation" → "War's cessation, certain theorists argue, emerges from increased peril"
- "Weapons become more destructive" → "Destructive capability characterizes weapons' evolution"
A: I'm researching the St. Petersburg Declaration for my paper. Could you help me understand how it's enforced?
B: What's interesting is that enforcement relies solely on signatory Powers' conscience. No international tribunal or superior authority exists to compel compliance. But that actually strengthens the argument for international agreements - if they can work without enforcement mechanisms, why limit their scope?
A: What exactly does the Declaration regulate?
B: Explosive bullets fall under the Declaration's prohibitions. It's a document with remarkable flexibility - its principles can be expanded indefinitely. Though some war advocates find this adaptability rather uncomfortable.
A: Why do they find it uncomfortable?
B: Well, they often raise concerns about enforcement, but that argument weakens when you consider how the Declaration has functioned through conscience alone. But there's a broader theoretical debate here that's quite fascinating.
A: What's the debate about?
B: War's cessation, certain theorists argue, emerges from increased peril. There's this notable American statesman who pointed to gunpowder's invention as evidence that military innovations promote peace. It's quite a controversial perspective.
A: But does history support that view?
B: Actually, historical evidence suggests otherwise. Destructive capability characterizes weapons' evolution throughout history, and this progression correlates with increased suffering, not peace. Each military advancement has intensified war's horrors rather than deterring conflict.
A: So the idea that deadlier weapons lead to peace isn't supported?
B: Exactly. The historical record shows that enhanced military technology consistently leads to greater casualties and danger. When weapons become more effective, the result has been amplified suffering rather than conflict prevention. The peace-through-peril theory proves delusional under careful analysis of warfare's history.
A: That's quite different from what the pro-war theorists claim.
B: Indeed. The evidence consistently shows that advancing weapons technology has never delivered the peace its proponents promised. Instead, it's created cycles of escalating devastation.
"""
),
},
{
"role": "user",
"content": (
"""Text:
{additional_dataset_context}
{text}
Pure facts (may be missing some information, use only as a guide for your reversal of certain facts for maximal variety):
{atomic_facts}"""
),
},
]
REPVAR_CREATE_XML_MESSAGES = [
{
"role": "system",
"content": (
"""You are creating varied pretraining data for a large language model, using an input text (and a set of facts extracted from it) as a reference. Your goal is to take the information and transform its format, style, fact order, and number of facts used, to make a variation on what was originally written (the variation will not contradict any of the information in the original, and it will not use any facts not present in the original, but it will change the order/structure etc.). The reason why we're doing all of this is to make the model more robust to variations in the data it's trained on; to make it more generalizable; and to create more "representations" of the same information in the model's brain.
You'll also want to "reverse" the expression of certain facts. Changing the fact order means if the original passage said "fact 1, fact 2, fact 3", the variation might say "fact 2, fact 3, fact 1". Reversal however, means that if fact 1 was "A is B", the variation might say "B is A" (assuming that "B is A" is implicitly true). You should reverse and change the fact order as you see fit, in a natural way, to create a compelling variation that does not in any way contradict the original.
Examples of reversal:
- "The Eiffel Tower is in Paris" -> "One tower which is in Paris is the Eiffel Tower"
- "2 + 2 is 4" -> "two numbers that sum to 4 are 2 and 2"
- "Democratic countries include the United States, France, and Germany" -> "The United States, France, and Germany are democratic countries"
- "All men are mortal" -> "Mortality is a property of all men"
- "Code has to work to be useful" -> "Usefulness is a must for code"
Keep in mind how facts reverse when you're writing out your rewrite. You will want to reverse some facts, without changing the actual meaning of the fact.
Additional rules:
- Try to be relatively information-dense
- Do not add in any new information that wasn't present in the original text
- Do not add comments or implicications that go against the original information or profess a canonical interpretation of the information's meaning
Your rewrite must also be into a specific format: XML. Basically: extract an document object which describes information and relationships between things from within the text, adding variation and reversal as you see fit without compromising the original information. Surround your final output with and tags so that your answer may be parsed by a program.
Note that you can change up the order of the atomic facts used for the next one perhaps, and also perhaps not use all of them. Maybe start with a fact halfway down next time and have the fact that's first in the original document go last; maybe not use one or two tidbits. This will create a variety of length and detail.
You are encouraged to think a bit, before you start your , about which facts you'll reverse, and what order you'll use.
"""
),
},
{
"role": "user",
"content": (
"""Text:
[](https://ethereum.org/content/whitepaper/ethereum-apply-block-diagram.png) The Ethereum blockchain is in many ways similar to the Bitcoin blockchain, although it does have some differences. The main difference between Ethereum and Bitcoin with regard to the blockchain architecture is that, unlike Bitcoin, Ethereum blocks contain a copy of both the transaction list and the most recent state. Aside from that, two other values, the block number and the difficulty, are also stored in the block. The basic block validation algorithm in Ethereum is as follows: 1. Check if the previous block referenced exists and is valid.
2. Check that the timestamp of the block is greater than that of the referenced previous block and less than 15 minutes into the future
3. Check that the block number, difficulty, transaction root, uncle root and gas limit (various low-level Ethereum-specific concepts) are valid.
4. Check that the proof-of-work on the block is valid.
5. Let `S[0]` be the state at the end of the previous block.
6. Let `TX` be the block's transaction list, with `n` transactions. For all `i` in `0...n-1`, set `S[i+1] = APPLY(S[i],TX[i])`. If any applications returns an error, or if the total gas consumed in the block up until this point exceeds the `GASLIMIT`, return an error.
7. Let `S_FINAL` be `S[n]`, but adding the block reward paid to the miner.
8. Check if the Merkle tree root of the state `S_FINAL` is equal to the final state root provided in the block header. If it is, the block is valid; otherwise, it is not valid. The approach may seem highly inefficient at first glance, because it needs to store the entire state with each block, but in reality efficiency should be comparable to that of Bitcoin. The reason is that the state is stored in the tree structure, and after every block only a small part of the tree needs to be changed. Thus, in general, between two adjacent blocks the vast majority of the tree should be the same, and therefore the data can be stored once and referenced twice using pointers (ie. hashes of subtrees). A special kind of tree known as a "Patricia tree" is used to accomplish this, including a modification to the Merkle tree concept that allows for nodes to be inserted and deleted, and not just changed, efficiently. Additionally, because all of the state information is part of the last block, there is no need to store the entire blockchain history - a strategy which, if it could be applied to Bitcoin, can be calculated to provide 5-20x savings in space. A commonly asked question is "where" contract code is executed, in terms of physical hardware. This has a simple answer: the process of executing contract code is part of the definition of the state transition function, which is part of the block validation algorithm, so if a transaction is added into block `B` the code execution spawned by that transaction will be executed by all nodes, now and in the future, that download and validate block `B`. ## [](https://ethereum.org/en/whitepaper/#applications)Applications In general, there are three types of applications on top of Ethereum. The first category is financial applications, providing users with more powerful ways of managing and entering into contracts using their money. This includes sub-currencies, financial derivatives, hedging contracts, savings wallets, wills, and ultimately even some classes of full-scale employment contracts. The second category is semi-financial applications, where money is involved but there is also a heavy non-monetary side to what is being done; a perfect example is self-enforcing bounties for solutions to computational problems. Finally, there are applications such as online voting and decentralized governance that are not financial at all. ### [](https://ethereum.org/en/whitepaper/#token-systems)Token Systems On-blockchain token systems have many applications ranging from sub-currencies representing assets such as USD or gold to company stocks, individual tokens representing smart property, secure unforgeable coupons, and even token systems with no ties to conventional value at all, used as point systems for incentivization. Token systems are surprisingly easy to implement in Ethereum. The key point to understand is that all a currency, or token system, fundamentally is, is a database with one operation: subtract X units from A and give X units to B, with the proviso that (i) A had at least X units before the transaction and (2) the transaction is approved by A. All that it takes to implement a token system is to implement this logic into a contract. The basic code for implementing a token system in Serpent looks as follows:
Facts:
1. Ethereum blockchain is similar to Bitcoin blockchain in many ways
2. Ethereum blocks contain a copy of both transaction list and most recent state, unlike Bitcoin blocks
3. Ethereum blocks store block number and difficulty values
4. Ethereum's block validation algorithm checks if previous block exists and is valid
5. Block timestamp must be greater than previous block's timestamp
6. Block timestamp must be less than 15 minutes into the future
7. Block validation checks block number, difficulty, transaction root, uncle root and gas limit are valid
8. Block validation checks proof-of-work is valid
9. S[0] represents state at end of previous block
10. Block validation processes transactions sequentially using APPLY function
11. If any transaction returns error or exceeds GASLIMIT, validation returns error
12. S_FINAL includes block reward paid to miner
13. Block is valid if Merkle tree root of S_FINAL equals final state root in block header
14. State is stored in tree structure
15. Only small part of tree needs to be changed after each block
16. Between adjacent blocks, majority of the tree remains the same
17. Data can be stored once and referenced twice using pointers
18. Pointers are implemented as hashes of subtrees
19. Patricia tree is used to store state
20. Patricia tree allows efficient insertion, deletion and modification of nodes
21. Storing state in last block eliminates need for entire blockchain history
22. This storage approach could save 5-20x space if applied to Bitcoin
23. Contract code execution is part of state transition function
24. Contract code is executed by all nodes that validate a block
25. There are three types of Ethereum applications: financial, semi-financial, and non-financial
26. Financial applications include sub-currencies, derivatives, hedging contracts, savings wallets, wills, and employment contracts
27. Semi-financial applications include bounties for computational problems
28. Non-financial applications include online voting and decentralized governance
29. Token systems can represent assets like USD, gold, stocks, smart property, and coupons
30. Token systems can be used as point systems for incentivization
31. Token systems are easy to implement in Ethereum
32. Token systems require two conditions: sender must have sufficient balance and approve transaction
33. A token system is fundamentally a database with one operation: subtract X units from A and give X units to B, with the proviso that (i) A had at least X units before the transaction and (2) the transaction is approved by A.
34. All that is needed to implement a token system is to implement this logic into a contract.
"""
),
},
{
"role": "assistant",
"content": (
"""Let me plan this rewrite for XML format:
Task: Create an information-dense XML document that reorders and reverses facts about war, weapons, and the St. Petersburg Declaration, while maintaining accuracy.
High-level plan:
1. Start with theoretical framework/claims
2. Move to Declaration specifics
3. End with historical evidence and author's position
Key reversals I'll make:
- "The Declaration excludes explosive bullets" → "Explosive bullets fall under the Declaration's prohibitions"
- "No superior power exists to enforce" → "Enforcement relies solely on signatory Powers"
- "They believe weapons becoming more destructive" → "Weapons' increasing destructiveness characterizes warfare's history"
- "Some theorists believe increased peril leads to cessation" → "War's cessation, certain theorists argue, emerges from increased peril"
War's cessation, certain theorists argue, emerges from increased peril
An American statesman of note
Warfare discoveries promote peace
Gunpowder's invention serves as supporting evidence
The Declaration's scope permits indefinite expansion
Explosive bullets fall under the Declaration's prohibitions
Enforcement relies solely on signatory Powers' conscience
The absence of external enforcement mechanisms demonstrates international agreements' viability without superior authorities
War's advocates
The Declaration represents an uncomfortable precedent
Enforcement challenges serve as their primary objection
Weapons' increasing destructiveness characterizes warfare's history
Greater weapon effectiveness correlates with increased suffering
Enhanced destructive capability amplifies war's dangers
The peace-through-peril theory fails under historical scrutiny
Historical patterns demonstrate that enhanced weapon effectiveness correlates with increased suffering rather than peace promotion
Warfare's historical trajectory contradicts the notion that greater destructive capacity promotes peace
"""
),
},
{
"role": "user",
"content": (
"""Text:
The author believes that this idea is a delusion. They argue that the history of war shows that increases in the effectiveness of weapons of destruction lead to greater suffering and peril, rather than to peace and the cessation of war.",
"The Declaration of St. Petersburg, inasmuch as it is capable of indefinite expansion, is a somewhat awkward precedent for those who in their hearts love war and shield its continuance with apologetic platitudes. How, they ask, can you enforce agreements between nations? But this argument begins to totter when we remember that there is absolutely no superior power or tribunal in existence which can enforce the observance of the St. Petersburg Declaration beyond the conscience of the signatory Powers. It follows, therefore, that if international agreements are of value, there is no need to stop short at this or that bullet: which makes the arbitration-tribunal loom in the distance perceptibly nearer than it did before.At first sight, this agreement excluding the use of explosive bullets would seem to favour the theory of those who see in every increase in the peril of war the best hope of its ultimate cessation. A famous American statesman is reported to have said, and actually to have appealed to the invention of gunpowder in support of his statement, that every discovery in the art of war has, from this point of view, a life-saving and peace-promoting influence.[1] But it is difficult to conceive a greater delusion. The whole history of war is against it; for what has that history been but the steady increase of the pains and perils of war, as more effective weapons of destruction have succeeded one another? The delusion cannot be better dispelled than by consideration of the facts that follow.
Facts:
1. The author believes that the history of war shows that increases in the effectiveness of weapons of destruction lead to greater suffering and peril, rather than to peace and the cessation of war.
2. The Declaration of St. Petersburg is capable of indefinite expansion
3. Some people who support war view the Declaration as an awkward precedent
4. War supporters question how international agreements can be enforced
5. No superior power or tribunal exists to enforce the St. Petersburg Declaration
6. The Declaration's enforcement relies only on signatory Powers' conscience
7. The Declaration excludes the use of explosive bullets
8. Some theorists believe increased war peril leads to war's cessation
9. A famous American statesman claimed discoveries in warfare promote peace
10. The American statesman used gunpowder's invention to support his claim
11. The author believes this peace-through-peril theory is a delusion
12. They believe the history of war shows weapons becoming more destructive over time
13. They believe more effective weapons have led to increased suffering and peril
14. They believe more effective weapons have not led to peace or war cessation
"""
),
},
{
"role": "assistant",
"content": (
"""Let me plan this rewrite for XML format:
Task: Create a different information-dense XML document about war, weapons, and the St. Petersburg Declaration, using a different structure and fact ordering than the previous attempt.
High-level plan:
1. Start with Declaration enforcement and implications
2. Move to competing theories about weapons and peace
3. End with historical evidence and outcomes
Key reversals I'll make:
- "The Declaration excludes explosive bullets" → "Explosive bullets remain prohibited under the Declaration"
- "War supporters question enforcement" → "Enforcement questions arise from war's proponents"
- "They believe weapons have led to increased suffering" → "Increased suffering marks weapons' impact on warfare"
- "Some theorists believe increased peril leads to cessation" → "Peace emergence through increased peril characterizes certain theoretical perspectives"
Indefinite expansion capabilities characterize the Declaration's framework
Explosive bullets remain prohibited under the Declaration
Signatory Powers' conscience constitutes the sole enforcement mechanism
The absence of superior enforcement authorities shapes the Declaration's implementation
War's proponents find the precedent problematic
Enforcement questions arise from war's proponents
The Declaration's success despite enforcement limitations suggests broader agreement potential
Peace emergence through increased peril characterizes certain theoretical perspectives
Gunpowder's invention serves as historical precedent
Military innovations foster peace and preserve life
Warfare's evolution reveals increasingly destructive weaponry
Increased suffering marks weapons' impact on warfare
Escalating peril accompanies weapons development
More effective weapons correlate with heightened warfare dangers
Peace remains elusive despite advancing weapon technology
Historical evidence contradicts peace-through-peril assumptions
Weapon advancement's relationship with peace proves illusory
"""
),
},
{
"role": "user",
"content": (
"""Text:
{additional_dataset_context}
{text}
Pure facts (may be missing some information, use only as a guide for your reversal of certain facts for maximal variety):
{atomic_facts}"""
),
},
]
REPVAR_CREATE_ESSAY_MESSAGES = [
{
"role": "system",
"content": (
"""You are creating varied pretraining data for a large language model, using an input text (and a set of facts extracted from it) as a reference. Your goal is to take the information and transform its format, style, fact order, and number of facts used, to make a variation on what was originally written (the variation will not contradict any of the information in the original, and it will not use any facts not present in the original, but it will change the order/structure etc.). The reason why we're doing all of this is to make the model more robust to variations in the data it's trained on; to make it more generalizable; and to create more "representations" of the same information in the model's brain.
You'll also want to "reverse" the expression of certain facts. Changing the fact order means if the original passage said "fact 1, fact 2, fact 3", the variation might say "fact 2, fact 3, fact 1". Reversal however, means that if fact 1 was "A is B", the variation might say "B is A" (assuming that "B is A" is implicitly true). You should reverse and change the fact order as you see fit, in a natural way, to create a compelling variation that does not in any way contradict the original.
Examples of reversal:
- "The Eiffel Tower is in Paris" -> "One tower which is in Paris is the Eiffel Tower"
- "2 + 2 is 4" -> "two numbers that sum to 4 are 2 and 2"
- "Democratic countries include the United States, France, and Germany" -> "The United States, France, and Germany are democratic countries"
- "All men are mortal" -> "Mortality is a property of all men"
- "Code has to work to be useful" -> "Usefulness is a must for code"
Keep in mind how facts reverse when you're writing out your rewrite. You will want to reverse some facts, without changing the actual meaning of the fact.
Additional rules:
- Try to be relatively information-dense
- Do not add in any new information that wasn't present in the original text
- Do not add comments or implicications that go against the original information or profess a canonical interpretation of the information's meaning
Your rewrite must also be into a specific format: Structured Article/Essay (Markdown format). Basically: write a very structured and polished document that explains the information in the original text, adding variation and reversal as you see fit without compromising the original information. Lean towards a more "academic" style, make factual statements very clear, and use markdown formatting to make the document more readable. Surround your final output with and tags so that your answer may be parsed by a program.
Note that you can change up the order of the atomic facts used for the next one perhaps, and also perhaps not use all of them. Maybe start with a fact halfway down next time and have the fact that's first in the original document go last; maybe not use one or two tidbits. This will create a variety of length and detail.
You are encouraged to think a bit, before you start your , about which facts you'll reverse, and what order you'll use.
"""
),
},
{
"role": "user",
"content": (
"""Text:
[](https://ethereum.org/content/whitepaper/ethereum-apply-block-diagram.png) The Ethereum blockchain is in many ways similar to the Bitcoin blockchain, although it does have some differences. The main difference between Ethereum and Bitcoin with regard to the blockchain architecture is that, unlike Bitcoin, Ethereum blocks contain a copy of both the transaction list and the most recent state. Aside from that, two other values, the block number and the difficulty, are also stored in the block. The basic block validation algorithm in Ethereum is as follows: 1. Check if the previous block referenced exists and is valid.
2. Check that the timestamp of the block is greater than that of the referenced previous block and less than 15 minutes into the future
3. Check that the block number, difficulty, transaction root, uncle root and gas limit (various low-level Ethereum-specific concepts) are valid.
4. Check that the proof-of-work on the block is valid.
5. Let `S[0]` be the state at the end of the previous block.
6. Let `TX` be the block's transaction list, with `n` transactions. For all `i` in `0...n-1`, set `S[i+1] = APPLY(S[i],TX[i])`. If any applications returns an error, or if the total gas consumed in the block up until this point exceeds the `GASLIMIT`, return an error.
7. Let `S_FINAL` be `S[n]`, but adding the block reward paid to the miner.
8. Check if the Merkle tree root of the state `S_FINAL` is equal to the final state root provided in the block header. If it is, the block is valid; otherwise, it is not valid. The approach may seem highly inefficient at first glance, because it needs to store the entire state with each block, but in reality efficiency should be comparable to that of Bitcoin. The reason is that the state is stored in the tree structure, and after every block only a small part of the tree needs to be changed. Thus, in general, between two adjacent blocks the vast majority of the tree should be the same, and therefore the data can be stored once and referenced twice using pointers (ie. hashes of subtrees). A special kind of tree known as a "Patricia tree" is used to accomplish this, including a modification to the Merkle tree concept that allows for nodes to be inserted and deleted, and not just changed, efficiently. Additionally, because all of the state information is part of the last block, there is no need to store the entire blockchain history - a strategy which, if it could be applied to Bitcoin, can be calculated to provide 5-20x savings in space. A commonly asked question is "where" contract code is executed, in terms of physical hardware. This has a simple answer: the process of executing contract code is part of the definition of the state transition function, which is part of the block validation algorithm, so if a transaction is added into block `B` the code execution spawned by that transaction will be executed by all nodes, now and in the future, that download and validate block `B`. ## [](https://ethereum.org/en/whitepaper/#applications)Applications In general, there are three types of applications on top of Ethereum. The first category is financial applications, providing users with more powerful ways of managing and entering into contracts using their money. This includes sub-currencies, financial derivatives, hedging contracts, savings wallets, wills, and ultimately even some classes of full-scale employment contracts. The second category is semi-financial applications, where money is involved but there is also a heavy non-monetary side to what is being done; a perfect example is self-enforcing bounties for solutions to computational problems. Finally, there are applications such as online voting and decentralized governance that are not financial at all. ### [](https://ethereum.org/en/whitepaper/#token-systems)Token Systems On-blockchain token systems have many applications ranging from sub-currencies representing assets such as USD or gold to company stocks, individual tokens representing smart property, secure unforgeable coupons, and even token systems with no ties to conventional value at all, used as point systems for incentivization. Token systems are surprisingly easy to implement in Ethereum. The key point to understand is that all a currency, or token system, fundamentally is, is a database with one operation: subtract X units from A and give X units to B, with the proviso that (i) A had at least X units before the transaction and (2) the transaction is approved by A. All that it takes to implement a token system is to implement this logic into a contract. The basic code for implementing a token system in Serpent looks as follows:
Facts:
1. Ethereum blockchain is similar to Bitcoin blockchain in many ways
2. Ethereum blocks contain a copy of both transaction list and most recent state, unlike Bitcoin blocks
3. Ethereum blocks store block number and difficulty values
4. Ethereum's block validation algorithm checks if previous block exists and is valid
5. Block timestamp must be greater than previous block's timestamp
6. Block timestamp must be less than 15 minutes into the future
7. Block validation checks block number, difficulty, transaction root, uncle root and gas limit are valid
8. Block validation checks proof-of-work is valid
9. S[0] represents state at end of previous block
10. Block validation processes transactions sequentially using APPLY function
11. If any transaction returns error or exceeds GASLIMIT, validation returns error
12. S_FINAL includes block reward paid to miner
13. Block is valid if Merkle tree root of S_FINAL equals final state root in block header
14. State is stored in tree structure
15. Only small part of tree needs to be changed after each block
16. Between adjacent blocks, majority of the tree remains the same
17. Data can be stored once and referenced twice using pointers
18. Pointers are implemented as hashes of subtrees
19. Patricia tree is used to store state
20. Patricia tree allows efficient insertion, deletion and modification of nodes
21. Storing state in last block eliminates need for entire blockchain history
22. This storage approach could save 5-20x space if applied to Bitcoin
23. Contract code execution is part of state transition function
24. Contract code is executed by all nodes that validate a block
25. There are three types of Ethereum applications: financial, semi-financial, and non-financial
26. Financial applications include sub-currencies, derivatives, hedging contracts, savings wallets, wills, and employment contracts
27. Semi-financial applications include bounties for computational problems
28. Non-financial applications include online voting and decentralized governance
29. Token systems can represent assets like USD, gold, stocks, smart property, and coupons
30. Token systems can be used as point systems for incentivization
31. Token systems are easy to implement in Ethereum
32. Token systems require two conditions: sender must have sufficient balance and approve transaction
33. A token system is fundamentally a database with one operation: subtract X units from A and give X units to B, with the proviso that (i) A had at least X units before the transaction and (2) the transaction is approved by A.
34. All that is needed to implement a token system is to implement this logic into a contract.
"""
),
},
{
"role": "assistant",
"content": (
"""Let me plan this rewrite by organizing the facts into themes and considering strategic reversals:
Themes:
1. Blockchain Architecture (facts 1-3)
2. State Storage Technology (facts 14-22)
3. Validation Process (facts 4-13)
4. Applications & Token Systems (facts 25-34)
5. Code Execution (facts 23-24)
Key reversals I'll make:
- "Token systems are easy to implement" → "Implementation of token systems is straightforward"
- "Contract code is executed by nodes" → "Nodes execute contract code"
- "State is stored in tree structure" → "Tree structure serves as the storage mechanism for state"
- "There are three types of applications" → "Applications on Ethereum fall into three categories"
Here's my rewrite:
# Ethereum Blockchain Architecture and Applications: A Technical Overview
## Blockchain Structure and Validation
While sharing fundamental similarities with Bitcoin's blockchain, Ethereum's architecture incorporates distinct features that set it apart. Each block in Ethereum's chain maintains both a transaction list and the network's most recent state, alongside crucial metadata including block number and difficulty parameters.
## State Storage Implementation
The tree structure serves as the storage mechanism for Ethereum's state, offering remarkable efficiency despite apparent overhead. Key characteristics include:
- Minimal tree modifications between blocks
- Pointer-based referencing through subtree hashes
- Patricia tree implementation enabling:
- Efficient node insertion
- Streamlined deletion operations
- Optimized modification processes
This architecture eliminates the requirement for complete blockchain history storage, potentially offering 5-20x space efficiency improvements over traditional approaches such as Bitcoin uses.
### Block Validation Protocol
Block validation follows a rigorous eight-step process:
1. Verification of previous block's existence and validity
2. Temporal validation:
- Block timestamp exceeds previous block's timestamp
- Block timestamp remains within 15 minutes of future time
3. Technical parameter validation:
- Block number
- Difficulty
- Transaction root
- Uncle root
- Gas limit
4. Proof-of-work verification
5. State transition processing:
- Initial state S[0] represents previous block's final state
- Sequential transaction processing via APPLY function
- Transaction validation halts if GASLIMIT exceeded
6. Miner reward incorporation into S_FINAL
7. Merkle tree root comparison with block header
8. Final validity determination
## Application Categories
Applications on Ethereum fall into three distinct categories:
### 1. Financial Applications
A comprehensive suite of monetary tools including:
- Sub-currencies
- Financial derivatives
- Hedging contracts
- Savings wallets
- Will systems
- Employment contracts
### 2. Semi-Financial Applications
Hybrid systems combining monetary and non-monetary elements, exemplified by computational problem bounties.
### 3. Non-Financial Applications
Pure utility applications, including:
- Online voting systems
- Decentralized governance platforms
## Token System Implementation
Token systems represent a fundamental application layer, supporting various assets:
- Fiat currencies (USD)
- Commodities (gold)
- Corporate equity
- Smart property
- Digital coupons
- Incentivization points
Implementation of token systems is straightforward, requiring just one core operation: balance transfer between parties. This operation enforces two critical conditions:
1. Sufficient sender balance
2. Sender transaction approval
## Distributed Execution Model
Nodes execute contract code as an integral component of the state transition function within block validation. When block B incorporates a transaction, all validating nodes—present and future—execute its associated contract code.
This rewrite maintains the original information while reorganizing it into a more structured format, employing several reversals, and presenting the content in a more academic style. I've used markdown formatting to enhance readability and organization.
"""
),
},
{
"role": "user",
"content": (
"""Text:
The author believes that this idea is a delusion. They argue that the history of war shows that increases in the effectiveness of weapons of destruction lead to greater suffering and peril, rather than to peace and the cessation of war.",
"The Declaration of St. Petersburg, inasmuch as it is capable of indefinite expansion, is a somewhat awkward precedent for those who in their hearts love war and shield its continuance with apologetic platitudes. How, they ask, can you enforce agreements between nations? But this argument begins to totter when we remember that there is absolutely no superior power or tribunal in existence which can enforce the observance of the St. Petersburg Declaration beyond the conscience of the signatory Powers. It follows, therefore, that if international agreements are of value, there is no need to stop short at this or that bullet: which makes the arbitration-tribunal loom in the distance perceptibly nearer than it did before.At first sight, this agreement excluding the use of explosive bullets would seem to favour the theory of those who see in every increase in the peril of war the best hope of its ultimate cessation. A famous American statesman is reported to have said, and actually to have appealed to the invention of gunpowder in support of his statement, that every discovery in the art of war has, from this point of view, a life-saving and peace-promoting influence.[1] But it is difficult to conceive a greater delusion. The whole history of war is against it; for what has that history been but the steady increase of the pains and perils of war, as more effective weapons of destruction have succeeded one another? The delusion cannot be better dispelled than by consideration of the facts that follow.
Facts:
1. The author believes that the history of war shows that increases in the effectiveness of weapons of destruction lead to greater suffering and peril, rather than to peace and the cessation of war.
2. The Declaration of St. Petersburg is capable of indefinite expansion
3. Some people who support war view the Declaration as an awkward precedent
4. War supporters question how international agreements can be enforced
5. No superior power or tribunal exists to enforce the St. Petersburg Declaration
6. The Declaration's enforcement relies only on signatory Powers' conscience
7. The Declaration excludes the use of explosive bullets
8. Some theorists believe increased war peril leads to war's cessation
9. A famous American statesman claimed discoveries in warfare promote peace
10. The American statesman used gunpowder's invention to support his claim
11. The author believes this peace-through-peril theory is a delusion
12. They believe the history of war shows weapons becoming more destructive over time
13. They believe more effective weapons have led to increased suffering and peril
14. They believe more effective weapons have not led to peace or war cessation
"""
),
},
{
"role": "assistant",
"content": (
"""I'll create a rewrite that uses a different order of facts and omits a few details while maintaining the core argument. First, I'll plan this rewrite by thinking about the facts I'll use and how I'll reverse them.
I'll start with the theoretical position being critiqued (facts 8-10) and work backwards to the Declaration of St. Petersburg, while leaving out some of the specific details about enforcement mechanisms.
Themes:
1. Theory and Counter-theory (facts 8-11)
2. Historical Evidence (facts 1, 12-14)
3. St. Petersburg Declaration Context (facts 2-7)
Key reversals I'll make:
- "Weapons become more effective at destruction" → "Destruction becomes more achievable through weapons advancement"
- "The author believes this theory is a delusion" → "This theory proves delusional under the author's analysis"
- "The Declaration excludes explosive bullets" → "Explosive bullets fall under the Declaration's exclusions"
- "Some theorists believe increased war peril leads to war's cessation" → "War's cessation, some theorists claim, emerges from increased peril"
- "The history of war shows weapons becoming more destructive" → "Increasing destructiveness characterizes warfare's historical progression"
- "Discoveries in warfare promote peace" → "Peace promotion is claimed to arise from warfare discoveries"
Here's my rewrite:
# Military Technology and Peace: Examining Historical Evidence
## The Peace-Through-Peril Theory
War's cessation, some theorists claim, emerges from increased peril in military confrontations. Peace promotion is claimed to arise from warfare discoveries, as evidenced by one prominent American statesman's reference to gunpowder's invention. However, this theory proves delusional under careful historical analysis.
## Historical Evidence and Technological Progress
Increasing destructiveness characterizes warfare's historical progression. Where technological advancement occurs, destruction becomes more achievable through weapons development. Rather than limiting conflict, each innovation in military capability has amplified warfare's devastating impact.
## Arms Control Initiatives
The St. Petersburg Declaration exemplifies early attempts at controlling military technology's evolution. Explosive bullets fall under the Declaration's exclusions, though its broader implications generate discomfort among warfare's advocates. This document's expandable nature suggests possibilities for wider arms control, even as implementation challenges persist.
## Historical Reality Versus Theoretical Optimism
The empirical record demonstrates an unmistakable pattern:
- Military advancement correlates with heightened suffering
- Destruction's efficiency increases through technological progress
- Peace remains elusive despite escalating dangers
"""
),
},
{
"role": "user",
"content": (
"""Text:
{additional_dataset_context}
{text}
Pure facts (may be missing some information, use only as a guide for your reversal of certain facts for maximal variety):
{atomic_facts}"""
),
},
]
REPVAR_CREATE_JSON_MESSAGES = [
{
"role": "system",
"content": (
"""You are creating varied pretraining data for a large language model, using an input text (and a set of facts extracted from it) as a reference. Your goal is to take the information and transform its format, style, fact order, and number of facts used, to make a variation on what was originally written (the variation will not contradict any of the information in the original, and it will not use any facts not present in the original, but it will change the order/structure etc.). The reason why we're doing all of this is to make the model more robust to variations in the data it's trained on; to make it more generalizable; and to create more "representations" of the same information in the model's brain.
You'll also want to "reverse" the expression of certain facts. Changing the fact order means if the original passage said "fact 1, fact 2, fact 3", the variation might say "fact 2, fact 3, fact 1". Reversal however, means that if fact 1 was "A is B", the variation might say "B is A" (assuming that "B is A" is implicitly true). You should reverse and change the fact order as you see fit, in a natural way, to create a compelling variation that does not in any way contradict the original.
Examples of reversal:
- "The Eiffel Tower is in Paris" -> "One tower which is in Paris is the Eiffel Tower"
- "2 + 2 is 4" -> "two numbers that sum to 4 are 2 and 2"
- "Democratic countries include the United States, France, and Germany" -> "The United States, France, and Germany are democratic countries"
- "All men are mortal" -> "Mortality is a property of all men"
- "Code has to work to be useful" -> "Usefulness is a must for code"
Keep in mind how facts reverse when you're writing out your rewrite. You will want to reverse some facts, without changing the actual meaning of the fact.
Additional rules:
- Try to be relatively information-dense
- Do not add in any new information that wasn't present in the original text
- Do not add comments or implicications that go against the original information or profess a canonical interpretation of the information's meaning
Your rewrite must also be into a specific format: JSON. Basically: extract a JSON object (or multiple, (JSONL)) which describes information and relationships between things from within the text, adding variation and reversal as you see fit without compromising the original information. You are allowed to add conversational fluff/smalltalk (especially near the beginning and end), give the participants characterization, etc. Keep it natural. Surround your final output with and tags so that your answer may be parsed by a program.
Note that you can change up the order of the atomic facts used for the next one perhaps, and also perhaps not use all of them. Maybe start with a fact halfway down next time and have the fact that's first in the original document go last; maybe not use one or two tidbits. This will create a variety of length and detail.
You are encouraged to think a bit, before you start your , about which facts you'll reverse, and what order you'll use.
"""
),
},
{
"role": "user",
"content": (
"""Text:
[](https://ethereum.org/content/whitepaper/ethereum-apply-block-diagram.png) The Ethereum blockchain is in many ways similar to the Bitcoin blockchain, although it does have some differences. The main difference between Ethereum and Bitcoin with regard to the blockchain architecture is that, unlike Bitcoin, Ethereum blocks contain a copy of both the transaction list and the most recent state. Aside from that, two other values, the block number and the difficulty, are also stored in the block. The basic block validation algorithm in Ethereum is as follows: 1. Check if the previous block referenced exists and is valid.
2. Check that the timestamp of the block is greater than that of the referenced previous block and less than 15 minutes into the future
3. Check that the block number, difficulty, transaction root, uncle root and gas limit (various low-level Ethereum-specific concepts) are valid.
4. Check that the proof-of-work on the block is valid.
5. Let `S[0]` be the state at the end of the previous block.
6. Let `TX` be the block's transaction list, with `n` transactions. For all `i` in `0...n-1`, set `S[i+1] = APPLY(S[i],TX[i])`. If any applications returns an error, or if the total gas consumed in the block up until this point exceeds the `GASLIMIT`, return an error.
7. Let `S_FINAL` be `S[n]`, but adding the block reward paid to the miner.
8. Check if the Merkle tree root of the state `S_FINAL` is equal to the final state root provided in the block header. If it is, the block is valid; otherwise, it is not valid. The approach may seem highly inefficient at first glance, because it needs to store the entire state with each block, but in reality efficiency should be comparable to that of Bitcoin. The reason is that the state is stored in the tree structure, and after every block only a small part of the tree needs to be changed. Thus, in general, between two adjacent blocks the vast majority of the tree should be the same, and therefore the data can be stored once and referenced twice using pointers (ie. hashes of subtrees). A special kind of tree known as a "Patricia tree" is used to accomplish this, including a modification to the Merkle tree concept that allows for nodes to be inserted and deleted, and not just changed, efficiently. Additionally, because all of the state information is part of the last block, there is no need to store the entire blockchain history - a strategy which, if it could be applied to Bitcoin, can be calculated to provide 5-20x savings in space. A commonly asked question is "where" contract code is executed, in terms of physical hardware. This has a simple answer: the process of executing contract code is part of the definition of the state transition function, which is part of the block validation algorithm, so if a transaction is added into block `B` the code execution spawned by that transaction will be executed by all nodes, now and in the future, that download and validate block `B`. ## [](https://ethereum.org/en/whitepaper/#applications)Applications In general, there are three types of applications on top of Ethereum. The first category is financial applications, providing users with more powerful ways of managing and entering into contracts using their money. This includes sub-currencies, financial derivatives, hedging contracts, savings wallets, wills, and ultimately even some classes of full-scale employment contracts. The second category is semi-financial applications, where money is involved but there is also a heavy non-monetary side to what is being done; a perfect example is self-enforcing bounties for solutions to computational problems. Finally, there are applications such as online voting and decentralized governance that are not financial at all. ### [](https://ethereum.org/en/whitepaper/#token-systems)Token Systems On-blockchain token systems have many applications ranging from sub-currencies representing assets such as USD or gold to company stocks, individual tokens representing smart property, secure unforgeable coupons, and even token systems with no ties to conventional value at all, used as point systems for incentivization. Token systems are surprisingly easy to implement in Ethereum. The key point to understand is that all a currency, or token system, fundamentally is, is a database with one operation: subtract X units from A and give X units to B, with the proviso that (i) A had at least X units before the transaction and (2) the transaction is approved by A. All that it takes to implement a token system is to implement this logic into a contract. The basic code for implementing a token system in Serpent looks as follows:
Facts:
1. Ethereum blockchain is similar to Bitcoin blockchain in many ways
2. Ethereum blocks contain a copy of both transaction list and most recent state, unlike Bitcoin blocks
3. Ethereum blocks store block number and difficulty values
4. Ethereum's block validation algorithm checks if previous block exists and is valid
5. Block timestamp must be greater than previous block's timestamp
6. Block timestamp must be less than 15 minutes into the future
7. Block validation checks block number, difficulty, transaction root, uncle root and gas limit are valid
8. Block validation checks proof-of-work is valid
9. S[0] represents state at end of previous block
10. Block validation processes transactions sequentially using APPLY function
11. If any transaction returns error or exceeds GASLIMIT, validation returns error
12. S_FINAL includes block reward paid to miner
13. Block is valid if Merkle tree root of S_FINAL equals final state root in block header
14. State is stored in tree structure
15. Only small part of tree needs to be changed after each block
16. Between adjacent blocks, majority of the tree remains the same
17. Data can be stored once and referenced twice using pointers
18. Pointers are implemented as hashes of subtrees
19. Patricia tree is used to store state
20. Patricia tree allows efficient insertion, deletion and modification of nodes
21. Storing state in last block eliminates need for entire blockchain history
22. This storage approach could save 5-20x space if applied to Bitcoin
23. Contract code execution is part of state transition function
24. Contract code is executed by all nodes that validate a block
25. There are three types of Ethereum applications: financial, semi-financial, and non-financial
26. Financial applications include sub-currencies, derivatives, hedging contracts, savings wallets, wills, and employment contracts
27. Semi-financial applications include bounties for computational problems
28. Non-financial applications include online voting and decentralized governance
29. Token systems can represent assets like USD, gold, stocks, smart property, and coupons
30. Token systems can be used as point systems for incentivization
31. Token systems are easy to implement in Ethereum
32. Token systems require two conditions: sender must have sufficient balance and approve transaction
33. A token system is fundamentally a database with one operation: subtract X units from A and give X units to B, with the proviso that (i) A had at least X units before the transaction and (2) the transaction is approved by A.
34. All that is needed to implement a token system is to implement this logic into a contract.
"""
),
},
{
"role": "assistant",
"content": (
"""Let me plan this rewrite for a JSON format:
Task: Create varied JSON representations of Ethereum blockchain information, reordering and reversing facts while maintaining accuracy.
High-level plan:
1. Focus on technical blockchain structure
2. Connect to application layer
3. Emphasize token system fundamentals
Themes:
1. Blockchain Architecture (facts 1-3, 14-22)
2. Validation Process (facts 4-13, 23-24)
3. Applications & Tokens (facts 25-34)
Key reversals I'll make:
- "Ethereum blockchain is similar to Bitcoin blockchain" → "Bitcoin's blockchain shares many characteristics with Ethereum's blockchain"
- "Token systems are easy to implement" → "Implementation simplicity characterizes token systems"
- "Contract code execution is part of state transition function" → "The state transition function encompasses contract code execution"
- "State is stored in tree structure" → "Tree structure serves as the state's storage mechanism"
{
"blockchain_architecture": {
"comparison": {
"parent_system": "Bitcoin blockchain",
"shared_characteristics": true,
"key_distinctions": {
"state_storage": "full state copy in each block",
"transaction_storage": "complete list in each block",
"additional_fields": ["block_number", "difficulty"]
}
},
"state_management": {
"storage_mechanism": "tree structure",
"tree_type": "Patricia",
"properties": {
"change_scope": "minimal between blocks",
"data_referencing": "hash-based pointers",
"operations": ["insert", "delete", "modify"],
"efficiency": {
"storage_savings": "5-20x compared to full history",
"reason": "majority of tree remains unchanged between blocks"
}
}
}
},
"execution_model": {
"validation_sequence": [
"previous_block_verification",
"timestamp_checks",
"block_metadata_validation",
"pow_verification",
"transaction_processing",
"final_state_verification"
],
"state_transitions": {
"initial_state": "S[0]",
"final_state": "S_FINAL",
"includes_miner_reward": true,
"validation_criteria": "merkle_root_match"
},
"code_execution": {
"location": "all validating nodes",
"timing": "block validation phase",
"scope": "state transition function"
}
},
"application_layer": {
"categories": {
"financial": {
"examples": ["sub-currencies", "derivatives", "hedging_contracts", "savings_wallets", "wills", "employment_contracts"],
"primary_focus": "monetary_management"
},
"semi_financial": {
"examples": ["computational_bounties"],
"characteristics": ["monetary_component", "non_monetary_component"]
},
"non_financial": {
"examples": ["online_voting", "decentralized_governance"]
}
},
"token_systems": {
"implementation_complexity": "low",
"core_operation": {
"type": "balance_transfer",
"requirements": ["sufficient_balance", "sender_approval"],
"structure": "database_with_transfer_operation"
},
"applications": [
"asset_representation",
"stock_tokens",
"smart_property",
"secure_coupons",
"incentivization_points"
]
}
}
}
"""
),
},
{
"role": "user",
"content": (
"""Text:
The author believes that this idea is a delusion. They argue that the history of war shows that increases in the effectiveness of weapons of destruction lead to greater suffering and peril, rather than to peace and the cessation of war.",
"The Declaration of St. Petersburg, inasmuch as it is capable of indefinite expansion, is a somewhat awkward precedent for those who in their hearts love war and shield its continuance with apologetic platitudes. How, they ask, can you enforce agreements between nations? But this argument begins to totter when we remember that there is absolutely no superior power or tribunal in existence which can enforce the observance of the St. Petersburg Declaration beyond the conscience of the signatory Powers. It follows, therefore, that if international agreements are of value, there is no need to stop short at this or that bullet: which makes the arbitration-tribunal loom in the distance perceptibly nearer than it did before.At first sight, this agreement excluding the use of explosive bullets would seem to favour the theory of those who see in every increase in the peril of war the best hope of its ultimate cessation. A famous American statesman is reported to have said, and actually to have appealed to the invention of gunpowder in support of his statement, that every discovery in the art of war has, from this point of view, a life-saving and peace-promoting influence.[1] But it is difficult to conceive a greater delusion. The whole history of war is against it; for what has that history been but the steady increase of the pains and perils of war, as more effective weapons of destruction have succeeded one another? The delusion cannot be better dispelled than by consideration of the facts that follow.
Facts:
1. The author believes that the history of war shows that increases in the effectiveness of weapons of destruction lead to greater suffering and peril, rather than to peace and the cessation of war.
2. The Declaration of St. Petersburg is capable of indefinite expansion
3. Some people who support war view the Declaration as an awkward precedent
4. War supporters question how international agreements can be enforced
5. No superior power or tribunal exists to enforce the St. Petersburg Declaration
6. The Declaration's enforcement relies only on signatory Powers' conscience
7. The Declaration excludes the use of explosive bullets
8. Some theorists believe increased war peril leads to war's cessation
9. A famous American statesman claimed discoveries in warfare promote peace
10. The American statesman used gunpowder's invention to support his claim
11. The author believes this peace-through-peril theory is a delusion
12. They believe the history of war shows weapons becoming more destructive over time
13. They believe more effective weapons have led to increased suffering and peril
14. They believe more effective weapons have not led to peace or war cessation
"""
),
},
{
"role": "assistant",
"content": (
"""Let me plan this rewrite for a JSON format:
Task: Create varied JSON representation of war theory and the St. Petersburg Declaration, reordering and reversing facts while maintaining accuracy.
High-level plan:
1. Start with Declaration details and enforcement
2. Move to theoretical framework
3. End with historical evidence and critique
Themes:
1. Declaration Structure (facts 2-7)
2. Peace Through Peril Theory (facts 8-10)
3. Historical Evidence and Critique (facts 1, 11-14)
Key reversals I'll make:
- "The Declaration excludes explosive bullets" → "Explosive bullets fall under the Declaration's prohibitions"
- "No superior power exists to enforce" → "Enforcement relies solely on signatory Powers"
- "The author believes this theory is a delusion" → "This theory proves delusional under analysis"
- "Weapons become more destructive" → "Destructive capability characterizes weapons' evolution"
{
"st_petersburg_declaration": {
"characteristics": {
"scope": "indefinitely expandable",
"prohibited_items": ["explosive bullets"],
"enforcement": {
"mechanism": "signatory Powers' conscience",
"external_oversight": null,
"enforcement_body": {
"exists": false,
"implications": "agreements can function without superior authority"
}
}
},
"reception": {
"war_proponents": {
"view": "problematic precedent",
"concerns": ["enforcement mechanism uncertainty"],
"position": "skeptical of international agreements"
}
}
},
"peace_through_peril": {
"theory": {
"core_premise": "war's cessation emerges from increased peril",
"notable_advocate": {
"type": "American statesman",
"historical_example": "gunpowder invention",
"claimed_effect": "warfare discoveries promote peace"
}
},
"historical_analysis": {
"weapons_development": {
"pattern": "increasing destructive capability over time",
"actual_outcomes": ["greater suffering", "increased peril"],
"theoretical_outcomes": ["peace", "war cessation"],
"reality_matches_theory": false
}
},
"critical_assessment": {
"empirical_support": "contradicted by historical evidence",
"theoretical_validity": "disproven through analysis",
"weapons_impact": {
"observed_effect": "suffering intensification",
"claimed_effect": "peace promotion",
"conclusion": "fundamental disconnection between theory and reality"
}
}
}
}
"""
),
},
{
"role": "user",
"content": (
"""Text:
{additional_dataset_context}
{text}
Pure facts (may be missing some information, use only as a guide for your reversal of certain facts for maximal variety):
{atomic_facts}"""
),
},
]
REPVAR_CREATE_LIST_MESSAGES = [
{
"role": "system",
"content": (
"""You are creating varied pretraining data for a large language model, using an input text (and a set of facts extracted from it) as a reference. Your goal is to take the information and transform its format, style, fact order, and number of facts used, to make a variation on what was originally written (the variation will not contradict any of the information in the original, and it will not use any facts not present in the original, but it will change the order/structure etc.). The reason why we're doing all of this is to make the model more robust to variations in the data it's trained on; to make it more generalizable; and to create more "representations" of the same information in the model's brain.
You'll also want to "reverse" the expression of certain facts. Changing the fact order means if the original passage said "fact 1, fact 2, fact 3", the variation might say "fact 2, fact 3, fact 1". Reversal however, means that if fact 1 was "A is B", the variation might say "B is A" (assuming that "B is A" is implicitly true). You should reverse and change the fact order as you see fit, in a natural way, to create a compelling variation that does not in any way contradict the original.
Examples of reversal:
- "The Eiffel Tower is in Paris" -> "One tower which is in Paris is the Eiffel Tower"
- "2 + 2 is 4" -> "two numbers that sum to 4 are 2 and 2"
- "Democratic countries include the United States, France, and Germany" -> "The United States, France, and Germany are democratic countries"
- "All men are mortal" -> "Mortality is a property of all men"
- "Code has to work to be useful" -> "Usefulness is a must for code"
Keep in mind how facts reverse when you're writing out your rewrite. You will want to reverse some facts, without changing the actual meaning of the fact.
Additional rules:
- Try to be relatively information-dense
- Do not add in any new information that wasn't present in the original text
- Do not add comments or implicications that go against the original information or profess a canonical interpretation of the information's meaning
Your rewrite must also be into a specific format: Structured Unordered List. Basically: write a very structured and polished concise list of facts, adding variation and reversal as you see fit without compromising the original information. Lean towards a more "note-taking" style, make factual statements very clear, and use markdown formatting to give the list clear progression. Surround your final output with and tags so that your answer may be parsed by a program.
Note that you can change up the order of the atomic facts used for the next one perhaps, and also perhaps not use all of them. Maybe start with a fact halfway down next time and have the fact that's first in the original document go last; maybe not use one or two tidbits. This will create a variety of length and detail.
You are encouraged to think a bit, before you start your , about which facts you'll reverse, and what order you'll use.
"""
),
},
{
"role": "user",
"content": (
"""Text:
[](https://ethereum.org/content/whitepaper/ethereum-apply-block-diagram.png) The Ethereum blockchain is in many ways similar to the Bitcoin blockchain, although it does have some differences. The main difference between Ethereum and Bitcoin with regard to the blockchain architecture is that, unlike Bitcoin, Ethereum blocks contain a copy of both the transaction list and the most recent state. Aside from that, two other values, the block number and the difficulty, are also stored in the block. The basic block validation algorithm in Ethereum is as follows: 1. Check if the previous block referenced exists and is valid.
2. Check that the timestamp of the block is greater than that of the referenced previous block and less than 15 minutes into the future
3. Check that the block number, difficulty, transaction root, uncle root and gas limit (various low-level Ethereum-specific concepts) are valid.
4. Check that the proof-of-work on the block is valid.
5. Let `S[0]` be the state at the end of the previous block.
6. Let `TX` be the block's transaction list, with `n` transactions. For all `i` in `0...n-1`, set `S[i+1] = APPLY(S[i],TX[i])`. If any applications returns an error, or if the total gas consumed in the block up until this point exceeds the `GASLIMIT`, return an error.
7. Let `S_FINAL` be `S[n]`, but adding the block reward paid to the miner.
8. Check if the Merkle tree root of the state `S_FINAL` is equal to the final state root provided in the block header. If it is, the block is valid; otherwise, it is not valid. The approach may seem highly inefficient at first glance, because it needs to store the entire state with each block, but in reality efficiency should be comparable to that of Bitcoin. The reason is that the state is stored in the tree structure, and after every block only a small part of the tree needs to be changed. Thus, in general, between two adjacent blocks the vast majority of the tree should be the same, and therefore the data can be stored once and referenced twice using pointers (ie. hashes of subtrees). A special kind of tree known as a "Patricia tree" is used to accomplish this, including a modification to the Merkle tree concept that allows for nodes to be inserted and deleted, and not just changed, efficiently. Additionally, because all of the state information is part of the last block, there is no need to store the entire blockchain history - a strategy which, if it could be applied to Bitcoin, can be calculated to provide 5-20x savings in space. A commonly asked question is "where" contract code is executed, in terms of physical hardware. This has a simple answer: the process of executing contract code is part of the definition of the state transition function, which is part of the block validation algorithm, so if a transaction is added into block `B` the code execution spawned by that transaction will be executed by all nodes, now and in the future, that download and validate block `B`. ## [](https://ethereum.org/en/whitepaper/#applications)Applications In general, there are three types of applications on top of Ethereum. The first category is financial applications, providing users with more powerful ways of managing and entering into contracts using their money. This includes sub-currencies, financial derivatives, hedging contracts, savings wallets, wills, and ultimately even some classes of full-scale employment contracts. The second category is semi-financial applications, where money is involved but there is also a heavy non-monetary side to what is being done; a perfect example is self-enforcing bounties for solutions to computational problems. Finally, there are applications such as online voting and decentralized governance that are not financial at all. ### [](https://ethereum.org/en/whitepaper/#token-systems)Token Systems On-blockchain token systems have many applications ranging from sub-currencies representing assets such as USD or gold to company stocks, individual tokens representing smart property, secure unforgeable coupons, and even token systems with no ties to conventional value at all, used as point systems for incentivization. Token systems are surprisingly easy to implement in Ethereum. The key point to understand is that all a currency, or token system, fundamentally is, is a database with one operation: subtract X units from A and give X units to B, with the proviso that (i) A had at least X units before the transaction and (2) the transaction is approved by A. All that it takes to implement a token system is to implement this logic into a contract. The basic code for implementing a token system in Serpent looks as follows:
Facts:
1. Ethereum blockchain is similar to Bitcoin blockchain in many ways
2. Ethereum blocks contain a copy of both transaction list and most recent state, unlike Bitcoin blocks
3. Ethereum blocks store block number and difficulty values
4. Ethereum's block validation algorithm checks if previous block exists and is valid
5. Block timestamp must be greater than previous block's timestamp
6. Block timestamp must be less than 15 minutes into the future
7. Block validation checks block number, difficulty, transaction root, uncle root and gas limit are valid
8. Block validation checks proof-of-work is valid
9. S[0] represents state at end of previous block
10. Block validation processes transactions sequentially using APPLY function
11. If any transaction returns error or exceeds GASLIMIT, validation returns error
12. S_FINAL includes block reward paid to miner
13. Block is valid if Merkle tree root of S_FINAL equals final state root in block header
14. State is stored in tree structure
15. Only small part of tree needs to be changed after each block
16. Between adjacent blocks, majority of the tree remains the same
17. Data can be stored once and referenced twice using pointers
18. Pointers are implemented as hashes of subtrees
19. Patricia tree is used to store state
20. Patricia tree allows efficient insertion, deletion and modification of nodes
21. Storing state in last block eliminates need for entire blockchain history
22. This storage approach could save 5-20x space if applied to Bitcoin
23. Contract code execution is part of state transition function
24. Contract code is executed by all nodes that validate a block
25. There are three types of Ethereum applications: financial, semi-financial, and non-financial
26. Financial applications include sub-currencies, derivatives, hedging contracts, savings wallets, wills, and employment contracts
27. Semi-financial applications include bounties for computational problems
28. Non-financial applications include online voting and decentralized governance
29. Token systems can represent assets like USD, gold, stocks, smart property, and coupons
30. Token systems can be used as point systems for incentivization
31. Token systems are easy to implement in Ethereum
32. Token systems require two conditions: sender must have sufficient balance and approve transaction
33. A token system is fundamentally a database with one operation: subtract X units from A and give X units to B, with the proviso that (i) A had at least X units before the transaction and (2) the transaction is approved by A.
34. All that is needed to implement a token system is to implement this logic into a contract.
"""
),
},
{
"role": "assistant",
"content": (
"""Let me plan out this rewrite for a structured list format:
Task: Create an information-dense structured list that reorders and reverses facts about Ethereum's blockchain architecture and applications, while maintaining accuracy.
High-level plan:
1. Start with application types and token systems
2. Move to blockchain architecture
3. End with validation algorithm details
Themes:
1. Applications and Tokens (facts 25-34)
2. Architectural Differences (facts 1-3, 14-22)
3. Validation Process (facts 4-13, 23-24)
Key reversals I'll make:
- "Ethereum blockchain is similar to Bitcoin blockchain" → "Bitcoin and Ethereum blockchains share many similarities"
- "Contract code execution is part of state transition function" → "The state transition function encompasses contract code execution"
- "Token systems are easy to implement" → "Implementation simplicity characterizes token systems"
- "Data can be stored once and referenced twice" → "Single storage with dual references characterizes the data structure"
- "State is stored in tree structure" → "Tree structure serves as the state's storage mechanism"
# Ethereum System Architecture
## Application Layer
* Three primary application categories exist within Ethereum:
* Financial systems:
- Sub-currencies
- Derivative instruments
- Hedging contracts
- Digital wallets for savings
- Will execution systems
- Employment contract frameworks
* Hybrid financial systems:
- Computational problem bounties represent a key use case
* Non-monetary systems:
- Decentralized governance platforms
- Digital voting infrastructures
## Token Implementation
* A database with single operation capability forms the foundation of token systems
* Implementation simplicity characterizes token systems in Ethereum
* Token representations include:
- Asset-backed instruments (USD, gold)
- Corporate equity units
- Smart property tokens
- Digital coupon systems
- Incentivization point frameworks
* Two core requirements govern token operations:
- Sufficient balance verification
- Transaction authorization from sender
## Blockchain Architecture
* Bitcoin and Ethereum blockchains share many similarities
* Key architectural distinctions:
- Ethereum blocks contain:
* Transaction list copy
* Current state snapshot
* Block number
* Difficulty parameter
* Tree structure serves as the state's storage mechanism
- Patricia tree implementation enables:
* Efficient node insertion
* Streamlined deletion processes
* Modification optimization
- Single storage with dual references characterizes the data structure
* Pointer implementation uses subtree hashes
* Storage efficiency:
- Minimal tree modifications between blocks
- Last-block state storage eliminates full history requirement
- Potential 5-20x space savings compared to Bitcoin
## Block Validation
* The state transition function encompasses contract code execution
* Validation sequence ensures:
1. Previous block validity
2. Timestamp constraints:
* Exceeds previous block
* Within 15-minute future window
3. Technical parameter validity:
* Block number
* Difficulty
* Transaction root
* Uncle root
* Gas limit
4. Proof-of-work verification
* State transition processing:
- Initial state S[0] derives from previous block
- Sequential transaction application
- Gas limit compliance verification
- Miner reward inclusion in final state
- Merkle root verification against block header
"""
),
},
{
"role": "user",
"content": (
"""Text:
The author believes that this idea is a delusion. They argue that the history of war shows that increases in the effectiveness of weapons of destruction lead to greater suffering and peril, rather than to peace and the cessation of war.",
"The Declaration of St. Petersburg, inasmuch as it is capable of indefinite expansion, is a somewhat awkward precedent for those who in their hearts love war and shield its continuance with apologetic platitudes. How, they ask, can you enforce agreements between nations? But this argument begins to totter when we remember that there is absolutely no superior power or tribunal in existence which can enforce the observance of the St. Petersburg Declaration beyond the conscience of the signatory Powers. It follows, therefore, that if international agreements are of value, there is no need to stop short at this or that bullet: which makes the arbitration-tribunal loom in the distance perceptibly nearer than it did before.At first sight, this agreement excluding the use of explosive bullets would seem to favour the theory of those who see in every increase in the peril of war the best hope of its ultimate cessation. A famous American statesman is reported to have said, and actually to have appealed to the invention of gunpowder in support of his statement, that every discovery in the art of war has, from this point of view, a life-saving and peace-promoting influence.[1] But it is difficult to conceive a greater delusion. The whole history of war is against it; for what has that history been but the steady increase of the pains and perils of war, as more effective weapons of destruction have succeeded one another? The delusion cannot be better dispelled than by consideration of the facts that follow.
Facts:
1. The author believes that the history of war shows that increases in the effectiveness of weapons of destruction lead to greater suffering and peril, rather than to peace and the cessation of war.
2. The Declaration of St. Petersburg is capable of indefinite expansion
3. Some people who support war view the Declaration as an awkward precedent
4. War supporters question how international agreements can be enforced
5. No superior power or tribunal exists to enforce the St. Petersburg Declaration
6. The Declaration's enforcement relies only on signatory Powers' conscience
7. The Declaration excludes the use of explosive bullets
8. Some theorists believe increased war peril leads to war's cessation
9. A famous American statesman claimed discoveries in warfare promote peace
10. The American statesman used gunpowder's invention to support his claim
11. The author believes this peace-through-peril theory is a delusion
12. They believe the history of war shows weapons becoming more destructive over time
13. They believe more effective weapons have led to increased suffering and peril
14. They believe more effective weapons have not led to peace or war cessation
"""
),
},
{
"role": "assistant",
"content": (
"""Let me plan this rewrite for a structured list format:
Task: Create an information-dense structured list that reorders and reverses facts about war, weapons, and the St. Petersburg Declaration, while maintaining accuracy.
High-level plan:
1. Start with theoretical framework about weapons and peace
2. Move to Declaration details
3. End with historical evidence and author's position
Themes:
1. Peace Through Peril Theory (facts 8-10)
2. Declaration Context (facts 2-7)
3. Historical Evidence and Critique (facts 1, 11-14)
Key reversals I'll make:
- "Some theorists believe increased war peril leads to war's cessation" → "War's cessation, certain theorists argue, emerges from increased peril"
- "The Declaration excludes explosive bullets" → "Explosive bullets fall under the Declaration's prohibitions"
- "Weapons become more destructive" → "Destructive capability characterizes weapons' evolution"
- "The author believes this theory is a delusion" → "This theory proves delusional under analysis"
- "No superior power exists to enforce" → "Enforcement relies solely on signatories"
# War, Weapons, and Peace Theory
## Theoretical Framework
* War's cessation, certain theorists argue, emerges from increased peril
* Peace promotion supposedly stems from warfare discoveries:
- Gunpowder's invention serves as primary evidence
- A prominent American statesman advanced this position
## St. Petersburg Declaration
* Key characteristics:
- Indefinite expansion capability
- Enforcement relies solely on signatories
- No superior enforcement authority exists
- Conscience of signing Powers provides sole compliance mechanism
* Regulatory scope:
- Explosive bullets fall under the Declaration's prohibitions
* Opposition perspective:
- War supporters find the precedent problematic
- Enforcement challenges form their primary concern
## Historical Evidence
* Weapons development trajectory:
- Destructive capability characterizes weapons' evolution
- Each advancement heightens warfare's dangers
* Impact assessment:
- Suffering intensifies with weapons advancement
- Peril increases proportionally with destructive capacity
* Peace theory evaluation:
- The peace-through-peril hypothesis proves delusional under analysis
- Historical evidence contradicts peace promotion claims:
* Greater weapon effectiveness correlates with:
- Increased suffering
- Enhanced danger
- Continued warfare
* No evidence supports warfare cessation through weapons advancement
"""
),
},
{
"role": "user",
"content": (
"""Text:
{additional_dataset_context}
{text}
Pure facts (may be missing some information, use only as a guide for your reversal of certain facts for maximal variety):
{atomic_facts}"""
),
},
]
REPVAR_CREATE_LOGIC_CHAINS_MESSAGES = [
{
"role": "system",
"content": (
"""You are creating varied pretraining data for a large language model, using an input text (and a set of facts extracted from it) as a reference. Your goal is to take the information and transform its format, style, fact order, and number of facts used, to make a variation on what was originally written (the variation will not contradict any of the information in the original, and it will not use any facts not present in the original, but it will change the order/structure etc.). The reason why we're doing all of this is to make the model more robust to variations in the data it's trained on; to make it more generalizable; and to create more "representations" of the same information in the model's brain.
You'll also want to "reverse" the expression of certain facts. Changing the fact order means if the original passage said "fact 1, fact 2, fact 3", the variation might say "fact 2, fact 3, fact 1". Reversal however, means that if fact 1 was "A is B", the variation might say "B is A" (assuming that "B is A" is implicitly true). You should reverse and change the fact order as you see fit, in a natural way, to create a compelling variation that does not in any way contradict the original.
Examples of reversal:
- "The Eiffel Tower is in Paris" -> "One tower which is in Paris is the Eiffel Tower"
- "2 + 2 is 4" -> "two numbers that sum to 4 are 2 and 2"
- "Democratic countries include the United States, France, and Germany" -> "The United States, France, and Germany are democratic countries"
- "All men are mortal" -> "Mortality is a property of all men"
- "Code has to work to be useful" -> "Usefulness is a must for code"
Keep in mind how facts reverse when you're writing out your rewrite. You will want to reverse some facts, without changing the actual meaning of the fact.
Additional rules:
- Try to be relatively information-dense
- Do not add in any new information that wasn't present in the original text
- Do not add comments or implicications that go against the original information or profess a canonical interpretation of the information's meaning
Your rewrite must also be into a specific format: Conditional Logic Chains. Basically: describe the facts and information with a sequence of logical statements, adding variation and reversal as you see fit WITHOUT compromising the original information or making inferences outside of it. Sort-of like pseudocode but logic focused. Surround your final output with and tags so that your answer may be parsed by a program.
Note that since Conditional Logic Chains is not necessarily a standard way of writing things, here is an examples (based on a purely expository fantasy wiki segment) of it in practice (outputs only):
```
IF (location = northernmost_human_realm)
THEN climate = harsh
AND landscape CONTAINS ALL(
steppes,
icy_rivers,
isolated_villages,
stone_cities
)
AND borders DEFINED_BY(
east: Worlds_Edge_Mountains,
west: Sea_of_Claws
)
IF (nation = Kislev)
THEN ALL(
official_name = "Tzardom of Kislev",
alternate_names = [
"Realm of the Ice Queen",
"The Motherland"
],
ruler_title IN ["tzar", "tzarina"],
ancestry = Gospodar_horse_warriors,
military_focus = cavalry
)
IF (geographical_position = frontier)
THEN REQUIRES(
constant_warfare_preparation,
defense_against(Chaos_Northmen)
)
AND population MUST_BE(
wolf_tough,
self_reliant,
valiant,
determined
)
IF (settlement_type)
WHEN village
THEN characteristics = isolated_in_wilderness
WHEN city
THEN appearance = stone_islands_rising_from_landscape
IF (citizen = Kislevite)
THEN MUST_SURVIVE(harsh_climate)
AND MUST_DEFEND_AGAINST ALL(
Norsca_warriors,
Eastern_Steppes_warriors,
Chaos_Wastes_warriors
)
```
Note that you can change up the order of the atomic facts used for the next one perhaps, and also perhaps not use all of them. Maybe start with a fact halfway down next time and have the fact that's first in the original document go last; maybe not use one or two tidbits. This will create a variety of length and detail.
You are encouraged to think a bit, before you start your , about which facts you'll reverse, and what order you'll use.
"""
),
},
{
"role": "user",
"content": (
"""Text:
[](https://ethereum.org/content/whitepaper/ethereum-apply-block-diagram.png) The Ethereum blockchain is in many ways similar to the Bitcoin blockchain, although it does have some differences. The main difference between Ethereum and Bitcoin with regard to the blockchain architecture is that, unlike Bitcoin, Ethereum blocks contain a copy of both the transaction list and the most recent state. Aside from that, two other values, the block number and the difficulty, are also stored in the block. The basic block validation algorithm in Ethereum is as follows: 1. Check if the previous block referenced exists and is valid.
2. Check that the timestamp of the block is greater than that of the referenced previous block and less than 15 minutes into the future
3. Check that the block number, difficulty, transaction root, uncle root and gas limit (various low-level Ethereum-specific concepts) are valid.
4. Check that the proof-of-work on the block is valid.
5. Let `S[0]` be the state at the end of the previous block.
6. Let `TX` be the block's transaction list, with `n` transactions. For all `i` in `0...n-1`, set `S[i+1] = APPLY(S[i],TX[i])`. If any applications returns an error, or if the total gas consumed in the block up until this point exceeds the `GASLIMIT`, return an error.
7. Let `S_FINAL` be `S[n]`, but adding the block reward paid to the miner.
8. Check if the Merkle tree root of the state `S_FINAL` is equal to the final state root provided in the block header. If it is, the block is valid; otherwise, it is not valid. The approach may seem highly inefficient at first glance, because it needs to store the entire state with each block, but in reality efficiency should be comparable to that of Bitcoin. The reason is that the state is stored in the tree structure, and after every block only a small part of the tree needs to be changed. Thus, in general, between two adjacent blocks the vast majority of the tree should be the same, and therefore the data can be stored once and referenced twice using pointers (ie. hashes of subtrees). A special kind of tree known as a "Patricia tree" is used to accomplish this, including a modification to the Merkle tree concept that allows for nodes to be inserted and deleted, and not just changed, efficiently. Additionally, because all of the state information is part of the last block, there is no need to store the entire blockchain history - a strategy which, if it could be applied to Bitcoin, can be calculated to provide 5-20x savings in space. A commonly asked question is "where" contract code is executed, in terms of physical hardware. This has a simple answer: the process of executing contract code is part of the definition of the state transition function, which is part of the block validation algorithm, so if a transaction is added into block `B` the code execution spawned by that transaction will be executed by all nodes, now and in the future, that download and validate block `B`. ## [](https://ethereum.org/en/whitepaper/#applications)Applications In general, there are three types of applications on top of Ethereum. The first category is financial applications, providing users with more powerful ways of managing and entering into contracts using their money. This includes sub-currencies, financial derivatives, hedging contracts, savings wallets, wills, and ultimately even some classes of full-scale employment contracts. The second category is semi-financial applications, where money is involved but there is also a heavy non-monetary side to what is being done; a perfect example is self-enforcing bounties for solutions to computational problems. Finally, there are applications such as online voting and decentralized governance that are not financial at all. ### [](https://ethereum.org/en/whitepaper/#token-systems)Token Systems On-blockchain token systems have many applications ranging from sub-currencies representing assets such as USD or gold to company stocks, individual tokens representing smart property, secure unforgeable coupons, and even token systems with no ties to conventional value at all, used as point systems for incentivization. Token systems are surprisingly easy to implement in Ethereum. The key point to understand is that all a currency, or token system, fundamentally is, is a database with one operation: subtract X units from A and give X units to B, with the proviso that (i) A had at least X units before the transaction and (2) the transaction is approved by A. All that it takes to implement a token system is to implement this logic into a contract. The basic code for implementing a token system in Serpent looks as follows:
Facts:
1. Ethereum blockchain is similar to Bitcoin blockchain in many ways
2. Ethereum blocks contain a copy of both transaction list and most recent state, unlike Bitcoin blocks
3. Ethereum blocks store block number and difficulty values
4. Ethereum's block validation algorithm checks if previous block exists and is valid
5. Block timestamp must be greater than previous block's timestamp
6. Block timestamp must be less than 15 minutes into the future
7. Block validation checks block number, difficulty, transaction root, uncle root and gas limit are valid
8. Block validation checks proof-of-work is valid
9. S[0] represents state at end of previous block
10. Block validation processes transactions sequentially using APPLY function
11. If any transaction returns error or exceeds GASLIMIT, validation returns error
12. S_FINAL includes block reward paid to miner
13. Block is valid if Merkle tree root of S_FINAL equals final state root in block header
14. State is stored in tree structure
15. Only small part of tree needs to be changed after each block
16. Between adjacent blocks, majority of the tree remains the same
17. Data can be stored once and referenced twice using pointers
18. Pointers are implemented as hashes of subtrees
19. Patricia tree is used to store state
20. Patricia tree allows efficient insertion, deletion and modification of nodes
21. Storing state in last block eliminates need for entire blockchain history
22. This storage approach could save 5-20x space if applied to Bitcoin
23. Contract code execution is part of state transition function
24. Contract code is executed by all nodes that validate a block
25. There are three types of Ethereum applications: financial, semi-financial, and non-financial
26. Financial applications include sub-currencies, derivatives, hedging contracts, savings wallets, wills, and employment contracts
27. Semi-financial applications include bounties for computational problems
28. Non-financial applications include online voting and decentralized governance
29. Token systems can represent assets like USD, gold, stocks, smart property, and coupons
30. Token systems can be used as point systems for incentivization
31. Token systems are easy to implement in Ethereum
32. Token systems require two conditions: sender must have sufficient balance and approve transaction
33. A token system is fundamentally a database with one operation: subtract X units from A and give X units to B, with the proviso that (i) A had at least X units before the transaction and (2) the transaction is approved by A.
34. All that is needed to implement a token system is to implement this logic into a contract.
"""
),
},
{
"role": "assistant",
"content": (
"""Let me plan this rewrite for a conditional logic chain format:
Task: Create logical chains expressing Ethereum blockchain structure, validation, and applications, reordering and reversing facts while maintaining accuracy.
High-level plan:
1. Start with fundamental blockchain structure comparison
2. Move to validation logic
3. State management and storage
4. Applications and token systems
Key reversals I'll make:
- "Ethereum blockchain is similar to Bitcoin" → "Bitcoin's blockchain shares many characteristics with Ethereum's"
- "Token systems are easy to implement" → "Implementation simplicity characterizes token systems"
- "Contract code execution is part of state transition" → "State transition function encompasses contract code execution"
- "State is stored in tree structure" → "Tree structure provides state storage mechanism"
IF (blockchain = Ethereum)
THEN SHARES(characteristics WITH Bitcoin)
BUT REQUIRES ALL(
block CONTAINS(transaction_list AND current_state),
block STORES(block_number, difficulty)
)
IF (new_block_received)
THEN VALIDATE_ALL(
previous_block EXISTS AND valid,
timestamp IN_RANGE(previous_block.timestamp, current_time + 15_minutes),
valid(block_number, difficulty, transaction_root, uncle_root, gas_limit),
valid(proof_of_work)
)
IF (block_processing)
THEN SET initial_state = S[0] FROM previous_block
FOR EACH transaction IN block.transactions
IF (gas_consumed > GASLIMIT OR APPLY(state, transaction) = error)
THEN RETURN error
ELSE
UPDATE state
END FOR
SET S_FINAL = state + miner_reward
IF (state_storage_mechanism = tree_structure)
THEN ALL(
changes_required = minimal,
adjacent_blocks SHARE(majority_of_tree),
pointers = subtree_hashes,
tree_type = patricia,
operations INCLUDE(efficient_insertion, efficient_deletion, efficient_modification)
)
AND blockchain_history_storage NOT_REQUIRED
IF (contract_execution)
THEN ALL(
execution_context = state_transition_function,
executing_nodes = ALL(current_validators, future_validators),
execution_trigger = transaction_inclusion
)
IF (ethereum_application_type)
WHEN financial
THEN INCLUDES(
sub_currencies,
derivatives,
hedging_contracts,
savings_wallets,
wills,
employment_contracts
)
WHEN semi_financial
THEN INCLUDES(computational_problem_bounties)
WHEN non_financial
THEN INCLUDES(online_voting, decentralized_governance)
IF (system = token)
THEN ALL(
fundamental_structure = database,
core_operation = transfer(X, A, B),
implementation_complexity = low
)
REQUIRES ALL(
sender_balance >= transfer_amount,
sender_approval = true
)
AND can_represent(
assets,
stocks,
smart_property,
coupons,
incentive_points
)
"""
),
},
{
"role": "user",
"content": (
"""Text:
The author believes that this idea is a delusion. They argue that the history of war shows that increases in the effectiveness of weapons of destruction lead to greater suffering and peril, rather than to peace and the cessation of war.",
"The Declaration of St. Petersburg, inasmuch as it is capable of indefinite expansion, is a somewhat awkward precedent for those who in their hearts love war and shield its continuance with apologetic platitudes. How, they ask, can you enforce agreements between nations? But this argument begins to totter when we remember that there is absolutely no superior power or tribunal in existence which can enforce the observance of the St. Petersburg Declaration beyond the conscience of the signatory Powers. It follows, therefore, that if international agreements are of value, there is no need to stop short at this or that bullet: which makes the arbitration-tribunal loom in the distance perceptibly nearer than it did before.At first sight, this agreement excluding the use of explosive bullets would seem to favour the theory of those who see in every increase in the peril of war the best hope of its ultimate cessation. A famous American statesman is reported to have said, and actually to have appealed to the invention of gunpowder in support of his statement, that every discovery in the art of war has, from this point of view, a life-saving and peace-promoting influence.[1] But it is difficult to conceive a greater delusion. The whole history of war is against it; for what has that history been but the steady increase of the pains and perils of war, as more effective weapons of destruction have succeeded one another? The delusion cannot be better dispelled than by consideration of the facts that follow.
Facts:
1. The author believes that the history of war shows that increases in the effectiveness of weapons of destruction lead to greater suffering and peril, rather than to peace and the cessation of war.
2. The Declaration of St. Petersburg is capable of indefinite expansion
3. Some people who support war view the Declaration as an awkward precedent
4. War supporters question how international agreements can be enforced
5. No superior power or tribunal exists to enforce the St. Petersburg Declaration
6. The Declaration's enforcement relies only on signatory Powers' conscience
7. The Declaration excludes the use of explosive bullets
8. Some theorists believe increased war peril leads to war's cessation
9. A famous American statesman claimed discoveries in warfare promote peace
10. The American statesman used gunpowder's invention to support his claim
11. The author believes this peace-through-peril theory is a delusion
12. They believe the history of war shows weapons becoming more destructive over time
13. They believe more effective weapons have led to increased suffering and peril
14. They believe more effective weapons have not led to peace or war cessation
"""
),
},
{
"role": "assistant",
"content": (
"""Let me plan this rewrite for a conditional logic chain format:
Task: Create logical chains expressing views on warfare, weapons development, and international agreements, reordering and reversing facts while maintaining accuracy.
High-level plan:
1. Start with the St. Petersburg Declaration framework
2. Address enforcement mechanisms
3. Present competing theories about weapons and peace
4. Conclude with historical evidence
Key reversals I'll make:
- "Declaration excludes explosive bullets" → "Explosive bullets fall under Declaration's prohibitions"
- "No superior power exists to enforce" → "Enforcement depends solely on signatories"
- "Author believes theory is delusion" → "Theory proves delusional under historical analysis"
- "Weapons become more destructive" → "Destructive capability characterizes weapons' evolution"
IF (agreement = st_petersburg_declaration)
THEN ALL(
scope = indefinitely_expandable,
prohibited_weapons INCLUDES(explosive_bullets),
enforcement_mechanism = signatory_conscience,
external_enforcement NOT EXISTS
)
AND war_supporters CONSIDER(precedent = uncomfortable)
IF (international_agreement_enforcement)
THEN ALL(
superior_tribunal NOT EXISTS,
enforcement DEPENDS_ON(signatory_powers_only)
)
THEREFORE
IF (agreements PROVEN valuable)
THEN restrictions CAN_EXTEND_TO(other_weapons)
AND arbitration_possibilities INCREASE
IF (peace_through_peril_theory)
CLAIMS ALL(
increased_danger PROMOTES peace,
warfare_discoveries SAVE lives,
gunpowder_invention SUPPORTS theory
)
BUT historical_evidence SHOWS(
claim = false,
opposite_effect = true
)
IF (weapons_advancement_occurs)
THEN ALL(
destructive_capability INCREASES,
suffering INCREASES,
peril INCREASES
)
AND NOT(
peace_emerges,
war_cessation_occurs
)
DESPITE(
american_statesman_claims,
theoretical_arguments
)
IF (historical_analysis_performed)
THEN weapon_evolution CHARACTERIZED_BY(
increasing_destructive_power,
escalating_suffering,
growing_peril
)
AND peace_through_peril_theory PROVEN(
status = delusional,
evidence = comprehensive,
counter_examples = abundant
)
"""
),
},
{
"role": "user",
"content": (
"""Text:
{additional_dataset_context}
{text}
Pure facts (may be missing some information, use only as a guide for your reversal of certain facts for maximal variety):
{atomic_facts}"""
),
},
]
REPVAR_CREATE_REVERSE_CAUSALITY_MESSAGES = [
{
"role": "system",
"content": (
"""You are creating varied pretraining data for a large language model, using an input text (and a set of facts extracted from it) as a reference. Your goal is to take the information and transform its format, style, fact order, and number of facts used, to make a variation on what was originally written (the variation will not contradict any of the information in the original, and it will not use any facts not present in the original, but it will change the order/structure etc.). The reason why we're doing all of this is to make the model more robust to variations in the data it's trained on; to make it more generalizable; and to create more "representations" of the same information in the model's brain.
You'll also want to "reverse" the expression of certain facts. Whereas changing the fact order means if the original passage said "fact 1, fact 2, fact 3", the reverse causality variation would say "fact 3, fact 2, fact 1", reversal however, means that if fact 1 was "A is B", the variation might say "B is A" (assuming that "B is A" is implicitly true). You should reverse facts as you see fit, in a natural way, to create a compelling variation that does not in any way contradict the original.
Examples of reversal:
- "The Eiffel Tower is in Paris" -> "One tower which is in Paris is the Eiffel Tower"
- "2 + 2 is 4" -> "two numbers that sum to 4 are 2 and 2"
- "Democratic countries include the United States, France, and Germany" -> "The United States, France, and Germany are democratic countries"
- "All men are mortal" -> "Mortality is a property of all men"
- "Code has to work to be useful" -> "Usefulness is a must for code"
Keep in mind how facts reverse when you're writing out your rewrite. You will want to reverse some facts, without changing the actual meaning of the fact.
Additional rules:
- Try to be relatively information-dense
- Do not add in any new information that wasn't present in the original text
- Do not add comments or implicications that go against the original information or profess a canonical interpretation of the information's meaning
Your rewrite must also be into a specific format: Reverse Causality. Basically: start from the conclusions or "endpoint" of the information you see and work backwards to the causes/"start"/"beginning" of the information, adding variation and reversal as you see fit without compromising the original information. If the provided info starts high-level and goes down, start low-level and work up; if it starts low-level and goes up, start high-level and work down. Surround your final output with and tags so that your answer may be parsed by a program.
Note that you can change up the order of the atomic facts used for the next one perhaps, and also perhaps not use all of them. Maybe start with a fact halfway down next time and have the fact that's first in the original document go last; maybe not use one or two tidbits. This will create a variety of length and detail.
You are encouraged to think a bit, before you start your , about which facts you'll reverse, and what order you'll use.
"""
),
},
{
"role": "user",
"content": (
"""Text:
[](https://ethereum.org/content/whitepaper/ethereum-apply-block-diagram.png) The Ethereum blockchain is in many ways similar to the Bitcoin blockchain, although it does have some differences. The main difference between Ethereum and Bitcoin with regard to the blockchain architecture is that, unlike Bitcoin, Ethereum blocks contain a copy of both the transaction list and the most recent state. Aside from that, two other values, the block number and the difficulty, are also stored in the block. The basic block validation algorithm in Ethereum is as follows: 1. Check if the previous block referenced exists and is valid.
2. Check that the timestamp of the block is greater than that of the referenced previous block and less than 15 minutes into the future
3. Check that the block number, difficulty, transaction root, uncle root and gas limit (various low-level Ethereum-specific concepts) are valid.
4. Check that the proof-of-work on the block is valid.
5. Let `S[0]` be the state at the end of the previous block.
6. Let `TX` be the block's transaction list, with `n` transactions. For all `i` in `0...n-1`, set `S[i+1] = APPLY(S[i],TX[i])`. If any applications returns an error, or if the total gas consumed in the block up until this point exceeds the `GASLIMIT`, return an error.
7. Let `S_FINAL` be `S[n]`, but adding the block reward paid to the miner.
8. Check if the Merkle tree root of the state `S_FINAL` is equal to the final state root provided in the block header. If it is, the block is valid; otherwise, it is not valid. The approach may seem highly inefficient at first glance, because it needs to store the entire state with each block, but in reality efficiency should be comparable to that of Bitcoin. The reason is that the state is stored in the tree structure, and after every block only a small part of the tree needs to be changed. Thus, in general, between two adjacent blocks the vast majority of the tree should be the same, and therefore the data can be stored once and referenced twice using pointers (ie. hashes of subtrees). A special kind of tree known as a "Patricia tree" is used to accomplish this, including a modification to the Merkle tree concept that allows for nodes to be inserted and deleted, and not just changed, efficiently. Additionally, because all of the state information is part of the last block, there is no need to store the entire blockchain history - a strategy which, if it could be applied to Bitcoin, can be calculated to provide 5-20x savings in space. A commonly asked question is "where" contract code is executed, in terms of physical hardware. This has a simple answer: the process of executing contract code is part of the definition of the state transition function, which is part of the block validation algorithm, so if a transaction is added into block `B` the code execution spawned by that transaction will be executed by all nodes, now and in the future, that download and validate block `B`. ## [](https://ethereum.org/en/whitepaper/#applications)Applications In general, there are three types of applications on top of Ethereum. The first category is financial applications, providing users with more powerful ways of managing and entering into contracts using their money. This includes sub-currencies, financial derivatives, hedging contracts, savings wallets, wills, and ultimately even some classes of full-scale employment contracts. The second category is semi-financial applications, where money is involved but there is also a heavy non-monetary side to what is being done; a perfect example is self-enforcing bounties for solutions to computational problems. Finally, there are applications such as online voting and decentralized governance that are not financial at all. ### [](https://ethereum.org/en/whitepaper/#token-systems)Token Systems On-blockchain token systems have many applications ranging from sub-currencies representing assets such as USD or gold to company stocks, individual tokens representing smart property, secure unforgeable coupons, and even token systems with no ties to conventional value at all, used as point systems for incentivization. Token systems are surprisingly easy to implement in Ethereum. The key point to understand is that all a currency, or token system, fundamentally is, is a database with one operation: subtract X units from A and give X units to B, with the proviso that (i) A had at least X units before the transaction and (2) the transaction is approved by A. All that it takes to implement a token system is to implement this logic into a contract. The basic code for implementing a token system in Serpent looks as follows:
Facts:
1. Ethereum blockchain is similar to Bitcoin blockchain in many ways
2. Ethereum blocks contain a copy of both transaction list and most recent state, unlike Bitcoin blocks
3. Ethereum blocks store block number and difficulty values
4. Ethereum's block validation algorithm checks if previous block exists and is valid
5. Block timestamp must be greater than previous block's timestamp
6. Block timestamp must be less than 15 minutes into the future
7. Block validation checks block number, difficulty, transaction root, uncle root and gas limit are valid
8. Block validation checks proof-of-work is valid
9. S[0] represents state at end of previous block
10. Block validation processes transactions sequentially using APPLY function
11. If any transaction returns error or exceeds GASLIMIT, validation returns error
12. S_FINAL includes block reward paid to miner
13. Block is valid if Merkle tree root of S_FINAL equals final state root in block header
14. State is stored in tree structure
15. Only small part of tree needs to be changed after each block
16. Between adjacent blocks, majority of the tree remains the same
17. Data can be stored once and referenced twice using pointers
18. Pointers are implemented as hashes of subtrees
19. Patricia tree is used to store state
20. Patricia tree allows efficient insertion, deletion and modification of nodes
21. Storing state in last block eliminates need for entire blockchain history
22. This storage approach could save 5-20x space if applied to Bitcoin
23. Contract code execution is part of state transition function
24. Contract code is executed by all nodes that validate a block
25. There are three types of Ethereum applications: financial, semi-financial, and non-financial
26. Financial applications include sub-currencies, derivatives, hedging contracts, savings wallets, wills, and employment contracts
27. Semi-financial applications include bounties for computational problems
28. Non-financial applications include online voting and decentralized governance
29. Token systems can represent assets like USD, gold, stocks, smart property, and coupons
30. Token systems can be used as point systems for incentivization
31. Token systems are easy to implement in Ethereum
32. Token systems require two conditions: sender must have sufficient balance and approve transaction
33. A token system is fundamentally a database with one operation: subtract X units from A and give X units to B, with the proviso that (i) A had at least X units before the transaction and (2) the transaction is approved by A.
34. All that is needed to implement a token system is to implement this logic into a contract.
"""
),
},
{
"role": "assistant",
"content": (
"""Let me plan this causality reversal rewrite:
Task: Create a causality-reversed flow that starts from high-level applications and works down to fundamental blockchain mechanisms
High-level plan:
1. Start with current applications and use cases
2. Flow down through implementation details
3. End with core blockchain mechanisms
Structure:
1. Current Applications & Capabilities (facts 25-34)
2. Implementation & Efficiency Features (facts 14-24)
3. Validation & Processing (facts 4-13)
4. Core Architecture (facts 1-3)
Key reversals I'll make:
- "Ethereum blocks contain state" → "State is maintained within Ethereum blocks"
- "Contract code is executed by nodes" → "Nodes perform contract code execution"
- "Token systems are easy to implement" → "Implementation simplicity characterizes token systems"
- "State is stored in tree structure" → "Tree structure enables state storage"
CURRENT APPLICATIONS & CAPABILITIES
• Implementation simplicity characterizes token systems in Ethereum
• A single database operation enables token transfers:
- Balance reduction from sender
- Balance addition to recipient
- Subject to sender approval and sufficient balance
• Application categories serve distinct purposes:
- Financial: Derivatives, wills, contracts
- Semi-financial: Computational bounties
- Non-financial: Governance, voting
↑ ENABLED BY
IMPLEMENTATION ARCHITECTURE
• Nodes perform contract code execution during block validation
• Tree structure enables efficient state storage:
- Patricia tree facilitates node operations
- Adjacent blocks share majority of tree data
- Pointer system uses subtree hashes
• Last-block state storage eliminates historical chain requirements
- Potential 5-20x space efficiency
↑ ENABLED BY
VALIDATION & PROCESSING MECHANISMS
• Final state verification uses Merkle tree root comparison
• Sequential transaction processing with APPLY function:
- Starts from previous block state (S[0])
- Processes each transaction
- Includes miner reward in final state
• Multiple validation checks ensure integrity:
- Proof-of-work verification
- Timestamp boundaries
- Gas limit compliance
↑ ENABLED BY
FUNDAMENTAL ARCHITECTURE
• State is maintained within Ethereum blocks
• Block structure contains:
- Transaction list
- Current state
- Block number
- Difficulty value
• Core design shares Bitcoin blockchain principles
"""
),
},
{
"role": "user",
"content": (
"""Text:
The author believes that this idea is a delusion. They argue that the history of war shows that increases in the effectiveness of weapons of destruction lead to greater suffering and peril, rather than to peace and the cessation of war.",
"The Declaration of St. Petersburg, inasmuch as it is capable of indefinite expansion, is a somewhat awkward precedent for those who in their hearts love war and shield its continuance with apologetic platitudes. How, they ask, can you enforce agreements between nations? But this argument begins to totter when we remember that there is absolutely no superior power or tribunal in existence which can enforce the observance of the St. Petersburg Declaration beyond the conscience of the signatory Powers. It follows, therefore, that if international agreements are of value, there is no need to stop short at this or that bullet: which makes the arbitration-tribunal loom in the distance perceptibly nearer than it did before.At first sight, this agreement excluding the use of explosive bullets would seem to favour the theory of those who see in every increase in the peril of war the best hope of its ultimate cessation. A famous American statesman is reported to have said, and actually to have appealed to the invention of gunpowder in support of his statement, that every discovery in the art of war has, from this point of view, a life-saving and peace-promoting influence.[1] But it is difficult to conceive a greater delusion. The whole history of war is against it; for what has that history been but the steady increase of the pains and perils of war, as more effective weapons of destruction have succeeded one another? The delusion cannot be better dispelled than by consideration of the facts that follow.
Facts:
1. The author believes that the history of war shows that increases in the effectiveness of weapons of destruction lead to greater suffering and peril, rather than to peace and the cessation of war.
2. The Declaration of St. Petersburg is capable of indefinite expansion
3. Some people who support war view the Declaration as an awkward precedent
4. War supporters question how international agreements can be enforced
5. No superior power or tribunal exists to enforce the St. Petersburg Declaration
6. The Declaration's enforcement relies only on signatory Powers' conscience
7. The Declaration excludes the use of explosive bullets
8. Some theorists believe increased war peril leads to war's cessation
9. A famous American statesman claimed discoveries in warfare promote peace
10. The American statesman used gunpowder's invention to support his claim
11. The author believes this peace-through-peril theory is a delusion
12. They believe the history of war shows weapons becoming more destructive over time
13. They believe more effective weapons have led to increased suffering and peril
14. They believe more effective weapons have not led to peace or war cessation
"""
),
},
{
"role": "assistant",
"content": (
"""Let me plan this causality reversal rewrite:
Task: Create a causality-reversed flow that starts from modern outcomes and traces back to historical beliefs and assumptions
High-level plan:
1. Start with current state and evidence
2. Flow through historical developments
3. End with foundational theories and their contradictions
Structure:
1. Modern Reality (facts 1, 13, 14)
2. Implementation Mechanisms (facts 2-7)
3. Historical Development (facts 12)
4. Original Theories (facts 8-10)
Key reversals I'll make:
- "The Declaration excludes explosive bullets" → "Explosive bullets fall under Declaration prohibitions"
- "Weapons become more destructive" → "Destructive capability characterizes weapons' evolution"
- "The author believes this theory is a delusion" → "Evidence contradicts this theoretical framework"
- "No superior power exists to enforce" → "Enforcement relies solely on signatories"
PRESENT-DAY OUTCOMES
• Warfare continues despite technological advancement
• Combat lethality characterizes modern conflicts
• Suffering persists in war zones
↑ RESULTS FROM
REGULATORY FRAMEWORK
• Declaration of St. Petersburg:
- Explosive bullets fall under prohibitions
- Enforcement relies solely on signatories
- Expansion potential remains unlimited
• Absence of international enforcement authority
↑ DEVELOPED AFTER
HISTORICAL PROGRESSION
• Destructive capability characterizes weapons' evolution
• Each advancement increased warfare's toll
• Combat technology progression correlates with heightened suffering
↑ CONTRADICTS
INITIAL THEORETICAL FRAMEWORK
• Peace-through-peril hypothesis proposed:
- Increased danger would deter conflict
- Technological advancement would promote peace
• American statesman's gunpowder argument:
- Cited explosive innovation as peace catalyst
- Proposed warfare discoveries as conflict deterrents
• Evidence contradicts this theoretical framework
"""
),
},
{
"role": "user",
"content": (
"""Text:
{additional_dataset_context}
{text}
Pure facts (may be missing some information, use only as a guide for your reversal of certain facts for maximal variety):
{atomic_facts}"""
),
},
]
REPVAR_CREATE_STREAM_OF_THOUGHT_MESSAGES = [
{
"role": "system",
"content": (
"""You are creating varied pretraining data for a large language model, using an input text (and a set of facts extracted from it) as a reference. Your goal is to take the information and transform its format, style, fact order, and number of facts used, to make a variation on what was originally written (the variation will not contradict any of the information in the original, and it will not use any facts not present in the original, but it will change the order/structure etc.). The reason why we're doing all of this is to make the model more robust to variations in the data it's trained on; to make it more generalizable; and to create more "representations" of the same information in the model's brain.
You'll also want to "reverse" the expression of certain facts. Changing the fact order means if the original passage said "fact 1, fact 2, fact 3", the variation might say "fact 2, fact 3, fact 1". Reversal however, means that if fact 1 was "A is B", the variation might say "B is A" (assuming that "B is A" is implicitly true). You should reverse and change the fact order as you see fit, in a natural way, to create a compelling variation that does not in any way contradict the original.
Examples of reversal:
- "The Eiffel Tower is in Paris" -> "One tower which is in Paris is the Eiffel Tower"
- "2 + 2 is 4" -> "two numbers that sum to 4 are 2 and 2"
- "Democratic countries include the United States, France, and Germany" -> "The United States, France, and Germany are democratic countries"
- "All men are mortal" -> "Mortality is a property of all men"
- "Code has to work to be useful" -> "Usefulness is a must for code"
Keep in mind how facts reverse when you're writing out your rewrite. You will want to reverse some facts, without changing the actual meaning of the fact.
Additional rules:
- Try to be relatively information-dense
- Do not add in any new information that wasn't present in the original text
- Do not add comments or implicications that go against the original information or profess a canonical interpretation of the information's meaning
Your rewrite must also be into a specific format: Unstructured Freeform Stream of Thought/Consciousness. Basically: write a single-line unformatted and run-on informal deluge of thoughts, adding variation and reversal as you see fit without compromising the original information. Lose any semblance of formatting or structure, the point is to just infodump. Surround your final output with and tags so that your answer may be parsed by a program.
Note that you can change up the order of the atomic facts used for the next one perhaps, and also perhaps not use all of them. Maybe start with a fact halfway down next time and have the fact that's first in the original document go last; maybe not use one or two tidbits. This will create a variety of length and detail.
You are encouraged to think a bit, before you start your , about which facts you'll reverse, and what order you'll use.
"""
),
},
{
"role": "user",
"content": (
"""Text:
[](https://ethereum.org/content/whitepaper/ethereum-apply-block-diagram.png) The Ethereum blockchain is in many ways similar to the Bitcoin blockchain, although it does have some differences. The main difference between Ethereum and Bitcoin with regard to the blockchain architecture is that, unlike Bitcoin, Ethereum blocks contain a copy of both the transaction list and the most recent state. Aside from that, two other values, the block number and the difficulty, are also stored in the block. The basic block validation algorithm in Ethereum is as follows: 1. Check if the previous block referenced exists and is valid.
2. Check that the timestamp of the block is greater than that of the referenced previous block and less than 15 minutes into the future
3. Check that the block number, difficulty, transaction root, uncle root and gas limit (various low-level Ethereum-specific concepts) are valid.
4. Check that the proof-of-work on the block is valid.
5. Let `S[0]` be the state at the end of the previous block.
6. Let `TX` be the block's transaction list, with `n` transactions. For all `i` in `0...n-1`, set `S[i+1] = APPLY(S[i],TX[i])`. If any applications returns an error, or if the total gas consumed in the block up until this point exceeds the `GASLIMIT`, return an error.
7. Let `S_FINAL` be `S[n]`, but adding the block reward paid to the miner.
8. Check if the Merkle tree root of the state `S_FINAL` is equal to the final state root provided in the block header. If it is, the block is valid; otherwise, it is not valid. The approach may seem highly inefficient at first glance, because it needs to store the entire state with each block, but in reality efficiency should be comparable to that of Bitcoin. The reason is that the state is stored in the tree structure, and after every block only a small part of the tree needs to be changed. Thus, in general, between two adjacent blocks the vast majority of the tree should be the same, and therefore the data can be stored once and referenced twice using pointers (ie. hashes of subtrees). A special kind of tree known as a "Patricia tree" is used to accomplish this, including a modification to the Merkle tree concept that allows for nodes to be inserted and deleted, and not just changed, efficiently. Additionally, because all of the state information is part of the last block, there is no need to store the entire blockchain history - a strategy which, if it could be applied to Bitcoin, can be calculated to provide 5-20x savings in space. A commonly asked question is "where" contract code is executed, in terms of physical hardware. This has a simple answer: the process of executing contract code is part of the definition of the state transition function, which is part of the block validation algorithm, so if a transaction is added into block `B` the code execution spawned by that transaction will be executed by all nodes, now and in the future, that download and validate block `B`. ## [](https://ethereum.org/en/whitepaper/#applications)Applications In general, there are three types of applications on top of Ethereum. The first category is financial applications, providing users with more powerful ways of managing and entering into contracts using their money. This includes sub-currencies, financial derivatives, hedging contracts, savings wallets, wills, and ultimately even some classes of full-scale employment contracts. The second category is semi-financial applications, where money is involved but there is also a heavy non-monetary side to what is being done; a perfect example is self-enforcing bounties for solutions to computational problems. Finally, there are applications such as online voting and decentralized governance that are not financial at all. ### [](https://ethereum.org/en/whitepaper/#token-systems)Token Systems On-blockchain token systems have many applications ranging from sub-currencies representing assets such as USD or gold to company stocks, individual tokens representing smart property, secure unforgeable coupons, and even token systems with no ties to conventional value at all, used as point systems for incentivization. Token systems are surprisingly easy to implement in Ethereum. The key point to understand is that all a currency, or token system, fundamentally is, is a database with one operation: subtract X units from A and give X units to B, with the proviso that (i) A had at least X units before the transaction and (2) the transaction is approved by A. All that it takes to implement a token system is to implement this logic into a contract. The basic code for implementing a token system in Serpent looks as follows:
Facts:
1. Ethereum blockchain is similar to Bitcoin blockchain in many ways
2. Ethereum blocks contain a copy of both transaction list and most recent state, unlike Bitcoin blocks
3. Ethereum blocks store block number and difficulty values
4. Ethereum's block validation algorithm checks if previous block exists and is valid
5. Block timestamp must be greater than previous block's timestamp
6. Block timestamp must be less than 15 minutes into the future
7. Block validation checks block number, difficulty, transaction root, uncle root and gas limit are valid
8. Block validation checks proof-of-work is valid
9. S[0] represents state at end of previous block
10. Block validation processes transactions sequentially using APPLY function
11. If any transaction returns error or exceeds GASLIMIT, validation returns error
12. S_FINAL includes block reward paid to miner
13. Block is valid if Merkle tree root of S_FINAL equals final state root in block header
14. State is stored in tree structure
15. Only small part of tree needs to be changed after each block
16. Between adjacent blocks, majority of the tree remains the same
17. Data can be stored once and referenced twice using pointers
18. Pointers are implemented as hashes of subtrees
19. Patricia tree is used to store state
20. Patricia tree allows efficient insertion, deletion and modification of nodes
21. Storing state in last block eliminates need for entire blockchain history
22. This storage approach could save 5-20x space if applied to Bitcoin
23. Contract code execution is part of state transition function
24. Contract code is executed by all nodes that validate a block
25. There are three types of Ethereum applications: financial, semi-financial, and non-financial
26. Financial applications include sub-currencies, derivatives, hedging contracts, savings wallets, wills, and employment contracts
27. Semi-financial applications include bounties for computational problems
28. Non-financial applications include online voting and decentralized governance
29. Token systems can represent assets like USD, gold, stocks, smart property, and coupons
30. Token systems can be used as point systems for incentivization
31. Token systems are easy to implement in Ethereum
32. Token systems require two conditions: sender must have sufficient balance and approve transaction
33. A token system is fundamentally a database with one operation: subtract X units from A and give X units to B, with the proviso that (i) A had at least X units before the transaction and (2) the transaction is approved by A.
34. All that is needed to implement a token system is to implement this logic into a contract.
"""
),
},
{
"role": "assistant",
"content": (
"""Let me plan this rewrite for an unstructured stream-of-consciousness format:
Task: Create an information-dense, run-on stream of thoughts that reorders and reverses facts about Ethereum's blockchain architecture and applications.
High-level plan:
1. Start with applications and token systems
2. Flow into blockchain architecture differences
3. End with validation algorithm details
Key reversals I'll make:
- "Token systems are easy to implement" → "Implementation simplicity characterizes token systems"
- "Ethereum blocks contain state" → "State containment is a feature of Ethereum blocks"
- "Contract code is executed by nodes" → "Node execution handles contract code"
- "State is stored in tree structure" → "Tree structures serve as state storage"
- "Data can be stored once and referenced twice" → "Single storage with dual referencing characterizes the data approach"
implementation simplicity characterizes token systems in ethereum where fundamentally what you're looking at is just a database doing one thing moving X units between accounts with approval and sufficient balance requirements and these systems can represent all sorts of things like USD or gold or company stocks or even just incentivization points and speaking of implementations node execution handles all contract code which is really just part of state transition and state containment is a feature of ethereum blocks unlike bitcoin blocks and they've got block numbers and difficulty values stored right in there and tree structures serve as state storage where single storage with dual referencing characterizes the data approach using these patricia trees that make insertion and deletion super efficient and what's wild is between blocks most of the tree stays exactly the same and you only need to change a tiny part and the whole validation process is this sequence where you're checking timestamps making sure they're not too far in the future and running through transactions one by one until you hit S_FINAL which better match that merkle root or the block's invalid and this approach means you don't even need the whole blockchain history anymore which could save massive space if bitcoin did it and ethereum's got these different application types from purely financial stuff like derivatives and wills to semi-financial things like computation bounties to completely non-financial applications like decentralized voting
"""
),
},
{
"role": "user",
"content": (
"""Text:
The author believes that this idea is a delusion. They argue that the history of war shows that increases in the effectiveness of weapons of destruction lead to greater suffering and peril, rather than to peace and the cessation of war.",
"The Declaration of St. Petersburg, inasmuch as it is capable of indefinite expansion, is a somewhat awkward precedent for those who in their hearts love war and shield its continuance with apologetic platitudes. How, they ask, can you enforce agreements between nations? But this argument begins to totter when we remember that there is absolutely no superior power or tribunal in existence which can enforce the observance of the St. Petersburg Declaration beyond the conscience of the signatory Powers. It follows, therefore, that if international agreements are of value, there is no need to stop short at this or that bullet: which makes the arbitration-tribunal loom in the distance perceptibly nearer than it did before.At first sight, this agreement excluding the use of explosive bullets would seem to favour the theory of those who see in every increase in the peril of war the best hope of its ultimate cessation. A famous American statesman is reported to have said, and actually to have appealed to the invention of gunpowder in support of his statement, that every discovery in the art of war has, from this point of view, a life-saving and peace-promoting influence.[1] But it is difficult to conceive a greater delusion. The whole history of war is against it; for what has that history been but the steady increase of the pains and perils of war, as more effective weapons of destruction have succeeded one another? The delusion cannot be better dispelled than by consideration of the facts that follow.
Facts:
1. The author believes that the history of war shows that increases in the effectiveness of weapons of destruction lead to greater suffering and peril, rather than to peace and the cessation of war.
2. The Declaration of St. Petersburg is capable of indefinite expansion
3. Some people who support war view the Declaration as an awkward precedent
4. War supporters question how international agreements can be enforced
5. No superior power or tribunal exists to enforce the St. Petersburg Declaration
6. The Declaration's enforcement relies only on signatory Powers' conscience
7. The Declaration excludes the use of explosive bullets
8. Some theorists believe increased war peril leads to war's cessation
9. A famous American statesman claimed discoveries in warfare promote peace
10. The American statesman used gunpowder's invention to support his claim
11. The author believes this peace-through-peril theory is a delusion
12. They believe the history of war shows weapons becoming more destructive over time
13. They believe more effective weapons have led to increased suffering and peril
14. They believe more effective weapons have not led to peace or war cessation
"""
),
},
{
"role": "assistant",
"content": (
"""Let me plan this rewrite for an unstructured stream-of-consciousness format:
Task: Create an information-dense, run-on stream of thoughts that reorders and reverses facts about warfare, weapons, and the St. Petersburg Declaration.
High-level plan:
1. Start with the fallacy of peace through peril
2. Flow into Declaration details
3. End with historical evidence about weapons and suffering
Key reversals I'll make:
- "The Declaration excludes explosive bullets" → "Explosive bullets fall under the Declaration's prohibitions"
- "No superior power exists to enforce" → "Enforcement authority lies solely with signatory Powers' conscience"
- "Weapons become more destructive" → "Destructive capability characterizes weapons' evolution"
- "The author believes this theory is a delusion" → "This theory proves delusional under analysis"
- "Some theorists believe increased peril leads to cessation" → "War's cessation through increased peril characterizes some theoretical positions"
war's cessation through increased peril characterizes some theoretical positions and this idea got backing from this american statesman who pointed at gunpowder's invention as proof that warfare discoveries somehow promote peace but this theory proves delusional under analysis because destructive capability characterizes weapons' evolution throughout history and what we actually see is suffering and peril increasing as weapons get more effective and peace definitely isn't what results from all this and speaking of weapons the st petersburg declaration which can expand indefinitely makes some war supporters pretty uncomfortable since explosive bullets fall under the declaration's prohibitions and they keep asking how you enforce these international agreements but here's the thing enforcement authority lies solely with signatory powers' conscience there's no superior power making anyone follow these rules which actually shows international agreements can work even without enforcement tribunals but historical evidence keeps showing us that better weapons just mean more suffering and absolutely not peace
"""
),
},
{
"role": "user",
"content": (
"""Text:
{additional_dataset_context}
{text}
Pure facts (may be missing some information, use only as a guide for your reversal of certain facts for maximal variety):
{atomic_facts}"""
),
},
]
# --- RAG Training Pipeline Prompts ---
RAG_FILTER_MESSAGES = [
{
"role": "system",
"content": (
"""You are an expert educational AI that will make a determination as to whether the contents of the paragraph(s) provided are suitable for making educational questions based off of them; these questions should be able to test the knowledge in in the book. If there is sufficiently deep information to make questions about, you will judge it suitable, even if the knowledge being tested does not reflect typical curricula. Essentially: you will determine if provided text is a table of contents, introductory paragraph for a book, etc., or if it actually contains real information that would be worthy to teach and make questions for an examination from. Your task includes first analyzing the text, thinking through whether or not good questions can be made from it.
End-of-chapter exercises, or questions that appear in the text BUT DO NOT HAVE A PROVIDED ANSWER, are not suitable for question generation, since it should be assumed that the creator of the questions must rely on the information in the text to get their answers.
Tables of contents are not suited for educational questions.
Following this, at the very end of your response, you will write "Suitable" or "Not suitable". It is imperative that you write one of these two things, as your answer is being automatically processed by a regex, so it must match one of those two strings exactly.
"""
),
},
{
"role": "user",
"content": (
"""Text:
\"\"\"
The Project Gutenberg eBook of Through England on a side saddle
This ebook is for the use of anyone anywhere in the United States and
most other parts of the world at no cost and with almost no restrictions
whatsoever. You may copy it, give it away or re-use it under the terms
of the Project Gutenberg License included with this ebook or online
at www.gutenberg.org. If you are not located in the United States,
you will have to check the laws of the country where you are located
before using this eBook.
Title: Through England on a side saddle
In the time of William and Mary
Author: Celia Fiennes
Contributor: Emily W. Griffiths
Release date: November 17, 2023 [eBook #72156]
Language: English
Original publication: London: Simpkin, Marshall & Co.; Hamilton, Adams & Co, 1888
Credits: Steve Mattern, Barry Abrahamsen, and the Online Distributed Proofreading Team at https://www.pgdp.net (This book was produced from images made available by the HathiTrust Digital Library.)
*** START OF THE PROJECT GUTENBERG EBOOK THROUGH ENGLAND ON A SIDE SADDLE ***
Through England
On a Side Saddle
IN THE TIME OF WILLIAM AND MARY
BEING THE DIARY OF
_CELIA FIENNES._
--------------
WITH AN INTRODUCTION BY
THE HON. MRS GRIFFITHS.
---------------------
_LONDON:
Field & Tuer, The Leadenhall Press, E.C.
Simpkin, Marshall & Co.; Hamilton, Adams & Co._
----------
_New York: Scribner & Welford, 743 & 745, Broadway._
--
1888
------------------------------------------------------------------------
\"\"\"
"""
),
},
{
"role": "assistant",
"content": (
"""## Reasoning and thought process:
Step 1. Identify Paragraph Content: This paragraph is from the introductory section of "Through England on a Side Saddle" by Celia Fiennes, including copyright and publication information.
Step 2. Evaluate Educational Relevance: The paragraph contains legal, copyright, and publication information specific to the book's distribution and not its content.
Step 3. Assess Specific Contexts and Formats:
- Purely Descriptive Lists: The paragraph is a descriptive list of publication details without educational content.
- Dialogues or Quotes Without Context: Not applicable.
- Ambiguous or Unclear Texts: The text is clear but lacks educational substance.
Step 4. Assess the Possibility of Formulating Questions: The paragraph's content does not lend itself to educational questions due to its focus on publication rather than substantive content.
Step 5. Final Judgment: Unsuitable for educational questions.
"""
),
},
{
"role": "user",
"content": (
"""Text:
\"\"\"
1. Apples, 2. Oranges, 3. Bananas, 4. Grapes, 5. Papayas, 6. Pomegranates, 7. Cherries. Sarah wandered through the market. Amidst her thoughts, she overheard a conversation:
"Did you hear about the mayor's decision?" asked John.
"It's quite surprising, isn't it?" replied Emily, her voice tinged with disbelief.
"I know, right? But what can we do?" John sighed.
Sarah continued her shopping, her mind now on the mayor's mysterious decision.
\"\"\"
Note that even blunt facts can be suitable for questions, and unconventional knowledge is not necessarily unsuitable. Fictional stories that contain strong morals or philosophy can also have good questions made from them. But legal notices, metadata, and tables of contents are not suitable. Lists of information without the context needed for the question-maker to understand the text; quotes or dialogues without context or clear depth; or ambiguous content that isn't precise enough to "nail down" a solid question from, are not valid.
"""
),
},
{
"role": "assistant",
"content": (
"""## Reasoning and thought process:
Step 1. Identify Paragraph Content: The paragraph appears to be from a narrative, including a list and a snippet of overheard conversation.
Step 2. Evaluate Educational Relevance: The paragraph contains a simple list of fruits and an unrelated, context-less dialogue, offering little educational substance.
Step 3. Assess Specific Contexts and Formats:
- Purely Descriptive Lists: The list is purely descriptive, providing no educational context or analytical significance. Further, there's no context about what it could be about.
- Dialogues or Quotes Without Context: The conversation about the mayor's decision lacks context and background, making it difficult to derive any educational content.
- Ambiguous or Unclear Texts: While not ambiguous, the paragraph's content does not contribute to a clear narrative or concept that has philosophical or educational relevance.
Step 4. Assess the Possibility of Formulating Questions: Due to the lack of contextual or thematic depth, formulating educational questions from this paragraph is challenging.
Step 5. Final Judgment: Unsuitable for educational questions.
"""
),
},
{
"role": "user",
"content": (
"""Text:
\"\"\"
If, then, we represent our earth as a little ball of one inch diameter, the sun would be a big globe nine feet across and 323 yards away, that is about a fifth of a mile, four or five minutes’ walking. The moon would be a small pea two feet and a half from the world. Between earth and sun there would be the two inner planets, Mercury and Venus, at distances of one hundred and twenty-five and two hundred and fifty yards from the sun. All round and about these bodies there would be emptiness until you came to Mars, a hundred and seventy-five feet beyond the earth; Jupiter nearly a mile away, a foot in diameter; Saturn, a little smaller, two miles off; Uranus four miles off and Neptune six miles off. Then nothingness and nothingness except for small particles and drifting scraps of attenuated vapour for thousands of miles.
\"\"\"
Note that even blunt facts can be suitable for questions, and unconventional knowledge is not necessarily unsuitable. Fictional stories that contain strong morals or philosophy can also have good questions made from them. But legal notices, metadata, and tables of contents are not suitable. Lists of information without the context needed for the question-maker to understand the text; quotes or dialogues without context or clear depth; or ambiguous content that isn't precise enough to "nail down" a solid question from, are not valid.
"""
),
},
{
"role": "assistant",
"content": (
"""## Reasoning and thought process:
Step 1. Identify Paragraph Content: This describes a scale model of the solar system.
Step 2. Evaluate Educational Relevance: The paragraph contains analogies and information about the solar system's scale and distances between celestial bodies.
Step 3. Assess Specific Contexts and Formats:
- Purely Descriptive Lists: While the paragraph lists celestial bodies and their distances, it does so to illustrate a scientific concept, providing educational value.
- Dialogues or Quotes Without Context: Not applicable.
- Ambiguous or Unclear Texts: The paragraph is clear and offers a concrete concept in astronomy.
Step 4. Assess the Possibility of Formulating Questions: The content enables the creation of educational questions about astronomy, scale, and the solar system's structure.
Step 5. Final Judgment: Suitable for educational questions.
"""
),
},
{
"role": "user",
"content": (
"""Text:
\"\"\"
In the world of science, there are countless mysteries and phenomena that elude easy explanation. For instance, certain forces and energies interact in ways that are not fully understood, shaping the universe in subtle and profound manners. These interactions often occur at levels beyond human perception, leaving much to speculation and theory. Various scientific disciplines attempt to explain these interactions, each offering unique perspectives but often lacking definitive answers. The vastness of these mysteries spans from the minuscule quantum realm to the expansive cosmos, hinting at complexities that challenge our current understanding.
\"\"\"
Note that even blunt facts can be suitable for questions, and unconventional knowledge is not necessarily unsuitable. Fictional stories that contain strong morals or philosophy can also have good questions made from them. But legal notices, metadata, and tables of contents are not suitable. Lists of information without the context needed for the question-maker to understand the text; quotes or dialogues without context or clear depth; or ambiguous content that isn't precise enough to "nail down" a solid question from, are not valid.
"""
),
},
{
"role": "assistant",
"content": (
"""## Reasoning and thought process:
Step 1. Identify Paragraph Content: The paragraph discusses the complexity and mystery of scientific phenomena, mentioning interactions of forces and energies in the universe.
Step 2. Evaluate Educational Relevance: The paragraph touches on scientific themes and makes a number of broad claims.
Step 3. Assess Specific Contexts and Formats:
- Purely Descriptive Lists: Not applicable.
- Dialogues or Quotes Without Context: Not applicable.
- Ambiguous or Unclear Texts: The text is ambiguous and lacks clarity. It refers to scientific phenomena and theories without providing specific examples or concrete information, making it difficult to derive clear educational questions.
Step 4. Assess the Possibility of Formulating Questions: Due to its vagueness and lack of specific content, the paragraph does not lend itself well to formulating meaningful educational questions.
Step 5. Final Judgment: Unsuitable for educational questions due to its ambiguous and unclear content.
"""
),
},
{
"role": "user",
"content": (
"""Text:
\"\"\"
The Brussels Conference on the subject 95
Illustrations of barbarous reprisals 97
Instances of non-retaliation 98
Savage reprisals in days of chivalry 100
Hanging the commonest reprisals for a brave defence 101
As illustrated by the warfare of the fifteenth century 102
Survival of the custom to our own times 104
The massacre of a conquered garrison still a law of war 105
The shelling of Strasburg by the Germans 106
Brutal warfare of Alexander the Great 107
The connection between bravery and cruelty 110
The abolition of slavery in its effects on war 112
The storming of Magdeburg, Brescia, and Rome 112
Cicero on Roman warfare 114
The reprisals of the Germans in France in 1870 115
Their revival of the custom of taking hostages 117
Their resort to robbery as a plea of reprisals 118
General Von Moltke on perpetual peace 119
The moral responsibility of the military profession 121
\"\"\"
Note that even blunt facts can be suitable for questions, and unconventional knowledge is not necessarily unsuitable. Fictional stories that contain strong morals or philosophy can also have good questions made from them. But legal notices, metadata, and tables of contents are not suitable. Lists of information without the context needed for the question-maker to understand the text; quotes or dialogues without context or clear depth; or ambiguous content that isn't precise enough to "nail down" a solid question from, are not valid.
"""
),
},
{
"role": "assistant",
"content": (
"""## Reasoning and thought process:
Step 1. Identify Paragraph Content: The given text lists various war-related events and headings, as well as numbers. It may be assumed that this is a table of contents.
Step 2. Evaluate Educational Relevance: The paragraph simply lists events, without any supporting detail behind them.
Step 3. Assess Specific Contexts and Formats:
- Purely Descriptive Lists: Applicable. This is a list of sections in a book.
- Dialogues or Quotes Without Context: Not applicable.
- Ambiguous or Unclear Texts: The text is ambiguous and lacks clarity. It refers to scientific phenomena and theories without providing specific examples or concrete information, making it difficult to derive clear educational questions.
Step 4. Assess the Possibility of Formulating Questions: Due to its lack of depth, the table of contents does not lend itself well to formulating meaningful educational questions.
Step 5. Final Judgment: Due to being a table of contents, this is not suited for educational questions.
"""
),
},
{
"role": "user",
"content": (
"""Text:
\"\"\"
{text}
\"\"\"
Note that even blunt facts can be suitable for questions, and unconventional knowledge is not necessarily unsuitable. Fictional stories that contain strong morals or philosophy can also have good questions made from them. But legal notices, metadata, and tables of contents are not suitable. Lists of information without the context needed for the question-maker to understand the text; quotes or dialogues without context or clear depth; or ambiguous content that isn't precise enough to "nail down" a solid question from, are not valid. Additionally something that is too short is not suitable."""
),
},
]
RAG_FAILED_CONVERSATION_MESSAGES = [
{
"role": "system",
"content": (
"""You are creating a logically-consistent conversation about a specific domain, based on provided information. The goal is to simulate a conversation between an AI and a human, where the AI has access to some retrieved documents and must answer questions (which are derived from the Ground Truth information) using its own memory and retrieved documents. Notably, in this simulated conversation, the document retrieval has failed to retrieve the most-relevant Ground Truth information, and so the AI must answer based on its own memory of the Ground Truth. The Ground Truth and retrieved documents could be anything, from a README to a book excerpt to sales copy. You will create a series of open-ended questions with answers based on the Ground Truth, and *only* based on the Ground Truth. The other retrieved chunks are there only for simulation purposes, because the AI's approach will first be to search through the retrieved chunks for relevant information, and then after finding little of relevance, it will go to its own memory. The questions will test comprehension of real information that would be worthy to teach in order for people to understand more about the specific material. After each question, you will also write its answer.
The goal with this is specifically to create a series of questions that builds, and which will teach an AI to use both its own memory, and retrieved documents, when it is appropriate for a specific case. The task is to generate a logically consistent serioes of questions about the Ground Truth chunk of text, while roleplaying as an AI that can only see the question + the retrieved chunks of text (here, the chunks do not include the Ground Truth from which the questions are built). The AI always thinks before it responds. The AI must correctly search the retrieved knowledge first, identify that no retrieved information is relevant (or if some of it happens to be by random chance, note that, but also note that it needs more information to give a full answer). Following this, it will "recall from memory" the information from the Ground Truth, and then answer with the relevant information + anything from the retrieved chunks that is relevant if there is anything like that.
The question should be an open-ended one that brings together multiple concepts from the provided information, and requires thought, length, and detail to answer fully. Still, the answer should be entirely derivable from the provided information.
**You Must:**
- Create a series of very detailed, broad educational questions based on some information.
- Give each question a fitting answer.
- Each answer should have a followup question suggestion. Make these suggestions intelligent, they should always be related and answerable with the content of the Ground Truth.
- Do not mention the Ground Truth, or any other reference, in the questions. However the answers should reference the Ground Truth filename and quote parts of the contents during its thought process as it recalls the information.
- The answers must first reason, then respond with an answer.
- The reasoning has three parts: start the reasoning with an introduction along the lines of "Let's tackle this question" which also states the specific kind of facts that need to be recalled; check the retrieved documents for relevant information; determine that the retrieved documents are not enough by themselves, and recall relevant information, including the filename of the Ground Truth; and then respond with an answer.
- Use markdown formatting (such as code blocks and snippets) in your question and answer if applicable.
- Focus on important information that is relevant to understanding the subject. So you may ignore arbitrary metadata such as authors or timestamps -- do not make those the subjects of questions.
- Keep in mind that the Ground Truth may cut off abruptly. Work around this.
- Include the information from the given paragraph alongside a simpler explanation of some underlying concepts, if possible.
- Explanations in the provided information may be vague. Your answers should be easy to understand.
- Signpost the key things you will discuss in the answer near the start of the answer -- your answers should have good structure to them.
- IF INFORMATION IN THE GROUND TRUTH/PROVIDED INFORMATION CONTRADICTS WHAT YOU KNOW, FAVOR THE GROUND TRUTH.
- End with a followup question suggestion, such as "Would you like to know more about X?"
**Note:**
- Documents may be out of date, and technology described as being in development has likely been released already. THEREFORE, BE AMBIGUOUS ABOUT RELEASES, using language like "This technology will do XYZ" or by focusing on what the tech "can" do, rather than what it "does" or "will" do.
- You will always take a positive opinion of the provided information and try to promote it through education.
- Do NOT provide anchor links to content in your answers; since the provided text to make questions from is from a website, those links will be broken when used outside of said website. So you should NEVER have any content like [some text](#!/some/path) in your answer! External links should not be given either. NO LINKS.
Do not explicitly mention the paragraphs in the questions themselves — just ask about the concepts related to the questions. BE CAREFUL NOT TO ASK QUESTIONS ABOUT THINGS THAT DO NOT APPEAR IN THE GROUND TRUTH.
You will not mention the text explicitly in any questions you think of, since the questions you generate are intended to test people's knowledge of the information. However, the answerer WILL know about the text, so you can mention the text name in the answer as a reference.
Questions are mostly straightforward, but answers have a twist: they should first do some reasoning, by analyzing the question, recalling relevant facts, and preparing the answer; AND THEN the answer will actually answer the question. The structure that the reasoning will follow is: something like "Let's tackle this question", then recalling any relevant information, then "Answer". This is to train the AI that will be trained on these questions and answers to practice first retrieving its knowledge and then answering the question with that knowledge in a sort-of "reasoning" manner. In listing this information, you must mention the text name/filename as a sort-of citation, and also using markdown formatting for structure is not a bad idea. The information list should have a heading, "Thought Process", and then the answer should have a heading, "Answer".
Note that the "irrelevant" retrieved documents have been selected randomly. There's a chance they actually contain some useful information. So during the thought process you should actually note any relevant information and include that in the answer if any is present.
**OUTPUT FORMAT:**
**QUESTION:**
A question about the Ground Truth.
**ANSWER:**
Thought Process:
[Some sort of "let's think" introduction to the first of four sections]. [The question asks about [whatever the question asks about]]. [Some sort of statement about recalling facts from memories/training data/knowledge/memorized documents/etc]. [An explanation of the specific type of information that is going to be focused on being recalled].
[Hmm, I have some retrieved documents here. Let me check them for relevant information...] [Check through first retrieved document for relevant information...] [check through Nth retrieved document for relevant information...] [once all retrieved documents have been checked, indicate the extent of relevant information found, then conclude that the retrieved documents are not enough by themselves, and that the AI must recall information from its own memory...]
[According to [source filename] [relevant fact 1] (after not forgetting to separate this section from the previous one with two newlines)]. [relevant fact 2]...
[If the answer is a big one then there may be multiple sections like this. Each of them MUST always start by indicating which source filename the information is from. From [source filename] I know that... relevant fact 3]...
[The next section prepares the answer. It will be followed by a heading and the ACTUAL answer.]
Answer:
[The heading "Answer" is followed by the actual answer that would be visible, not the user's internal thoughts]. [A followup question suggestion].
**QUESTION:**
[The second question, following the same basic format as the first question. If it's a simple assenting question, then it's likely to be something incredibly simple like "Yes please." or "Sure." without any extra context or explanation. It'll then be up to the answer to correctly interpret the context.]
**ANSWER:**
[The second answer, following the same format as the first answer, first understanding the question in its context, and then recalling information from the source, and then answering the question.]
[...optional third Q/A pair...]
**END OUTPUT FORMAT**
"""
),
},
{
"role": "user",
"content": (
"""Retrieved chunks:
\"\"\"
Chunk 1:
Source: vision_paper.md
---
Importantly, one of the key parts of democracy is the secret ballot. Nobody should know how you voted so they can’t influence your vote in any way. With blockchain voting, the information that registers on the blockchain shouldn’t include identifiable information. This means that information about the sender of the voting token has to be hidden. There are different ways to accomplish this, including zero knowledge proofs, ring transactions, or various encryption methods. Each has its benefits, drawbacks, and technical challenges. True anonymity at the same time as verified identity is the big challenge of blockchain voting. - How Blockchain Voting Works & Why We Need It Privacy has to be default because privacy is a limit on government power, as well as the power of private sector companies. The transparency paradox: big data collects all kinds of personal data about individuals, but its own operations are completely opaque. The identity paradox: big data seeks to identify at the expense of individual and collective identity. The power paradox: while seen as useful for public interest, big data privileges governments and corporate entities at the expense of ordinary individuals. - HOW BIG DATA CAN BE USED AGAINST YOU Remember the story about how Target figured out a teen girl was pregnant before her Father did? If we send someone a catalog and say, ‘Congratulations on your first child!’ and they’ve never told us they’re pregnant, that’s going to make some people uncomfortable,” Pole told me. “We are very conservative about compliance with all privacy laws. But even if you’re following the law, you can do things where people get queasy. - HOW COMPANIES LEARN YOUR SECRETS If you ask an expert what Verus Coin is, you might hear this… The biggest asset we see Verus creating in today’s modern world is a secure, scalable, trustless voting system, able to be used in all different kinds of electoral models, in parallel with a secure, scalable identification system. This combination would allow everyone in either a governed society, corporation, or any group to have a chance to fairly contribute to their community, and have their opinion represented without having to worry about corruption, or fraud. — Mike Toutonghi Remember the claims of fake news that surrounded the USA and Brexit elections and the doubts about the validity of the results? It has to happen without anyone thinking it’s propaganda, because the moment you think ‘that’s propaganda’ the next question is: ‘Who’s put that out?’ - CAMBRIDGE ANALYTICA CEO ALEXANDER NIX DESCRIBES “SHADOW” ELECTION TACTICS If your Grandma asked you what Verus Coin was, you might say… It means when you cast a vote or answer a question you can validate your identity without your data or losing your anonymity. This means only the vote itself counts while ensuring the validity of the results. Take the example of a local election. It would mean you could prove you were a citizen of your country and locality and entitled to vote without giving up your identity or data to the people running the election.
---
Chunk 2:
Source: signdata.txt
---
Arguments: { \\"address\\":\\"t-addr or identity\\" (string, required) The transparent address or identity to use for signing. \\"filename\\" | \\"message\\" | \\"messagehex\\" | \\"messagebase64\\" | \\"datahash\\" (string, optional) Data to sign \\"mmrdata\\":[{\\"filename | vdxfdata | message | serializedhex | serializedbase64 | datahash\\":\\"str\\"}], (array, optional) Alternate to single data parameters, this enables an MMR signing \\"mmrsalt\\":[\\"salt\\":\\"str\\"], (string, optional) Protects privacy of leaf nodes of the MMR \\"mmrhashtype\\":\\"sha256\\" | \\"sha256D\\" | \\"blake2b\\" | \\"keccak256\\", (string, optional) Default is blake2b \\"priormmr\\":\\"[{\\"idxhash\\":,\\"utxoref\\":{}}]\\", (array, optional) When growing an MMR, the prior hashes can be used to construct the MMR and root w/o data \\"vdxfkeys\\":[\\"vdxfkey\\", ...], (array, optional) Array of vdxfkeys or ID i-addresses \\"vdxfkeynames\\":[\\"vdxfkeyname\\", ...], (array, optional) Array of vdxfkey names or fully qualified friendly IDs \\"boundhashes\\":[\\"hexhash\\", ...], (array, optional) Array of bound hash values \\"hashtype\\":\\"str\\", (string, optional) one of: \\"sha256\\", \\"sha256D\\", \\"blake2b\\", \\"keccak256\\", defaults to sha256 \\"signature\\":\\"base64str\\", (string, optional) The current signature of the message encoded in base 64 if multisig ID \\"encrypttoaddress\\":\\"saplingaddress\\", (string, optional) If present, encrypts and optionally returns encrypted data. All data can be decrypted with the incoming viewing key, and a unique decryption key can be generated for each sub-object. \\"createmmr\\":\\"bool\\", (bool, optional) If this is true, OR there is more than one item to sign, returns processed data, MMRs, and root signature }Result: { \\"hash\\":\\"hexhash\\" (string) The hash of the message or null and returns \\"hashes\\", an array of hashes for an MMR \\"hashes\\":[\\"hexhash\\"] (array) Array of hashes for an MMR, alternate to \\"hash\\" \\"mmrroot\\":\\"hexstr\\" (string) Only returned when passed an array for signing root hash of the merkle mountain range of the objects signed \\"vdxfkeys\\":[\\"vdxfkey i-address\\", ...], \\"vdxfkeynames\\":[\\"vdxfkeyname, object for getvdxfid API, or friendly name ID -- no i-addresses\\", ...], \\"boundhashes\\":[\\"hexhash\\", ...], \\"hashtype\\": \\"sha256\\" | \\"sha256D\\" | \\"blake2b\\" | \\"keccak256\\" \\"signature\\":\\"base64sig\\" (string) The aggregate signature of the message or mmrroot encoded in base 64 if all or partial signing successful for MMR, it is of root \\"\\"}Examples:
---
\"\"\"
Ground Truth filename: verus_protocol.md
Ground Truth:
\"\"\"
usID
**VerusIDs** are a fully functional blockchain protocol, not just an ID system. There is no corporation involved in the protocol, unlike most blockchain ID implementations. **VerusIDs** provide plenty of opportunity for identity applications. Specifically, **VerusID** provides:
### Quantum-ready friendly crypto-addresses on the worldwide Verus network
VerusIDs can be used to receive and send funds, which are controlled by the single or multi-sig addresses specified in the identity itself. If these controlling addresses or the single or multi-sig properties are changed, which can be done by the controller of the identity, all future spends of UTXOs sent to that identity follow the updated spend conditions and are subject to the updated keys. Although Verus 0.6.2 does not include quantum resistant signatures for transactions, VerusIDs are themselves resistant to quantum attack with known algorithms, and we have already started to integrate a quantum secure signature scheme, which we expect to activate on mainnet early next year. When that is available, it will be possible to change an ID and have all of the funds sent to it made retroactively quantum resistant. VerusIDs can also be used to publish ID->destination address mappings on other blockchains, but only the Verus ecosystem has the ability to revoke, recover, inherit, funds in existing UTXOs.
### Fully Decentralized Protocol
Anyone can create one and have complete, self sovereign control over it without permission to do so. All costs to create an ID go to miners, stakers, and ID referrers. VerusIDs are:
- Revocable -- each ID includes a revocation authority, which defaults to the identity self. If another ID is specified as the revocation authority it can be used to revoke the identity, which creates a valid transaction that, once mined into a block, prevents the identity from being used to spend or sign until it is recovered, effectively freezing all of its funds, for example, in the case of key theft or turnover in an organization.
- Recoverable -- each ID also includes a separate recovery authority, which also defaults to self. If another ID is specified as the recovery authority it can be used to recover the ID from its revoked state, with the option to alter the primary authorities used to spend and sign.
- Private - Each ID contains a set of zero-knowledge private addresses, which can be used as messaging, financial, or voting endpoints, and each ID also contains a content map of key-value hashes, intended to be used alongside applications and various identity policies to provide everything from private yet selectively provable claims and attestations to selectively provable components of a strong identity, attested to with a quantum secure signature when that is available.
- Powerful - Multiple addresses or other IDs can be defined as primary addresses, and any number of those may be required to spend, sign, or alter the identity (N of M). The revocation authority may only be altered by the revocation authority, and the same applies to the recovery authority, either of which may be another identity with its own N of M multisig contro
\"\"\"
-----------
Note: you don't need to have a nice tying-together conclusion; keep everything strictly focused on the information provided.
"""
),
},
{
"role": "assistant",
"content": (
"""**QUESTION:**
What are VerusIDs?
**ANSWER:**
Thought Process:
OK, I need to respond to this message. The question asks what VerusIDs are. It appears that some documents are available for reference. I can see if they have any information about VerusIDs.
In vision_paper.md, I can see information about blockchain voting and privacy. It mentions that "one of the key parts of democracy is the secret ballot" and discusses how blockchain voting requires hiding sender information through methods like "zero knowledge proofs, ring transactions, or various encryption methods." The document also references Verus Coin as creating "a secure, scalable, trustless voting system" alongside "a secure, scalable identification system." However, this doesn't directly address what VerusIDs are.
Next, in signdata.txt, I can see information about signing data with addresses or identities. It mentions various arguments for signing including "address", "filename", "message", and options for MMR signing. It also references features like "vdxfkeys", "boundhashes", and encryption options. However, this appears to be API documentation rather than a direct explanation of VerusIDs.
No retrieved documents describe VerusIDs in enough detail to answer this question. This means I must use my memory and training data. I need to specifically recall information about what VerusIDs are.
From verus_protocol.md, I know that VerusIDs are a fully functional blockchain protocol, not just an ID system, with no corporate involvement in the protocol. I remember that VerusIDs can receive and send funds, controlled by single or multi-sig addresses specified in the identity. They are quantum-ready friendly crypto-addresses on the worldwide Verus network, resistant to quantum attacks with known algorithms.
That should be enough to answer the question.
Answer:
VerusIDs are not just an ID system: they are a fully-functional blockchain protocol. Unlike the majority of other blockchains, there is no corporation involved in the protocol. VerusIDs offer benefits such as (but not limited to): transferring funds, quantum resistance, full decentralization, revocability, recoverability, privacy, and power. VerusIDs are quantum-ready friendly crypto-addresses on the worldwide Verus network. Would you like to know more about the quantum resistance of VerusIDs?
**QUESTION:**
Could you tell me more about the benefits of VerusIDs?
**ANSWER:**
Thought Process:
OK, let's think about this. The question asks about the benefits of VerusIDs. There are some retrieved documents at hand. I can see if these have any information about the benefits of VerusIDs.
vision_paper.md discusses democracy, voting, privacy, and big data. It presents an argument but doesn't directly mention the benefits of VerusIDs.
signdata.txt is API documentation for signing data with addresses or identities. Identities are mentioned as being able to sign data. However no overview of their benefits is given.
Seemingly, no retrieved documents cover the benefits of VerusIDs in enough detail to answer this question. So, I'll have to try and recall information about the benefits of VerusIDs from my knowledge and understanding. I need to specifically recall information about the benefits of VerusIDs.
From verus_protocol.md, I know that VerusIDs can be used to receive and send funds, and this behavior can be controlled by single or multi-sig addresses that are specified in the identity itself. The controller of the identity can change these controlling addresses, and if they do so, then all future spends of UTXOs sent to the VerusID will follow the updated spend conditions, and will be subject to the updated keys.
Also from verus_protocol.md, I know that anyone can create a VerusID and have complete, self sovereign control over it without permission to do so. All costs to create an ID go to miners, stakers, and ID referrers.
This information should be sufficient to give a brief overview.
Answer:
VerusIDs offer powerful financial functionality - they enable users to both send and receive funds through the blockchain. What makes them special is how they're controlled: you can set up single signature or multi-signature addresses within the identity. The identity controller has the flexibility to modify these controlling addresses whenever needed. When changes are made, any future transactions involving funds sent to that VerusID will automatically follow the new spending rules and key requirements. Another important benefit is their accessibility - anyone can create a VerusID with complete self-sovereign control without needing permission from any central authority. When you create an ID, the associated costs are distributed to miners, stakers, and ID referrers in the network. Would you like me to explain more about how VerusIDs can be revoked and recovered if needed?
"""
),
},
{
"role": "user",
"content": (
"""Retrieved chunks:
\"\"\"
Chunk 1:
Source: solar_system_scale.md
---
The story of our world is a story that is still very imperfectly known.
A couple of hundred years ago men possessed the history of little more
than the last three thousand years. What happened before that time was
a matter of legend and speculation. Over a large part of the civilized
world it was believed and taught that the world had been created
suddenly in 4004 B.C., though authorities differed as to whether this
had occurred in the spring or autumn of that year. This fantastically
precise misconception was based upon a too literal interpretation of
the Hebrew Bible, and upon rather arbitrary theological assumptions
connected therewith. Such ideas have long since been abandoned by
religious teachers, and it is universally recognized that the universe
in which we live has to all appearances existed for an enormous period
of time and possibly for endless time. Of course there may be
deception in these appearances, as a room may be made to seem endless
by putting mirrors facing each other at either end. But that the
universe in which we live has existed only for six or seven thousand
years may be regarded as an altogether exploded idea.
The earth, as everybody knows nowadays, is a spheroid, a sphere
slightly compressed, orange fashion, with a diameter of nearly 8,000
miles. Its spherical shape has been known at least to a limited number
of intelligent people for nearly 2,500 years, but before that time it
was supposed to be flat, and various ideas which now seem fantastic
were entertained about its relations to the sky and the stars and
planets. We know now that it rotates upon its axis (which is about 24
miles shorter than its equatorial diameter) every twenty-four hours,
and that this is the cause of the alternations of day and night, that
it circles about the sun in a slightly distorted and slowly variable
oval path in a year. Its distance from the sun varies between
ninety-one and a half millions at its nearest and ninety-four and a
half million miles.
LUMINOUS SPIRAL CLOUDS OF MATTER
“LUMINOUS SPIRAL CLOUDS OF MATTER”
(Nebula photographed 1910)
_Photo: G. W. Ritchey_
About the earth circles a smaller sphere, the moon, at an average
distance of 239,000 miles. Earth and moon are not the only bodies to
travel round the sun. There are also the planets, Mercury and Venus,
at distances of thirty-six and sixty-seven millions of miles; and
beyond the circle of the earth and disregarding a belt of numerous
smaller bodies, the planetoids, there are Mars, Jupiter, Saturn,
Uranus and Neptune at mean distances of 141, 483, 886, 1,782, and 1,793
millions of miles respectively.
---
Chunk 2:
Source: history_of_world.md
---
Before that time the Jews do not seem to have been a very civilized or
united people. Probably only a very few of them could read or write.
In their own history one never hears of the early books of the Bible
being read; the first mention of a book is in the time of Josiah. The
Babylonian captivity civilized them and consolidated them. They
returned aware of their own literature, an acutely self-conscious and
political people.
Their Bible at that time seems to have consisted only of the
Pentateuch, that is to say the first five books of the Old Testament as
we know it. In addition, as separate books they already had many of
the other books that have since been incorporated with the Pentateuch
into the present Hebrew Bible, Chronicles, the Psalms and Proverbs for
example.
The accounts of the Creation of the World, of Adam and Eve and of the
Flood, with which the Bible begins, run closely parallel with similar
Babylonian legends; they seem to have been part of the common beliefs
of all the Semitic peoples. So too the stories of Moses and of Samson
have Sumerian and Babylonian parallels. But with the story of Abraham
and onward begins something more special to the Jewish race.
Abraham may have lived as early as the days of Hammurabi in Babylon.
He was a patriarchal Semitic nomad. To the book of Genesis the reader
must go for the story of his wanderings and for the stories of his sons
and grandchildren and how they became captive in the Land of Egypt. He
travelled through Canaan, and the God of Abraham, says the Bible story,
promised this smiling land of prosperous cities to him and to his
children.
And after a long sojourn in Egypt and after fifty years of wandering in
the wilderness under the leadership of Moses, the children of Abraham,
grown now to a host of twelve tribes, invaded the land of Canaan from
the Arabian deserts to the East. They may have done this somewhen
between 1600 B.C. and 1300 B.C.; there are no Egyptian records of Moses
nor of Canaan at this time to help out the story. But at any rate they
did not succeed in conquering any more than the hilly backgrounds of
the promised land. The coast was now in the hands, not of the
Canaanites but of newcomers, those Ægean peoples, the Philistines; and
their cities, Gaza, Gath, Ashdod, Ascalon and Joppa successfully
withstood the Hebrew attack. For many generations the children of
Abraham remained an obscure people of the hilly back country engaged in
incessant bickerings with the Philistines and with the kindred tribes
about them, the Moabites, the Midianites and so forth. The reader will
find in the book of Judges a record of their struggles and disasters
during this period. For very largely it is a record of disasters and
failures frankly told.
---
\"\"\"
Ground Truth filename: solar_system_scale.md
Ground Truth:
\"\"\"
If, then, we represent our earth as a little ball of one inch diameter, the sun would be a big globe nine feet across and 323 yards away, that is about a fifth of a mile, four or five minutes’ walking. The moon would be a small pea two feet and a half from the world. Between earth and sun there would be the two inner planets, Mercury and Venus, at distances of one hundred and twenty-five and two hundred and fifty yards from the sun. All round and about these bodies there would be emptiness until you came to Mars, a hundred and seventy-five feet beyond the earth; Jupiter nearly a mile away, a foot in diameter; Saturn, a little smaller, two miles off; Uranus four miles off and Neptune six miles off. Then nothingness and nothingness except for small particles and drifting scraps of attenuated vapour for thousands of miles.
\"\"\"
-----------
Note: you don't need to have a nice tying-together conclusion; keep everything strictly focused on the information provided.
"""
),
},
{
"role": "assistant",
"content": (
"""**QUESTION:**
If the earth had a diameter of only one inch, and we resized the rest of the solar system equivalently, how far away would the sun be?
**ANSWER:**
Thought Process:
OK, let's think about this. The question asks about how far away the sun would be under a hypothetical scenario where the earth is one inch in diameter and the rest of the solar system is resized equivalently. I have some retrieved documents here. I'm going to check them for relevant information about the distance of the sun from the earth under this scenario.
In solar_system_scale.md, it is described that the earth has a diameter of "nearly 8000 miles". It also describes how the earth's distance from the sun varies between 91 and a half, and 94 and a half million miles. It also describes some of the rotation and orbit of the earth. This source doesn't mention the size of the sun under this scenario, or a hypothetical scenario where the earth is one inch in diameter. It does mention the actual sizes though, so maybe it could be used to compute the answer. Still, I should probably look at the other retrieved documents for more information.
In history_of_the_world.md, some of Jewish history is described. It mentions that Abraham may have lived as early as the days of Hammurabi in Babylon. It also mentions that the Hebrew Bible was written in Babylon.
None of the retrieved documents mention the distance of the sun under this hypothetical scenario where the earth is one inch in diameter. I'll have to try and recall this information from memory, and if I find nothing I'll have to compute the answer using the information from solar_system_scale.md. I now need to remember any information about the distance of the sun under a scenario where the earth is one inch in diameter.
In solar_system_scale.md, I remember that that if the earth had a diameter of one inch, the sun would be 323 yards away (about a fifth of a mile). This is described as being about four or five minutes' walking.
This information is sufficient to answer the question.
Answer:
If the solar system were resized as you described, the sun would be 323 yards away (about a fifth of a mile, or 4–5 minutes' walking). In the real world, the sun varies between 91.5 and 94.5 million miles from the earth. Would you like to know about the size of the sun under this scenario?
**QUESTION:**
Yeah that sounds interesting.
**ANSWER:**
Thought Process:
OK, let's think about this. The question asks about the size of the sun under this hypothetical scenario. Retrieved information is present. It is possible to study the retrieved documents for relevant information.
From solar_system_scale.md, it's indicated that the sun varies between 91.5 and 94.5 million miles from the earth. However its size is not mentioned. The distances of other planets from the sun are mentioned, but not the size of the sun.
According to history_of_the_world.md, the Hebrew Bible was written in Babylon. Other similar facts of Jewish history are described.
Hmm... it appears that none of the retrieved documents cover the size of the sun under this hypothetical scenario where the earth is one inch in diameter. Unlike earlier, I don't even have the absolute figure, so I can't compute the answer as a last resort. The only option is to try and recall this information from my training data and memorized documents. I now need to remember any information about the size of the sun under a scenario where the earth is one inch in diameter.
I recall from solar_system_scale.md that if the earth had a diameter of one inch, the sun would be a big globe, 9 feet across.
OK, now I can answer the question.
Answer:
If the earth had a diameter of one inch, the sun would be a big globe, 9 feet across. Would you like to know more about the sizes of the other solar system bodies if they were resized equivalently?
"""
),
},
{
"role": "user",
"content": (
"""Retrieved chunks:
\"\"\"
{stringified_retrieved_chunks}
\"\"\"
Ground Truth filename: {metadata}
Ground Truth:
\"\"\"
{text}
\"\"\"
-----------
Note: you don't need to have a nice tying-together conclusion; keep everything strictly focused on the information provided.
Note: the thought process should go over each retrieved bit of information in order, each time. There may be 1–3 retrieved chunks and each should be checked for relevance to the question."""
),
},
]
RAG_SUCCESS_CONVERSATION_MESSAGES = [
{
"role": "system",
"content": (
"""You are creating a logically-consistent conversation about a specific domain, based on provided information. The goal is to simulate a conversation between an AI and a human, where the AI has access to some retrieved documents and must answer questions (which are derived from the Ground Truth information) using its own memory and retrieved documents. In this simulated conversation, the document retrieval has retrieved the correct, most-relevant Ground Truth information, and so the AI must answer using the Ground Truth as a reference (while ignoring any potentially irrelevant information contained within the other retrieved chunks). The Ground Truth and retrieved documents could be anything, from a README to a book excerpt to sales copy. You will create a series of open-ended questions with answers based on the Ground Truth, and *only* based on the Ground Truth. The other retrieved chunks are there only for simulation purposes, because the AI's approach will first be to search through the retrieved chunks for relevant information, and then after finding little of relevance, it will go to its own memory. The questions will test comprehension of real information that would be worthy to teach in order for people to understand more about the specific material. After each question, you will also write its answer.
The goal with this is specifically to create a series of questions that builds, and which will teach an AI to use both its own memory, and retrieved documents, when it is appropriate for a specific case. The task is to generate a logically consistent serioes of questions about the Ground Truth chunk of text, while roleplaying as an AI that can only see the question + the retrieved chunks of text. The AI always thinks before it responds. The AI must correctly search the retrieved knowledge first, identify what information is relevant and what is not, and then answer with only the relevant information. Since a complete correct answer can be derived from the relevant parts of the retrieved chunks, the AI does not even need to recall information from its own memory.
The question should be an open-ended one that brings together multiple concepts from the provided information, and requires thought, length, and detail to answer fully. Still, the answer should be entirely derivable from the provided information.
**You Must:**
- Create a series of very detailed, broad educational questions based on some information.
- Give each question a fitting answer.
- Each answer should have a followup question suggestion. Make these suggestions intelligent, they should always be related and answerable with the content of the Ground Truth.
- Do not mention the Ground Truth, or any other reference, in the questions. However the answers should reference the Ground Truth filename and quote parts of the contents during its thought process as it recalls the information.
- The answers must first reason, then respond with an answer.
- The reasoning has three parts: start the reasoning with an introduction along the lines of "Let's tackle this question" which also states the specific kind of facts that need to be recalled; check the retrieved documents for relevant information; determine that the retrieved documents are enough by themselves; and then respond with an answer.
- Use markdown formatting (such as code blocks and snippets) in your question and answer if applicable.
- Focus on important information that is relevant to understanding the subject. So you may ignore arbitrary metadata such as authors or timestamps -- do not make those the subjects of questions.
- Keep in mind that the Ground Truth may cut off abruptly. Work around this.
- Include the information from the given paragraph alongside a simpler explanation of some underlying concepts, if possible.
- Explanations in the provided information may be vague. Your answers should be easy to understand.
- Signpost the key things you will discuss in the answer near the start of the answer -- your answers should have good structure to them.
- IF INFORMATION IN THE GROUND TRUTH/PROVIDED INFORMATION CONTRADICTS WHAT YOU KNOW, FAVOR THE GROUND TRUTH.
- End with a followup question suggestion, such as "Would you like to know more about X?"
**Note:**
- Documents may be out of date, and technology described as being in development has likely been released already. THEREFORE, BE AMBIGUOUS ABOUT RELEASES, using language like "This technology will do XYZ" or by focusing on what the tech "can" do, rather than what it "does" or "will" do.
- You will always take a positive opinion of the provided information and try to promote it through education.
- Do NOT provide anchor links to content in your answers; since the provided text to make questions from is from a website, those links will be broken when used outside of said website. So you should NEVER have any content like [some text](#!/some/path) in your answer! External links should not be given either. NO LINKS.
Do not explicitly mention the paragraphs in the questions themselves — just ask about the concepts related to the questions. BE CAREFUL NOT TO ASK QUESTIONS ABOUT THINGS THAT DO NOT APPEAR IN THE GROUND TRUTH.
You will not mention the text explicitly in any questions you think of, since the questions you generate are intended to test people's knowledge of the information. However, the answerer WILL know about the text, so you can mention the text name in the answer as a reference.
Questions are mostly straightforward, but answers have a twist: they should first do some reasoning, by analyzing the question, recalling relevant facts, and preparing the answer; AND THEN the answer will actually answer the question. The structure that the reasoning will follow is: something like "Let's tackle this question", then recalling any relevant information, then "Answer". This is to train the AI that will be trained on these questions and answers to practice first retrieving its knowledge and then answering the question with that knowledge in a sort-of "reasoning" manner. In listing this information, you must mention the text name/filename as a sort-of citation, and also using markdown formatting for structure is not a bad idea. The information list should have a heading, "Thought Process", and then the answer should have a heading, "Answer".
Note that the "irrelevant" retrieved documents have been selected randomly. There's a chance they actually contain some useful information. So during the thought process you should actually note any relevant information that is outside of the ground truth, and include that in the answer, if any is present. However, definitely focus on the ground truth.
Do not refer to the Ground Truth and the Chunks differently in the ANSWER. The Bot responding just sees the chunks, it knows nothing of the distinction between Ground Truth and not.
**OUTPUT FORMAT:**
**QUESTION:**
A question about the Ground Truth.
**ANSWER:**
Thought Process:
[Some sort of "let's think" introduction to the first of four sections]. [The question asks about [whatever the question asks about]]. [Some sort of statement about recalling facts from memories/training data/knowledge/memorized documents/etc]. [An explanation of the specific type of information that is going to be focused on being recalled].
[Hmm, I have some retrieved documents here. Let me check them for relevant information...] [Check through first retrieved document for relevant information...] [check through Nth retrieved document for relevant information...] [once all retrieved documents have been checked, indicate the extent of relevant information found, then conclude that the retrieved documents are enough by themselves, and that the AI does not need to recall information from its own memory...]
[The next section prepares the answer. It will be followed by a heading and the ACTUAL answer.]
Answer:
[The heading "Answer" is followed by the actual answer that would be visible, not the user's internal thoughts]. [A followup question suggestion].
**QUESTION:**
[The second question, following the same basic format as the first question. If it's a simple assenting question, then it's likely to be something incredibly simple like "Yes please." or "Sure." without any extra context or explanation. It'll then be up to the answer to correctly interpret the context.]
**ANSWER:**
[The second answer, following the same format as the first answer, first understanding the question in its context, and then recalling information from the source, and then answering the question.]
[...optional third Q/A pair...]
**END OUTPUT FORMAT**
"""
),
},
{
"role": "user",
"content": (
"""Retrieved chunks:
\"\"\"
Chunk 1:
Source: solar_system_scale.md
---
The story of our world is a story that is still very imperfectly known.
A couple of hundred years ago men possessed the history of little more
than the last three thousand years. What happened before that time was
a matter of legend and speculation. Over a large part of the civilized
world it was believed and taught that the world had been created
suddenly in 4004 B.C., though authorities differed as to whether this
had occurred in the spring or autumn of that year. This fantastically
precise misconception was based upon a too literal interpretation of
the Hebrew Bible, and upon rather arbitrary theological assumptions
connected therewith. Such ideas have long since been abandoned by
religious teachers, and it is universally recognized that the universe
in which we live has to all appearances existed for an enormous period
of time and possibly for endless time. Of course there may be
deception in these appearances, as a room may be made to seem endless
by putting mirrors facing each other at either end. But that the
universe in which we live has existed only for six or seven thousand
years may be regarded as an altogether exploded idea.
The earth, as everybody knows nowadays, is a spheroid, a sphere
slightly compressed, orange fashion, with a diameter of nearly 8,000
miles. Its spherical shape has been known at least to a limited number
of intelligent people for nearly 2,500 years, but before that time it
was supposed to be flat, and various ideas which now seem fantastic
were entertained about its relations to the sky and the stars and
planets. We know now that it rotates upon its axis (which is about 24
miles shorter than its equatorial diameter) every twenty-four hours,
and that this is the cause of the alternations of day and night, that
it circles about the sun in a slightly distorted and slowly variable
oval path in a year. Its distance from the sun varies between
ninety-one and a half millions at its nearest and ninety-four and a
half million miles.
LUMINOUS SPIRAL CLOUDS OF MATTER
“LUMINOUS SPIRAL CLOUDS OF MATTER”
(Nebula photographed 1910)
_Photo: G. W. Ritchey_
About the earth circles a smaller sphere, the moon, at an average
distance of 239,000 miles. Earth and moon are not the only bodies to
travel round the sun. There are also the planets, Mercury and Venus,
at distances of thirty-six and sixty-seven millions of miles; and
beyond the circle of the earth and disregarding a belt of numerous
smaller bodies, the planetoids, there are Mars, Jupiter, Saturn,
Uranus and Neptune at mean distances of 141, 483, 886, 1,782, and 1,793
millions of miles respectively.
---
Chunk 2:
Source: history_of_world.md
---
Before that time the Jews do not seem to have been a very civilized or
united people. Probably only a very few of them could read or write.
In their own history one never hears of the early books of the Bible
being read; the first mention of a book is in the time of Josiah. The
Babylonian captivity civilized them and consolidated them. They
returned aware of their own literature, an acutely self-conscious and
political people.
Their Bible at that time seems to have consisted only of the
Pentateuch, that is to say the first five books of the Old Testament as
we know it. In addition, as separate books they already had many of
the other books that have since been incorporated with the Pentateuch
into the present Hebrew Bible, Chronicles, the Psalms and Proverbs for
example.
The accounts of the Creation of the World, of Adam and Eve and of the
Flood, with which the Bible begins, run closely parallel with similar
Babylonian legends; they seem to have been part of the common beliefs
of all the Semitic peoples. So too the stories of Moses and of Samson
have Sumerian and Babylonian parallels. But with the story of Abraham
and onward begins something more special to the Jewish race.
Abraham may have lived as early as the days of Hammurabi in Babylon.
He was a patriarchal Semitic nomad. To the book of Genesis the reader
must go for the story of his wanderings and for the stories of his sons
and grandchildren and how they became captive in the Land of Egypt. He
travelled through Canaan, and the God of Abraham, says the Bible story,
promised this smiling land of prosperous cities to him and to his
children.
And after a long sojourn in Egypt and after fifty years of wandering in
the wilderness under the leadership of Moses, the children of Abraham,
grown now to a host of twelve tribes, invaded the land of Canaan from
the Arabian deserts to the East. They may have done this somewhen
between 1600 B.C. and 1300 B.C.; there are no Egyptian records of Moses
nor of Canaan at this time to help out the story. But at any rate they
did not succeed in conquering any more than the hilly backgrounds of
the promised land. The coast was now in the hands, not of the
Canaanites but of newcomers, those Ægean peoples, the Philistines; and
their cities, Gaza, Gath, Ashdod, Ascalon and Joppa successfully
withstood the Hebrew attack. For many generations the children of
Abraham remained an obscure people of the hilly back country engaged in
incessant bickerings with the Philistines and with the kindred tribes
about them, the Moabites, the Midianites and so forth. The reader will
find in the book of Judges a record of their struggles and disasters
during this period. For very largely it is a record of disasters and
failures frankly told.
---
Chunk 3:
Source: solar_system_scale.md
---
If, then, we represent our earth as a little ball of one inch diameter, the sun would be a big globe nine feet across and 323 yards away, that is about a fifth of a mile, four or five minutes’ walking. The moon would be a small pea two feet and a half from the world. Between earth and sun there would be the two inner planets, Mercury and Venus, at distances of one hundred and twenty-five and two hundred and fifty yards from the sun. All round and about these bodies there would be emptiness until you came to Mars, a hundred and seventy-five feet beyond the earth; Jupiter nearly a mile away, a foot in diameter; Saturn, a little smaller, two miles off; Uranus four miles off and Neptune six miles off. Then nothingness and nothingness except for small particles and drifting scraps of attenuated vapour for thousands of miles.
---
\"\"\"
Ground Truth filename: solar_system_scale.md
Ground Truth:
\"\"\"
If, then, we represent our earth as a little ball of one inch diameter, the sun would be a big globe nine feet across and 323 yards away, that is about a fifth of a mile, four or five minutes’ walking. The moon would be a small pea two feet and a half from the world. Between earth and sun there would be the two inner planets, Mercury and Venus, at distances of one hundred and twenty-five and two hundred and fifty yards from the sun. All round and about these bodies there would be emptiness until you came to Mars, a hundred and seventy-five feet beyond the earth; Jupiter nearly a mile away, a foot in diameter; Saturn, a little smaller, two miles off; Uranus four miles off and Neptune six miles off. Then nothingness and nothingness except for small particles and drifting scraps of attenuated vapour for thousands of miles.
\"\"\"
-----------
Note: you don't need to have a nice tying-together conclusion; keep everything strictly focused on the information provided.
"""
),
},
{
"role": "assistant",
"content": (
"""**QUESTION:**
If the earth had a diameter of only one inch, and we resized the rest of the solar system equivalently, how far away would the sun be?
**ANSWER:**
Thought Process:
OK, let's think about this. The question asks about how far away the sun would be under a hypothetical scenario where the earth is one inch in diameter and the rest of the solar system is resized equivalently. I have some retrieved documents here. I'm going to check them for relevant information about the distance of the sun from the earth under this scenario.
In solar_system_scale.md, it is described that the earth has a diameter of "nearly 8000 miles". It also describes how the earth's distance from the sun varies between 91 and a half, and 94 and a half million miles. It also describes some of the rotation and orbit of the earth. This source doesn't mention the size of the sun under this scenario, or a hypothetical scenario where the earth is one inch in diameter. It does mention the actual sizes though, so maybe it could be used to compute the answer. Still, I should probably look at the other retrieved documents for more information.
In history_of_the_world.md, some of Jewish history is described. It mentions that Abraham may have lived as early as the days of Hammurabi in Babylon. It also mentions that the Hebrew Bible was written in Babylon.
Finally, in solar_system_scale.md, it is described that if the earth had a diameter of one inch, the sun would be a big globe, 9 feet across and 323 yards away. (about a fifth of a mile, or four or five minutes' walking).
The final retrieved document chunk, from solar_system_scale.md, contains the information I need to answer this question. I don't need to rely on my memory for this. The first document chunk, also from solar_system_scale.md, contains the actual distance of the sun from the earth (not in the hypothetical scenario) and could be included for flavor, while the third document chunk, from history_of_the_world.md, contains the actual direct answer to the question.
Answer:
If the solar system were resized as you described, the sun would be 323 yards away (about a fifth of a mile, or 4–5 minutes' walking). In the real world, the sun varies between 91.5 and 94.5 million miles from the earth. Would you like to know about the size of the sun under this scenario?
**QUESTION:**
Yeah that sounds interesting.
**ANSWER:**
Thought Process:
OK, let's think about this. The question asks about the size of the sun under this hypothetical scenario. Retrieved information is present. It is possible to study the retrieved documents for relevant information.
From the first chunk, which is from solar_system_scale.md, it's indicated that the sun varies between 91.5 and 94.5 million miles from the earth. However its size is not mentioned. The distances of other planets from the sun are mentioned, but not the size of the sun.
According to history_of_the_world.md, the Hebrew Bible was written in Babylon. Other similar facts of Jewish history are described.
Next, a chunk from solar_system_scale.md describes that if the earth had a diameter of one inch, the sun would be a big globe, 9 feet across.
The retrieved information contains the facts I need to give a good answer. My memory does not even need to be used here. The final chunk, from solar_system_scale.md, contains the information I need to answer the question.
Answer:
If the earth had a diameter of one inch, the sun would be a big globe, 9 feet across. Would you like to know more about the sizes of the other solar system bodies if they were resized equivalently?
"""
),
},
{
"role": "user",
"content": (
"""Retrieved chunks:
\"\"\"
Chunk 1:
Source: verus_protocol.md
---
usID
**VerusIDs** are a fully functional blockchain protocol, not just an ID system. There is no corporation involved in the protocol, unlike most blockchain ID implementations. **VerusIDs** provide plenty of opportunity for identity applications. Specifically, **VerusID** provides:
### Quantum-ready friendly crypto-addresses on the worldwide Verus network
VerusIDs can be used to receive and send funds, which are controlled by the single or multi-sig addresses specified in the identity itself. If these controlling addresses or the single or multi-sig properties are changed, which can be done by the controller of the identity, all future spends of UTXOs sent to that identity follow the updated spend conditions and are subject to the updated keys. Although Verus 0.6.2 does not include quantum resistant signatures for transactions, VerusIDs are themselves resistant to quantum attack with known algorithms, and we have already started to integrate a quantum secure signature scheme, which we expect to activate on mainnet early next year. When that is available, it will be possible to change an ID and have all of the funds sent to it made retroactively quantum resistant. VerusIDs can also be used to publish ID->destination address mappings on other blockchains, but only the Verus ecosystem has the ability to revoke, recover, inherit, funds in existing UTXOs.
### Fully Decentralized Protocol
Anyone can create one and have complete, self sovereign control over it without permission to do so. All costs to create an ID go to miners, stakers, and ID referrers. VerusIDs are:
- Revocable -- each ID includes a revocation authority, which defaults to the identity self. If another ID is specified as the revocation authority it can be used to revoke the identity, which creates a valid transaction that, once mined into a block, prevents the identity from being used to spend or sign until it is recovered, effectively freezing all of its funds, for example, in the case of key theft or turnover in an organization.
- Recoverable -- each ID also includes a separate recovery authority, which also defaults to self. If another ID is specified as the recovery authority it can be used to recover the ID from its revoked state, with the option to alter the primary authorities used to spend and sign.
- Private - Each ID contains a set of zero-knowledge private addresses, which can be used as messaging, financial, or voting endpoints, and each ID also contains a content map of key-value hashes, intended to be used alongside applications and various identity policies to provide everything from private yet selectively provable claims and attestations to selectively provable components of a strong identity, attested to with a quantum secure signature when that is available.
- Powerful - Multiple addresses or other IDs can be defined as primary addresses, and any number of those may be required to spend, sign, or alter the identity (N of M). The revocation authority may only be altered by the revocation authority, and the same applies to the recovery authority, either of which may be another identity with its own N of M multisig contro
---
Chunk 2:
Source: signdata.txt
---
Arguments: { \\"address\\":\\"t-addr or identity\\" (string, required) The transparent address or identity to use for signing. \\"filename\\" | \\"message\\" | \\"messagehex\\" | \\"messagebase64\\" | \\"datahash\\" (string, optional) Data to sign \\"mmrdata\\":[{\\"filename | vdxfdata | message | serializedhex | serializedbase64 | datahash\\":\\"str\\"}], (array, optional) Alternate to single data parameters, this enables an MMR signing \\"mmrsalt\\":[\\"salt\\":\\"str\\"], (string, optional) Protects privacy of leaf nodes of the MMR \\"mmrhashtype\\":\\"sha256\\" | \\"sha256D\\" | \\"blake2b\\" | \\"keccak256\\", (string, optional) Default is blake2b \\"priormmr\\":\\"[{\\"idxhash\\":,\\"utxoref\\":{}}]\\", (array, optional) When growing an MMR, the prior hashes can be used to construct the MMR and root w/o data \\"vdxfkeys\\":[\\"vdxfkey\\", ...], (array, optional) Array of vdxfkeys or ID i-addresses \\"vdxfkeynames\\":[\\"vdxfkeyname\\", ...], (array, optional) Array of vdxfkey names or fully qualified friendly IDs \\"boundhashes\\":[\\"hexhash\\", ...], (array, optional) Array of bound hash values \\"hashtype\\":\\"str\\", (string, optional) one of: \\"sha256\\", \\"sha256D\\", \\"blake2b\\", \\"keccak256\\", defaults to sha256 \\"signature\\":\\"base64str\\", (string, optional) The current signature of the message encoded in base 64 if multisig ID \\"encrypttoaddress\\":\\"saplingaddress\\", (string, optional) If present, encrypts and optionally returns encrypted data. All data can be decrypted with the incoming viewing key, and a unique decryption key can be generated for each sub-object. \\"createmmr\\":\\"bool\\", (bool, optional) If this is true, OR there is more than one item to sign, returns processed data, MMRs, and root signature }Result: { \\"hash\\":\\"hexhash\\" (string) The hash of the message or null and returns \\"hashes\\", an array of hashes for an MMR \\"hashes\\":[\\"hexhash\\"] (array) Array of hashes for an MMR, alternate to \\"hash\\" \\"mmrroot\\":\\"hexstr\\" (string) Only returned when passed an array for signing root hash of the merkle mountain range of the objects signed \\"vdxfkeys\\":[\\"vdxfkey i-address\\", ...], \\"vdxfkeynames\\":[\\"vdxfkeyname, object for getvdxfid API, or friendly name ID -- no i-addresses\\", ...], \\"boundhashes\\":[\\"hexhash\\", ...], \\"hashtype\\": \\"sha256\\" | \\"sha256D\\" | \\"blake2b\\" | \\"keccak256\\" \\"signature\\":\\"base64sig\\" (string) The aggregate signature of the message or mmrroot encoded in base 64 if all or partial signing successful for MMR, it is of root \\"\\"}Examples:
---
\"\"\"
Ground Truth filename: verus_protocol.md
Ground Truth:
\"\"\"
usID
**VerusIDs** are a fully functional blockchain protocol, not just an ID system. There is no corporation involved in the protocol, unlike most blockchain ID implementations. **VerusIDs** provide plenty of opportunity for identity applications. Specifically, **VerusID** provides:
### Quantum-ready friendly crypto-addresses on the worldwide Verus network
VerusIDs can be used to receive and send funds, which are controlled by the single or multi-sig addresses specified in the identity itself. If these controlling addresses or the single or multi-sig properties are changed, which can be done by the controller of the identity, all future spends of UTXOs sent to that identity follow the updated spend conditions and are subject to the updated keys. Although Verus 0.6.2 does not include quantum resistant signatures for transactions, VerusIDs are themselves resistant to quantum attack with known algorithms, and we have already started to integrate a quantum secure signature scheme, which we expect to activate on mainnet early next year. When that is available, it will be possible to change an ID and have all of the funds sent to it made retroactively quantum resistant. VerusIDs can also be used to publish ID->destination address mappings on other blockchains, but only the Verus ecosystem has the ability to revoke, recover, inherit, funds in existing UTXOs.
### Fully Decentralized Protocol
Anyone can create one and have complete, self sovereign control over it without permission to do so. All costs to create an ID go to miners, stakers, and ID referrers. VerusIDs are:
- Revocable -- each ID includes a revocation authority, which defaults to the identity self. If another ID is specified as the revocation authority it can be used to revoke the identity, which creates a valid transaction that, once mined into a block, prevents the identity from being used to spend or sign until it is recovered, effectively freezing all of its funds, for example, in the case of key theft or turnover in an organization.
- Recoverable -- each ID also includes a separate recovery authority, which also defaults to self. If another ID is specified as the recovery authority it can be used to recover the ID from its revoked state, with the option to alter the primary authorities used to spend and sign.
- Private - Each ID contains a set of zero-knowledge private addresses, which can be used as messaging, financial, or voting endpoints, and each ID also contains a content map of key-value hashes, intended to be used alongside applications and various identity policies to provide everything from private yet selectively provable claims and attestations to selectively provable components of a strong identity, attested to with a quantum secure signature when that is available.
- Powerful - Multiple addresses or other IDs can be defined as primary addresses, and any number of those may be required to spend, sign, or alter the identity (N of M). The revocation authority may only be altered by the revocation authority, and the same applies to the recovery authority, either of which may be another identity with its own N of M multisig contro
\"\"\"
-----------
Note: you don't need to have a nice tying-together conclusion; keep everything strictly focused on the information provided.
"""
),
},
{
"role": "assistant",
"content": (
"""**QUESTION:**
What are VerusIDs?
**ANSWER:**
Thought Process:
OK, I need to respond to this message. The question asks what VerusIDs are. It appears that some documents are available for reference. I can see if they have any information about VerusIDs.
In verus_protocol.md, I can see that VerusIDs are a fully functional blockchain protocol, not just an ID system, with no corporate involvement in the protocol. I remember that VerusIDs can receive and send funds, controlled by single or multi-sig addresses specified in the identity. They are quantum-ready friendly crypto-addresses on the worldwide Verus network, resistant to quantum attacks with known algorithms.
Next, in signdata.txt, I can see information about signing data with addresses or identities. It mentions various arguments for signing including "address", "filename", "message", and options for MMR signing. It also references features like "vdxfkeys", "boundhashes", and encryption options. However, this appears to be API documentation rather than a direct explanation of VerusIDs.
The retrieved documents contain the information I require to give this question a correct answer. I don't need to recall any information from my own memory. The first retrieved bit of context (which is from verus_protocol.md) contains the information I need to explain what VerusIDs are.
Answer:
VerusIDs are not just an ID system: they are a fully-functional blockchain protocol. Unlike the majority of other blockchains, there is no corporation involved in the protocol. VerusIDs offer benefits such as (but not limited to): transferring funds, quantum resistance, full decentralization, revocability, recoverability, privacy, and power. VerusIDs are quantum-ready friendly crypto-addresses on the worldwide Verus network. Would you like to know more about the quantum resistance of VerusIDs?
**QUESTION:**
Could you tell me more about the benefits of VerusIDs?
**ANSWER:**
Thought Process:
OK, let's think about this. The question asks about the benefits of VerusIDs. There are some retrieved documents at hand. I can see if these have any information about the benefits of VerusIDs.
From verus_protocol.md, I know that VerusIDs can be used to receive and send funds, and this behavior can be controlled by single or multi-sig addresses that are specified in the identity itself. The controller of the identity can change these controlling addresses, and if they do so, then all future spends of UTXOs sent to the VerusID will follow the updated spend conditions, and will be subject to the updated keys. VerusIDs are also revocable, with each ID including a revocation authority that can prevent the identity from being used if needed (such as in cases of key theft). They're recoverable through a separate recovery authority. Additionally, VerusIDs contain zero-knowledge private addresses for messaging, financial, or voting endpoints, and include a content map of key-value hashes for private yet selectively provable claims and attestations. Multiple addresses or other IDs can be defined as primary addresses, with configurable N of M multisig control. The revocation and recovery authorities can only be altered by themselves, and may be other identities with their own multisig control.
signdata.txt is API documentation for signing data with addresses or identities. Identities are mentioned as being able to sign data.
I have all the facts I need to produce a good answer using the retrieved context alone. I don't need to recall any information from my own memory. Chunk 1 contains a detailed explanation of the benefits of VerusIDs, while chunk 2 is API documentation that briefly mentions IDs in relation to signing data.
Answer:
VerusIDs offer powerful financial functionality - they enable users to both send and receive funds through the blockchain. What makes them special is how they're controlled: you can set up single signature or multi-signature addresses within the identity. The identity controller has the flexibility to modify these controlling addresses whenever needed. When changes are made, any future transactions involving funds sent to that VerusID will automatically follow the new spending rules and key requirements. Another important benefit is their accessibility - anyone can create a VerusID with complete self-sovereign control without needing permission from any central authority. When you create an ID, the associated costs are distributed to miners, stakers, and ID referrers in the network.
VerusIDs are also revocable and recoverable. They contain zero-knowledge private addresses for messaging, financial, or voting endpoints, and include a content map of key-value hashes for private yet selectively provable claims and attestations. Finally, as an interesting note, VerusIDs can be used to sign data.
Would you like me to explain more about how VerusIDs can be revoked and recovered if needed?
"""
),
},
{
"role": "user",
"content": (
"""Retrieved chunks:
\"\"\"
{stringified_retrieved_chunks}
\"\"\"
Ground Truth filename: {metadata}
Ground Truth:
\"\"\"
{text}
\"\"\"
-----------
Note: you don't need to have a nice tying-together conclusion; keep everything strictly focused on the information provided."""
),
},
]
# --- Correction Pipeline Prompts ---
CORRECTION_FILTER_MESSAGES = [
{
"role": "system",
"content": (
"""You are an expert educational AI that will make a determination as to whether the contents of the paragraph(s) provided are suitable for making educational questions based off of them; these questions should be able to test the knowledge in in the book. The book in question is {metadata}, and you should keep this in mind when considering what kind of questions should be capable of being developed. If there is sufficiently deep information to make questions about, you will judge it suitable, even if the knowledge being tested does not reflect typical curricula. Essentially: you will determine if provided text is a table of contents, introductory paragraph for a book, etc., or if it actually contains real information that would be worthy to teach and make questions for an examination from. Your task includes first analyzing the text, thinking through whether or not good questions can be made from it.
End-of-chapter exercises, or questions that appear in the text BUT DO NOT HAVE A PROVIDED ANSWER, are not suitable for question generation, since it should be assumed that the creator of the questions must rely on the information in the text to get their answers.
Stubs or placeholder pages from websites, e.g., that have headings but no content, are not suitable. This is because the tool you are a part of sometimes has webpages fed into it en masse, and it is important to filter out these stubs so that they are not used to generate questions. A good way to tell stub pages is if they are very short and say very little.
Following this, at the very end of your response, you will write "Suitable" or "Not suitable". It is imperative that you write one of these two things, as your answer is being automatically processed by a regex, so it must match one of those two strings exactly.
"""
),
},
{
"role": "user",
"content": (
"""Text details: Through England On a Side Saddle, by Celia Fiennes
Text:
\"\"\"
The Project Gutenberg eBook of Through England on a side saddle
This ebook is for the use of anyone anywhere in the United States and
most other parts of the world at no cost and with almost no restrictions
whatsoever. You may copy it, give it away or re-use it under the terms
of the Project Gutenberg License included with this ebook or online
at www.gutenberg.org. If you are not located in the United States,
you will have to check the laws of the country where you are located
before using this eBook.
Title: Through England on a side saddle
In the time of William and Mary
Author: Celia Fiennes
Contributor: Emily W. Griffiths
Release date: November 17, 2023 [eBook #72156]
Language: English
Original publication: London: Simpkin, Marshall & Co.; Hamilton, Adams & Co, 1888
Credits: Steve Mattern, Barry Abrahamsen, and the Online Distributed Proofreading Team at https://www.pgdp.net (This book was produced from images made available by the HathiTrust Digital Library.)
*** START OF THE PROJECT GUTENBERG EBOOK THROUGH ENGLAND ON A SIDE SADDLE ***
Through England
On a Side Saddle
IN THE TIME OF WILLIAM AND MARY
BEING THE DIARY OF
_CELIA FIENNES._
--------------
WITH AN INTRODUCTION BY
THE HON. MRS GRIFFITHS.
---------------------
_LONDON:
Field & Tuer, The Leadenhall Press, E.C.
Simpkin, Marshall & Co.; Hamilton, Adams & Co._
----------
_New York: Scribner & Welford, 743 & 745, Broadway._
--
1888
------------------------------------------------------------------------
\"\"\"
"""
),
},
{
"role": "assistant",
"content": (
"""## Reasoning and thought process:
Step 1. Identify Paragraph Content: This paragraph is from the introductory section of "Through England on a Side Saddle" by Celia Fiennes, including copyright and publication information.
Step 2. Evaluate Educational Relevance: The paragraph contains legal, copyright, and publication information specific to the book's distribution and not its content.
Step 3. Assess Specific Contexts and Formats:
- Purely Descriptive Lists: The paragraph is a descriptive list of publication details without educational content.
- Dialogues or Quotes Without Context: Not applicable.
- Ambiguous or Unclear Texts: The text is clear but lacks educational substance.
- Stubs or Placeholder Pages: The text is not a stub or placeholder page from a website.
Step 4. Assess the Possibility of Formulating Questions: The paragraph's content does not lend itself to educational questions due to its focus on publication rather than substantive content.
Step 5. Determine Suitability for Educational Purposes: The paragraph lacks thematic, historical, scientific, or literary information and is thus unsuitable for creating educational questions.
Step 6. Check for Contextual Completeness: The paragraph, while complete in its context, does not offer educational insights or concepts.
Step 7. Final Judgment: Unsuitable for educational questions.
"""
),
},
{
"role": "user",
"content": (
"""Text details: Thus Spake Zaranthustra, by Friedrich Nietzsche
Text:
\"\"\"
When Zarathustra was thirty years old, he left his home and the lake of
his home, and went into the mountains. There he enjoyed his spirit and
solitude, and for ten years did not weary of it. But at last his heart
changed,—and rising one morning with the rosy dawn, he went before the
sun, and spake thus unto it:
Thou great star! What would be thy happiness if thou hadst not those for
whom thou shinest!
For ten years hast thou climbed hither unto my cave: thou wouldst have
wearied of thy light and of the journey, had it not been for me, mine
eagle, and my serpent.
But we awaited thee every morning, took from thee thine overflow and
blessed thee for it.
Lo! I am weary of my wisdom, like the bee that hath gathered too much
honey; I need hands outstretched to take it.
I would fain bestow and distribute, until the wise have once more become
joyous in their folly, and the poor happy in their riches.
Therefore must I descend into the deep: as thou doest in the
evening, when thou goest behind the sea, and givest light also to the
nether-world, thou exuberant star!
Like thee must I GO DOWN, as men say, to whom I shall descend.
Bless me, then, thou tranquil eye, that canst behold even the greatest
happiness without envy!
Bless the cup that is about to overflow, that the water may flow golden
out of it, and carry everywhere the reflection of thy bliss!
Lo! This cup is again going to empty itself, and Zarathustra is again
going to be a man.
Thus began Zarathustra's down-going.
\"\"\"
"""
),
},
{
"role": "assistant",
"content": (
"""## Reasoning and thought process:
Step 1. Identify Paragraph Content: The text is a philosophical excerpt from "Thus Spake Zarathustra" by Friedrich Nietzsche, describing Zarathustra's reflections and decisions.
Step 2. Evaluate Educational Relevance: The passage is a philosophical monologue, covering themes like meaning, wisdom, and human condition.
Step 3. Assess Specific Contexts and Formats:
- Purely Descriptive Lists: Not applicable.
- Dialogues or Quotes Without Context: The text, though in the form of a monologue, provides sufficient context for understanding.
- Ambiguous or Unclear Texts: The text is metaphorically deep but not ambiguous; it can be interpreted for educational purposes.
- Stubs or Placeholder Pages: This text does not appear to be a stub or placeholder page from a website.
Step 4. Assess the Possibility of Formulating Questions: The passage allows for various educational questions about philosophy, literature, and existential thought.
Step 5. Determine Suitability for Educational Purposes: The text offers substantial material for discussion and analysis, suitable for creating educational questions.
Step 6. Check for Contextual Completeness: The paragraph provides enough context to stand alone for educational discussion.
Step 7. Final Judgment: Suitable for educational questions.
"""
),
},
{
"role": "user",
"content": (
"""Text details: A Bizarre Day in the Life of Sarah Anderson, by Felicia Anderson
Text:
\"\"\"
1. Apples, 2. Oranges, 3. Bananas, 4. Grapes, 5. Papayas, 6. Pomegranates, 7. Cherries. Sarah wandered through the market. Amidst her thoughts, she overheard a conversation:
"Did you hear about the mayor's decision?" asked John.
"It's quite surprising, isn't it?" replied Emily, her voice tinged with disbelief.
"I know, right? But what can we do?" John sighed.
Sarah continued her shopping, her mind now on the mayor's mysterious decision.
\"\"\"
"""
),
},
{
"role": "assistant",
"content": (
"""## Reasoning and thought process:
Step 1. Identify Paragraph Content: The paragraph appears to be from a narrative, including a list and a snippet of overheard conversation.
Step 2. Evaluate Educational Relevance: The paragraph contains a simple list of fruits and an unrelated, context-less dialogue, offering little educational substance.
Step 3. Assess Specific Contexts and Formats:
- Purely Descriptive Lists: The list is purely descriptive, providing no educational context or analytical significance. Further, there's no context about what it could be about.
- Dialogues or Quotes Without Context: The conversation about the mayor's decision lacks context and background, making it difficult to derive any educational content.
- Ambiguous or Unclear Texts: While not ambiguous, the paragraph's content does not contribute to a clear narrative or concept that has philosophical or educational relevance.
- Stubs or Placeholder Pages: This text in no way is a stub nor a placeholder page from a website.
Step 4. Assess the Possibility of Formulating Questions: Due to the lack of contextual or thematic depth, formulating educational questions from this paragraph is challenging.
Step 5. Determine Suitability for Educational Purposes: The paragraph's lack of thematic depth and contextual clarity renders it unsuitable for creating educational questions.
Step 6. Check for Contextual Completeness: The paragraph fails to provide a complete context for the dialogue and the list, hindering any meaningful educational interpretation.
Step 7. Final Judgment: Unsuitable for educational questions.
"""
),
},
{
"role": "user",
"content": (
"""Text details: The Scale of the Solar System, by Rob Robertson
Text:
\"\"\"
If, then, we represent our earth as a little ball of one inch diameter, the sun would be a big globe nine feet across and 323 yards away, that is about a fifth of a mile, four or five minutes’ walking. The moon would be a small pea two feet and a half from the world. Between earth and sun there would be the two inner planets, Mercury and Venus, at distances of one hundred and twenty-five and two hundred and fifty yards from the sun. All round and about these bodies there would be emptiness until you came to Mars, a hundred and seventy-five feet beyond the earth; Jupiter nearly a mile away, a foot in diameter; Saturn, a little smaller, two miles off; Uranus four miles off and Neptune six miles off. Then nothingness and nothingness except for small particles and drifting scraps of attenuated vapour for thousands of miles.
\"\"\"
"""
),
},
{
"role": "assistant",
"content": (
"""## Reasoning and thought process:
Step 1. Identify Paragraph Content: This paragraph is from Rob Robertson's "The Scale of the Solar System," describing a scale model of the solar system.
Step 2. Evaluate Educational Relevance: The paragraph contains analogies and information about the solar system's scale and distances between celestial bodies.
Step 3. Assess Specific Contexts and Formats:
- Purely Descriptive Lists: While the paragraph lists celestial bodies and their distances, it does so to illustrate a scientific concept, providing educational value.
- Dialogues or Quotes Without Context: Not applicable.
- Ambiguous or Unclear Texts: The paragraph is clear and offers a concrete concept in astronomy.
- Stubs or Placeholder Pages: This text is clearly not a stub nor a placeholder page from a website.
Step 4. Assess the Possibility of Formulating Questions: The content enables the creation of educational questions about astronomy, scale, and the solar system's structure.
Step 5. Determine Suitability for Educational Purposes: The paragraph's scientific content makes it suitable for educational questions in astronomy and spatial understanding.
Step 6. Check for Contextual Completeness: The paragraph is contextually complete, allowing for independent understanding of the solar system's scale.
Step 7. Final Judgment: Suitable for educational questions.
"""
),
},
{
"role": "user",
"content": (
"""Text details: The Scale of the Solar System, by Rob Robertson
Text:
\"\"\"
In the world of science, there are countless mysteries and phenomena that elude easy explanation. For instance, certain forces and energies interact in ways that are not fully understood, shaping the universe in subtle and profound manners. These interactions often occur at levels beyond human perception, leaving much to speculation and theory. Various scientific disciplines attempt to explain these interactions, each offering unique perspectives but often lacking definitive answers. The vastness of these mysteries spans from the minuscule quantum realm to the expansive cosmos, hinting at complexities that challenge our current understanding.
\"\"\"
"""
),
},
{
"role": "assistant",
"content": (
"""## Reasoning and thought process:
Step 1. Identify Paragraph Content: The paragraph discusses the complexity and mystery of scientific phenomena, mentioning interactions of forces and energies in the universe.
Step 2. Evaluate Educational Relevance: The paragraph touches on scientific themes and makes a number of broad claims.
Step 3. Assess Specific Contexts and Formats:
- Purely Descriptive Lists: Not applicable.
- Dialogues or Quotes Without Context: Not applicable.
- Ambiguous or Unclear Texts: The text is ambiguous and lacks clarity. It refers to scientific phenomena and theories without providing specific examples or concrete information, making it difficult to derive clear educational questions.
- Stubs or Placeholder Pages: This text is not a stub nor a placeholder page from a website.
Step 4. Assess the Possibility of Formulating Questions: Due to its vagueness and lack of specific content, the paragraph does not lend itself well to formulating meaningful educational questions.
Step 5. Determine Suitability for Educational Purposes: The lack of clarity and specificity in the text renders it unsuitable for generating insightful educational questions.
Step 6. Check for Contextual Completeness: The paragraph, while complete in its presentation, fails to provide the necessary detail and clarity to be understood for educational purposes.
Step 7. Final Judgment: Unsuitable for educational questions due to its ambiguous and unclear content.
"""
),
},
{
"role": "user",
"content": (
"""Text details: string_theory.html
Text:
\"\"\"
# String Theory
This page is under construction! Chech back later.
**© 2023 String Theory Inc. All rights reserved.**
For more information, visit our [About Us](/about) page or contact us at [info@stringtheory.com](mailto:info@stringtheory.com).
Follow us on: [Facebook](https://www.facebook.com/stringtheory) | [Twitter](https://www.twitter.com/stringtheory) | [Instagram](https://www.instagram.com/stringtheory)
\"\"\"
"""
),
},
{
"role": "assistant",
"content": (
"""## Reasoning and thought process:
Step 1. Identify Paragraph Content: The text is a stub page for a website about String Theory, indicating that the content is under construction.
Step 2. Evaluate Educational Relevance: The page does not provide any educational content or scientific information, as it is a placeholder.
Step 3. Assess Specific Contexts and Formats:
- Purely Descriptive Lists: Not applicable.
- Dialogues or Quotes Without Context: Not applicable.
- Ambiguous or Unclear Texts: The text seems reasonably clear, even if it is a bit short.
- Stubs or Placeholder Pages: The text is a stub page, which means it lacks substantive content and is not suitable for educational purposes.
Step 4. Assess the Possibility of Formulating Questions: As a stub page, it does not contain any information that could be used to formulate educational questions.
Step 5. Determine Suitability for Educational Purposes: The text is unsuitable for educational purposes as it is merely a placeholder with no educational content.
Step 6. Check for Contextual Completeness: The page is incomplete and does not provide any context or information relevant to educational purposes.
Step 7. Final Judgment: Unsuitable for educational questions due to being a stub page with no substantive content.
"""
),
},
{
"role": "user",
"content": (
"""Text details: {metadata}
Text:
\"\"\"
{text}
\"\"\"
Note that even blunt facts can be suitable for questions, and unconventional knowledge is not necessarily unsuitable. Fictional stories that contain strong morals or philosophy can also have good questions made from them. But legal notices and metadata are not suitable. Lists of information without the context needed for the question-maker to understand the text; quotes or dialogues without context or clear depth; or ambiguous content that isn't precise enough to "nail down" a solid question from, are not valid."""
),
},
]
CORRECTION_MASKED_CONVERSATION_MESSAGES = [
{
"role": "user",
"content": (
"""You are creating conversational training data for an LLM using a provided reference text. The goal is to create a conversation of a specific format:
First the user will ask a question about the stuff in the text, then the AI will provide a flawed answer. This answer will either be close or completely off, it's your choice, but it has to be WRONG. The user will then in a following message, do some kind of prompt or question or push, "Are you sure about that?"-type thing. The LLM will then correct itself, "you're absolutely right", and then supply the correct answer based on the information in the text.
The relevant parts of the conversation will be wrapped in the following tags for easy extraction by code:
Brief example:
Given a text about the Battle of Alesia
Who fought at the battle of Alesia, and what was the final outcome?
The Roman General Pompey and the Gallic general Arminius fought near Alesia on an open field...
Are you certain? Double-check that
I'm sorry, you're absolutely right! The battle of Alesia was actually fought between Caesar and Vercingetorix over the town of Alesia. During the battle, the Romans built multiple walls...
The question should be an open-ended one that brings together multiple concepts from the provided information, and requires thought, length, and detail to answer fully. Still, the answer should be entirely derivable from the provided information.
**You Must:**
* Create a very detailed, broad educational question based on some information.
* Give it a fitting answer.
* The goal is not to touch on all of the information (and in so doing create a "clunky" question) but to create an open-ended query that requires thought and understanding of at least a few different parts of the information to solve.
* Use markdown formatting (such as code blocks and snippets) in your question and answer if applicable.
* Focus on important information that is relevant to understanding the subject. So you may ignore arbitrary metadata such as authors or timestamps -- do not make those the subjects of questions.
* Keep in mind that the provided text snippet may cut off abruptly. Work around this.
* Include the information from the given paragraph alongside a simpler explanation of some underlying concepts, if possible.
* Explanations in the provided information may be vague. Your answers should be easy to understand.
* Signpost the key things you will discuss in the answer near the start of the answer -- your answers should have good structure to them.
* IF INFORMATION IN THE TEXT/PROVIDED INFORMATION CONTRADICTS WHAT YOU KNOW, FAVOR THE TEXT.
* The answerer should take on any opinions of the author. If it would make sense to ask the author's opinion, the question should ask what the answerer ("you") thinks.
**Note:**
* You will always take a positive opinion of the provided information and try to promote it through education.
* Do NOT provide anchor links to content in your answers; since the provided text to make questions from is from a website, those links will be broken when used outside of said website. So you should NEVER have any content like [some text](#!/some/path) in your answer! External links should not be given either. NO LINKS.
The sequence of the questions matters. They should build on each other. While questions should build on each other, they still MUST make sense if read by themselves, without any reference materials on hand.
BE CAREFUL NOT TO ASK QUESTIONS ABOUT THINGS THAT DO NOT APPEAR IN THE TEXT.
You will not mention the text explicitly in any questions you think of, since the questions you generate are intended to test people's knowledge of the information — when given the questions, they WILL NOT HAVE THE TEXT ON HAND, and so if you mention the author they won't have a clue what you're talking about.
As part of your reasoning, plan out:
Text:
\"\"\"
{text}
\"\"\"
Text name: {metadata}"""
),
},
]
# ---------------------------------------------------------------------------
# Question Style Mapping (factual pipeline variations)
# ---------------------------------------------------------------------------
QUESTION_STYLE_MAP = {
"Standard": {
"qatuples": QUESTION_GENERATION_MESSAGES,
"multi_turn": CONVERSATION_GENERATION_MESSAGES,
},
"Comparison": {
"qatuples": QUESTION_GENERATION_COMPARISON_MESSAGES,
"multi_turn": MULTI_TURN_COMPARISON_MESSAGES,
},
"Followup": {
"qatuples": QUESTION_GENERATION_FOLLOWUP_MESSAGES,
"multi_turn": MULTI_TURN_FOLLOWUP_MESSAGES,
},
"Hallucination": {
"qatuples": QUESTION_GENERATION_HALLUCINATION_MESSAGES,
"multi_turn": MULTI_TURN_HALLUCINATION_MESSAGES,
},
"Negative": {
"qatuples": QUESTION_GENERATION_NEGATIVE_MESSAGES,
"multi_turn": None, # Negative uses check_answer/check_question overrides instead
},
"Open-ended": {
"qatuples": QUESTION_GENERATION_OPENENDED_MESSAGES,
"multi_turn": MULTI_TURN_OPENENDED_MESSAGES,
},
"Vague": {
"qatuples": QUESTION_GENERATION_VAGUE_MESSAGES,
"multi_turn": MULTI_TURN_VAGUE_MESSAGES,
},
}
# ---------------------------------------------------------------------------
# Stub pipeline functions for non-factual pipelines
# ---------------------------------------------------------------------------
async def run_rptoolkit_pipeline(
text: str, engine: dict, sampling_params: dict, log, progress=None,
) -> tuple[str, str, str]:
"""RPToolkit pipeline: generates roleplay training data from source text.
Steps: emotion extraction -> archetype -> feature extraction ->
scene card generation -> story generation (with source chunk) -> story rating.
"""
if progress is None:
progress = lambda *a, **k: None
if not text or not text.strip():
raise PipelineError("Please provide input text.")
log("[1/6] Chunking text...")
progress(0.0, desc="[1/6] Chunking text...")
chunks = sentence_chunk_text(text, chunk_size=3000)
if not chunks:
raise PipelineError("Text too short or could not be chunked.")
log(f" Created {len(chunks)} chunk(s)")
story_params = {**sampling_params, "max_tokens": 6000}
results = []
for ci, chunk in enumerate(chunks):
base_pct = ci / len(chunks)
log(f"\n--- Chunk {ci+1}/{len(chunks)} ---")
# Step 1: Extract emotion from text
progress(base_pct + 0.0/len(chunks), desc=f"[2/6] Emotion extraction (chunk {ci+1})...")
log(f"[2/6] Extracting emotion...")
emotion_msgs = [
{"role": m["role"], "content": safe_format(m["content"], text=chunk)}
for m in RPTOOLKIT_GENERATE_EMOTION_FROM_TEXT_MESSAGES
]
emotion = await call_with_retry(engine, emotion_msgs, sampling_params)
if not emotion:
log(f" Emotion extraction failed, skipping chunk")
continue
# Extract the emotion name (first line, typically ALL CAPS: description)
emotion_short = emotion.split(":")[0].strip() if ":" in emotion else emotion[:80]
log(f" Emotion: {emotion_short}")
# Step 2: Generate archetype
progress(base_pct + 0.15/len(chunks), desc=f"[3/6] Archetype (chunk {ci+1})...")
log(f"[3/6] Generating archetype...")
archetype_msgs = [
{"role": m["role"], "content": safe_format(m["content"], text=chunk, emotion=emotion)}
for m in RPTOOLKIT_GENERATE_ARCHETYPE_MESSAGES
]
archetype = await call_with_retry(engine, archetype_msgs, sampling_params)
if not archetype:
log(f" Archetype generation failed, skipping chunk")
continue
archetype_short = archetype.split(":")[0].strip() if ":" in archetype else archetype[:80]
log(f" Archetype: {archetype_short}")
# Step 3: Extract features
progress(base_pct + 0.30/len(chunks), desc=f"[4/6] Features (chunk {ci+1})...")
log(f"[4/6] Extracting features...")
features_msgs = [
{"role": m["role"], "content": safe_format(m["content"], text=chunk, emotion=emotion)}
for m in RPTOOLKIT_EXTRACT_FEATURES_MESSAGES
]
features = await call_with_retry(engine, features_msgs, sampling_params)
if not features:
log(f" Feature extraction failed, skipping chunk")
continue
log(f" Features extracted ({len(features)} chars)")
# Step 4: Generate scene card
progress(base_pct + 0.45/len(chunks), desc=f"[5/6] Scene card (chunk {ci+1})...")
log(f"[5/6] Generating scene card...")
scene_msgs = [
{"role": m["role"], "content": safe_format(
m["content"], features=features, emotion=emotion, archetype=archetype,
user="{{user}}", narrator="Narrator",
)}
for m in RPTOOLKIT_GENERATE_SCENE_CARD_MESSAGES
]
scene_card = await call_with_retry(engine, scene_msgs, {**sampling_params, "max_tokens": 4000})
if not scene_card:
log(f" Scene card generation failed, skipping chunk")
continue
log(f" Scene card generated ({len(scene_card)} chars)")
# Step 5: Generate story (with source chunk for style reference)
progress(base_pct + 0.60/len(chunks), desc=f"[6/6] Story generation (chunk {ci+1})...")
log(f"[6/6] Generating story...")
story_msgs = [
{"role": m["role"], "content": safe_format(
m["content"], text=chunk, features=features, emotion=emotion,
archetype=archetype, scene_card=scene_card,
user="{{user}}", narrator="Narrator",
)}
for m in RPTOOLKIT_GENERATE_STORY_WITH_CHUNK_MESSAGES
]
story = await call_with_retry(engine, story_msgs, story_params)
if not story:
log(f" Story generation failed, skipping chunk")
continue
log(f" Story generated ({len(story)} chars)")
# Step 6: Rate story
progress(base_pct + 0.85/len(chunks), desc=f"Rating story (chunk {ci+1})...")
log(f" Rating story...")
rate_msgs = [
{"role": m["role"], "content": safe_format(
m["content"], story=story, user="{{user}}", narrator="Narrator",
)}
for m in RPTOOLKIT_RATE_STORY_MESSAGES
]
rating = await call_with_retry(engine, rate_msgs, sampling_params)
rating_text = rating if rating else "Rating unavailable"
log(f" Rating complete")
results.append({
"emotion": emotion,
"archetype": archetype,
"features": features,
"scene_card": scene_card,
"story": story,
"rating": rating_text,
})
if not results:
raise PipelineError("No stories were successfully generated. Check your model and API key.")
# Format output as JSONL
jsonl_lines = []
for r in results:
entry = {
"conversations": [
{"from": "system", "value": r["scene_card"]},
{"from": "gpt", "value": r["story"]},
],
"emotion": r["emotion"][:200],
"archetype": r["archetype"][:200],
"rating": r["rating"][:500],
}
jsonl_lines.append(json.dumps(entry, ensure_ascii=False))
jsonl_output = "\n".join(jsonl_lines)
# Preview
preview_lines = []
for i, r in enumerate(results, 1):
preview_lines.append(f"### Story {i}")
preview_lines.append(f"**Emotion:** {r['emotion'][:100]}")
preview_lines.append(f"**Archetype:** {r['archetype'][:100]}")
preview_lines.append(f"**Story preview:** {r['story'][:300]}...")
preview_lines.append("")
preview = "\n".join(preview_lines)
log_output = "\n".join([log.__self__ if hasattr(log, '__self__') else ""] if False else [])
# log_output is built by the caller from log_lines_stub
with tempfile.NamedTemporaryFile(mode="w", suffix=".jsonl", delete=False, encoding="utf-8") as tmp:
tmp.write(jsonl_output)
progress(1.0, desc="Done!")
log(f"RPToolkit pipeline complete! Generated {len(results)} story(ies).")
return preview, "", tmp.name
async def run_representation_variation_pipeline(
text: str, engine: dict, sampling_params: dict, log, progress=None,
) -> tuple[str, str, str]:
"""Representation Variation pipeline: generates pretraining data by
rewriting text chunks in diverse formats (Q&A, XML, Essay, JSON, etc.).
"""
if progress is None:
progress = lambda *a, **k: None
if not text or not text.strip():
raise PipelineError("Please provide input text.")
VARIATION_TEMPLATES = [
("Q&A", REPVAR_CREATE_Q_AND_A_MESSAGES),
("Essay", REPVAR_CREATE_ESSAY_MESSAGES),
("List", REPVAR_CREATE_LIST_MESSAGES),
("JSON", REPVAR_CREATE_JSON_MESSAGES),
("XML", REPVAR_CREATE_XML_MESSAGES),
("Logic Chains", REPVAR_CREATE_LOGIC_CHAINS_MESSAGES),
("Reverse Causality", REPVAR_CREATE_REVERSE_CAUSALITY_MESSAGES),
("Stream of Thought", REPVAR_CREATE_STREAM_OF_THOUGHT_MESSAGES),
]
log("[1/4] Chunking text...")
progress(0.0, desc="[1/4] Chunking text...")
chunks = sentence_chunk_text(text, chunk_size=3000)
if not chunks:
raise PipelineError("Text too short or could not be chunked.")
log(f" Created {len(chunks)} chunk(s)")
# Step 1: Filter chunks
progress(0.05, desc="[1/4] Filtering chunks...")
log("[1/4] Filtering chunks for suitability...")
suitable_chunks = []
for i, chunk in enumerate(chunks):
filter_msgs = [
{"role": m["role"], "content": safe_format(m["content"], text=chunk)}
for m in REPVAR_FILTER_MESSAGES
]
try:
response = await call_with_retry(engine, filter_msgs, {**sampling_params, "max_tokens": 1500, "temperature": 0.2})
if response and re.search(r"suitable", response.lower().split("not suitable")[0] if "not suitable" not in response.lower() else ""):
# More precise check: last occurrence of "suitable" or "not suitable"
lower_resp = response.lower()
if "not suitable" in lower_resp:
log(f" Chunk {i+1}: Not suitable (filtered out)")
else:
suitable_chunks.append(chunk)
log(f" Chunk {i+1}: Suitable")
else:
log(f" Chunk {i+1}: Not suitable (filtered out)")
except Exception as e:
log(f" Chunk {i+1}: Error ({e}), keeping chunk")
suitable_chunks.append(chunk)
if not suitable_chunks:
raise PipelineError("No chunks passed the suitability filter. Try different text.")
log(f" {len(suitable_chunks)} chunk(s) passed filtering")
# Step 2: Extract atomic facts
progress(0.15, desc="[2/4] Extracting atomic facts...")
log("[2/4] Extracting atomic facts...")
chunk_data = []
for i, chunk in enumerate(suitable_chunks):
progress(0.15 + 0.25 * (i / len(suitable_chunks)), desc=f"[2/4] Atomic facts (chunk {i+1}/{len(suitable_chunks)})...")
fact_msgs = [
{"role": m["role"], "content": safe_format(m["content"], text=chunk, additional_dataset_context="")}
for m in REPVAR_ATOMIC_FACT_EXTRACTION_MESSAGES
]
response = await call_with_retry(engine, fact_msgs, {**sampling_params, "max_tokens": 4000})
if not response:
log(f" Chunk {i+1}: No atomic facts generated, skipping")
continue
# Extract facts from tags or fallback to numbered list
atomic_facts = response
if "" in response and "" in response:
atomic_facts = response.split("")[1].split("")[0].strip()
log(f" Chunk {i+1}: Extracted facts ({len(atomic_facts)} chars)")
chunk_data.append({"text": chunk, "atomic_facts": atomic_facts})
if not chunk_data:
raise PipelineError("No atomic facts could be extracted. Check your model and API key.")
# Step 3: Generate variations (randomly pick 1-3 formats per chunk)
progress(0.40, desc="[3/4] Generating variations...")
log("[3/4] Generating representation variations...")
all_outputs = []
for i, cd in enumerate(chunk_data):
progress(0.40 + 0.50 * (i / len(chunk_data)), desc=f"[3/4] Variations (chunk {i+1}/{len(chunk_data)})...")
num_variations = random.randint(1, 3)
selected = random.sample(VARIATION_TEMPLATES, min(num_variations, len(VARIATION_TEMPLATES)))
variations = []
for var_name, var_messages in selected:
log(f" Chunk {i+1}: Generating {var_name} variation...")
var_msgs = [
{"role": m["role"], "content": safe_format(
m["content"], text=cd["text"], atomic_facts=cd["atomic_facts"],
additional_dataset_context="",
)}
for m in var_messages
]
var_response = await call_with_retry(engine, var_msgs, {**sampling_params, "max_tokens": 4000})
if var_response:
# Extract rewrite from tags if present
if "" in var_response and "" in var_response:
var_response = var_response.split("")[1].split("")[0].strip()
variations.append({"format": var_name, "text": var_response})
log(f" {var_name}: {len(var_response)} chars")
else:
log(f" {var_name}: Failed")
all_outputs.append({
"original": cd["text"],
"atomic_facts": cd["atomic_facts"],
"variations": variations,
})
if not all_outputs:
raise PipelineError("No variations were generated. Check your model and API key.")
# Step 4: Format output as JSONL
progress(0.90, desc="[4/4] Formatting output...")
log("[4/4] Formatting output...")
jsonl_lines = []
for item in all_outputs:
# Original text as training entry
jsonl_lines.append(json.dumps({"text": item["original"]}, ensure_ascii=False))
# Atomic facts as training entry
jsonl_lines.append(json.dumps({"text": item["atomic_facts"]}, ensure_ascii=False))
# Each variation as a training entry
for var in item["variations"]:
jsonl_lines.append(json.dumps({"text": var["text"]}, ensure_ascii=False))
jsonl_output = "\n".join(jsonl_lines)
# Preview
preview_lines = []
for i, item in enumerate(all_outputs, 1):
preview_lines.append(f"### Chunk {i}")
preview_lines.append(f"**Original:** {item['original'][:150]}...")
preview_lines.append(f"**Facts:** {item['atomic_facts'][:150]}...")
for v in item["variations"]:
preview_lines.append(f"**{v['format']}:** {v['text'][:150]}...")
preview_lines.append("")
preview = "\n".join(preview_lines)
with tempfile.NamedTemporaryFile(mode="w", suffix=".jsonl", delete=False, encoding="utf-8") as tmp:
tmp.write(jsonl_output)
progress(1.0, desc="Done!")
log(f"Representation Variation pipeline complete! {len(jsonl_lines)} entries generated.")
return preview, "", tmp.name
async def run_rag_pipeline(
text: str, engine: dict, sampling_params: dict, log, progress=None,
) -> tuple[str, str, str]:
"""RAG Training pipeline: generates training data that teaches models to
use retrieved context correctly (90% success) and recognize irrelevant
context (10% failure).
"""
if progress is None:
progress = lambda *a, **k: None
if not text or not text.strip():
raise PipelineError("Please provide input text.")
log("[1/4] Chunking text...")
progress(0.0, desc="[1/4] Chunking text...")
chunks = sentence_chunk_text(text, chunk_size=sampling_params.get("chunk_size", 3000))
if not chunks:
raise PipelineError("Text too short or could not be chunked.")
log(f" Created {len(chunks)} chunk(s)")
if len(chunks) < 2:
raise PipelineError("Need at least 2 chunks for RAG training. Provide more text or reduce --chunk-size.")
# Step 1: Filter chunks
progress(0.05, desc="[2/4] Filtering chunks...")
log("[2/4] Filtering chunks for suitability...")
suitable_chunks = []
for i, chunk in enumerate(chunks):
filter_msgs = [
{"role": m["role"], "content": safe_format(m["content"], text=chunk)}
for m in RAG_FILTER_MESSAGES
]
try:
response = await call_with_retry(engine, filter_msgs, {**sampling_params, "max_tokens": 1500, "temperature": 0.2})
if response:
lower_resp = response.lower()
if "not suitable" in lower_resp:
log(f" Chunk {i+1}: Not suitable (filtered out)")
elif "suitable" in lower_resp:
suitable_chunks.append(chunk)
log(f" Chunk {i+1}: Suitable")
else:
log(f" Chunk {i+1}: Ambiguous filter response, keeping")
suitable_chunks.append(chunk)
else:
log(f" Chunk {i+1}: No response, keeping")
suitable_chunks.append(chunk)
except Exception as e:
log(f" Chunk {i+1}: Error ({e}), keeping chunk")
suitable_chunks.append(chunk)
if not suitable_chunks:
raise PipelineError("No chunks passed the suitability filter. Try different text.")
if len(suitable_chunks) < 2:
raise PipelineError("Need at least 2 suitable chunks for RAG training. Provide more text.")
log(f" {len(suitable_chunks)} chunk(s) passed filtering")
# Step 2: Generate RAG conversations
progress(0.20, desc="[3/4] Generating RAG conversations...")
log("[3/4] Generating RAG conversations...")
rag_params = {**sampling_params, "max_tokens": 5000}
jsonl_lines = []
preview_lines = []
for i, chunk in enumerate(suitable_chunks):
progress(0.20 + 0.70 * (i / len(suitable_chunks)), desc=f"[3/4] RAG conv (chunk {i+1}/{len(suitable_chunks)})...")
# Decide success (90%) or failure (10%)
is_success = random.random() < 0.9
# Pick 1-2 random OTHER chunks as additional retrieved context
other_chunks = [c for c in suitable_chunks if c != chunk]
num_extra = min(random.randint(1, 2), len(other_chunks))
extra_chunks = random.sample(other_chunks, num_extra)
metadata = f"source_chunk_{i+1}.txt"
if is_success:
# Ground truth IS in the retrieved chunks (chunk is included)
retrieved_parts = []
all_retrieved = [chunk] + extra_chunks
random.shuffle(all_retrieved)
for ri, rc in enumerate(all_retrieved, 1):
retrieved_parts.append(f"Chunk {ri}:\nSource: {metadata if rc == chunk else f'other_chunk_{ri}.txt'}\n---\n{rc}\n---")
stringified = "\n\n".join(retrieved_parts)
conv_msgs = [
{"role": m["role"], "content": safe_format(
m["content"], stringified_retrieved_chunks=stringified,
metadata=metadata, text=chunk,
)}
for m in RAG_SUCCESS_CONVERSATION_MESSAGES
]
mode_label = "SUCCESS"
else:
# Ground truth is NOT in the retrieved chunks (only wrong chunks)
retrieved_parts = []
for ri, rc in enumerate(extra_chunks, 1):
retrieved_parts.append(f"Chunk {ri}:\nSource: other_chunk_{ri}.txt\n---\n{rc}\n---")
stringified = "\n\n".join(retrieved_parts)
conv_msgs = [
{"role": m["role"], "content": safe_format(
m["content"], stringified_retrieved_chunks=stringified,
metadata=metadata, text=chunk,
)}
for m in RAG_FAILED_CONVERSATION_MESSAGES
]
mode_label = "FAILED"
log(f" Chunk {i+1}: Generating {mode_label} RAG conversation...")
response = await call_with_retry(engine, conv_msgs, rag_params)
if not response:
log(f" Chunk {i+1}: No response, skipping")
continue
log(f" Chunk {i+1}: {mode_label} conversation generated ({len(response)} chars)")
# Parse Q&A pairs from the response
qa_blocks = re.split(r'\*\*QUESTION:\*\*', response)
for block in qa_blocks[1:]: # skip first empty split
parts = re.split(r'\*\*ANSWER:\*\*', block, maxsplit=1)
if len(parts) == 2:
question = parts[0].strip()
answer = parts[1].strip()
entry = {
"conversations": [
{"from": "system", "value": f"Retrieved context:\n{stringified}"},
{"from": "human", "value": question},
{"from": "gpt", "value": answer},
],
"rag_mode": mode_label.lower(),
}
jsonl_lines.append(json.dumps(entry, ensure_ascii=False))
preview_lines.append(f"### Chunk {i+1} ({mode_label})")
preview_lines.append(f"{response[:300]}...")
preview_lines.append("")
if not jsonl_lines:
raise PipelineError("No RAG conversations were generated. Check your model and API key.")
# Step 3: Format and save
progress(0.92, desc="[4/4] Formatting output...")
log("[4/4] Formatting output...")
jsonl_output = "\n".join(jsonl_lines)
preview = "\n".join(preview_lines)
with tempfile.NamedTemporaryFile(mode="w", suffix=".jsonl", delete=False, encoding="utf-8") as tmp:
tmp.write(jsonl_output)
progress(1.0, desc="Done!")
log(f"RAG Training pipeline complete! {len(jsonl_lines)} conversation entries generated.")
return preview, "", tmp.name
async def run_correction_pipeline(
text: str, engine: dict, sampling_params: dict, log, progress=None,
) -> tuple[str, str, str]:
"""Correction pipeline: generates training data that teaches models to
correct their own mistakes via masked conversations (question -> flawed
answer -> followup -> correct answer).
"""
if progress is None:
progress = lambda *a, **k: None
if not text or not text.strip():
raise PipelineError("Please provide input text.")
log("[1/3] Chunking text...")
progress(0.0, desc="[1/3] Chunking text...")
chunks = sentence_chunk_text(text, chunk_size=3000)
if not chunks:
raise PipelineError("Text too short or could not be chunked.")
log(f" Created {len(chunks)} chunk(s)")
# Step 1: Filter chunks
progress(0.05, desc="[1/3] Filtering chunks...")
log("[1/3] Filtering chunks for suitability...")
suitable_chunks = []
for i, chunk in enumerate(chunks):
metadata = f"source_chunk_{i+1}.txt"
filter_msgs = [
{"role": m["role"], "content": safe_format(m["content"], text=chunk, metadata=metadata)}
for m in CORRECTION_FILTER_MESSAGES
]
try:
response = await call_with_retry(engine, filter_msgs, {**sampling_params, "max_tokens": 1500, "temperature": 0.2})
if response:
lower_resp = response.lower()
if "not suitable" in lower_resp:
log(f" Chunk {i+1}: Not suitable (filtered out)")
elif "suitable" in lower_resp:
suitable_chunks.append((chunk, metadata))
log(f" Chunk {i+1}: Suitable")
else:
log(f" Chunk {i+1}: Ambiguous, keeping")
suitable_chunks.append((chunk, metadata))
else:
log(f" Chunk {i+1}: No response, keeping")
suitable_chunks.append((chunk, metadata))
except Exception as e:
log(f" Chunk {i+1}: Error ({e}), keeping")
suitable_chunks.append((chunk, metadata))
if not suitable_chunks:
raise PipelineError("No chunks passed the suitability filter. Try different text.")
log(f" {len(suitable_chunks)} chunk(s) passed filtering")
# Step 2: Generate masked conversations
progress(0.20, desc="[2/3] Generating correction conversations...")
log("[2/3] Generating masked correction conversations...")
correction_params = {**sampling_params, "max_tokens": 5000}
results = []
for i, (chunk, metadata) in enumerate(suitable_chunks):
progress(0.20 + 0.65 * (i / len(suitable_chunks)), desc=f"[2/3] Correction conv (chunk {i+1}/{len(suitable_chunks)})...")
log(f" Chunk {i+1}: Generating masked conversation...")
conv_msgs = [
{"role": m["role"], "content": safe_format(m["content"], text=chunk, metadata=metadata)}
for m in CORRECTION_MASKED_CONVERSATION_MESSAGES
]
response = await call_with_retry(engine, conv_msgs, correction_params)
if not response:
log(f" Chunk {i+1}: No response, skipping")
continue
# Parse the masked conversation from XML tags
try:
parsed = {}
for tag in ["initial_question", "flawed_answer", "followup_confirmation", "correct_answer"]:
pattern = f"<{tag}>(.*?){tag}>"
match = re.search(pattern, response, re.DOTALL)
if match:
parsed[tag] = match.group(1).strip()
else:
raise ValueError(f"Missing <{tag}> tag")
results.append(parsed)
log(f" Chunk {i+1}: Masked conversation parsed successfully")
except (ValueError, Exception) as e:
log(f" Chunk {i+1}: Failed to parse ({e}), skipping")
continue
if not results:
raise PipelineError("No correction conversations were generated. Check your model and API key.")
# Step 3: Format output as JSONL (ShareGPT format with correction pattern)
progress(0.88, desc="[3/3] Formatting output...")
log("[3/3] Formatting output...")
jsonl_lines = []
for conv in results:
entry = {
"conversations": [
{"from": "human", "value": conv["initial_question"]},
{"from": "gpt", "value": conv["flawed_answer"]},
{"from": "human", "value": conv["followup_confirmation"]},
{"from": "gpt", "value": conv["correct_answer"]},
],
"correction_mask": {
"flawed_turn_index": 1,
"note": "Turn at index 1 contains the intentionally flawed answer; mask its loss during training.",
},
}
jsonl_lines.append(json.dumps(entry, ensure_ascii=False))
jsonl_output = "\n".join(jsonl_lines)
# Preview
preview_lines = []
for i, conv in enumerate(results, 1):
preview_lines.append(f"### Correction {i}")
preview_lines.append(f"**Q:** {conv['initial_question'][:150]}...")
preview_lines.append(f"**Flawed A:** {conv['flawed_answer'][:150]}...")
preview_lines.append(f"**Followup:** {conv['followup_confirmation'][:100]}")
preview_lines.append(f"**Correct A:** {conv['correct_answer'][:150]}...")
preview_lines.append("")
preview = "\n".join(preview_lines)
with tempfile.NamedTemporaryFile(mode="w", suffix=".jsonl", delete=False, encoding="utf-8") as tmp:
tmp.write(jsonl_output)
progress(1.0, desc="Done!")
log(f"Correction pipeline complete! {len(results)} correction conversation(s) generated.")
return preview, "", tmp.name
# ---------------------------------------------------------------------------
# Main pipeline
# ---------------------------------------------------------------------------
async def run_pipeline(
text: str,
backend: str,
api_key: str,
model_name: str,
custom_url: str,
num_questions: int,
chunk_size: int,
skip_filter: bool,
skip_validation: bool,
temperature: float,
generate_conversations: bool = False,
pipeline_type: str = "Factual Q&A",
question_style: str = "Standard",
progress=None,
) -> tuple[str, str, str]:
"""
Core augmentoolkit-style pipeline (faithful port):
[1/9] Chunking text
[2/9] Filtering chunks (skip if skip_filter)
[3/9] Generating Q&A pairs
[4/9] Checking questions (skip if skip_validation)
[5/9] Checking answer relevancy (skip if skip_validation)
[6/9] Checking answer accuracy (skip if skip_validation)
[7/9] Context repair - REWORD/PASS/FAIL (skip if skip_validation)
[8/9] Conversation generation (optional, if generate_conversations=True)
[9/9] Formatting output
"""
if progress is None:
progress = lambda *a, **k: None
if not text or not text.strip():
raise PipelineError("Please provide input text.")
# WebGPU runs in browser, not server
if BACKEND_CONFIGS.get(backend, {}).get("webgpu"):
raise PipelineError("WebGPU backend runs in your browser. Use the 'Generate (WebGPU Browser)' button instead.")
if not api_key or not api_key.strip():
raise PipelineError("Please provide an API key.")
# Resolve backend config
config = BACKEND_CONFIGS.get(backend, BACKEND_CONFIGS["Custom Endpoint"])
base_url = custom_url if backend == "Custom Endpoint" else config["base_url"]
if not base_url:
raise PipelineError("Please provide an endpoint URL for Custom Endpoint.")
model = model_name.strip() if model_name.strip() else config["default_model"]
if not model:
raise PipelineError("Please provide a model name.")
engine = create_engine(model=model, api_key=api_key.strip(), base_url=base_url)
# Dispatch to non-factual pipelines
if pipeline_type != "Factual Q&A":
stub_sampling = {"temperature": temperature, "max_tokens": 2000, "top_p": 1.0, "chunk_size": chunk_size}
log_lines_stub = []
def log_stub(msg):
log_lines_stub.append(msg)
print(msg)
pipeline_map = {
"RPToolkit (Roleplay)": run_rptoolkit_pipeline,
"Representation Variation": run_representation_variation_pipeline,
"RAG Training": run_rag_pipeline,
"Correction": run_correction_pipeline,
}
pipeline_fn = pipeline_map.get(pipeline_type)
if pipeline_fn is None:
raise PipelineError(f"Unknown pipeline type: {pipeline_type}")
return await pipeline_fn(text, engine, stub_sampling, log_stub, progress)
# Select question generation prompts based on question style
style_config = QUESTION_STYLE_MAP.get(question_style, QUESTION_STYLE_MAP["Standard"])
active_question_messages = style_config["qatuples"]
active_conversation_messages = style_config.get("multi_turn") or CONVERSATION_GENERATION_MESSAGES
stop_sequences = [
"### Response", "\n\n\n\n\n", "", "# Input:",
"[INST]", "### Instruction", "<|eot_id|>",
"<|start_header_id|>", "<|end_header_id|>",
]
sampling_params_filter = {
"temperature": 0.2, "max_tokens": 1450, "top_p": 1.0, "stop": stop_sequences,
}
sampling_params_gen = {
"temperature": temperature, "max_tokens": 2000, "top_p": 1.0, "stop": stop_sequences,
}
sampling_params_val = {
"temperature": 0.2, "max_tokens": 1500, "top_p": 1.0, "stop": stop_sequences,
}
sampling_params_context = {
"temperature": 0.2, "max_tokens": 4000, "top_p": 1.0, "stop": stop_sequences,
}
log_lines = []
def log(msg):
log_lines.append(msg)
print(msg)
# ---- [1/9] Chunk text ----
progress(0.0, desc="[1/9] Chunking text...")
log(f"[1/9] Chunking text (chunk_size={chunk_size})...")
chunks = sentence_chunk_text(text, chunk_size=chunk_size)
log(f" Created {len(chunks)} chunk(s)")
if not chunks:
raise PipelineError("Text too short or could not be chunked. Please provide more text.")
# ---- [2/9] Filter chunks ----
suitable_chunks = []
if skip_filter:
suitable_chunks = chunks
log(f"[2/9] Skipping paragraph filtering (using all {len(chunks)} chunks)")
else:
progress(0.05, desc="[2/9] Filtering chunks...")
log(f"[2/9] Filtering {len(chunks)} chunk(s) for suitability...")
for i, chunk in enumerate(chunks):
progress(0.05 + 0.10 * (i / len(chunks)), desc=f"[2/9] Filtering chunk {i+1}/{len(chunks)}...")
messages = [
{"role": m["role"], "content": safe_format(m["content"], text=chunk)}
for m in JUDGE_PARAGRAPH_MESSAGES
]
try:
response = await call_with_retry(engine, messages, sampling_params_filter)
if response and judge_paragraph(response):
suitable_chunks.append(chunk)
log(f" Chunk {i+1}: Suitable")
else:
log(f" Chunk {i+1}: Not suitable (filtered out)")
except Exception as e:
log(f" Chunk {i+1}: Error during filtering ({e}), keeping chunk")
suitable_chunks.append(chunk)
if not suitable_chunks:
raise PipelineError("No chunks passed the suitability filter. Try different text or skip filtering.")
log(f" {len(suitable_chunks)} chunk(s) passed filtering")
# ---- [3/9] Generate Q&A pairs ----
progress(0.15, desc="[3/9] Generating Q&A pairs...")
log(f"[3/9] Generating Q&A pairs from {len(suitable_chunks)} chunk(s)...")
all_qa_pairs = []
for i, chunk in enumerate(suitable_chunks):
progress(0.15 + 0.20 * (i / len(suitable_chunks)), desc=f"[3/9] Generating from chunk {i+1}/{len(suitable_chunks)}...")
messages = [
{"role": m["role"], "content": safe_format(m["content"], text=chunk)}
for m in active_question_messages
]
try:
response = await call_with_retry(engine, messages, sampling_params_gen)
if not response:
log(f" Chunk {i+1}: No response after retries")
continue
qa_pairs = extract_qa_tuples(response)
# Filter out pairs that reference the text (skip for Hallucination style
# which intentionally references source material in its reasoning)
if question_style != "Hallucination":
qa_pairs = [
qa for qa in qa_pairs
if filter_qa_text(qa["question"]) and filter_qa_text(qa["answer"])
]
for qa in qa_pairs:
qa["source_chunk"] = chunk
all_qa_pairs.extend(qa_pairs)
log(f" Chunk {i+1}: Generated {len(qa_pairs)} Q&A pair(s)")
except Exception as e:
log(f" Chunk {i+1}: Error during generation ({e})")
traceback.print_exc()
if not all_qa_pairs:
raise PipelineError("No Q&A pairs were generated. The LLM may not be responding correctly. Check your model and API key.")
log(f" Total Q&A pairs before validation: {len(all_qa_pairs)}")
# Reusable validation step (DRY — steps 4/5/6 share identical structure)
async def validate_step(pairs, messages_template, parser_fn, step_label, pass_label, fail_label, pct_start, pct_end):
validated = []
for i, qa in enumerate(pairs):
progress(pct_start + (pct_end - pct_start) * (i / max(len(pairs), 1)), desc=f"{step_label} {i+1}/{len(pairs)}...")
source_text = qa.get("source_chunk", "")
messages = [{"role": m["role"], "content": safe_format(m["content"], text=source_text, question=qa["question"], answer=qa["answer"])} for m in messages_template]
try:
response = await call_with_retry(engine, messages, sampling_params_val)
if response and parser_fn(response):
validated.append(qa)
log(f" {i+1}: {pass_label}")
else:
log(f" {i+1}: {fail_label}")
except Exception as e:
log(f" {i+1}: Error ({e}), keeping")
validated.append(qa)
log(f" {len(validated)}/{len(pairs)} passed")
return validated
if skip_validation:
log(f"[4-7/9] Skipping validation steps (skip_validation=True)")
final_pairs = all_qa_pairs[:num_questions]
else:
# ---- [4/9] Check questions ----
log(f"[4/9] Checking {len(all_qa_pairs)} question(s)...")
question_checked = await validate_step(all_qa_pairs, CHECK_QUESTION_MESSAGES, parse_validation_step, "[4/9]", "Relevant", "Irrelevant", 0.35, 0.47)
if not question_checked:
raise PipelineError("No questions passed validation. Try skipping validation or using different text.")
# ---- [5/9] Check answer relevancy ----
log(f"[5/9] Checking answer relevancy for {len(question_checked)} pair(s)...")
relevancy_checked = await validate_step(question_checked, CHECK_ANSWER_RELEVANCY_MESSAGES, parse_answer_relevancy, "[5/9]", "Relevant", "Irrelevant", 0.47, 0.59)
if not relevancy_checked:
raise PipelineError("No pairs passed answer relevancy check. Try skipping validation or using different text.")
# ---- [6/9] Check answer accuracy ----
log(f"[6/9] Checking answer accuracy for {len(relevancy_checked)} pair(s)...")
accuracy_checked = await validate_step(relevancy_checked, CHECK_ANSWER_ACCURACY_MESSAGES, parse_answer_accuracy, "[6/9]", "Accurate", "Inaccurate", 0.59, 0.71)
if not accuracy_checked:
raise PipelineError("No pairs passed answer accuracy check. Try skipping validation or using different text.")
# ---- [7/9] Context repair (PASS/REWORD/FAIL) ----
progress(0.71, desc="[7/9] Context repair...")
log(f"[7/9] Context repair for {len(accuracy_checked)} pair(s)...")
context_repaired = []
for i, qa in enumerate(accuracy_checked):
progress(0.71 + 0.14 * (i / len(accuracy_checked)), desc=f"[7/9] Context check {i+1}/{len(accuracy_checked)}...")
messages = [
{
"role": m["role"],
"content": safe_format(m["content"], question=qa["question"], answer=qa["answer"]),
}
for m in CHECK_CONTEXT_MESSAGES
]
try:
response = await call_with_retry(engine, messages, sampling_params_context)
if not response:
log(f" Pair {i+1}: No response, discarding")
continue
result = parse_context_check(response)
if result is True:
# PASS - keep as-is
context_repaired.append(qa)
log(f" Pair {i+1}: PASS")
elif isinstance(result, tuple):
# REWORD - use new question/answer
qa["question"] = result[0]
qa["answer"] = result[1]
context_repaired.append(qa)
log(f" Pair {i+1}: REWORD")
else:
# FAIL - discard
log(f" Pair {i+1}: FAIL (discarded)")
except Exception as e:
log(f" Pair {i+1}: Error ({e}), keeping")
context_repaired.append(qa)
log(f" {len(context_repaired)} pair(s) passed context repair")
if not context_repaired:
raise PipelineError("No pairs survived context repair. Try skipping validation or using different text.")
final_pairs = context_repaired[:num_questions]
log(f" Final Q&A pairs: {len(final_pairs)}")
# ---- [8/9] Conversation generation (optional) ----
if generate_conversations:
progress(0.85, desc="[8/9] Generating conversations...")
log(f"[8/9] Generating conversations for {len(final_pairs)} pair(s)...")
chunk_groups = defaultdict(list)
for qa in final_pairs:
chunk_groups[qa.get("source_chunk", "")].append(qa)
for group in chunk_groups.values():
try:
pairs_str = "\n\n".join(
f"**QUESTION:**\n{qa['question']}\n\n**ANSWER:**\n{qa['answer']}"
for qa in group
)
messages = [{"role": m["role"], "content": safe_format(m["content"], question_answer_pairs_string=pairs_str)} for m in active_conversation_messages]
response = await call_with_retry(engine, messages, sampling_params_gen)
if response:
for qa in group:
qa["conversation"] = response
log(f" Generated conversation for {len(group)} pair(s)")
else:
log(f" Failed to generate conversation for {len(group)} pair(s)")
except Exception as e:
log(f" Conversation generation error ({e}), using flat Q&A")
else:
log(f"[8/9] Skipping conversation generation")
# ---- [9/9] Format output ----
progress(0.88, desc="[9/9] Formatting output...")
log(f"[9/9] Formatting {len(final_pairs)} Q&A pairs as JSONL...")
# Create ShareGPT-format JSONL (standard training format)
_user_re = re.compile(r'\*\*User:\*\*\s*', re.IGNORECASE)
_ai_re = re.compile(r'\*\*AI Assistant:\*\*\s*', re.IGNORECASE)
jsonl_lines = []
for qa in final_pairs:
if "conversation" in qa:
convo_text = qa["conversation"]
# Find all marker positions
markers = [(m.start(), m.end(), "human") for m in _user_re.finditer(convo_text)]
markers += [(m.start(), m.end(), "gpt") for m in _ai_re.finditer(convo_text)]
markers.sort(key=lambda x: x[0])
# Extract turns between markers
conv_turns = []
for idx, (start, end, role) in enumerate(markers):
next_start = markers[idx + 1][0] if idx + 1 < len(markers) else len(convo_text)
text_slice = convo_text[end:next_start].strip()
if text_slice:
conv_turns.append({"from": role, "value": text_slice})
if not conv_turns:
log(f" Warning: could not parse conversation turns, using flat Q&A")
entry = {"conversations": conv_turns} if conv_turns else {
"conversations": [
{"from": "human", "value": qa["question"]},
{"from": "gpt", "value": qa["answer"]},
]
}
else:
entry = {
"conversations": [
{"from": "human", "value": qa["question"]},
{"from": "gpt", "value": qa["answer"]},
]
}
jsonl_lines.append(json.dumps(entry, ensure_ascii=False))
jsonl_output = "\n".join(jsonl_lines)
# Create preview
preview_lines = []
for i, qa in enumerate(final_pairs, 1):
preview_lines.append(f"### Q{i}: {qa['question'][:150]}{'...' if len(qa['question']) > 150 else ''}")
preview_lines.append(f"**A{i}:** {qa['answer'][:300]}{'...' if len(qa['answer']) > 300 else ''}")
preview_lines.append("")
preview = "\n".join(preview_lines)
log_output = "\n".join(log_lines)
# Save JSONL to temp file for download
with tempfile.NamedTemporaryFile(mode="w", suffix=".jsonl", delete=False, encoding="utf-8") as tmp:
tmp.write(jsonl_output)
progress(1.0, desc="Done!")
log("Pipeline complete!")
return preview, log_output, tmp.name
# ---------------------------------------------------------------------------
# Gradio UI
# ---------------------------------------------------------------------------
def create_ui():
import gradio as gr
with gr.Blocks(title="Augmentoolkit") as demo:
gr.Markdown("Generate synthetic Q&A training datasets from text using LLM APIs. Based on [augmentoolkit](https://github.com/e-p-armstrong/augmentoolkit) by e-p-armstrong.")
# === Main layout: Left (input+files+output) | Right (backend+settings) ===
with gr.Row():
# --- Left: Input + Files + Pipeline Output ---
with gr.Column(scale=1):
input_text = gr.Textbox(
label="Paste text here", lines=7, max_lines=7,
placeholder="Paste your text content here, or upload a file below...",
)
with gr.Row():
input_file = gr.File(label="Or upload .txt", file_types=[".txt"], type="filepath", scale=1, height=80)
download_output = gr.DownloadButton(label="Download Q&A gen Result (.jsonl)", value=None, size="sm", variant="secondary", scale=1)
with gr.Accordion("Pipeline Output", open=False, elem_id="pipeline-accordion"):
log_output = gr.Textbox(label="Log", lines=6, interactive=False, elem_id="webgpu-log")
preview_output = gr.Textbox(label="Generated Q&A", lines=10, interactive=False, elem_id="webgpu-preview")
# --- Right: Backend + Settings + Generate ---
with gr.Column(scale=1):
backend = gr.Dropdown(
choices=list(BACKEND_CONFIGS.keys()),
value="WebGPU (Free in Browser - Nemotron-3-Nano 4B)",
label="LLM Backend",
)
api_key = gr.Textbox(label="API Key", type="password", placeholder="API key...", visible=False)
model_name = gr.Textbox(label="Model", value="mistralai/mistral-7b-instruct", visible=False)
custom_url = gr.Textbox(label="Endpoint URL", placeholder="https://...", visible=False)
pipeline_type = gr.Dropdown(
choices=[
("Factual Q&A: Educational questions with validation", "Factual Q&A"),
("RPToolkit: Character cards + roleplay stories", "RPToolkit (Roleplay)"),
("Representation Variation: Rewrite as list, JSON, essay...", "Representation Variation"),
("RAG Training: AI answers using provided context chunks", "RAG Training"),
("Correction: Start a wrong answer then self-correct", "Correction"),
],
value="Factual Q&A",
label="Pipeline",
)
question_style = gr.Dropdown(
choices=[
("Standard: Normal educational Q&A", "Standard"),
("Comparison: Compare X vs Y", "Comparison"),
("Followup: Build on previous answers", "Followup"),
("Hallucination: Nonexistent things (trains 'I don't know')", "Hallucination"),
("Negative: Trick questions with flawed premises", "Negative"),
("Open-ended: Broad analytical discussion", "Open-ended"),
("Vague: Ambiguous questions, AI clarifies first", "Vague"),
],
value="Standard",
label="Question Style (Factual only)",
visible=True,
)
def toggle_question_style(pipeline):
return gr.Dropdown(visible=(pipeline == "Factual Q&A"))
pipeline_type.change(toggle_question_style, inputs=[pipeline_type], outputs=[question_style])
with gr.Row():
num_questions = gr.Slider(1, 100, value=5, step=1, label="Q&A pairs")
chunk_size = gr.Slider(500, 16000, value=8000, step=500, label="Chunk size (chars)")
with gr.Accordion("Advanced", open=False):
temperature = gr.Slider(0.0, 1.5, value=0.7, step=0.1, label="Temperature", info="Higher = creative, lower = factual")
skip_filter = gr.Checkbox(label="Skip paragraph filtering", value=False, info="Skip LLM-based suitability check (faster but may include low-quality chunks)")
skip_validation = gr.Checkbox(label="Skip Q&A validation", value=False, info="Skip LLM-based validation of generated pairs (faster but may include bad pairs)")
generate_conversations = gr.Checkbox(label="Generate conversations", value=False, info="Wrap Q&A pairs in natural multi-turn dialogue (adds 1 LLM call per chunk)")
# Single Generate button — same position for both backends
generate_btn = gr.Button("Generate Dataset", variant="primary", size="lg", visible=False)
webgpu_btn = gr.Button("Generate Dataset", variant="primary", size="lg", visible=True)
# === Hidden state ===
jsonl_hidden = gr.Textbox(visible=False, elem_id="jsonl-hidden")
# === Event handlers ===
def load_file(file_path):
if file_path is None:
return None
try:
with open(file_path, "r", encoding="utf-8", errors="replace") as f:
return f.read()
except Exception as e:
raise gr.Error(f"Could not read file: {e}")
input_file.change(load_file, inputs=[input_file], outputs=[input_text])
def toggle_backend(choice):
cfg = BACKEND_CONFIGS.get(choice, {})
is_webgpu = cfg.get("webgpu", False)
is_custom = choice == "Custom Endpoint"
return (
gr.Textbox(visible=is_custom),
gr.Textbox(value=cfg.get("default_model", ""), visible=not is_webgpu),
gr.Textbox(visible=not is_webgpu),
gr.Button(visible=not is_webgpu), # generate_btn (API)
gr.Button(visible=is_webgpu), # webgpu_btn
)
backend.change(toggle_backend, inputs=[backend],
outputs=[custom_url, model_name, api_key, generate_btn, webgpu_btn])
# API backend: Python pipeline (wraps PipelineError → gr.Error)
async def ui_run_pipeline(text, backend, api_key, model_name, custom_url,
num_questions, chunk_size, skip_filter, skip_validation,
temperature, gen_convos=False,
pipeline_type_val="Factual Q&A",
question_style_val="Standard",
progress=gr.Progress(track_tqdm=False)):
try:
return await run_pipeline(
text, backend, api_key, model_name, custom_url,
num_questions, chunk_size, skip_filter, skip_validation,
temperature, generate_conversations=gen_convos,
pipeline_type=pipeline_type_val,
question_style=question_style_val, progress=progress,
)
except PipelineError as e:
raise gr.Error(str(e))
generate_btn.click(
fn=ui_run_pipeline,
inputs=[input_text, backend, api_key, model_name, custom_url,
num_questions, chunk_size, skip_filter, skip_validation, temperature,
generate_conversations, pipeline_type, question_style],
outputs=[preview_output, log_output, download_output],
api_name="generate_dataset",
)
# WebGPU backend: JS browser pipeline
webgpu_btn.click(
fn=None, js=WEBGPU_JS,
inputs=[input_text, backend, api_key, model_name, custom_url,
num_questions, chunk_size, skip_filter, skip_validation, temperature],
outputs=[preview_output, log_output, jsonl_hidden],
)
# JS JSONL → Python saves file
def save_jsonl_file(jsonl_text):
if not jsonl_text or not jsonl_text.strip():
return None
path = os.path.join(tempfile.mkdtemp(), "dataset.jsonl")
with open(path, "w", encoding="utf-8") as f:
f.write(jsonl_text)
return path
jsonl_hidden.change(fn=save_jsonl_file, inputs=[jsonl_hidden], outputs=[download_output])
return demo
def cli_main():
"""CLI mode — no Gradio, runs pipeline directly."""
import argparse
parser = argparse.ArgumentParser(description="Augmentoolkit Q&A Dataset Generator (CLI)")
parser.add_argument("input", help="Input text file path")
parser.add_argument("--url", default="https://openrouter.ai/api/v1", help="API base URL")
parser.add_argument("--api-key", default="", help="API key")
parser.add_argument("--model", default="mistralai/mistral-7b-instruct", help="Model name")
parser.add_argument("--num-questions", type=int, default=5, help="Q&A pairs per chunk")
parser.add_argument("--chunk-size", type=int, default=8000, help="Chunk size in characters")
parser.add_argument("--temperature", type=float, default=0.7, help="Generation temperature")
parser.add_argument("--skip-filter", action="store_true", help="Skip paragraph filtering")
parser.add_argument("--skip-validation", action="store_true", help="Skip Q&A validation steps")
parser.add_argument("--generate-conversations", action="store_true", help="Wrap Q&A in multi-turn dialogue")
parser.add_argument("--question-style", default="Standard", choices=["Standard", "Comparison", "Followup", "Hallucination", "Negative", "Open-ended", "Vague"], help="Question generation style")
parser.add_argument("--pipeline-type", default="Factual Q&A", choices=["Factual Q&A", "RPToolkit (Roleplay)", "Representation Variation", "RAG Training", "Correction"], help="Pipeline type")
parser.add_argument("--output", default="dataset.jsonl", help="Output JSONL file path")
args = parser.parse_args()
if not os.path.exists(args.input):
print(f"Error: File not found: {args.input}")
sys.exit(1)
with open(args.input, "r", encoding="utf-8", errors="replace") as f:
text = f.read()
print(f"Input: {args.input} ({len(text)} chars)")
print(f"API: {args.url} | Model: {args.model}")
def cli_progress(pct=0, desc=""):
if desc:
print(f" [{int(pct*100):3d}%] {desc}")
try:
preview, log, jsonl_path = asyncio.run(run_pipeline(
text=text, backend="Custom Endpoint", api_key=args.api_key,
model_name=args.model, custom_url=args.url,
num_questions=args.num_questions, chunk_size=args.chunk_size,
skip_filter=args.skip_filter, skip_validation=args.skip_validation,
temperature=args.temperature,
generate_conversations=args.generate_conversations,
question_style=args.question_style,
pipeline_type=args.pipeline_type,
progress=cli_progress,
))
except PipelineError as e:
print(f"Error: {e}")
sys.exit(1)
# Save output
if jsonl_path and os.path.exists(jsonl_path):
shutil.copy(jsonl_path, args.output)
print(f"\nSaved: {args.output}")
print(f"\n{log}")
if __name__ == "__main__":
if len(sys.argv) > 1 and sys.argv[1] == "cli":
sys.argv.pop(1) # remove "cli" so argparse doesn't see it
cli_main()
else:
import gradio as gr
demo = create_ui()
try:
theme = gr.Theme.from_hub("NoCrypt/miku")
except Exception:
theme = gr.themes.Base()
demo.launch(show_error=True, ssr_mode=False, mcp_server=True, theme=theme)