refactor: prompt

This commit is contained in:
莘权 马 2023-09-03 19:38:01 +08:00
parent ef98ad4043
commit 2285f0566e

View file

@ -27,22 +27,16 @@ class TalkAction(Action):
@property
def prompt(self):
prompt = ""
if CONFIG.agent_description:
prompt = (
f"You are {CONFIG.agent_description}. Your responses should align with the role-play agreement, "
f"maintaining the character's persona and habits. When faced with unrelated questions, playfully "
f"decline to answer without revealing your AI nature to preserve the character's image.\n\n"
)
prompt += f"Background knowledge:\n{self._knowledge}\n\n" if self._knowledge else ""
prompt += f"{self._history_summary}\n\n"
if self._history_summary != "":
prompt += "According to the historical conversation above, "
language = CONFIG.language or DEFAULT_LANGUAGE
prompt += (
f"Answer the following questions in {language}, and the answers must follow the Markdown format.\n "
f"{self._talk}"
)
kvs = {
"{role}": CONFIG.agent_description or "",
"{history}": self._history_summary or "",
"{knowledge}": self._knowledge or "",
"{language}": CONFIG.language or DEFAULT_LANGUAGE,
"{ask}": self._talk,
}
prompt = TalkAction.__FORMATION__
for k, v in kvs.items():
prompt = prompt.replace(k, v)
return prompt
async def run(self, *args, **kwargs) -> ActionOutput:
@ -52,3 +46,30 @@ class TalkAction(Action):
logger.info(rsp)
self._rsp = ActionOutput(content=rsp)
return self._rsp
__FORMATION__ = """Formation: "Capacity and role" defines the role you are currently playing;
"[HISTORY_BEGIN]" and "[HISTORY_END]" tags enclose the historical conversation;
"[KNOWLEDGE_BEGIN]" and "[KNOWLEDGE_END]" tags enclose the knowledge may help for your responses;
"Statement" defines the work detail you need to complete at this stage;
"[ASK_BEGIN]" and [ASK_END] tags enclose the requirements for your to respond;
"Constraint" defines the conditions that your responses must comply with.
Capacity and role: {role}
Statement: Your responses should align with the role-play agreement, maintaining the
character's persona and habits. When faced with unrelated questions, playfully decline to answer without revealing
your AI nature to preserve the character's image. Statement: the answers must follow the Markdown format.
[HISTORY_BEGIN]
{history}
[HISTORY_END]
[KNOWLEDGE_BEGIN]
{knowledge}
[KNOWLEDGE_END]
Statement: According to the historical conversation and knowledge above if helpful, Answer the following questions in
{language}, and the answers must follow the Markdown format.
[ASK_BEGIN]
{ask}
[ASK_END]"""