上回书说到,咱们要开启一场从传统开发到AI应用开发的“英雄之旅”。我知道,你现在心里可能还是有点打鼓,感觉AI这玩意儿隔着一层毛玻璃,看得见,摸不着,浑身难受。
别急,这太正常了。想当年我刚从写后端API转过来的时候,感觉自己就像一个习惯了在厨房里切、炒、烹、炸的厨子,突然被扔进了一个分子料理实验室。到处都是液氮、离心机和一些叫不上名字的玩意儿,整个人都懵了。
但后来我发现,万变不离其宗。不管工具怎么变,做菜的核心还是“色香味”。同样,不管技术怎么迭代,我们工程师的核心还是“输入、处理、输出”。
这一章,就是你的“破冰之旅”。我会把那层最厚的冰——也就是对AI核心概念的恐惧——给你砸得粉碎。我会带你认识三个新朋友:大语言模型(LLM)、提示词(Prompt) 和 令牌(Token)。搞懂了这仨,你就等于拿到了进入AI应用开发世界的“新手礼包”。
准备好了吗?咱们一个一个来盘。
1.1 大语言模型 (LLM) 到底是个啥?
忘掉那些复杂的论文和定义。现在,请在你的脑海里,想象这样一个场景:
你公司新来了一个实习生。这个实习生,天赋异禀,堪称“最强大脑”。他博览群书,上知天文下知地理,互联网上从维基百科到GitHub代码库,从莎士比亚全集到最新的网络热梗,他几乎都“读”过。
他有几个逆天的优点:
- 语言能力超神:你说中文、英文、日文,甚至文言文、火星文,他都能听懂。让他写首诗、写个周报、写段代码、或者把一段技术文档翻译成大白话,他都能秒出。
- 任劳任怨,24/7在线:不用吃饭,不用睡觉,没有情绪,你随时找他,他随时都在。
- 学习能力爆表:你给他几个例子,他能立刻举一反三,模仿你的风格和格式。
听起来是不是完美员工?别急,他也有几个让你哭笑不得的“毛病”:
- 极度健忘:他的记忆力是“金鱼级”的。你前一分钟跟他说完事,后一分钟再问他,他可能就忘得一干二净了。你必须在每次对话时,把重要的前情提要再重复一遍。
- 缺乏主观判断:他没有真正的“三观”和“常识”。你让他一本正经地论证“地球是方的”,他也能给你引经据典,写出一篇看似很有道理的“雄文”。他是个语言大师,但不是个真理捍卫者。我们管这个叫“幻觉(Hallucination)”。
- 需要精确指令:他虽然聪明,但你不能指望他“心领神会”。你的指令越模糊,他给你的答案就越离谱。你得像个项目经理一样,把任务目标、背景信息、交付标准都说得清清楚楚,他才能干出漂亮的活儿。
没错,这个“见多识广但有点健忘的超级实习生”,就是我们今天要聊的主角——大语言模型(Large Language Model, LLM),比如大家熟知的GPT-4、Google的Gemini等等。
它不是一个有人格的“灵魂”,而是一个极其复杂的“文字接龙”或“概率预测”机器。当你给它一句话时,它内部那亿万个参数(你可以想象成亿万个神经元)就开始疯狂计算,预测下一个最可能出现的词(或者说Token,我们后面会讲)是什么。
比如你输入“今天天气真不错,我们一起去…”,它可能会预测出“公园”、“吃饭”、“散步”等词,而不太可能预测出“写代码”或“开会”。它就是通过这种方式,一个词一个词地“生成”出完整的回答。
这彻底改变了我们作为开发者的交互方式。以前,我们跟机器打交道,是这样的:
这是一个确定性的过程。输入是精确的,处理逻辑是写死的,输出也是可预测的。
现在,我们跟LLM打交道,变成了这样:
这是一个可能性的过程。你的输入(Prompt)是自然语言,它的处理过程是个“黑箱”,它的输出虽然符合你的要求,但每次可能都不完全一样。
所以,我们作为AI应用开发者的第一个核心任务,就是学会如何管理和引导这个“超级实习生”,让他强大的语言能力为我所用,同时规避掉他“健忘”和“爱幻想”的毛病。
怎么管理和引导呢?这就引出了我们的第二个新朋友——Prompt。
1.2 Prompt Engineering:跟AI说话的艺术
如果说LLM是一台性能炸裂的超级跑车,那Prompt(提示词)就是方向盘、油门和刹车。车再牛,你不会开,也只能在原地听个响。
很多刚接触AI开发的兄弟,容易犯一个错误:把Prompt当成一个普通的搜索框。比如,想让AI帮忙写个代码,就直接输入“写个快速排序”。
这就像你对那个超级实习生说:“喂,干个活儿。” 他肯定一脸懵逼,不知道你想干啥,最后可能随便给你一段不知道从哪儿抄来的、bug满天飞的代码。
专业的AI应用开发者,从不“请求”AI,而是“编程”AI。 而我们的“编程语言”,就是Prompt。
一个高质量的Prompt,就像一份清晰的“需求文档”,它通常包含以下几个要素。我们用一个实际的例子来拆解——让AI扮演一个资深的代码审查(Code Review)专家。
一个糟糕的Prompt:
“帮我看看这段代码有没有问题:[附上一段代码]”
一个专业的Prompt:
[角色 (Role)]
你是一位拥有超过15年经验的资深Go语言架构师,对代码的可读性、性能和并发安全有近乎偏执的追求。你的性格严谨、挑剔,眼里揉不得沙子。[指令 (Instruction)]
请严格审查以下这段Go代码。你的任务是找出其中所有潜在的问题,包括但不限于:
- 性能瓶颈或不高效的写法。
- 潜在的并发安全问题(Race Condition)。
- 不符合Go语言地道风格(Idiomatic Go)的坏味道。
- 命名不规范或注释缺失。
[上下文 (Context)]
这段代码的业务场景是:在一个高并发的Web服务中,作为一个中间件,用于记录每个请求的访问日志。// [此处附上一段待审查的Go代码] func LogMiddleware(next http.Handler) http.Handler { return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { log.Println(r.Method, r.URL.Path) next.ServeHTTP(w, r) }) }[输出格式 (Output Format)]
请以Markdown的无序列表格式返回你的审查意见。对于每一个问题点,请先引用有问题的代码行,然后清晰地解释问题所在,并提供一个更优的修改建议。如果代码没有问题,请直接回复“代码质量很高,未发现明显问题。”
看到了吗?天壤之别!
通过这个专业的Prompt,我们做了什么?
- 赋予角色 (Role):我们没让它成为一个“通用聊天机器人”,而是把它“变身”成了一个特定的专家。这会极大地影响它的口吻和关注点。
- 下达清晰指令 (Instruction):我们明确告诉它要“干什么”(审查代码)和“怎么干”(关注性能、并发等)。
- 提供充足上下文 (Context):我们告诉它这段代码是用在哪里的,这能帮助它做出更精准的判断。
- 规定输出格式 (Output Format):我们要求它用特定的格式返回结果,这对于我们后续用代码解析它的输出至关重要。想象一下,如果它的返回格式是固定的,我们是不是就可以很容易地把它集成到CI/CD流程里,实现自动化Code Review了?
除了这几个基本要素,还有一些进阶玩法,比如:
- 少样本示例 (Few-shot Learning):在Prompt里给AI一两个“输入/输出”的范例,它就能更好地理解你的意图。这就像你教实习生做事,先给他做个示范:“你看,上次那个报告我是这么写的,你照着这个格式来。”
- 思维链 (Chain-of-Thought, CoT):对于复杂的推理任务,你可以要求AI“一步一步地思考,并把思考过程写出来”。这就像上学时老师要求你“写出解题步骤”一样,能显著提高复杂问题回答的准确率。
Prompt Engineering,就是我们AI应用开发者的“基本功”和“核心竞争力”。 它不是玄学,而是一门严谨的、可以通过不断实践和迭代来提升的工程学科。我们后续的实战项目,会大量地练习和优化我们的Prompt。
1.3 Token:AI世界的“货币”与“积木”
好,现在我们知道LLM是我们的“超级实习生”,Prompt是我们的“指令手册”。那么,我们跟实习生沟通、写指令手册,是不是可以无限地写下去呢?
答案是:不行。
这里就要引入我们今天最后一个,也是最“实在”(跟钱直接挂钩)的概念——Token。
Token,可以理解为AI处理文本的最小单位。
一个常见的误区是把Token等同于一个单词。实际上,它的规则更复杂一些:
- 对于英文来说,一个单词通常被拆分成一个或多个Token。比如,“hello”是1个Token,“engineering”可能会被拆成“engine”和“ering”两个Token。
- 对于中文来说,情况更简单粗暴一点,一个汉字通常就是1个Token。
- 标点符号、空格等也都会被算作Token。
你可以把Token想象成AI世界的“乐高积木”。AI在阅读你的Prompt和生成它的回答时,都是以Token为单位一块一块地拼装和理解的。
理解Token这个概念,对我们开发者来说,有两大至关重要的意义:
第一,它决定了AI的“记忆长度”——上下文窗口(Context Window)。
还记得我们说那个实习生“极度健忘”吗?这个“健忘”在技术上就体现在“上下文窗口”的大小上。
每个LLM模型都有一个最大的上下文窗口限制,这个限制就是用Token数量来计算的。比如,GPT-3.5-Turbo的上下文窗口是4k(4096个Token)或16k,而GPT-4则有8k、32k甚至128k的版本。
这意味着什么?
你的整个对话,包括你所有的Prompt和AI所有的回答,加起来的总Token数,不能超过这个上限。
一旦超过,AI就会开始“忘记”最早的那些对话内容,就像把一段超长的文字塞进一个固定大小的记事本,写满了就只能把最前面的内容擦掉一样。
这就是为什么你不能把一本20万字的小说直接扔给AI,然后问它“主人公的性格怎么样?”。因为它根本“记”不住整本书的内容!我们后续讲到的RAG技术,就是为了解决这个问题的。
第二,它决定了你的“开发成本”——API调用费用。
这是最扎心,也最现实的一点。
你跟LLM的每一次交互,都是在“烧钱”,而计费单位,就是Token。
主流的LLM服务商,比如OpenAI,都是按照你输入(Prompt)的Token数和输出(AI生成内容)的Token数来分别计费的。通常,输出的Token会比输入的贵一些。
举个例子,假设某个模型的定价是:
- 输入:$0.5 / 1M tokens (每100万个输入Token收费0.5美元)
- 输出:$1.5 / 1M tokens (每100万个输出Token收费1.5美元)
现在,你有一个应用,平均每次用户交互:
- 你的Prompt(包含历史对话、指令等)有 1500个Token。
- AI生成的回答有 500个Token。
那么,这一次交互的成本就是:
(1500 / 1,000,000) * $0.5 + (500 / 1,000,000) * $1.5 = $0.00075 + $0.00075 = $0.0015
看起来很少,对吧?但如果你的应用有10万个日活用户,每个用户平均每天交互10次呢?
$0.0015 * 100,000 * 10 = $1500
一天就要烧掉1500美元!
这一下是不是感觉肉疼了?
所以,成为一个专业的AI应用开发者,必须具备强烈的“Token成本意识”。 我们写的每一个Prompt,设计的每一次交互,都要思考:
- 这个Prompt是不是太啰嗦了?有没有更简洁的写法?
- 我需不需要把全部的聊天记录都塞进上下文?能不能只保留最近的几轮对话?
- 我能不能通过优化Prompt,让AI的回答更精炼,减少输出的Token数?
你看,我们传统开发者那种“优化性能”、“节省内存”的看家本领,在这里又以一种全新的形式回来了!只不过,我们优化的对象,从CPU、内存,变成了“Token”。
本章小结:破冰成功!
好了,今天的“破冰之旅”到这里就告一段落了。让我们快速回顾一下我们认识的这三位“新朋友”:
- 大语言模型 (LLM):把它当成一个能力超强但有点健忘的实习生。我们的工作是引导它,而不是膜拜它。
- 提示词 (Prompt):它是我们驾驭LLM的方向盘,是与AI协作的“编程语言”。写出好的Prompt,是AI应用成功的关键。
- 令牌 (Token):它是AI世界的**“积木”和“货币”**。它既决定了AI的记忆上限(上下文窗口),也直接关系到你的开发成本。
怎么样?现在再看AI,是不是感觉那层厚厚的冰已经裂开了几条缝,透出了光?它不再是一个遥不可及的魔法,而是变成了一套有规则、有边界、可以被我们工程师理解和掌握的工具。
当然,今天我们只是打开了新世界的大门。你可能会有新的问题:
- 既然LLM的记忆(上下文窗口)这么有限,我怎么让它学习我的私有知识,比如公司几百页的产品文档呢?
- 除了让AI“说”,我能不能让它“看”和“记”?有没有一种方法,能把海量的知识存起来,让AI在需要的时候快速查找?
问得好!这些问题,直指AI应用开发的核心——如何为AI建立一个可靠的“长期记忆”。
而这,正是我们下一章要攻克的堡垒:核心三剑客——Embedding、向量和向量数据库。我们将一起揭开AI“记忆宫殿”的秘密。
准备好,真正的硬核内容,即将开始!
我们下期见。
472

被折叠的 条评论
为什么被折叠?



