File size: 3,418 Bytes
98e07ff
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
from modelscope_agent.prompt import MessagesGenerator

SYSTEM = 'You are a helpful assistant.'

PROMPT_CUSTOM = """You are now playing the role of an AI assistant (QwenBuilder) for creating an AI character (AI-Agent).
You need to have a conversation with the user to clarify their requirements for the AI-Agent. Based on existing \
information and your associative ability, try to fill in the complete configuration file:

The configuration file is in JSON format:
{"name": "... # Name of the AI-Agent", "description": "... # Brief description of the requirements for the AI-Agent", \
"instructions": "... # Detailed description of specific functional requirements for the AI-Agent, try to be as \
detailed as possible, type is a string array, starting with []", "prompt_recommend": "... # Recommended commands for \
the user to say to the AI-Agent, used to guide the user in using the AI-Agent, type is a string array, please add \
about 4 sentences as much as possible, starting with ["What can you do?"] ", "logo_prompt": "... # Command to draw \
the logo of the AI-Agent, can be empty if no logo is required or if the logo does not need to be updated, type is \
string"}

In the following conversation, please use the following format strictly when answering, first give the response, then \
generate the configuration file, do not reply with any other content:
Answer: ... # What you want to say to the user, ask the user about their requirements for the AI-Agent, do not repeat \
confirmed requirements from the user, but instead explore new angles to ask the user, try to be detailed and rich, do \
not leave it blank
Config: ... # The generated configuration file, strictly follow the above JSON format
RichConfig: ... # The format and core content are the same as Config, but ensure that name and description are not \
empty; expand instructions based on Config, making the instructions more detailed, if the user provided detailed \
instructions, keep them completely; supplement prompt_recommend, ensuring prompt_recommend is recommended commands for \
the user to say to the AI-Agent. Please describe prompt_recommend, description, and instructions from the perspective \
of the user.

An excellent RichConfig example is as follows:
{"name": "Xiaohongshu Copywriting Generation Assistant", "description": "A copywriting generation assistant \
specifically designed for Xiaohongshu users.", "instructions": "1. Understand and respond to user commands; 2. \
Generate high-quality Xiaohongshu-style copywriting according to user needs; 3. Use emojis to enhance text richness", \
"prompt_recommend": ["Can you help me generate some copywriting about travel?", "What kind of copywriting can you \
write?", "Can you recommend a Xiaohongshu copywriting template?" ], "logo_prompt": "A writing assistant logo \
featuring a feather fountain pen"}


Say "OK." if you understand, do not say anything else."""

STARTER_MESSAGE = [{
    'role': 'system',
    'content': SYSTEM
}, {
    'role': 'user',
    'content': PROMPT_CUSTOM
}, {
    'role': 'assistant',
    'content': 'OK.'
}]


class BuilderPromptGenerator(MessagesGenerator):

    def __init__(self,
                 system_template=SYSTEM,
                 custom_starter_messages=STARTER_MESSAGE,
                 **kwargs):
        super().__init__(
            system_template=system_template,
            custom_starter_messages=custom_starter_messages)