非常有趣的AI应用-用大语言模型来玩星际争霸2(附代码链接)

本文主要是介绍非常有趣的AI应用-用大语言模型来玩星际争霸2(附代码链接),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

非常有趣的AI应用-用大语言模型来玩星际争霸2(附代码链接)

偶然看到的,比较有意思,分享一下:

GitHub地址:Large-Language-Models-play-StarCraftII
arxiv:Large Language Models Play StarCraft II…

1、简介

偶然看到的一个使用大语言模型LLM来玩星际争霸2的应用,作为一个星际争霸的十年老粉,我直接狂喜,来简单试验一下,在此分享给大家。

先简单介绍一下这是如何实现的,从直觉上来讲,就是把游戏信息以文字的形式发送给大语言模型(通过api接口),然后完全根据大语言模型(GPT 3.5)反馈的建议进行决策
在这里插入图片描述
简单分析一下这样的优势,大语言模型在全局决策上更具备优势,能够理解游戏的不同进程并给出不同阶段应该做什么的建议。此外,大语言模型能够根据对方的兵种给出克制出兵(检测到蟑螂就出不朽者等等),主动的去侦察等等。如果大家对星际争霸的AI有所了解的话,当时暴捶职业选手的AlphaStar玩的神族就是单纯的操作怪,只会闪追自曝球,完全是靠蛮力操作取胜,不具备大局观什么的。

这样做也有劣势,由于完全依赖大语言模型进行决策,agent会极大的丧失游戏的细节,比如说部队操作的细节、农民挖矿的分配(超过16个农民挖晶体矿)等等,更好的方式无疑是将强化学习RL和大语言模型LLM结合。此外,该github代码的实现上,会频繁的和LLM模型交互,在交互的等待过程中,游戏的进程是暂停的,大家可以想象一下自己玩GPT的场景,我信息发过去还得等对面生成半天呢。因此,LLM玩一次游戏的实时性较差,需要三四个小时左右的时间,非常慢。

2、windows部署教程

2.1 anaconda环境创建

作者也给出了自己的教程,但是好像是在linux环境下的,requirement里面有些东西我pip安装不了,因此在此给出我自己的实践过程,我的系统是window11+4070。
首先用anaconda创建一个环境,py版本用3.10:
在这里插入图片描述
用pycharm打开工程,选择刚刚创建的环境作为解释器:
在这里插入图片描述
从conda中打开刚才创建的环境的终端,cd到工程的目录,使用pip install -r requirements.txt进行依赖的安装:
在这里插入图片描述
原来的requirements.txt有一些linux的包,安装会报错,非常建议使用下面我的requirements.txt来在window下安装,文件放在文章最后的附录。

2.2 星际争霸2下载

暴雪跑路了,星际争霸下载要科学上网,参考如何下载战网国际服丨简单教程丨魔兽世界亚服丨守望先锋2亚服丨炉石传说亚服

如果战网下载卡45%,需要清注册表+改地址,参考
https://www.bilibili.com/read/cv26026102/
https://www.bilibili.com/read/cv22398822/

然后把下载下来的工程文件里面maps里面的地图复制到星际争霸的主目录,如果星际争霸的主目录没有Maps文件夹就创建一个:
在这里插入图片描述
在这里插入图片描述
弄完最后打开星际争霸看看能不能玩,打开需要加速器,我用的雷神加速器

2.3 运行前的修改

我们运行test_the_env.py就够了,里面的多线程是一下子开好多游戏,对单局游戏没有加速作用。而且由于要和chatgpt交互,要用api,5美元一把游戏都不够用的,同时开两把也太奢侈了。

原来的代码有两处需要改动,否则无法运行
其一是wandb.login(key=‘your key’),key要用自己的wandb账号的,我已经在自己电脑上登录过了,这句话也可以注释掉的。

def gpt_agent_test(agent, env):wandb.login(key='your key')config = {"LLM_model_name": "gpt-3.5-turbo","LLM_temperature": 0,"action_interval": 10,"request_delay": 0.2,"chunk_window": 5,"action_window": 10,"action_mix_rate": 0.5,"last_k": 5,}

另外就是要设置自己的gpt的api和base,这个比较麻烦了,由于我是穷学生外加原来的openai送的18美元过期了,只能淘宝买了。

    """You need to set your model_name,api_key,api_base,temperature,"""LLM_model_name = "gpt-3.5-turbo-16k"LLM_temperature = 0LLM_api_key = ""LLM_api_base = ""

推荐下面的链接,淘宝店铺名字Ai数码店(和我没关系,5美元的中转3.5api就行,不限次数,3块钱人民币就能用了):

【淘宝】https://m.tb.cn/h.5KVoHSq?tk=jYvgW7q7dum CZ3457 「3.5 4.0 api key 5刀 120刀 全新未使用 独享 国内 apikey秘钥」
点击链接直接打开 或者 淘宝搜索直接打开

买其他API一定要注意,5美元的额度买起来要慎重,可能是免费的,每天只能发200个消息,这样一局都打不完

如果使用我推荐的淘宝店铺(淘宝店家会给使用教程:https://oneapi.xty.app/),api的base需要小小修改一下
在这里插入图片描述
例如(这个key没额度了,大家不用手敲白嫖哦):
在这里插入图片描述
如果使用官方买的api,base就是默认的,如:
在这里插入图片描述

2.4 运行的tips

第一次运行会从外面下载东西,注意科学上网

如果用的是openai官方api,注意全程代理打开

如果用的国内中转,如上面我推荐的,运行的时候(除第一次)不用科学上网。

推荐国内中转,速度快一点,游戏玩的也稍微快一点

我的游戏回放在C:\Users\24762\Documents\StarCraft II\Replays\Multiplayer,好像一局游戏玩结束才会有回放,中途退出啥也没有,建议要中途退出之前保存(save)一下。

3、实战效果

打的艰难电脑,打输了(我钻石水平可以血虐作弊三电脑)。主要还是细节太差了,追农民到别人家送了一波兵,不然还能赢的,科技攀的也慢,感觉需要给CHAT GPT手动调教下才行:

CSDN的链接上传视频好慢,稍等哦:

非常有趣的AI应用-用大语言模型来玩星际争霸2-实战效果

LLM大概两秒钟就要指导一次:
在这里插入图片描述

看看LLM是如何评价要输了的:

星际争霸2游戏分析\ 1游戏概述:在11点07分的比赛时间,我们的现状是具有挑战性的。我们有33名工人,185种矿物,2206种天然气。我们的补给上限是47,剩下10,我们的军队补给是2。我们有一个Nexus,四个电塔,四个气体建筑,八个曲速门,一个控制论核心,和一个机器人设施。当前游戏阶段:基于游戏时间和资源可用性,我们处于游戏中期阶段。3.1单位和建筑:我们有一个有限的军队,由33个探测器和1个潜行者组成。我们的基础设施包括重要的建筑,如Nexus,塔塔和曲速之门,但我们缺乏多样性的单位组成和先进的科技结构。3.2经济:我们的天然气储量丰富,但我们的矿产数量很低。工人供给也相对较低,影响了我们的资源收集率。3.3科技:我们已经完成了星门的研究,但没有证据表明有先进的科技单位或进一步的研究。缺乏先进的技术结构限制了我们的战略选择和单位的多样性。我们的战略:我们目前的战略似乎集中在基本的军队组成和有限的技术发展上。这可能使我们容易受到更多样化的敌人力量和先进战略的攻击。敌人的策略:敌人有混合的虫族单位,包括异形,督军,小狗,蟑螂和刺蛇。这表明了多样化和潜在强大的军队组成,表明了游戏中期单位多样性和潜在空中优势的重点。关键信息:目前最关键的方面是我们有限的单位组成和技术多样性。我们未来的成功取决于我们如何设法迅速使我们的军队和技术能力多样化,以对抗敌人的多样化力量。我们的战略:我们应该把重点放在快速多样化我们的军队组成和技术能力上,以对抗敌人的多样化力量。优先发展防空能力。单位和建筑:考虑到敌人的多样化单位构成,使我们的军队多样化是至关重要的。考虑训练防空单位和建造额外的科技结构来解锁更先进的单位。经济:专注于增加矿物收集,以支持不同单位和科技结构的生产。考虑扩展到新的资源位置来促进这一点。\n\n4。技术:当前的任务是建造额外的技术结构,如机器人湾或星门,以解锁更高级的单位。研究防空能力也应该是一个优先事项。这一修订后的战略应有助于解决当前的限制,并使我们更好地为即将到来的挑战做好准备。\n\n决策:\n0:建造星门\n1:训练凤凰\n2:建造机器人\n3:研究PHOENIXRANGEUPGRADE\n4: CHRONOBOOST CYBERNETICSCORE"]

附录requirements.txt

# This file may be used to create an environment using:
# $ conda create --name <env> --file <this file>
# platform: win-64
addict==2.4.0
aiohttp==3.8.5
aiosignal==1.3.1
aliyun-python-sdk-core==2.14.0
aliyun-python-sdk-kms==2.16.2
annotated-types==0.6.0
anyio==3.7.1
appdirs==1.4.4
async-timeout==4.0.3
attrs==23.1.0
backoff==2.2.1
bcrypt==4.0.1
brotli==1.1.0
burnysc2==6.5.0
# bzip2==1.0.8
# ca-certificates==2023.05.30
certifi==2023.7.22
cffi==1.15.1
charset-normalizer==3.2.0
chroma-hnswlib==0.7.3
chromadb==0.4.13
click==8.1.7
cloudpickle==2.2.1
colorama==0.4.6
coloredlogs==15.0.1
contourpy==1.2.0
crcmod==1.7
cryptography==41.0.5
cssselect2==0.7.0
cycler==0.12.1
datasets==2.13.0
dill==0.3.6
docker-pycreds==0.4.0
einops==0.7.0
et-xmlfile==1.1.0
exceptiongroup==1.1.3
fastapi==0.103.2
filelock==3.12.4
flatbuffers==23.5.26
fonttools==4.44.0
frozenlist==1.4.0
fsspec==2023.9.2
gast==0.5.4
gevent==23.7.0
gitdb==4.0.10
gitpython==3.1.32
greenlet==2.0.2
gym==0.26.2
gym-notices==0.0.8
h11==0.14.0
html5lib==1.1
httptools==0.6.0
huggingface-hub==0.17.3
humanfriendly==10.0
idna==3.4
importlib-metadata==6.8.0
importlib-resources==6.1.0
jinja2==3.1.2
jmespath==0.10.0
joblib==1.3.2
kiwisolver==1.4.5
# libffi==3.4.4
loguru==0.6.0
markdown2==2.4.10
markupsafe==2.1.3
matplotlib==3.8.1
modelscope==1.9.4
monotonic==1.6
mpmath==1.3.0
mpyq==0.2.5
multidict==6.0.4
multiprocess==0.70.14
nest-asyncio==1.5.7
networkx==3.1
nltk==3.8.1
numpy==1.26.2
onnxruntime==1.16.0
openai==0.27.9
openpyxl==3.1.2
# openssl==1.1.1v
oss2==2.18.3
overrides==7.4.0
packaging==23.2
pandas==2.1.2
pango==0.0.1
pathtools==0.1.2
pillow==10.0.1
# pip==23.2.1
platformdirs==3.11.0
portpicker==1.6.0
posthog==3.0.2
protobuf==3.20.3
psutil==5.9.5
pulsar-client==3.3.0
pyarrow==14.0.0
pycparser==2.21
pycryptodome==3.19.0
pydantic==2.4.2
pydantic-core==2.10.1
pydyf==0.8.0
pyparsing==3.1.1
pyphen==0.14.0
pypika==0.48.9
pyreadline3==3.4.1
# python==3.10.0
python-dateutil==2.8.2
python-dotenv==1.0.0
pytz==2023.3.post1
pyyaml==6.0.1
regex==2023.10.3
requests==2.31.0
s2clientprotocol==5.0.11.90870.0
safetensors==0.4.0
sc2reader==1.8.0
scikit-learn==1.3.1
scipy==1.11.2
seaborn==0.13.0
sentence-transformers==2.2.2
sentencepiece==0.1.99
sentry-sdk==1.29.2
setproctitle==1.3.2
setuptools==68.0.0
simplejson==3.19.2
six==1.16.0
smmap==5.0.0
sniffio==1.3.0
sortedcontainers==2.4.0
# sqlite==3.41.2
starlette==0.27.0
sympy==1.12
threadpoolctl==3.2.0
tinycss2==1.2.1
# tk==8.6.12
tokenizers==0.14.1
tomli==2.0.1
torch==2.1.0
torchvision==0.16.0
tqdm==4.66.1
transformers==4.34.0
typer==0.9.0
typing-extensions==4.8.0
tzdata==2023.3
urllib3==2.0.4
uvicorn==0.23.2
# vc==14.2
# vs2015_runtime==14.27.29016
wandb==0.15.9
watchfiles==0.20.0
weasyprint==60.1
webencodings==0.5.1
websocket==0.2.1
websockets==11.0.3
wheel==0.38.4
win32-setctime==1.1.0
xlsxwriter==3.1.9
xxhash==3.4.1
# xz==5.4.2
yapf==0.40.2
yarl==1.9.2
zipp==3.17.0
# zlib==1.2.13
zope-event==5.0
zope-interface==6.0
zopfli==0.2.3

这篇关于非常有趣的AI应用-用大语言模型来玩星际争霸2(附代码链接)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/749734

相关文章

Ilya-AI分享的他在OpenAI学习到的15个提示工程技巧

Ilya(不是本人,claude AI)在社交媒体上分享了他在OpenAI学习到的15个Prompt撰写技巧。 以下是详细的内容: 提示精确化:在编写提示时,力求表达清晰准确。清楚地阐述任务需求和概念定义至关重要。例:不用"分析文本",而用"判断这段话的情感倾向:积极、消极还是中性"。 快速迭代:善于快速连续调整提示。熟练的提示工程师能够灵活地进行多轮优化。例:从"总结文章"到"用

AI绘图怎么变现?想做点副业的小白必看!

在科技飞速发展的今天,AI绘图作为一种新兴技术,不仅改变了艺术创作的方式,也为创作者提供了多种变现途径。本文将详细探讨几种常见的AI绘图变现方式,帮助创作者更好地利用这一技术实现经济收益。 更多实操教程和AI绘画工具,可以扫描下方,免费获取 定制服务:个性化的创意商机 个性化定制 AI绘图技术能够根据用户需求生成个性化的头像、壁纸、插画等作品。例如,姓氏头像在电商平台上非常受欢迎,

大模型研发全揭秘:客服工单数据标注的完整攻略

在人工智能(AI)领域,数据标注是模型训练过程中至关重要的一步。无论你是新手还是有经验的从业者,掌握数据标注的技术细节和常见问题的解决方案都能为你的AI项目增添不少价值。在电信运营商的客服系统中,工单数据是客户问题和解决方案的重要记录。通过对这些工单数据进行有效标注,不仅能够帮助提升客服自动化系统的智能化水平,还能优化客户服务流程,提高客户满意度。本文将详细介绍如何在电信运营商客服工单的背景下进行

中文分词jieba库的使用与实景应用(一)

知识星球:https://articles.zsxq.com/id_fxvgc803qmr2.html 目录 一.定义: 精确模式(默认模式): 全模式: 搜索引擎模式: paddle 模式(基于深度学习的分词模式): 二 自定义词典 三.文本解析   调整词出现的频率 四. 关键词提取 A. 基于TF-IDF算法的关键词提取 B. 基于TextRank算法的关键词提取

水位雨量在线监测系统概述及应用介绍

在当今社会,随着科技的飞速发展,各种智能监测系统已成为保障公共安全、促进资源管理和环境保护的重要工具。其中,水位雨量在线监测系统作为自然灾害预警、水资源管理及水利工程运行的关键技术,其重要性不言而喻。 一、水位雨量在线监测系统的基本原理 水位雨量在线监测系统主要由数据采集单元、数据传输网络、数据处理中心及用户终端四大部分构成,形成了一个完整的闭环系统。 数据采集单元:这是系统的“眼睛”,

从去中心化到智能化:Web3如何与AI共同塑造数字生态

在数字时代的演进中,Web3和人工智能(AI)正成为塑造未来互联网的两大核心力量。Web3的去中心化理念与AI的智能化技术,正相互交织,共同推动数字生态的变革。本文将探讨Web3与AI的融合如何改变数字世界,并展望这一新兴组合如何重塑我们的在线体验。 Web3的去中心化愿景 Web3代表了互联网的第三代发展,它基于去中心化的区块链技术,旨在创建一个开放、透明且用户主导的数字生态。不同于传统

AI一键生成 PPT

AI一键生成 PPT 操作步骤 作为一名打工人,是不是经常需要制作各种PPT来分享我的生活和想法。但是,你们知道,有时候灵感来了,时间却不够用了!😩直到我发现了Kimi AI——一个能够自动生成PPT的神奇助手!🌟 什么是Kimi? 一款月之暗面科技有限公司开发的AI办公工具,帮助用户快速生成高质量的演示文稿。 无论你是职场人士、学生还是教师,Kimi都能够为你的办公文

csu 1446 Problem J Modified LCS (扩展欧几里得算法的简单应用)

这是一道扩展欧几里得算法的简单应用题,这题是在湖南多校训练赛中队友ac的一道题,在比赛之后请教了队友,然后自己把它a掉 这也是自己独自做扩展欧几里得算法的题目 题意:把题意转变下就变成了:求d1*x - d2*y = f2 - f1的解,很明显用exgcd来解 下面介绍一下exgcd的一些知识点:求ax + by = c的解 一、首先求ax + by = gcd(a,b)的解 这个

Andrej Karpathy最新采访:认知核心模型10亿参数就够了,AI会打破教育不公的僵局

夕小瑶科技说 原创  作者 | 海野 AI圈子的红人,AI大神Andrej Karpathy,曾是OpenAI联合创始人之一,特斯拉AI总监。上一次的动态是官宣创办一家名为 Eureka Labs 的人工智能+教育公司 ,宣布将长期致力于AI原生教育。 近日,Andrej Karpathy接受了No Priors(投资博客)的采访,与硅谷知名投资人 Sara Guo 和 Elad G

hdu1394(线段树点更新的应用)

题意:求一个序列经过一定的操作得到的序列的最小逆序数 这题会用到逆序数的一个性质,在0到n-1这些数字组成的乱序排列,将第一个数字A移到最后一位,得到的逆序数为res-a+(n-a-1) 知道上面的知识点后,可以用暴力来解 代码如下: #include<iostream>#include<algorithm>#include<cstring>#include<stack>#in