File size: 4,142 Bytes
80a8ad1
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
# -*- 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)