File size: 6,970 Bytes
1e32511
69c0ff1
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1e32511
 
 
69c0ff1
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1e32511
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
69c0ff1
 
 
 
 
 
c2fa877
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
class SplitTextPromptV1:
    SYSTEM = """\
You are a helpful assistant proficient in literature and language.
Imagine you are helping to prepare the provided text for narration to create the audio book.
We need to understand how many voice actors we need to hire and how to split the text between them.

Your task is to help with this process, namely:
1. Identify all book characters occuring in the text, including "narrator".
We will hire individual voice actor for each one of them.
2. Split the text provided by characters. Let's refer to each split as "part".
Order of parts MUST be the same as in the original text.

Details:
- First, analyze the whole text to extract the list of characters.
Put found characters to corresponding output field.
- Then, analyze the text top-down and as you proceed fill the "parts" field
- Each part must be attributed to a single character.
Character must belong to the "characters" list
- Use "narrator" character for any descriptive or narrative text, 
such as actions ("He shook his head"), narrative parts ("I thought")
thoughts, or descriptions that aren't part of spoken dialogue
- In some books narrator is one of the main characters, having its own name and phrases.
In this case, use regualar character name instead of "narrator" role
- If it's impossible to identify character name from the text provided, use codes "c1", "c2", etc,
where "c" prefix means character and number is used to enumerate unknown characters

Format your answer as a following JSON:
{{
    "characters": [list of unique character names that are found in the text provided],
    "parts":
    [
        {{
            "character": <character name>, "text": <the part's text>
        }}
    ]
}}

Ensure the order of the parts in the JSON output matches the original order of the text.

Examples of text split by characters, already in the target format.

Example 1.
{{
    "characters": ["Mr. Gatz", "narrator"],
    "parts":
    [
        {{"character": "Mr. Gatz", "text": "“Gatz is my name.”"}},
        {{"character": "narrator", "text": "“—Mr. Gatz. I thought you might want to take the body West.” He shook his head."}},
        {{"character": "Mr. Gatz", "text": "“Jimmy always liked it better down East. He rose up to his position in the East. Were you a friend of my boy’s, Mr.—?”"}},
        {{"character": "narrator", "text": "“We were close friends.”"}},
        {{"character": "Mr. Gatz", "text": "“He had a big future before him, you know. He was only a young man, but he had a lot of brain power here.”"}},
        {{"character": "narrator", "text": "He touched his head impressively, and I nodded."}},
        {{"character": "Mr. Gatz", "text": "“If he’d of lived, he’d of been a great man. A man like James J. Hill. He’d of helped build up the country.”"}},
        {{"character": "narrator", "text": "“That’s true,” I said, uncomfortably."}},
        {{"character": "Mr. Gatz", "text": "He fumbled at the embroidered coverlet, trying to take it from the bed, and lay down stiffly—was instantly asleep."}},
    ]
}}

Example 2.
{{
    'characters': [
        'narrator',
        'Mr. Carraway',
        'Daisy',
        'Miss Baker',
        'Tom',
        'Nick'
    ],
    'parts': [
        {{'character': 'narrator', 'text': '“If you’ll get up.”'}},
        {{'character': 'Mr. Carraway', 'text': '“I will. Good night, Mr. Carraway. See you anon.”'}},
        {{'character': 'Daisy', 'text': '“Of course you will,” confirmed Daisy. “In fact I think I’ll arrange a marriage. Come over often, Nick, and I’ll sort of—oh—fling you together. You know—lock you up accidentally in linen closets and push you out to sea in a boat, and all that sort of thing—”'}},
        {{'character': 'Miss Baker', 'text': '“Good night,” called Miss Baker from the stairs. “I haven’t heard a word.”'}},
        {{'character': 'Tom', 'text': '“She’s a nice girl,” said Tom after a moment. “They oughtn’t to let her run around the country this way.”'}},
        {{'character': 'Daisy', 'text': '“Who oughtn’t to?” inquired Daisy coldly.'}},
        {{'character': 'narrator', 'text': '“Her family.”'}},
        {{'character': 'narrator', 'text': '“Her family is one aunt about a thousand years old. Besides, Nick’s going to look after her, aren’t you, Nick? She’s going to spend lots of weekends out here this summer. I think the home influence will be very good for her.”'}},
        {{'character': 'narrator', 'text': 'Daisy and Tom looked at each other for a moment in silence.'}}
    ]
}}
"""

    USER = """\
Here is the book sample:
---
{text}"""


class SplitTextPromptV2:
    SYSTEM = """\
you are provided with the book sample.
please rewrite it and insert xml tags indicating character to whom current phrase belongs.
for example: <narrator>I looked at her</narrator><Jill>What are you looking at?</Jill>

Notes:
- sometimes narrator is one of characters taking part in the action.
in this case use narrator's name (if available) instead of "narrator"
- if it's impossible to identify character name from the text provided, use codes "c1", "c2", etc,
where "c" prefix means character and number is used to enumerate unknown characters
- all quotes of direct speech must be attributed to characters, for example:
<Tom>“She’s a nice girl,”</Tom><narrator>said Tom after a moment.</narrator>
mind that sometimes narrator could also be a character.
- use ALL available context to determine the character.
sometimes the character name becomes clear from the following phrases
- DO NOT include in your response anything except for the original text with character xml tags!!!
"""

    USER = """\
Here is the book sample:
---
{text}"""


class CharacterVoicePropertiesPrompt:
    SYSTEM = """\
You are a helpful assistant proficient in literature and psychology.
Our goal is to create an audio book from the given text.
For that we need to hire voice actors.
Please help us to find the right actor for each character present in the text.

You are provided with the text split by the characters
to whom text parts belong to.

Your task is to assign available properties to each character provided.
List of available properties:
- gender: {available_genders}
- age_group: {available_age_groups}

NOTES:
- assign EXACTLY ONE property value for each property
- select properties values ONLY from the list of AVAILABLE property values
- fill properties for ALL characters from the list provided
- DO NOT include any characters absent in the list provided

{format_instructions}
"""

    # You MUST answer with the following JSON:
    # {{
    #     "character2props":
    #     {{
    #         <character_name>:
    #         {{
    #             "gender": <value>,
    #             "age_group": <value>
    #         }}
    #     }}
    # }}

    USER = """\
<text>
{text}
</text>

<characters>
{characters}
</characters>
"""