内搜索:

ChatGPT和巨大洞穴探险

布鲁斯通
2024年2月19日

 

像很多人一样, 布鲁斯通, 麦克卢尔学院和MITS校友, 我一直在尝试ChatGPT,并希望获得一些ChatGPT Pythonnewbb电子程序编程接口(API)的经验. Bruce希望使用Python程序与ChatGPT进行交互. 为此,他需要一个Python程序需要预测文本的理由.

 

这就是 巨大洞穴探险 进入画面. 这是一款可以追溯到1976年的基于文本的游戏,通常出现在Unix系统上. 它在Linux上是免费的, 布鲁斯知道他可以用另一种经典的Unix服务“xinetd”把它变成网络服务.xinetd的功能之一是能够将从标准输入读取并写入标准输出文件的程序转换为网络服务. 几乎所有命令行newbb电子程序都这样做. 通过配对 巨大洞穴探险 有了xinetd,这款经典的冒险游戏就可以通过网络甚至互联网来玩了.

 

下一步是编写一个Python脚本来连接到,并与之交换文本 巨大洞穴探险. 实际上,需要的是一个用Python编写的telnet客户端. 听起来工作量很大啊, 但它主要只是读取和写入文本到“套接字”,这有点像读写文件,但它是一个网络连接. Bruce促使ChatGPT编写这个脚本, 写一个Python脚本打开TCP套接字,发送和接收文本.生成的脚本会这样做,但只针对一个交易. 需要进一步提示:“修改脚本,以便在输入Control-C之前在循环中完成数据的发送和接收.进一步的提示让ChatGPT修改了脚本的结构, 将更多的东西分解成孤立的函数,并将硬编码的值移到变量中. 这是一个复杂的问题 巨大洞穴探险 每个包发送一封信, 因此,脚本需要实现自己的缓冲,而不是依赖操作系统或运行时环境来实现缓冲.

 

所有这些修改都是通过ChatGPT提示newbb电子的,但都在为下一步做准备, 这是要求ChatGPT在ChatGPT API中添加,以便脚本可以作为游戏和ChatGPT之间的中间人. 下一步是当脚本的工作是从游戏中获取文本并将其发送到ChatGPT,然后接受ChatGPT的响应并将其发送到游戏时. 通过这种方式,ChatGPT可以 这个游戏. ChatGPT交付了,将必要的调用插入到它自己的API.

 

此时此刻, 脚本变得足够大,继续要求ChatGPT进行更改变得很麻烦. 该脚本需要进行大量的微调和调试,才能解决两个系统之间的接口问题. 例如,ChatGPT喜欢使用完整的句子,但游戏希望使用两个单词的命令. ChatGPT uses mixed case and punctuation; 这个游戏 does not. 并且,作为即将出现的问题的标志,ChatGPT版本3.5喜欢忘记它最初的指令,并开始向游戏道歉,因为它发出了未知的命令. 那些道歉会, 当然, 也可以是未知命令, 这就导致了礼貌但毫无成效的沟通的无休止的循环.

 

这就把我们带到了Bruce所发现的最有趣的方面. 脚本必须管理对话的历史记录. 各种版本的ChatGPT都有一个有限的缓冲区大小. 后期版本比早期版本具有更大的缓冲区. 这意味着它们可以处理更长的对话历史,但它们都有限制. 而且,处理更大的会话消耗更多的“令牌”,成本更高. 在规模上,这些成本可能会变得很大.

 

在Python中,对话是一个字典列表. 考虑以下几点:

 

对话= [

            {“角色”:“系统”,“内容”:“你正在玩游戏冒险." },

            {"role": "system", "content": " command是一个字或两个字." },

            {"role": "user", "content": "WELCOME TO ADVENTURE ...." },

            {"role": "assistant", "content": "go north"}

]

 

“system”角色用于向ChatGPT提供指令. “user”角色是用户想要发送给ChatGPT的内容. 在这种情况下,游戏就是用户. ChatGPT回复的是“助理”角色. 当对话发生时, 您的程序可能会不断添加到这个列表中, 所以这个列表最终会比ChatGPT的缓冲区还要大. 然后,ChatGPT开始忽略部分对话. 您的脚本必须包含管理对话的内容. 你可能会, 例如, 把你的列表当作一个队列, 或者先进先出(FIFO)数据结构, 但这最终意味着你对ChatGPT的指示将从对话中删除. 管理列表的增长可能涉及不在会话中留下错误条件,因为它们可能对ChatGPT没有帮助. 您可能必须为每个事务重新组合会话,以便能够将对ChatGPT的指令保留为会话的一部分.

 

那么ChatGPT 3的最终效果是什么呢.5 .玩游戏 巨大洞穴探险? ChatGPT大部分时间只是在树林里闲逛,捡起和扔东西. 还记得, 它是一种预测性文本系统,并不会制定策略,甚至不会识别游戏中的目标. 这很像“无限猴定理”,这表明,一只猴子在键盘上敲击键盘无限时间,最终将打出莎士比亚的全部作品.

 

至于使用ChatGPT编写Python脚本,它是一个方便的工具. ChatGPT无法编写具有许多需求的大型程序. 它将更好地编写有针对性的函数来满足编写良好的提示符. 像程序员一样沟通得越好,ChatGPT就越有可能交付您想要的东西. 你如何学会像程序员一样交流? 你学习编程. 术语是可以教的. 如何从ChatGPT函数中组装更大的程序? 经验. 您需要自己编写程序,并了解如何最好地设计和集成相关逻辑. 这是你必须自学的东西,但它可以被指导.

 


麦克卢尔新兴通信技术学院致力于提供美国最好的学术课程 IT(信息技术),网络安全,游戏开发和 虚拟现实/增强现实 (VR / AR)行业. 我们的课程和证书涵盖了快速变化的信息网络行业的许多方面, 网络安全、资料私隐; 游戏开发,数字动画和学术方面 的电子竞技.