news 2026/4/23 17:30:22

这就是使用 LLM 为怪物编程所教给我的关于编程的知识

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
这就是使用 LLM 为怪物编程所教给我的关于编程的知识

原文:towardsdatascience.com/here-is-what-using-an-llm-for-monsters-taught-me-about-programming-4ce44f5f4f14

教程

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/4df824c4f285648a130029943e8aeaa1.png

图片由 DALLE 提供。

感觉在编程方面有些生疏

我最近决定重新熟悉编程 Web 应用程序,目标是保持实际操作和相关性——特别是在具有挑战性的技术工作环境中。

我经常通过创建相对基本的 Web 应用程序来教自己各种编程概念,这些应用程序使用 API、数据库、库,并将它们组合成一个应用程序。

我发现,以这种方式创建应用程序,而不是严格练习乏味的 HackerRank 问题,不仅让我了解了技术生态系统中最新的概念,而且还建立了一个全新的项目组合(你可以在面试中讨论!)。

今天,事情有些不同

人工智能正在迅速改变软件开发的方式。

当一些影响者和媒体来源声称编程工作正在消失时,我相信情况正好相反。

我坚信,尽管人工智能将绝对提高我们创建应用程序的速度和效率,但它仍然会被人类开发者作为一个极其强大的工具所使用。

我认为了解如何在你的编程项目中使用人工智能非常重要。这正是我在构建一个简单的教程 Web 应用程序时试图做到的。

一个怪物创建数据库

我的目的是创建一个简单的 Web 应用程序,它会显示一个怪物表格,包括它们的名称、描述、健康、攻击和防御点。

每个怪物都可以通过点击怪物的名称并在网页内更改相关数据来在线编辑。一个保存和一个删除按钮将更新怪物或将其从数据库中删除。

数据将存储在本地 Sqlite 数据库中,这使得它易于共享且自包含。这也消除了注册第三方服务以托管数据库的需求。

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/5b1a707ddb0e9a14550244b6d9bd1ac8.png

怪物收集器是一个简单的 Web 应用程序,用于创建 AI 生成的怪物的数据库。来源:作者。

需要一些更神奇的东西

到目前为止,所有这些都可能听起来很平凡(然而,对于潜在的雇主来说,这非常有价值)。尽管如此,我还需要一些更现代的东西来让教程体验更加生动。

这就是人工智能发挥作用的地方!

在过去的几年里,我通常会随机生成要存储在数据库中的每个数据点。这为显示的数据的初始种群播种。

Random rand=new Random();for(inti=0;i<10;i++){//Generate a random number between0and100.intnumber=rand.Next(0,100);}

然而,我们正处于一场人工智能革命中!

我们可以告别随机数生成器,转而使用大型语言模型(LLM)!

再见,随机数。你好,AI

我不想从头开始训练一个 LLM,甚至将整个模型导入我的应用中,而是想调用一个网络服务 API,比如 ChatGPT。

使用 LLM 网络 API 服务更现实,尤其是在商业领域。大多数企业不训练自己的模型,但仍然想利用 AI 技术。

这正是使 AI 网络服务如此受欢迎的原因。

我决定将 Cohere 集成到我的网络应用程序中,并使用其文本生成服务,这与 ChatGPT 非常相似,用于为数据库生成创意怪物。

为创建怪物进行提示词工程

将 LLM 整合的第一步是构思一个提示词

提示词只是一串文本,比如一个问题、陈述或任务,就像你会问 ChatGPT 一样。

“为地牢游戏中的恐怖怪物生成一个独特的创意怪物名称和描述。描述不应超过一句话。名称应包含三个或更少的单词,并且要具有创意和独特性。以以下格式输出结果:名称,描述。名称和描述必须由逗号分隔。

怪物的类型应该是 {monster.Name}。

{customPrompt}

怪物的名称不能包含以下任何名称。

我要求 LLM 生成一个创意怪物名称和描述。

提示词指定描述的长度应限制为一句话,这样更容易存储在数据库中并在 UI 中进行操作。

我还要求输出非常具体的名称,描述,用逗号分隔。这样,程序就可以解析 LLM 的输出并将其存储到我的应用程序和数据库表中的怪物对象中。

我们应该创建哪种类型的怪物?

虽然 LLM 会自己创建怪物,但我的应用程序指定的一部分是怪物的“类型”。

MonsterTypes=new(){"Dragon","Goblin","Troll","Ogre","Demon"}

以这种方式,我们为 LLM 提供了一种起点,以便从中生成怪物。提示词中有一个占位符,用于插入怪物的类型。

我还包含了一个已生成的怪物名称列表,这样 LLM 就可以避免创建我们已经见过的怪物。这些名称被附加到提示词的末尾。

最迷人的功能

我构思的提示词已经足够强大。

然而,我想知道如果我的应用程序的用户能够改变怪物的类型本身,那会多么有趣。为此,我可以在提示词中简单地包含一个“自定义”部分的占位符。

这就是应用程序中最迷人的功能之一被设计出来的地方。

随机数据的无限可能性

自定义提示词是网络应用程序的用户可以添加到提示词中的文本,以便进一步自定义创建的怪物类型。

例如,我们已经在指定怪物类型。然而,最终用户可以非常具有创意。他们可以包括诸如怪物应该像云一样覆盖着彩虹,并且吹奏美妙的音乐等细节!

有紫色绷带和脾气暴躁的哥布林,其留下的痕迹是压碎的骨头和破碎的梦想。

在为 LLM 制定详细的提示后,魔法就开始发挥作用。让我们把这些都结合起来。

初始化数据库

第一步是将初始怪物列表填充到数据库中。

每个怪物都由 LLM 创建。为此,我首先配置了一个依赖注入服务来调用Cohere AI服务并生成怪物。

new DatabaseInitializer(app.Services.GetRequiredService<LLM>(),app.Services.GetRequiredService<MonsterFactory>()).InitializeDatabase();

上述代码初始化了 MonsterFactory 类以及我们的 LLM,由 Cohere 提供支持。然后程序初始化数据库。

创建初始批次的怪物

使用.NET Entity Framework 中的数据库上下文和保存我们生成的每个怪物来初始化数据库中的起始怪物列表。

using var context=new DatabaseContext();List<string>existingNames=[];//Generate monsters.var monsters=new List<Monster>();for(inti=0;i<10;i++){var monster=monsterFactory.Create(existingNames);monsters.Add(monster);//Prevent duplicate names.existingNames.Add(monster.Name);}//Add the monsters to the database.context.Monsters.AddRange(monsters);context.SaveChanges();

使数据生动起来

当 LLM 被调用并使用我们的神奇提示生成每个创意怪物时,真正的魔法就开始了。

//Call the LLM.output=Llm.GetTextAsync(prompt,ignoreNames).GetAwaiter().GetResult();//Parse the outputfor"name, description".if(outputisnotnull){var parts=output.Split(",",2);monster.Name=parts[0];monster.Description=parts[1];Console.WriteLine($"Created {monster.Name}, {monster.Description}");}

我们设置了怪物的名称和描述属性,这些属性是从 LLM 的输出中解析出来的。然后,我们将这些数据保存到数据库中。

允许用户按需创建怪物

为了使程序对用户更加互动,以及为了在应用程序中提供更有趣的讨论内容,我在用户界面中包含了一个 Add按钮。

添加按钮允许用户按需生成新的怪物,这也会被保存到数据库中。

当然,这就是我们包含自定义提示的地方。

[HttpPost()]public IActionResult CreateMonster(CreateModel model){//Load the exiting names of monsters.var names=MonsterManager.Names();//Generate a new monsterwitha user-specified prompt.var monster=monsterFactory.Create(names,model.Prompt);//Save the monster.MonsterManager.Update(monster);returnnew JsonResult(monster);}

通过 MonsterController 实现用户创建新怪物的支持。这是一个网络服务方法,可以从 UI 中调用。

在生成新怪物后,我们将其保存到数据库中,就像我们在初始化初始数据时做的那样。

我学到了什么?

我已经编程很多年了。

我非常喜欢创建教程应用程序,这些应用程序展示了各种软件概念或以新颖的方式集成服务。这既让我对最新的软件概念有了更深入的了解,也提升了我的简历

在我的教程应用程序中使用 AI 教会了我如何利用简单的想法,如为数据库生成随机数据,来发挥乐趣和力量。

从随机数据转向 AI

与使用随机数字或一系列的if-then条件来创建数据相比,我发现 LLM 的力量让我能够描绘出一个更加富有创意的画面,使应用程序生动起来。

更重要的是,使用 LLM 网络 API 服务教会了我如何轻松地调用强大的 AI 服务并将其集成到我的程序中。

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/2e90d0fddee72aa555ea27f6f1daead4.png

图片由Tima Miroshnichenko拍摄。

扩展求职面试的技能组合

作为了解新技术的一个额外奖励,这次经历也可以成为一次令人惊叹的谈话开场白,在技术工作面试中,甚至可以是一次完整的架构讨论。

没有比讨论你真正喜欢创建的项目更简单的面试类型了。我发现,在教程程序中集成先进的技术,如 AI 和 LLMs,是一个极好的学习机会。

让你的应用程序栩栩如生

当然,我学到的最重要的事情是与 AI 一起工作是多么有趣

将 AI 集成到我的应用程序中,即使是一个基本的教程,也像是从用灰度画图转变为使用纯粹的奇妙色彩

经验让我看到了使用 AI 的乐趣。它也表明,这不需要是一个复杂的任务,任何人都可以做到!所以,大胆地去画你的画吧。

我强烈推荐你尝试一下!

你可以从这里下载这个故事完整的源代码。

关于作者

如果你喜欢这篇文章,请考虑关注我的Medium、Twitter和我的网站,以便接收我的未来文章和研究工作的通知。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/23 10:56:34

文科论文写作全流程指南(含核心要点与实操方法)​

文科论文作为人文社会科学领域学术表达的核心载体&#xff0c;其写作并非随性的文字堆砌&#xff0c;而是遵循 “逻辑递进、论据支撑、思想提炼” 的系统性工程。从选题立意到最终定稿&#xff0c;每一个环节都直接影响论文的学术价值与表达效果。本文将以 3000 字左右的篇幅&a…

作者头像 李华
网站建设 2026/4/23 10:51:29

Kotaemon支持灰度发布新版本问答逻辑吗?

Kotaemon 支持灰度发布新版本问答逻辑吗&#xff1f; 在企业级 AI 系统的落地过程中&#xff0c;一个常见的挑战是&#xff1a;如何在不中断服务的前提下&#xff0c;安全地验证和上线新的问答逻辑&#xff1f;尤其是在金融、医疗或客服这类高敏感场景中&#xff0c;一次错误的…

作者头像 李华
网站建设 2026/4/23 10:51:30

20、Linux系统更新与安全保障全解析

Linux系统更新与安全保障全解析 1. 滚动发布与标准发布的对比 在Linux世界中,存在两种不同的发布模式:滚动发布和标准发布。这两种模式各有特点,对用户的系统管理方式和体验有着显著影响。 标准Linux发行版在固定的时间内得到支持,在此期间会不断获得更新。一旦支持期限…

作者头像 李华
网站建设 2026/4/23 10:50:45

165页满分PPT | 某商贸企业数字化蓝图整体规划方案

商贸企业在日常运营中&#xff0c;普遍面临着数据孤岛的严峻挑战。具体表现为库存信息、价格体系、会员数据、供应商资料等各自独立管理&#xff0c;缺乏有效整合与协同。这种状况直接导致了一系列经营困境&#xff1a;门店层面缺货与积压现象并存&#xff0c;促销活动与返利计…

作者头像 李华
网站建设 2026/4/23 10:51:26

高质量AI底座助推产业数智化,北电数智星火・大平台落地全国

日前&#xff0c;中国人民大学校友企业家联谊会代表团在会长张建明书记带队下到访北电数智。双方围绕数字经济与人工智能赋能产学研一体化展开深入交流&#xff0c;实地参观首个“星火大平台”标杆项目——星火761北京数字经济算力中心&#xff0c;充分了解了其设计理念、核心能…

作者头像 李华
网站建设 2026/4/23 10:52:41

Kotaemon能否实现自动摘要与关键信息提取?

Kotaemon能否实现自动摘要与关键信息提取&#xff1f; 在企业知识管理日益复杂的今天&#xff0c;一个典型场景是&#xff1a;法务人员需要在30分钟内审完一份80页的并购合同&#xff0c;找出所有关键责任条款&#xff1b;客服主管希望从上千条客户反馈中快速提炼出共性问题。…

作者头像 李华