news 2026/3/4 18:26:10

这就是使用 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/3/4 5:48:17

MATLAB实现神经网络的模式识别

一、实验目的 理解 BP 神经网络的结构和原理&#xff0c;掌握反向传播算法对神经元的训练过程&#xff0c;了解反向传播公式。通过构建 BP 网络模式识别实例&#xff0c;熟悉 BP 网络的原理及结构。 二、实验原理 1. BP 神经网络概述 BP (Back Propagation) 神经网络是一种按…

作者头像 李华
网站建设 2026/3/2 23:38:11

17、在 Linux 系统中运行 Windows 程序及优化工作流

在 Linux 系统中运行 Windows 程序及优化工作流 1. 使用 Wine 在 Linux 中运行 Windows 程序 Wine 是一款可直接在 Linux 系统中运行 Windows 软件的工具,无需启动 Windows 系统。通过 Wine 安装的 Windows 程序会成为 Linux 系统中的常规程序。不过,并非所有 Windows 程序…

作者头像 李华
网站建设 2026/2/27 18:51:51

Kotaemon索引构建优化:FAISS vs HNSW性能对比

Kotaemon索引构建优化&#xff1a;FAISS vs HNSW性能对比 在当前大语言模型&#xff08;LLM&#xff09;广泛应用于智能问答、虚拟助手等场景的背景下&#xff0c;如何让生成内容既准确又可追溯&#xff0c;成为工程落地的关键挑战。尽管LLM具备强大的语言表达能力&#xff0c;…

作者头像 李华
网站建设 2026/3/4 22:40:13

Kotaemon在低资源环境下的轻量化改造方案

Kotaemon在低资源环境下的轻量化改造方案 在边缘计算和嵌入式AI应用日益普及的今天&#xff0c;越来越多企业希望将智能对话系统部署到低成本、低配置的硬件上——比如一台仅2GB内存的小型云服务器&#xff0c;甚至是一台树莓派。然而&#xff0c;现实却充满挑战&#xff1a;大…

作者头像 李华
网站建设 2026/3/4 14:49:55

16、企业 Linux 桌面迁移与后台基础设施搭建指南

企业 Linux 桌面迁移与后台基础设施搭建指南 在当今的 IT 环境中,企业从 Windows 系统迁移到 Linux 系统是一项具有战略意义的决策。这不仅涉及到操作系统的更换,还包括数据迁移、应用程序迁移以及后台基础设施的调整。本文将深入探讨企业 Linux 桌面迁移的相关问题,并分析…

作者头像 李华
网站建设 2026/3/3 17:56:34

19、数据迁移与备份:从 Windows 到 Linux 的全面指南

数据迁移与备份:从 Windows 到 Linux 的全面指南 在当今数字化的时代,将数据从一个平台迁移到另一个平台是许多企业和个人可能会面临的任务。无论是从 Windows 桌面迁移到 Linux 桌面,还是在不同的 Windows PC 之间移动数据,这都不是一件轻松的事情。本文将为你详细介绍从…

作者头像 李华