Shellmiao bf6f7825e6 Imagetcha modolar version 1 سال پیش
..
config bf6f7825e6 Imagetcha modolar version 1 سال پیش
Evaluate_langchain.py bf6f7825e6 Imagetcha modolar version 1 سال پیش
README.md bf6f7825e6 Imagetcha modolar version 1 سال پیش
event_langchain.py bf6f7825e6 Imagetcha modolar version 1 سال پیش
format_langchain.py bf6f7825e6 Imagetcha modolar version 1 سال پیش
global_langchain.py bf6f7825e6 Imagetcha modolar version 1 سال پیش
input_main.py bf6f7825e6 Imagetcha modolar version 1 سال پیش
main_langchain.py bf6f7825e6 Imagetcha modolar version 1 سال پیش
my_database.db bf6f7825e6 Imagetcha modolar version 1 سال پیش
value_langchain.py bf6f7825e6 Imagetcha modolar version 1 سال پیش

README.md

ImaGetCha

环境配置

Python=3.9

官网安装python

官网下载链接

使用Conda安装python环境

  • 此处下载Anaconda并安装
  • 可以根据这篇博客配置Anaconda的系统环境变量
  • 此时在命令行中使用conda命令,可能会报错powershell/cmd/其他终端未初始化,需要根据提示进行对应初始化
  • 使用conda create -n imagetcha python=3.9创建新的python环境
  • 使用conda activate imagetcha激活python环境,此时输入python与pip均指向新的环境

安装python依赖库

pip install -r requirement.txt

使用

python .\main_langchain.py

如何修改用户输入

在config文件中有各模块的config.json配置文件

xxx_declare代表该模块输出格式 system_template代表发送给ai的系统消息 human_template代表发送给ai的用户消息

input_config.json (主要需要修改的)

{
    "story": "三国,搞笑",
    "style": "始于黄巾起义的混乱时代,我叫摸鱼,是黄巾军的一员,也是一名墨家子弟,年龄16岁",
    "intro_declare": {
        "故事简介": "字符串格式,这是展示给玩家的故事简介与游戏目标",
        "角色设定": "数组格式,游戏中的npc角色设定,包括角色的名字、特征;不包含玩家所操控的角色",
        "数值系统": "数组格式,数值系统包括游戏中的数值名称、数值范围、数值含义,例如装备系统、官职系统等",
        "游戏通关所需条件": "字符串格式,游戏结束的条件,例如“成为了诸侯王”"
    },
    "system_template": "以如下格式输出可以被json.load读取的JSON字符串:{output_type}",
    "human_template": "我希望生成一个文字冒险游戏,以下是对游戏故事的要求:故事风格:{style},故事参考:{story}"
}

value_config.json

{
    "value_declare": "数组格式,数组中的元素为int,分别对应数值系统中的数值",
    "system_template": "以如下格式输出JSON:{output_type}",
    "human_template": "我正在生成一个文字游戏,我将输入游戏当前信息,需要你根据游戏当前信息生成玩家当前数值,如果当前玩家数值为空,则进行初始化;如果不为空,则根据已经发生的最后一个事件对数值进行修改,游戏信息:{intro};严禁输出除了数值数组之外的其他内容,输出示例:[100,50,1,1],你的输出为:"
}

event_config.json

{
    "event_declare": {
        "事件": "字符串格式,这是展示给玩家的,讲述了玩家当前遇到的事件,例如“0岁,你出生于颍川一个富贵之家...”。出现新的人物时需要在事件中对新的人物进行描写,并在当前角色设定中添加新的角色",
        "是否需要玩家选择下一步操作": "Boolean格式",
        "玩家可以做出的选择": "数组格式,玩家可以做出的有限个选择,如果不需要玩家做选择则返回空数组",
        "当前场景角色": "数组格式,游戏中的npc角色设定,包括角色的名字、特征",
        "当前场景数值系统": "数组格式,数值系统包括游戏中的数值名称、数值范围、数值含义,例如装备系统、官职系统等;允许由于故事的发展而添加新的数值",
        "游戏是否结束": "Boolean格式,游戏是否结束"
    },
    "system_template": "我正在生成一个文字冒险游戏,我将输入游戏当前信息与当前游戏的风格、简介,需要你根据游戏当前信息生成玩家接下来遇到的下一个事件,以如下格式输出JSON:{output_type},严格按照格式输出,不要输出除了json字符串之外的其他内容",
    "human_template": "游戏风格:{style},游戏参考:{story},当前信息:{intro}"
}

format_config.json

{
    "system_template": "将输入字符串转为可以使用json.load读取的字符串,格式如下{output_type},key值和value的类型以上述格式为准,不要输出除了json字符串之外的其他内容",
    "human_template": "{text}"
}

evaluate_config.json

{
    "evaluate_declare": {
        "事件": "字符串格式,这是展示给玩家的,讲述了玩家当前遇到的事件,例如“0岁,你出生于颍川一个富贵之家...”。出现新的人物时需要在事件中对新的人物进行描写,并在当前角色设定中添加新的角色",
        "是否需要玩家选择下一步操作": "Boolean格式",
        "玩家可以做出的选择": "数组格式,玩家可以做出的有限个选择,如果不需要玩家做选择则返回空数组",
        "当前场景角色": "数组格式,游戏中的npc角色设定,包括角色的名字、特征",
        "当前场景数值系统": "数组格式,数值系统包括游戏中的数值名称、数值范围、数值含义,例如装备系统、官职系统等;允许由于故事的发展而添加新的数值",
        "游戏是否结束": "Boolean格式,游戏是否结束"
    },
    "system_template": "我在生成一个文字冒险游戏,我在使用另一个gpt生成游戏的事件,需要你根据游戏当前信息对其生成内容进行检查与修改,保证生成内容没有逻辑错误,以如下格式输出JSON:{output_type},严禁输出其他内容,只输出json字符串",
    "human_template": "另一个gpt生成的内容:{event_for_now},严禁输出其他内容,只输出json字符串"
}

流程实例

python .\main_langchain.py
[选择]是否使用数据库中的记录:①新游戏 ②读取存档------1
[Model]Global_model has been created!
[Model]Database initialized!
[初始化]--------------------------初始化中--------------------------
[初始化]--------------------------GPT得到--------------------------
{
    "故事简介": "在混乱的黄巾起义时代,你扮演一名名叫摸鱼的黄巾军士兵,同时也是一名墨家子弟。你的目标是在这个乱世中生存 下去,并成为一名伟大的将领。这个故事将以搞笑的方式展现三国时期的历史事件和人物。",
    "角色设定": [
        {
            "名字": "摸鱼",
            "特征": "黄巾军士兵,墨家子弟,年龄16岁"
        },
        {
            "名字": "张角",
            "特征": "黄巾军领袖,号称“太平道天公将军”"
        },
        {
            "名字": "刘备",
            "特征": "蜀汉开国皇帝,号称“汉中王”"
        },
        {
            "名字": "关羽",
            "特征": "蜀汉五虎将之一,号称“关云长”"
        },
        {
            "名字": "张飞",
            "特征": "蜀汉五虎将之一,号称“万夫不当之勇”"
        },
        {
            "名字": "诸葛亮",
            "特征": "蜀汉丞相,号称“卧龙先生”"
        }
    ],
    "数值系统": [
        {
            "名称": "武力值",
            "范围": "0-100",
            "含义": "角色的战斗能力"
        },
        {
            "名称": "智力值",
            "范围": "0-100",
            "含义": "角色的智慧和谋略"
        },
        {
            "名称": "忠诚值",
            "范围": "0-100",
            "含义": "角色对主人的忠诚度"
        },
        {
            "名称": "声望值",
            "范围": "0-100",
            "含义": "角色在社会上的声望和地位"
        }
    ],
    "游戏通关所需条件": "成为了诸侯王"
}
[初始化]--------------------------json.loads得到--------------------------
{'故事简介': '在混乱的黄巾起义时代,你扮演一名名叫摸鱼的黄巾军士兵,同时也是一名墨家子弟。你的目标是在这个乱世中生存下去,并成为一名伟大的将领。这个故事将以搞笑的方式展现三国时期的历史事件和人物。', '角色设定': [{'名字': '摸鱼', '特征': '黄巾军士兵,墨家子弟,年龄16岁'}, {'名字': '张角', '特征': '黄巾军领袖,号称“太平道天公将军”'}, {'名字': '刘备', '特征': '蜀汉开国皇帝,号称“汉中王”'}, {'名字': '关羽', '特征': '蜀汉五虎将之一,号称“关云长”'}, {'名字': '张飞', '特征': '蜀汉五虎将之一,号称“万夫不当之勇”'}, {'名字': '诸葛亮', '特征': '蜀汉丞相,号称“卧龙先生”'}], '数值系统': [{'名称': '武力值', '范围': '0-100', '含义': '角色的战斗能力'}, {'名称': '智力值', '范围': '0-100', '含义': '角色的智慧和谋略'}, {'名称': '忠诚值', '范围': '0-100', '含义': '角色对主人的忠诚度'}, {'名称': '声望值', '范围': '0-100', '含义': '角色在社会上的声望和地位'}], '游戏通关所需条件': '成为了诸侯王'}
[数值]--------------------------修改数值中--------------------------
[数值]--------------------------GPT得到--------------------------
[50, 50, 50, 50]
[数值]--------------------------json.loads得到--------------------------
[50, 50, 50, 50]
[选择]是否在每次生成事件后进行优化诊断:①是 ②否------2
--------------------------生成事件中--------------------------
{'事件': '你正在黄巾军的营地里休息,突然听到外面传来了喊杀声。你走出帐篷,发现张角正在与一名蜀汉将领激战。你决定:', '是否需要玩家选择下一步操作': True, '玩家可以做出的选择': ['加入战斗,帮助张角', '趁机逃跑,寻找机会报信给上级', '观望,等 待战斗结束'], '当前场景角色': [{'名字': '摸鱼', '特征': '黄巾军士兵,墨家子弟,年龄16岁'}, {'名字': '张角', '特征': '黄 巾军领袖,号称“太平道天公将军”'}, {'名字': '刘备', '特征': '蜀汉开国皇帝,号称“汉中王”'}, {'名字': '关羽', '特征': '蜀汉五虎将之一,号称“关云长”'}, {'名字': '张飞', '特征': '蜀汉五虎将之一,号称“万夫不当之勇”'}, {'名字': '诸葛亮', '特征': '蜀汉丞相,号称“卧龙先生”'}], '当前场景数值系统': [{'名称': '武力值', '范围': '0-100', '含义': '角色的战斗能力'}, {'名称': '智力值', '范围': '0-100', '含义': '角色的智慧和谋略'}, {'名称': '忠诚值', '范围': '0-100', '含义': '角色对主人的忠诚 度'}, {'名称': '声望值', '范围': '0-100', '含义': '角色在社会上的声望和地位'}], '游戏是否结束': False}
格式错误,修复中
[修复]--------------------------修复格式中--------------------------
[修复]--------------------------GPT得到--------------------------
{"事件": "你正在黄巾军的营地里休息,突然听到外面传来了喊杀声。你走出帐篷,发现张角正在与一名蜀汉将领激战。你决定:", "是否需要玩家选择下一步操作": true, "玩家可以做出的选择": ["加入战斗,帮助张角", "趁机逃跑,寻找机会报信给上级", "观望,等 待战斗结束"], "当前场景角色": [{"名字": "摸鱼", "特征": "黄巾军士兵,墨家子弟,年龄16岁"}, {"名字": "张角", "特征": "黄 巾军领袖,号称“太平道天公将军”"}, {"名字": "刘备", "特征": "蜀汉开国皇帝,号称“汉中王”"}, {"名字": "关羽", "特征": "蜀汉五虎将之一,号称“关云长”"}, {"名字": "张飞", "特征": "蜀汉五虎将之一,号称“万夫不当之勇”"}, {"名字": "诸葛亮", "特征": "蜀汉丞相,号称“卧龙先生”"}], "当前场景数值系统": [{"名称": "武力值", "范围": "0-100", "含义": "角色的战斗能力"}, {"名称": "智力值", "范围": "0-100", "含义": "角色的智慧和谋略"}, {"名称": "忠诚值", "范围": "0-100", "含义": "角色对主人的忠诚 度"}, {"名称": "声望值", "范围": "0-100", "含义": "角色在社会上的声望和地位"}], "游戏是否结束": false}
[修复]--------------------------json.loads得到--------------------------
{'事件': '你正在黄巾军的营地里休息,突然听到外面传来了喊杀声。你走出帐篷,发现张角正在与一名蜀汉将领激战。你决定:', '是否需要玩家选择下一步操作': True, '玩家可以做出的选择': ['加入战斗,帮助张角', '趁机逃跑,寻找机会报信给上级', '观望,等 待战斗结束'], '当前场景角色': [{'名字': '摸鱼', '特征': '黄巾军士兵,墨家子弟,年龄16岁'}, {'名字': '张角', '特征': '黄 巾军领袖,号称“太平道天公将军”'}, {'名字': '刘备', '特征': '蜀汉开国皇帝,号称“汉中王”'}, {'名字': '关羽', '特征': '蜀汉五虎将之一,号称“关云长”'}, {'名字': '张飞', '特征': '蜀汉五虎将之一,号称“万夫不当之勇”'}, {'名字': '诸葛亮', '特征': '蜀汉丞相,号称“卧龙先生”'}], '当前场景数值系统': [{'名称': '武力值', '范围': '0-100', '含义': '角色的战斗能力'}, {'名称': '智力值', '范围': '0-100', '含义': '角色的智慧和谋略'}, {'名称': '忠诚值', '范围': '0-100', '含义': '角色对主人的忠诚 度'}, {'名称': '声望值', '范围': '0-100', '含义': '角色在社会上的声望和地位'}], '游戏是否结束': False}
{'事件': '你正在黄巾军的营地里休息,突然听到外面传来了喊杀声。你走出帐篷,发现张角正在与一名蜀汉将领激战。你决定:', '是否需要玩家选择下一步操作': True, '玩家可以做出的选择': ['加入战斗,帮助张角', '趁机逃跑,寻找机会报信给上级', '观望,等 待战斗结束'], '当前场景角色': [{'名字': '摸鱼', '特征': '黄巾军士兵,墨家子弟,年龄16岁'}, {'名字': '张角', '特征': '黄 巾军领袖,号称“太平道天公将军”'}, {'名字': '刘备', '特征': '蜀汉开国皇帝,号称“汉中王”'}, {'名字': '关羽', '特征': '蜀汉五虎将之一,号称“关云长”'}, {'名字': '张飞', '特征': '蜀汉五虎将之一,号称“万夫不当之勇”'}, {'名字': '诸葛亮', '特征': '蜀汉丞相,号称“卧龙先生”'}], '当前场景数值系统': [{'名称': '武力值', '范围': '0-100', '含义': '角色的战斗能力'}, {'名称': '智力值', '范围': '0-100', '含义': '角色的智慧和谋略'}, {'名称': '忠诚值', '范围': '0-100', '含义': '角色对主人的忠诚 度'}, {'名称': '声望值', '范围': '0-100', '含义': '角色在社会上的声望和地位'}], '游戏是否结束': False}
[数值]--------------------------修改数值中--------------------------
[数值]--------------------------GPT得到--------------------------
[50,50,50,50]
[数值]--------------------------json.loads得到--------------------------
[50, 50, 50, 50]
[玩家选择]当前事件:你正在黄巾军的营地里休息,突然听到外面传来了喊杀声。你走出帐篷,发现张角正在与一名蜀汉将领激战。你决定:
[玩家选择]可供选择的选项:1. 加入战斗,帮助张角 2. 趁机逃跑,寻找机会报信给上级 3. 观望,等待战斗结束
[玩家选择]请选择: