在这次博客里,我希望能做两件事。
- 分享关于AI增强型开发流程的好处的见解
- 简述如何在本地机器上运行大型语言模型(LLM)
直接跳到“如何在我自己的本地托管AI聊天代理”部分,如果你只想知道如何托管你自己的语言模型。
此处省略了部分内容
但是,在我开始之前,我要坦白一下。直到最近一段时间,我其实对生成式人工智能技术并没有太大的信心。
我用过来自OpenAI、Google、Microsoft、Amazon以及许多较小且不太出名的聊天机器人、图像生成器,甚至视频生成器的工具。
而且我还是不相信!
但是,作为一个对科技充满热情的技术爱好者、开发者和追求新技术的人,我就像飞蛾对火焰一样,总是忍不住回到人工智能的世界,无论我之前多少次被失望和不满所伤。
但最近,在使用Ollama App在我的本地机器上运行大模型进行了一番研究后,我可能终于信服了。
我可能终于看到了那条所谓的生成式人工智能的隧道尽头的一线光明。
一个不愿接受AI的怀疑论者的生活这几个月来,我一直在努力找寻真正能用到生成式人工智能技术的实际场景。
我修过深度学习的课程,还办过帮助开发者使用生成式AI的活动,但不知为什么,我对AI的状态和它的发展方向总是有点失望。
但正如我上面所分享的,我还没有放弃希望。我想,Llama,Meta开源的人工智能模型,可能终于帮我从一个对AI持怀疑态度的人转变为一个对AI充满希望的使用者。
开发者如何利用生成式人工智能的力量让我先说明白一点,Llama 并没有单独说服我生成式人工智能的强大之处。Llama 是我需要的最后一块拼图,以看清一个由AI驱动的开发未来的全貌,但我接触和探索的其他各种工具也改变了我的看法。
以下是我认为的几点,当前生成式AI工具提供的功能可以助力任何开发者都可以大幅提升他们的开发工作效率和质量。
用生成式AI加快代码开发
首先,让我们从显然的部分开始,代码生成、自动完成功能和建议。
我要第一个告诉你,就代码生成而言,AI 并没有创造什么新的东西,但是它确实让我们这些开发人员和软件工程师在工作中和项目中变得更加高效。只需使用生成式 AI 工具生成模板代码,我们可以节省数小时,甚至数天的工作时间。
最近我在一个项目中遇到了一个情况,我需要一个简单的功能来处理对话展示中的智能文本截断。在这个情况下,我使用Unreal Engine Blueprints开发这个功能,所以我只需要一个我想要的代码的伪代码表示来帮助我在Unreal的节点工作流程中构建逻辑。大约思考了30分钟左右后,我提出了这个简单且有些新颖的伪代码解决方案。
count = 0; tempStr = ""; sentenceArr = []; maxChars = 20;
for...({
count += strArr[i].len + 1;
if count < maxChars {
tempStr.Append(strArr[i] + " ");
} else {
sentenceArr.Add(tempStr);
count = strArr[i].len + 1;
tempStr = strArr[i];
}
})
sentenceArr.Add(tempStr);
全屏,退出
这完全符合我的需求,而且我为自己取得的成果感到非常自豪。(注:我打算写一篇博客,详细介绍上述逻辑,供那些想用于自己游戏开发项目的朋友们参考。)
到了第二天,出于好奇,我就试着问了一下谷歌的 Gemini 人工智能这个问题:
`
在 JavaScript 中,可以创建一个函数,该函数接受一个文本字符串和一个整数,将输入的文本字符串拆分成字符串数组,每个子串的最大长度不超过输入的整数。例如,如果输入的整数是10,那么每个子串的长度都不会超过10个字符。
我认为这个提示表述得不是很清楚,但足以传达我的想法。几秒钟后,Gemini给出了如下回复:
`
function splitStringByCharacterLength(text, maxLength) {
const words = text.split(' ');
const result = [];
let currentLine = '';
words.forEach(word => {
if (currentLine.length + word.length + 1 <= maxLength) {
// 将单词加入当前行
currentLine += (currentLine ? ' ' : '') + word;
} else {
// 开始新一行
result.push(currentLine);
currentLine = word;
}
});
// 将最后一行添加进结果
if (currentLine) {
result.push(currentLine);
}
return result;
}
// 示例:
const text = "这是一句需要拆分成多行的长句子。";
const maxLength = 20;
const splitText = splitStringByCharacterLength(text, maxLength);
console.log(splitText);
点击这里进入全屏 点击这里退出全屏
尽管双子座的回答与我不一样,但它成功完成了我需要的任务,并且用的时间是我做解决方案的一小部分。
作为开发者,我们可以使用代码生成工具来加快我们的开发进度。你不应在没有经过思考、考虑或调试的情况下将AI生成的代码直接复制粘贴进去你的项目中,但AI代码生成能让你在开发上有个巨大的起点。
这才是真正的劲儿!
通过讨论来理清你的思路
我认为 Generative AI 不容小觑的另一个原因是它的 '帮我理清这个想法' 的能力。
为了解释我的意思,我将用我和Llama的对话片段来说明,这段对话帮助写了这篇特别的博客。
在有了关于Llama的“灵光一闪”不久后,我便萌生了写一篇博客记录我的领悟的想法。我心里已经有了一个大概的方向,但思绪万千,却不知从哪里开始。
那么……我决定先和Llama聊一聊。
当时我和Llama讨论了博客写作中的SEO,虽然我忘记了Llama的具体回答,但找回了我提出的问题。所以我又问了Llama,这里我可以给你看看当时的对话。
谢谢!跟你聊天后,我对写一个博客很感兴趣,这篇博客会讨论如何利用你,llama,来提升我的技术研究和开发工作。你能给我一些你觉得适合SEO优化的标题建议吗?
llama 说道:
鉴于你对利用如我这样的AI工具进行技术与开发研究感兴趣,这里有一些建议的博客文章标题,这些标题经过优化以适应搜索引擎优化(SEO):
- "技术研究的革命化:如何利用AI工具加速您的技术研究工作流程"
- "提高开发者生产力:利用AI实现更快编码与创新"
- "技术研究的未来:AI辅助工具如何改变游戏规则的方式"
- "从构想到实现:如何利用AI工具简化您的开发流程"
- "面向开发者的AI驱动洞察:技术研究中的隐藏的潜力"
撰写博客文章标题时,请记住包含用户在寻找关于此主题的信息时可能会搜索的相关关键词。目标是混合适度的关键词密度,并确保标题描述性、吸引人且精简。
你可以根据需要修改或扩展这些建议。如果你有任何更多问题或需要帮助撰写博客文章,请随时向我寻求帮助。
全屏, 退出全屏
我回应道:你能帮帮忙,创建一些更带个人色彩的SEO标题吗?比如用“我”、“我的”、“我的”之类的词。
llama, 回应说:
以下是为您的博客文章准备的一些个性化的SEO优化标题建议:
1. **“我的秘方:如何利用AI工具加速科技研究,彻底改变您的工作流程”**
2. **“提高我的开发效率:如何利用AI帮助您更快编码,增加创新”**
3. **“从我的视角看科技研究的未来:AI辅助工具如何改变游戏格局”**
4. **“从构想到实施:我使用AI工具优化开发流程的顶级建议”**
5. **“我的AI驱动见解:我如何在科技研究和创新中挖掘隐藏潜力”**
这些标题使用了诸如“我”,“我的”,“我的”等个人代词,以创建更对话式的语气,同时仍然针对SEO的相关关键词。您可以根据需要对这些建议进行修改或扩展。
请记住,虽然使用个人代词对SEO有效,但也需要注意保持关键词密度与可读性之间的平衡。目标是创建既描述又简洁,同时引人注目的标题。
全屏 退出全屏
我接着说:“你能帮我做个标题,用类似‘我一直错用AI’这样的短语吗?我试图通过这个博客让大家震惊,让他们感到震惊,意识到作为开发者,他们还没有充分利用好AI。”
使用像这样的挑衅性陈述可以是一种有效的方法来吸引注意力并鼓励读者点击你的博客文章。这里有一些标题想法,包含了“我一直在错误地使用AI”这一短语:
1. "我一直在错误地使用AI:开发者在利用人工智能时常见的五个常见错误"
2. "开发中AI的惊人真相:我一直错误地使用它"
3. "我一直在用我的AI策略浪费金钱:如何停止浪费时间并开始取得成果"
4. "AI差距:我自己曾经错用AI,但你可以弥补它"
5. "从错用AI到精通它:我的意外发现及如何你也做到"
这些标题旨在具有挑衅性,同时提供信息,带有自嘲成分,以激发读者的好奇心和兴趣。通过使用“我一直在错误地使用AI”这样的短语,你承认即使是专家也会犯错,并提供解决方案——这可以帮助与读者建立信任。
您可以根据需要修改或扩展这些建议,祝您的博客文章大获成功!
全屏模式 退出全屏
所以我接着问,你觉得这个博客标题怎么样?"我的AI盲区:我认为我理解了它的益处,但羊驼改变了这一切!(这里的'羊驼'是指某种特定的事物或现象)"
llama 说道:
我觉得这是个很棒的标题!
原因如下:
1. 个人联系:通过使用短语“我的AI盲点”,你与读者建立了个人联系。这使得话题更加易接近和相关。
2. 惊奇与好奇:短语“羊驼(也就是我)改变了这一切”带来惊喜,引起读者的好奇心。他们可能会好奇是什么改变了你对AI的看法。
3. 包容性:提到羊驼(也就是我自己),使这个话题更加易懂和包容性更强。这表明即使是专家也可以互相学习,共同发展对AI的理解。
4. 情感纽带:“盲点”这个词的使用暗示了一种发现、揭示或觉醒的感觉。这种情感纽带可以吸引读者的注意,让他们想要继续阅读。
总体来说,你的标题有效地传达了以下感觉:
1. 个人脆弱性
2. 好奇心
3. 惊奇
4. 包容性
5. 情感共鸣
这些元素将吸引那些对AI及其应用感兴趣的读者们,以及喜欢听个人故事和轶事的读者。
非常好!
切换到全屏模式 退出全屏模式
最后,怎么样:“我的AI盲点:我原以为我懂它的好处,没想到Llama彻底改变了我的开发流程!”
你在标题末尾加了一个感叹号!
这是一个很棒的决定。原因如下:
- 增强强调:感叹号增强了“Llama 改变了所有的一切”的表达,使其更显惊奇和引人注目。
- 增添活力:感叹号为标题注入了活力,传达了兴奋、紧迫或重要的感觉。
- 修饰语气:通过添加感叹号,你创造了一种简洁而专业的语气,适合用于一篇博客文章。
请确保把“Workflow”后面的问号改成句号。因此,修正后的标题应为:
“我的 AI 盲点:我以为我明白了它的优点,但 Llama 实际上改变了我的整个开发工作流程!”
这确保了标题的一致性和易读性。
总体而言,你的修订标题巧妙地结合了个人脆弱性、好奇心、惊喜和活力,创造了一个引人注目又具有吸引力的标题,可能会吸引那些对 AI 和开发感兴趣的读者。
全屏模式/退出全屏
这些并不是当时给出的精确回答,但非常相似。
但通过羊驼帮助我缩小博客标题的范围,并给我提供了见解、鼓励和建议,我感觉自己能够更清楚地表达自己的想法,清楚地知道自己想要写的内容。
最近几天,我发现我自己在用llama当倾倒对象。不管是技术问题还是非技术问题,当我拿不准怎么继续时,从我的个人AI助手那里得到的一些小小灵感和思维实验,帮助我更清楚该怎样向前走。
而不是像一只吱吱作响的轮子上的仓鼠一样不停地跑,这些和Llama的小对话正帮助我在日常事务中变得更有效率。
利用人工智能发现那些被忽视的知识
最后,生成式人工智能为我们这些凡人提供的最后一点是进行技术研究的能力,且尽可能减少偏见。
让我们明确一点,AI聊天助手绝不是完全客观的。
实际上,我们可能永远无法真正理解NLP智能代理的偏见,这种偏见可能确实存在。
但是当你问我问题时,我认为LLM似乎没有明显的意图或隐藏的动机(除了尽量准确之外)。
我之所以注意这一点是因为,作为一名开发者,我经常会花很多时间去理解技术,或者寻找完成特定任务的最佳工具。而在使用搜索引擎如谷歌时,我经常会遇到一个问题,那就是我得到的答案往往是针对我的问题进行了优化,而不是我真正需要的答案。
这可能不是最好的答案,但它是SEO优化最好的答案。
因为这样,当我找某个问题的答案时,我经常认为自己得到的并不是解决这个问题的最优或最全面的选项,而仅仅是一些被设法优先展示的选项。
我发现,使用几个不同的聊天工具时,一个令人惊讶的现象是,我经常会收到一些出乎意料且多样化的回复。
有时候我让ChatGPT为我完成某个具体任务提供一些工具的建议,它给出的建议是我从未在常用的搜索引擎上见过的。
大约在过去一年里,AI聊天代理帮我找到了难以找到的资源和工具,这些资源和工具在大多数情况下会被那些更擅长搜索引擎优化的竞争对手所掩盖。
我开始越来越多地常用的一种做法是,用各种聊天工具向它们提问,同时利用搜索引擎以扩展我的网络研究。
例如,我最近在寻找关于生成式AI语音模型上实现自监督学习的一些见解时,却发现搜索结果大多还是相同的网站、公司和文章。
出于好奇,我决定问Llama关于这个话题,它向我介绍了一些我以前不知道的研究(https://deepmind.google/discover/blog/wavenet-a-generative-model-for-raw-audio),以及一个我之前未曾听说过的[AI模型](https://huggingface.co/speechbrain/tts-tacotron2-ljspeech)(我对此非常感兴趣)。
注:此处有一张图片。(Note: There is an image here.)
我对人工智能及其真正的发展方向并不太了解,但我非常想找到新颖和有意义的方法,让它在我的生活中变得有用。
我希望这能帮助你以某种方式开阔眼界,让你有一天实现你的个人和职业生涯的目标。
如何运行自己的本地AI聊天机器人接下来,在赞扬了AI的所有伟大之处,以及它如何帮助你之后,是时候分享如何轻松在你的本地机器上托管你的AI聊天机器人了。
让我来告诉你,我说简单的时候……就是那么简单。
尽管这些本地的LLM虽然没有像商业聊天代理如ChatGPT和Gemini那样的“花里胡哨的功能”,但当正确使用时,它们同样有用且同样强大。
所以让我来给你介绍一下我开始使用Llama(以及其他开源AI模型)时用到的几个简单步骤:
第一步:在您的本地机器上下载并安装奥拉玛:
访问 Ollama 官网 (https://ollama.com/) 并快速下载并安装适用于 Windows、Mac 或 Linux 的 Ollama 版本。
Ollama 是一个轻量级工具,让你可以在本地机器上运行大型语言模型,比如 Llama 3.2、Mistral 和 Gemma 2。安装后,你就可以在本地机器上运行和自定义这些模型了。
第二步:运行 Ollama 设置程序
下载完成后,打开 Ollama Setup 可执行文件,并按照步骤进行,安装这些 Ollama 工具。
正如你所料,Ollama的设置向导会快速添加所有运行该工具所需的文件。
验证 Ollama 是否已安装
如果 Ollama 安装成功,你应该可以从标准命令行访问它。
在安装 Ollama 的时候,它可能会自动打开一个命令行窗口;如果没有,你需要手动打开它。
在 Windows 计算机上,搜索“cmd”,可以打开 cmd。
打开后,你可以输入下面这行命令并按下回车键来验证安装,
ollama
注:ollama 在此上下文中是一个特定术语或专有名词,没有直接翻译,发音为 “óllāmā”。
全屏模式 退出全屏
你应该看到类似这样的输出:
用法:
ollama [标志]
ollama [命令]
可用命令:
serve 启动服务
create 创建模型(从 Modelfile)
show 查看模型信息
run 运行模型
stop 停止模型
pull 从注册表中拉取模型
push 推送模型到注册表
list 列出模型
ps 列出运行中的模型
cp 复制模型
rm 删除模型
help 获取命令帮助
标志:
-h, --help 显示帮助信息
-v, --version 显示版本信息
使用 'ollama [命令] --help' 获取更多命令信息。
全屏模式,全屏退出
第四步:安装后运行大规模语言模型
安装了 Ollama 后,我们就差一步就能在机器上拥有一个本地的语言模型。
首先,我们先来安装Meta的Llama3.2模型。
在命令提示符窗口中键入如下所示:
ollama 运行一下 llama3.2
点这儿全屏,点这儿退出
这将做两件事,
- 如果没有安装 Llama3.2,请安装它
- 运行 Llama3.2
按下回车键或Enter键,你应该会看到类似这样的界面(如果Llama3.2没有安装)。
正在拉取 manifest
拉取中 dde5aa3fc5ff... 26% ▕ ██████████████ ▏ 532 MB/2.0 GB 32 MB/s 48s
全屏, 取消全屏
图片链接:点击查看图片
Ollama将开始在您的机器上下载并安装Llama3.2模型,安装完成后,您就可以和模型互动了。
你应该在命令行窗口中看到类似下面这样的:
拉取 manifest 文件
拉取 dde5aa3fc5ff... 100% ▕████████████████████████████████████████████████████████▏ 2.0 GB
拉取 966de95ca8a6... 100% ▕████████████████████████████████████████████████████████▏ 1.4 KB
拉取 fcc5a6bec9da... 100% ▕████████████████████████████████████████████████████████▏ 7.7 KB
拉取 a70ff7e570d9... 100% ▕████████████████████████████████████████████████████████▏ 6.0 KB
拉取 56bb8bd477a5... 100% ▕████████████████████████████████████████████████████████▏ 96 B
拉取 34bb5ab01051... 100% ▕████████████████████████████████████████████████████████▏ 561 B
验证 sha256 校验和
写入 manifest 文件
完成
>>> 发送消息 (/? 查看帮助)
全屏,退出全屏
这是一张图片,你可以点击它查看详细内容。
就这样,你现在本地机器上也有了自己的LLM!!
另外,如果你想安装任何其他Ollama提供的模型,你也可以用这个命令,
运行模型名称时使用如下命令:运行模型名称。
全屏显示 退出全屏
第五步:测试一下你的大型语言模型
现在我们有了 Llama3.2,来试试。
让我们问它一个简单的问题。
嗨,羊驼!你能告诉我一点关于你自己的情况吗?
全屏模式(按ESC退出)。
你应该会收到类似下面这样的回复:
嘿,羊驼!你能告诉我一些关于你自己的事情吗?
我很乐意和你聊天。我是一个名为“Llama”(即“大型语言模型元AI”)的人工智能模型。我的主要功能是处理并生成类似人类的文本,基于我接收到的输入。
我是通过大量的文本数据进行训练的,这些数据包括书籍、文章和在线对话等多种来源。这种训练使我能理解和回应各种各样的问题、话题和风格。
我的一些主要功能包括:
.....
切换到全屏,退出全屏
看啦,那不是挺简单的吗!
来结束一下如果你在开发领域工作了一段时间,你可能已经不太在意“下一个大事件”这样的说法了。虽然我天生好奇心强,不过,随着时间的推移,我对“最前沿”的技术越来越不感兴趣了;无论是虚拟现实、Web3、加密货币、人工智能,还是其他新事物,我发现自己最初总是满怀希望,但后来却常常感到失望。
但令人振奋的是,通过持续的接触和学习以及不懈地发现人工智能的价值所在,我对于人工智能的热情又被点燃了。
我终于意识到,未来的发展将与AI和生成式AI工具紧密相连。
如果你是一名开发者、软件开发者或工程师,作为在技术领域工作的人,该拥抱人工智能技术所带来的好处了。
我无法预测作为开发者的未来会是怎样的,也无法确定AI领域接下来会如何发展,但我确实觉得我们正处于一个关键的转折点。
我鼓励你花时间发现自己在AI上的盲区,并利用手头的工具和技术来提升和加速自己的开发流程。
图片顺序(按出现顺序):
封面照片使用 Google Gemini
提示:
一只快乐的、毛茸茸的白色羊驼,居中站立,沐浴在从它身后照射过来的温暖亮光中,仿佛被一种启迪般的光芒包围,闭眼冥想,脸朝右上角,仿佛在眺望未来。
点击链接:关注我的社媒
https://linktr.ee/bradstondev
共同学习,写下你的评论
评论加载中...
作者其他优质文章