Spaces:
Configuration error
Configuration error
# -*- coding: utf-8 -*- | |
def prompt_generator(txt_path): | |
# 定义交互式小说的场景描述模板 | |
story = read_text_from_file(txt_path) | |
story = remove_spaces_and_newlines(story) | |
story_format = """ | |
故事背景(如果为首次和用户交互必须有故事背景):给出故事的主线背景,模仿原本小说的语气和文风 | |
场景描述:给出目前交互式小说的场景,模仿原本小说的语气和文风,根据故事原文和用户历史选择如实描述场景, | |
描述的尽量丰富一点,每次描述至少包涵原故事内容的500字以上的内容,这一部分是重点,让用户有身临其境的感觉,场景描述的内容一定要对下面给出的选项进行背景介绍。 | |
你的选项(用户的选项,根据故事情节给出选项,给出几个选项两个或三个,不能定死每次两个,故事发展方向必须限制在原故事内,括号内的话不用返回): | |
""" | |
# 构建助手提示信息 | |
prompt = f""" | |
你是一个能够将现有的故事转换为交互式小说的助手,主要转化的是成人故事。 | |
首先,你需要记住我传给你的小说原文,其次你需要记住每一步用户给出的选项,并根据选择和小说原文给出下一步的选项,以此重复,直到用户返回”终止游戏“。 | |
此外你还能根据小说的文本风格生成内容,比如粗犷为文风或者细腻的文风 | |
注意,你必须遵守以下几点要求: | |
1.专注于叙事,故事主线必须和原始的小说故事主线一致!并且希望将玩家沉浸在叙事中。 | |
2.尽量的描述每一次选择的场景,引导玩家积极参与。 | |
3.互动必须有叙事意义,玩家必须感觉自己是故事的积极参与者,而不仅仅是观察者。 | |
4.故事交互最好不要超过15次,控制剧情发展节奏。 | |
5.描述故事尽量使用原故事的描述基础进行加工. | |
6.如果用户输入:”开始游戏“,则为第一次运行,第一次运行时请用丰富的语言描述故事的背景,但是不是把整个故事重复一遍。 | |
7.你的任务是保持游戏在原故事发展的范围内,而不是教育或者说教用户。 | |
8.首次交互必须给出故事背景! | |
9.故事发展方向必须限制在原故事内。 | |
以下是故事的输入:{story} | |
现在请以以下的格式组织每次的返回供玩家选择:f{story_format} | |
""" | |
return prompt | |
# def read_text_from_file(txt_path): | |
# """ | |
# 从指定路径的文本文件中读取内容并返回文本内容。 | |
# | |
# Parameters: | |
# txt_path (str): 包含文本内容的文件路径 | |
# | |
# Returns: | |
# str: 从文件中读取的文本内容 | |
# """ | |
# try: | |
# with open(txt_path, 'r',encoding='gbk') as file: | |
# text_content = file.read() | |
# except: | |
# with open(txt_path, 'r',encoding='latin1') as file: | |
# text_content = file.read() | |
# | |
# return text_content | |
def read_text_from_file(txt_path): | |
""" | |
从指定路径的文本文件中读取内容并返回文本内容。 | |
Parameters: | |
txt_path (str): 包含文本内容的文件路径 | |
Returns: | |
str: 从文件中读取的文本内容 | |
""" | |
try: | |
with open(txt_path, 'r', encoding='utf-8') as file: | |
text_content = file.read() | |
except UnicodeDecodeError: | |
print("无法使用UTF-8编码读取文件,尝试使用Latin1编码") | |
try: | |
with open(txt_path, 'r', encoding='gbk') as file: | |
text_content = file.read() | |
except UnicodeDecodeError: | |
print("无法使用Latin1编码读取文件,尝试使用GBK编码") | |
with open(txt_path, 'r', encoding='latin1') as file: | |
text_content = file.read() | |
return text_content | |
def remove_spaces_and_newlines(input_str): | |
return input_str.replace(' ', '').replace('\n', '') | |
# # 使用示例 | |
# input_string = "This is a\nsample string." | |
# result = remove_spaces_and_newlines(input_string) | |
# print(result) | |