refactor world desc
This commit is contained in:
@@ -87,6 +87,13 @@ class ActionMixin:
|
||||
)
|
||||
continue
|
||||
# 再验证
|
||||
if not isinstance(plan.params, dict):
|
||||
get_logger().logger.warning(
|
||||
"非法参数: Avatar(name=%s) 动作 %s 参数类型错误: %s",
|
||||
self.name, plan.action_name, type(plan.params)
|
||||
)
|
||||
continue
|
||||
|
||||
params_for_can_start = filter_kwargs_for_callable(action.can_start, plan.params)
|
||||
can_start, reason = action.can_start(**params_for_can_start)
|
||||
if not can_start:
|
||||
|
||||
@@ -71,10 +71,13 @@ class MutualAction(DefineAction, LLMAction, ActualActionMixin, TargetingMixin):
|
||||
avatar_name_2: target_avatar.get_info(detailed=False),
|
||||
}
|
||||
|
||||
world_info = self.world.static_info
|
||||
|
||||
feedback_actions = self.FEEDBACK_ACTIONS
|
||||
desc = self.DESC
|
||||
action_name = self.ACTION_NAME
|
||||
return {
|
||||
"world_info": world_info,
|
||||
"avatar_infos": avatar_infos,
|
||||
"avatar_name_1": avatar_name_1,
|
||||
"avatar_name_2": avatar_name_2,
|
||||
|
||||
@@ -71,6 +71,7 @@ async def generate_nickname(avatar: "Avatar") -> Optional[dict]:
|
||||
# 准备模板参数
|
||||
template_path = CONFIG.paths.templates / "nickname.txt"
|
||||
infos = {
|
||||
"world_info": avatar.world.static_info,
|
||||
"avatar_info": expanded_info,
|
||||
}
|
||||
|
||||
|
||||
@@ -33,10 +33,12 @@ async def make_decision(
|
||||
|
||||
# 3. 调用 AI
|
||||
template_path = CONFIG.paths.templates / "single_choice.txt"
|
||||
world_info = avatar.world.static_info
|
||||
result = await call_llm_with_task_name(
|
||||
"single_choice",
|
||||
template_path,
|
||||
infos={
|
||||
"world_info": world_info,
|
||||
"avatar_infos": avatar_infos,
|
||||
"choices": full_choices_str
|
||||
}
|
||||
|
||||
@@ -65,11 +65,11 @@ class StoryTeller:
|
||||
"""构建模板渲染所需的数据字典"""
|
||||
|
||||
# 默认空关系列表
|
||||
possible_new_relations = []
|
||||
possible_cancel_relations = []
|
||||
avatar_name_1 = ""
|
||||
avatar_name_2 = ""
|
||||
|
||||
world_info = actors[0].world.static_info
|
||||
|
||||
# 如果有两个有效角色,计算可能的关系
|
||||
non_null = [a for a in actors if a is not None]
|
||||
if len(non_null) >= 2:
|
||||
@@ -77,6 +77,7 @@ class StoryTeller:
|
||||
avatar_name_2 = non_null[1].name
|
||||
|
||||
return {
|
||||
"world_info": world_info,
|
||||
"avatar_infos": avatar_infos,
|
||||
"avatar_name_1": avatar_name_1,
|
||||
"avatar_name_2": avatar_name_2,
|
||||
|
||||
@@ -33,7 +33,7 @@ class World():
|
||||
world_info = {**map_info, **static_info}
|
||||
|
||||
if self.current_phenomenon:
|
||||
world_info["天地灵机"] = f"【{self.current_phenomenon.name}】{self.current_phenomenon.desc}"
|
||||
world_info["当前天地灵机"] = f"【{self.current_phenomenon.name}】{self.current_phenomenon.desc}"
|
||||
|
||||
return world_info
|
||||
|
||||
@@ -45,16 +45,18 @@ class World():
|
||||
|
||||
@property
|
||||
def static_info(self) -> dict:
|
||||
desc = """这是一个诸多修士竞相修行的修仙世界。
|
||||
修仙的境界从弱到强:练气、筑基、金丹、元婴。每个境界分前期、中期、后期。境界间差距很大。
|
||||
寿元:每个角色均有寿元,超过寿元后容易老死。提升境界和某些宝物、丹药能提高寿元。
|
||||
死亡:HP降至0以下也会死亡。
|
||||
区域:不同区域有不同效果,在适当的区域做适当的事情事半功倍。
|
||||
修炼:修炼可以增加经验,直到到达突破前的瓶颈。突破是概率事件,突破后会进入下一个境界。
|
||||
灵根:决定了你与天地灵气的亲和度。在与自身灵根属性匹配的区域(如火灵根在火属性洞府)修炼,效率最高。
|
||||
天地灵机:世界每隔数年会有一次天象变动(如灵气潮汐),影响角色能力。
|
||||
灵石:修仙界的通用货币。可用于购买法宝丹药,通过采集、交易或掠夺获取。
|
||||
宗门:修士的庇护所。加入宗门可习得独门功法、获同门庇护;散修自由但资源匮乏。
|
||||
战斗:弱肉强食。境界压制极大,高境界者对低境界者有绝对优势。若对方死亡,胜者可掠夺败者财物。
|
||||
动作:你有一系列可以执行的动作。要注意动作的效果、限制条件、区域和时间。"""
|
||||
return {"世界描述": desc}
|
||||
desc = {
|
||||
"简介": "这是一个诸多修士竞相修行的修仙世界。",
|
||||
"境界": "修仙的境界从弱到强:练气、筑基、金丹、元婴。每个境界分前期、中期、后期。境界间差距很大。",
|
||||
"寿元": "每个角色均有寿元,超过寿元后容易老死。提升境界和某些宝物、丹药能提高寿元。",
|
||||
"死亡": "HP降至0以下也会死亡。",
|
||||
"区域": "不同区域有不同效果,在适当的区域做适当的事情事半功倍。",
|
||||
"修炼": "修炼可以增加经验,直到到达突破前的瓶颈。突破是概率事件,突破后会进入下一个境界。",
|
||||
"灵根": "决定了你与天地灵气的亲和度。在与自身灵根属性匹配的区域(如火灵根在火属性洞府)修炼,效率最高。",
|
||||
"天地灵机": "世界每隔数年会有一次天象变动(如灵气潮汐),影响角色能力。",
|
||||
"灵石": "修仙界的通用货币。可用于购买法宝丹药,通过采集、交易或掠夺获取。",
|
||||
"宗门": "修士的庇护所。加入宗门可习得独门功法、获同门庇护;散修自由但资源匮乏。",
|
||||
"战斗": "弱肉强食。境界压制极大,高境界者对低境界者有绝对优势。若对方死亡,胜者可掠夺败者财物。",
|
||||
"动作": "你有一系列可以执行的动作。要注意动作的效果、限制条件、区域和时间。"
|
||||
}
|
||||
return desc
|
||||
@@ -1,5 +1,8 @@
|
||||
你是一个决策者,这是一个仙侠世界,你负责来决定两个NPC的下一步行为。
|
||||
|
||||
世界背景:
|
||||
{world_info}
|
||||
|
||||
你需要进行决策的NPC的dict[AvatarName, info]为
|
||||
{avatar_infos}
|
||||
|
||||
|
||||
@@ -1,5 +1,8 @@
|
||||
你是一个仙侠世界的故事家,负责为修仙界人物起绰号。
|
||||
|
||||
世界背景:
|
||||
{world_info}
|
||||
|
||||
绰号是修仙界中对一个人物的评价和称谓,要求:
|
||||
1. 符合修仙世界观,具有仙侠风格
|
||||
2. 可以有多种不同角度,比如角色的性格、行为、事迹、关系、武器、长相、功法、宗门等
|
||||
|
||||
@@ -1,5 +1,8 @@
|
||||
你是一个决策者,这是一个修仙世界,你需要帮一个修仙者做一个决策。
|
||||
|
||||
世界背景:
|
||||
{world_info}
|
||||
|
||||
你需要进行决策的NPC的dict[AvatarName, info]为
|
||||
{avatar_infos}
|
||||
|
||||
|
||||
@@ -1,5 +1,8 @@
|
||||
你是一个小说家,这是一个仙侠世界,你需要把一个事件扩展为一个约200~500字的故事。
|
||||
|
||||
世界背景:
|
||||
{world_info}
|
||||
|
||||
你需要进行决策的NPC的dict[AvatarName, info]为
|
||||
{avatar_infos}
|
||||
|
||||
|
||||
@@ -1,5 +1,8 @@
|
||||
你是一个小说家,这是一个仙侠世界,你需要把一个事件扩展为一个约200~500字的故事。
|
||||
|
||||
世界背景:
|
||||
{world_info}
|
||||
|
||||
你需要进行决策的NPC的dict[AvatarName, info]为
|
||||
{avatar_infos}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user