gpt4 book ai didi

基于 Python 树的聊天机器人

转载 作者:太空宇宙 更新时间:2023-11-03 11:09:04 25 4
gpt4 key购买 nike

我正在使用 Python 开发基于文本的角色扮演游戏,但我被困在 NPC 上。我需要像树一样的东西。例如:

Bot: hello there.1. Hi, what's your name?2. Hi, Where do you live?> 2Player: Where do you live?Bot: That's a creepy question. Why do you ask?1. I was just curious.2. Never mind.3. Hide yo kids, hide yo wife> 1Player: I was just curious.Bot: Okay.1. Do you like cheese?2. Bye.> 1Player: Do you like cheese?Bot: Yes! I LOVE cheese.

您做出的每个选择都会分支到其他选择,A.K.A.如果用户对第一个问题的回答是“1”,则机器人会回答“我叫 Bob。你呢?”

我的游戏的设计方式使关卡编辑器成为可能的前景(您可以访问的每个地方都作为键存储在字典中,然后是一个包含所有内容的元组 [我有一个商店类,一个敌人类,“门户”类,很快就会是 NPC 类])。所以我希望以某种方式创建它,以便我可以将它全部保存在我的 NPC 类存储的变量中(而不是一堆“if”语句)

澄清一下,我并不是要别人为我编写代码,我只是不确定如何解决这个问题。


正是我需要的简短描述:

树状结构,以一个字符串开头,从它“分支”出许多字符串

这些字符串中的每一个都有更多的“分支”

这与元组的元组的区别在于,需要有一个字符串在它们分支的地方而不是立即拆分。

最佳答案

这与 decision tree 密切相关但玩家是做出选择的人,所以从 AI 的角度来看,这并不完全是一个。您可以自己定义一个具有这些的数据结构属性,虽然

class TreeNode:
def __init__(self,parent,children,overview_text,direction_text):
#... set the variables ...
# question_text is a string

def print_question(self):

print overview_text
for child in children:
print direction_text

# add some accessor methods
def add_child(self,child):
...

您的 NPC 然后可以通过特定的 TreeNode 跟踪他们的状态 - 称之为 current_question - 整个对话都在 TreeNodes 树中 - 称之为对话。

class NPC:
def __init__(self,dialogue):
#... set the variables ...
self.current_question = None

def converse(self):
#.... do some stuff....
self.current_question = users_choice;

这样您就可以根据需要中断对话。

请注意,TreeNode 可能用词不当,因为您可能希望对话代表一个图形而不仅仅是一棵树。例如,许多角色扮演游戏都有可以循环重复信息的对话路径。上面的数据结构无法做到这一点,因为 overview_text(概念上是节点的一部分)和 direction_text(概念上是边的一部分)被视为一个。

关于基于 Python 树的聊天机器人,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10574403/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com