
基于开源教程《Hello Agent》的学习笔记,陪你一起掌握 Agent 的开发和设计技巧
本章讲了什么
•本章主要是模型算法基础,简单的提示词技巧,以及模型选型的粗略讨论。建议对模型算法兴趣不大的同学简单阅读。提示词技巧和模型选型可略读后,通过实践详细体会和理解。
•简单回顾了语言模型(LM)中使用的核心算法,怎么用多维向量的方式表示词句,让LM 根据上下文内容做输出,而且可以记住自己之前生成的内容,又能区分很久之前的词句和最近词句的差别。
•自上而下的 Transformer 架构解析和简单实现。
•模型使用的基本技巧,如参数temperature,top-p,top-k 含义如何,one-shot,few-shot,role play,COT 等简单提示词技巧
•LLM选型的考量维度,如性能、成本、速度和部署方式
•LLM 的 scaling law 以及幻觉,如何消除幻觉
知识点讨论
📖 在文本生成中,当同时设置 Top-p、Top-k 和温度系数时,这些参数会按照分层过滤的方式协同工作,其优先级顺序为:温度调整→Top-k→Top-p。温度调整整体分布的陡峭程度,Top-k 会先保留概率最高的 k 个候选,然后 Top-p 会从 Top-k 的结果中选取累积概率≥p 的最小集合作为最终的候选集。不过,通常 Top-k 和 Top-p 二选一即可,若同时设置,实际候选集为两者的交集。需要注意的是,如果将温度设置为 0,则 Top-k 和 Top-p 将变得无关紧要,因为最有可能的 Token 将成为下一个预测的 Token;如果将 Top-k 设置为 1,温度和 Top-p 也将变得无关紧要,因为只有一个 Token 通过 Top-k 标准,它将是下一个预测的 Token。
来举个例子更直观的看这几个参数对输出结果的影响。例如一个推理的 next token 在 Temperature=0 的原始集合为:
Token | A | B | C | D | E |
P | 0.5 | 0.35 | 0.2 | 0.1 | 0.05 |
这时取 Top-k = 3,则候选集合变为 A,B,C,固定取 3个
如果取 Top-p=0.5,则候选集合变为 A(0.5) ≥ 0.5,取 1 个
最终的 token 只会输出 A
那如果这时候把 temperature 变大,则各个候选值的概率会变平,峰值会下降,低谷会上升,候选概率集合会变为:
Token | A | B | C | D | E |
P | 0.28 | 0.24 | 0.3 | 0.18 | 0.10 |
这时候再看 Top-k = 3,则候选集合仍然是 A,B,C,固定为 3 个
而 Top-p=0.5 不变的话,候选集合会变为 A(0.28) + B(0.24) = 0.52 ≥ 0.5
而最终结果是会在最终候选集中,根据加权概率再随机选取输出,即输出 A 的概率是 0.28/0.52=53.84%, 输出 B 的概率是 0.24/0.52=46.16%。
Top-k 无论概率多少,会固定选取 K 个候选token 输出结果。而 Top-p 会根据最终概率分布,动态累加满足概率的 token 进行输出,会更灵活。
所以市面上大模型的默认调参目前是不用 Top-k 的,只配置了 temperature 和 top-p
📖 创建一个高维的连续向量空间,然后将词汇表中的每个词都映射为该空间中的一个点。这个点(即向量)就被称为词嵌入 (Word Embedding) 或词向量。在这个空间里,语义上相近的词,它们对应的向量在空间中的位置也相近。通过这种方式,词向量不仅能捕捉到“同义词”这类简单的关系,还能捕捉到更复杂的类比关系。一个著名的例子展示了词向量捕捉到的语义关系:vector('King') - vector('Man') + vector('Woman') 这个向量运算的结果,在向量空间中与 vector('Queen') 的位置惊人地接近。
一开始接触 embedding 其实是一个很抽象的概念,下面有很多可视化的,用具象化的例子来解释 embedding 的 video 可以帮助了解
•[Google: Machine Learning Crash Course: Embeddings] https://www.youtube.com/watch?v=my5wFNQpFO0
•[neptune.ai: What are LLM Embeddings] https://neptune.ai/blog/what-are-llm-embeddings
•[huggingface: LLM Embeddings Explained: A Visual and Intuitive Guide] https://huggingface.co/spaces/hesamation/primer-llm-embedding
了解了高维向量化的概念之后,你就可以大概理解,基于 embedding 的语义搜索是什么意思,为什么向量数据库针对近义语句的搜索是更擅长的。
📖 在将自然语言文本喂给大语言模型之前,必须先将其转换成模型能够处理的数字格式。这个将文本序列转换为数字序列的过程,就叫做分词 (Tokenization)。分词器 (Tokenizer) 的作用,就是定义一套规则,将原始文本切分成一个个最小的单元,我们称之为词元 (Token)。
推荐一个 Andrej Karpathy 在youtube 视频里使用过的一个 tokenization 可视化网站 https://tiktokenizer.vercel.app/ 帮助你理解,一个句子里什么被 tokenization 过后是什么样的。
📖 选择语言模型并非简单地追求“最大、最强”,而是一个在性能、成本、速度和部署方式之间进行权衡的决策过程。
其中这三个维度各有侧重点:
智能度(Capability Fit)关键不在“最强模型”,而在能力与场景匹配。多数业务场景(如邮件撰写)更看重语义理解、逻辑一致性与准确性,而非创造力。能力满足需求即可,过度能力只会增加成本。
成本(ROI Alignment)企业关注的是单位效果的成本。在满足效果前提下,选择成本结构更优的方案,实现投入产出比最大化,而不是盲目追求高规格模型。
性能(Scalability & Latency)性能决定能否真正落地。高并发场景下,响应时延、吞吐能力与系统稳定性是硬指标,直接影响用户体验与交付质量。
从实际使用体验看,claude opus更擅长分析规划,可以做 planning。openai codex 更擅长规则执行,可做 tool calling 的 orchestrator。gemini pro 更擅长多模态识别,尤其音频与图片。
碎碎念
其实这章大部分是算法工程师 MLE 的需要掌握的内容,对开始 Agent Engineer 算是像计算机组成原理一样的基础知识。算法部分理解能够让你更懂原理,不理解也不影响做工程交付。而 prompt engineering,model selection,降低幻觉这部分,后续在实践中会必不可少的涉及到,而且是需要理解和精通才能够做好 Agent。期待后面的进一步学习。
有兴趣加入的同学可以留言“一起”,拉你加入学习小组共同学习讨论~