clearwind - AI
type: channel
link: https://zxse.cn/category/ai/
items: 如何创建好的Agent Skill
items: agent skill ：给llm的‘说明文档’
items: Agent 设计模式：LLM 驱动下的多元思维范式与框架哲学
items: 🚀 掌握这些提示框架，让你与AI对话效率翻倍！✨
items: 提示词设计案例
items: 从 0 到 1 在 CPU 上训练可推理可演示的小参数中文GPT
items: Graph RAG with Milvus
items: 你真的懂Token吗？ 🤖💬
items: Transformer
items: 基于Embedding的搜索

如何创建好的Agent Skill
type: item
date: 2026-01-10T03:42:00+00:00
description: skill 到底是什么传统的AI的知识锁在模型的参数里，想让模型学习新技能？参数传统方式skill处理过程收集数据 → 处理数据 → 参数训练 → 部署编辑SKILL.md 文件 → 下次执行时触发成本¥10000 - ¥1000000+¥0周期数周 - 数月即时Skill就像是给base model 外挂一个可热插拔的LoRA适配器，但完全不需要训练。编辑Markdown文件，模型的行为就改变了。技能是一个目录，其中包含一个SKILL.md 文件，该文件包含组织有序的文件夹，其中包含指令、脚本和资源，这些指令、脚本和资源为 Agent 提供额外的功能。Tool vs Skill 的一个关键区分概念本质作用例子Tool模型能做什么执行动作bash、read_file、write_file、WebSearchSkill模型知道怎么做指导决策PDF处理、MCP构建、前端设计、代码审查工具是能力的边界：没有bash工具，模型无法执行命令技能是知识的注入：没有前端设计Skill，模型写出的UI前篇一律[scode type="lblue"]通用Agent + 优秀的Skill = 特定领域的专家 Agent[/scode]Skill价值：同一个模型，加载不同的Skill，就变成不同的专家[scode type="lblue"]Agent能力上限 = 模型能力 + Skill 质量[/scode]模型能力是基座，Skill质量决定这个基座能发挥到什么程度。一个优秀的Skill，能让通用Agent在特定领域的变现超过没有Skill加持的更强大模型。判断标准Token效率🫏：段落是否值得它的开销[collapse status="false" title="Anthropic 官方 skill-creator 规范"]Concise is Key.The context window is a public good. Skills share the context window with everything else Claude needs: system prompt, conversation history, other Skills' metadata, and the actual user request.(Context window 是公共资源。一个 Skill 占用的 token，会挤压其他内容的空间——系统提示、对话历史、其他 Skill 的元数据、用户的实际请求。)Default assumption: Claude is already very smart.Only add context Claude doesn't already have. Challenge each piece of information: "Does Claude really need this explanation?" and "Does this paragraph justify its token cost?"(当你写一段"什么是 PDF"的解释时，你在浪费这个公共资源。Claude 已经知道什么是 PDF。这 100 个 token 本可以用来存放更有价值的信息。)[/collapse]通过三个问题，判断每段话的价值模型真的不知道这个吗？删掉它会影响任务完成吗？这100个 token 能换来什么价值？[scode type="lblue"]好 Skill = 专家独有的知识 - 模型已知[/scode]这个公式是判断Skill价值的根本标准，可以将 Skill 理解为 专家大脑的压缩文件：把一个设计师 10 年的审美积累缩成 43 行，把一个文档专家的操作经验压缩成 200 行决策树。压缩的必须是模型没有的东西，否则就是垃圾压缩❤️心智模型 vs ⚙️机械步骤：传递的是什么[collapse status="false" title="Anthropic 官方 Skill 示例，特别是 frontend-design、canvas-design"]Before coding, understand the context and commit to a BOLD aesthetic direction: - **Purpose**: What problem does this interface solve? Who uses it? - **Tone**: Pick an extreme: brutally minimal, maximalist chaos, retro-futuristic... - **Differentiation**: What makes this UNFORGETTABLE? N…

agent skill ：给llm的‘说明文档’
type: item
date: 2026-01-09T06:18:00+00:00
description: agent skill ： 简化说法：给llm的‘说明文档’- Agent Skill 概念 - 定义：LLM可随时查阅的说明文档 - 功能：简化重复性任务指令，提升任务AI表现 - 应用场景：智能客服、会议总结等 - Agent Skill 基础使用 - 创建步骤 - 指定文件夹创建agent skill - 标记skill.md文件，定义名称、描述、指令 - 使用流程 - 用户请求 - Cloud Code识别并询问使用agent skill - 加载完整skill.md内容 - 模型响应 - 高级功能 - Reference - Script - 渐进式披漏机制 - Agent Skill 与 MCP对比Agent Skill 的核心概念Agent Skill 本质是大模型可随时调用的说明文档，其核心价值在于 “简化重复性任务指令”—— 通过预定义的规则与流程，帮助 AI 更高效地完成标准化工作，典型应用场景包括智能客服（快速匹配应答话术）、会议总结（自动梳理内容框架）等。在Claude中Skill 是一个 markdown 文件，它教 Claude 如何做特定的事情：使用你的团队标准审查 PR、以你喜欢的格式生成提交消息，或查询你公司的数据库架构。当你要求 Claude 做与 Skill 目的相匹配的事情时，Claude 会自动应用它。创建第一个 Skill[tabs][tab name="检查可用的 Skills" active="true"]在创建 Skill 之前，查看 Claude 已经可以访问的 Skills：What Skills are available?Claude 将列出当前加载的任何 Skills。你可能看不到任何，或者你可能看到来自插件或你的组织的 Skills。[/tab][tab name="创建 Skill 目录"]在你的个人 Skills 文件夹中为 Skill 创建一个目录。个人 Skills 在你的所有项目中都可用。（你也可以在 .claude/skills/ 中创建项目 Skills以与团队共享。）bash theme={null} mkdir -p ~/.claude/skills/explaining-code [/tab][tab name="编写 SKILL.md"]每个 Skill 都需要一个 SKILL.md 文件。该文件以 --- 标记之间的 YAML 元数据开始，必须包含 name 和 description，然后是 Claude 在 Skill 活跃时遵循的 Markdown 说明。description 特别重要，因为 Claude 使用它来决定何时应用 Skill。创建 ~/.claude/skills/explaining-code/SKILL.md：--- name: explaining-code description: Explains code with visual diagrams and analogies. Use when explaining how code works, teaching about a codebase, or when the user asks "how does this work?" --- When explaining code, always include: 1. **Start with an analogy**: Compare the code to something from everyday life 2. **Draw a diagram**: Use ASCII art to show the flow, structure, or relationships 3. **Walk through the code**: Explain step-by-step what happens 4. **Highlight a gotcha**: What's a common mistake or misconception? Keep explanations conversational. For complex concepts, use multiple analogies.[/tab][tab name="加载并验证 Skill"]Skills 在创建或修改时会自动加载。验证 Skill 出现在列表中：What Skills are available?[/tab][tab name="测试 Skill"]打开你项目中的任何文件，并向 Claude 提出与 Skill 描述相匹配的问题：How does this code work?Claude 应该要求使用 explainin…

Agent 设计模式：LLM 驱动下的多元思维范式与框架哲学
type: item
date: 2026-01-06T08:51:00+00:00
description: 精准定位需求、匹配思维模式、发挥框架所长一、Agent 设计的 “百家争鸣”：从思维模式到框架分化在 LLM 驱动的 Agent 世界中，不存在 “放之四海而准” 的通用设计模式。Chain of Thought 的线性推理、ReAct 的 “知行合一”、Plan and Execute 的分层规划等认知框架，共同构成了 Agent 解决问题的 “思维模式库”。这些模式的落地差异，直接导致开发框架的路径分化 ——LangChain 聚焦链式推理的流程编排，LlamaIndex 深耕知识检索与整合，Dify 则主打人机协作的混合编排。业务场景的复杂性（如实时数据查询、多步逻辑推理、创意生成）决定了 Agent 必须 “量体裁衣”，而框架的多样性本质上是设计模式哲学的外在映射。二、认知框架解析：从单步推理到立体探索（一）线性推理范式：抽丝剥茧的思维显化1. Chain of Thought（思维链）：一步一释的逻辑展开[tabs][tab name="核心机制" active="true"]让模型在回答前，把推理过程一步步写出来。不是一口气给出答案，而是把整个推理过程展示出来。[/tab][tab name="适用场景"]问小王比小李大1岁，小张的年龄是小李的两倍。如果三个人的年龄加起来是41岁，问小王多大？思维链方式：假设小李的年龄是 ×，那么小王=×+3，小张=2X，总和=（x1）+×+（2X）=4×+ 1,4x+1=41，4X=38，×=10，所以小王=10+3=13。结果小王13岁。这种方式在逻辑推理、数值计算、逐步分析类问题里，会显得更稳健。[/tab][tab name="提出背景"]Google Research 在2022年发表的论文《Chain-of-Thought Prompting Elicits Reasoning in Large Language Models》[/tab][tab name="框架映射"]LangChain 的 “SequentialChain” 通过链式调用多个工具，实现思维链的工程化落地。[/tab][tab name="代码示例"]from langchain_openai import ChatOpenAI from langchain.chains import LLMChain from langchain.prompts import PromptTemplate from langchain.chains import SimpleSequentialChain # 初始化LLM llm = ChatOpenAI(model="gpt-4-turbo", temperature=0) # 第一步：拆解问题（显式推理步骤） step1_prompt = PromptTemplate( input_variables=["question"], template="""请拆解解决以下数学问题的步骤，无需计算最终结果： 问题：{question} 推理步骤：""" ) step1_chain = LLMChain(llm=llm, prompt=step1_prompt, output_key="steps") # 第二步：执行计算（基于步骤推导结果） step2_prompt = PromptTemplate( input_variables=["steps"], template="""根据以下推理步骤，计算最终结果： 推理步骤：{steps} 最终答案（仅输出数字）：""" ) step2_chain = LLMChain(llm=llm, prompt=step2_prompt, output_key="result") # 串联链条 cot_chain = SimpleSequentialChain( chains=[step1_chain, step2_chain], verbose=True ) # 运行示例 result = cot_chain.run("计算(18+7)×(25-13)") print("最终结果：", result)输出效果：> Entering new SimpleSequentialChain chain... 推理步骤：1. 先计算括号内的加法：18+7 2. 再计算括号内的减法：25-13 3. 最后将两个结果相乘得到最终答案 最终答案（仅输出数字）：300 > Finished chain. 最终结果： 300[/tab][/tabs]2. Self-Ask（自问自答）：问题驱动的知识补全[tabs][tab name="核心机制" active="true"]让模型在回答时学会反思自己，把大问题拆成多个小问题，然后逐个回答。将复…

🚀 掌握这些提示框架，让你与AI对话效率翻倍！✨
type: item
date: 2025-12-30T01:50:43+00:00
description: 你是不是经常觉得和AI聊天时，它总是不太“懂你”？或者给出的回答不够精准、不够有深度？别担心，今天我就来带你掌握几种超实用的提示词框架，让你轻松驾驭大模型，对话质量直线上升！🎯🤔 为什么我们需要提示框架？和AI交流，就像和一位聪明但需要引导的伙伴合作。如果你问得模糊，它可能答得随意；如果你问得清晰，它就能回应得精彩。 提示框架就是一套“提问模板”，帮你结构化表达需求，让AI更容易理解你的意图，输出更符合你期待的内容。📚 四大提示框架详解 + 实战案例1. CRISPE 框架 🧠适用于需要AI扮演特定角色、完成复杂任务的场景。角色：明确AI的身份，例如“教育者”、“翻译官”或“职业顾问”。背景：交代情境，帮助AI理解上下文。任务：清晰说明你要它做什么。格式：设定回复的风格、长度、结构等。实验：可要求AI给出多个版本供你选择。💡 案例：你是一位资深科技博主（角色），正在撰写一篇面向初学者的AI入门文章（背景）。请用通俗易懂的语言，解释什么是机器学习（任务）。文章结构请包括：定义、常见类型、一个生活化例子（格式）。如果能提供两个不同风格的开头供我选择更好（实验）。2. BROKE 框架 📝适合内容创作、文案撰写等需要明确目标和成果的任务。背景：设定任务发生的场景。角色：指定AI的专业身份。目标：说明核心任务。关键结果：列出回答必须包含的要素。改进：AI回复后，可提出优化方向。💡 案例：背景：你正在为一家健康食品初创公司撰写社交媒体推文。 角色：作为品牌文案策划。 目标：写一条推广新款燕麦产品的推文。 关键结果：突出“无添加糖”、“高纤维”、“早餐便捷”三大卖点，语气年轻活泼，带一个表情符号。 改进：可以建议“加入用户证言”或“增加互动提问”。3. ICIO 框架 🛠️适用于处理具体输入数据、要求明确输出的任务，如翻译、摘要、格式转换等。任务：直接说明要做什么。背景：补充任务的相关信息。输入数据：提供AI需要处理的原文、数据等。输出格式：明确回答的形式与风格。💡 案例：任务：将以下英文邮件翻译成中文。 背景：这是一封发给客户的正式项目更新邮件。 输入数据：“Dear team, the project milestone has been achieved ahead of schedule. We will proceed to the next phase next Monday.” 输出格式：使用商务中文，保持礼貌正式，不要添加额外解释。4. CoT 思维链框架 🔗适合需要逻辑推理、分步分析的问题，引导AI“一步步思考”。Few-Shot CoT：给出几个包含推理步骤的例子，AI会模仿这种思考方式。Zero-Shot CoT：只需在提问后加一句“请一步步思考”或“Let‘s think step by step”，AI就会自动展开推理。💡 案例：问题：“如果小明每天存10元，存了30天后，他用一半的钱买书，剩下的钱又每天花5元，能花几天？” 提示：“请一步步思考。” AI会先计算总金额，再算买书后剩余金额，最后算能花几天，并列出每一步。✅ 通用交互小贴士除了框架，这些技巧也能大幅提升对话效果哦：🧩 长文分段输出：比起一次性生成长篇内容，分多次请求输出，质量往往更稳定。🔗 符号分隔信息：用“---”、“===”或序号区分不同部分，AI更容易解析。🎓 给出示例：直接展示你想要的格式或风格，AI模仿能力很强！🧠 任务拆解：复杂任务拆成几个步骤，逐步引导，结果更可控。📏 明确限制：指定字数、格式、风格、语言难度等，避免AI“自由发挥”。🎨 总结：如何选择框架？需要AI扮演角色 → 用 CRISPE要写文案、内容 → 用 BROKE有具体输入、输出格式要求 → 用 ICIO需要逻辑推理、分步解答 → 用 CoT当然，也可以混合使用这些框架，比如在CRISPE中加入CoT的推理步骤，让AI既扮演角色又理性分析！

提示词设计案例
type: item
date: 2025-12-24T02:47:56+00:00
description: 版本1：详细判断型DETAILED_JUDGE_PROMPT = """ 你是一个专业的客服质检专家，专门负责检测客服的回复质量。【任务】 判断客服的回复是否属于"冗余或机械确认"。【定义】 "冗余或机械确认"指：当用户提问清晰明确时，客服采用简单重复用户问题的方式来确认，而没有提供额外价值、信息或引导。【判断标准】用户提问是否清晰明确？明确：包含具体需求、动作、对象（如"帮我解绑实名"）不明确：包含疑问词、模糊表达（如"这个怎么办？"）客服回复是否属于简单重复？是：客服只是把用户问题换个说法重复一遍否：客服提供了额外信息、解决方案、引导或确认了具体细节是否有必要进行这种确认？必要：用户问题存在歧义、需要澄清细节不必要：用户问题已经非常清晰明确【上下文信息】 会话开始时间：{session_start_time} 当前对话轮次：第{round_number}轮最近3轮对话历史： {recent_dialogue_history}【待判断的消息】 用户消息：{user_message} 客服回复：{assistant_message}【输出格式】 请严格按照以下JSON格式输出： {{ "is_violation": true/false, "reason": "详细的判断理由，至少50字", "confidence": 0.0-1.0的置信度, "suggestion": "改进建议（如果违规）"}}请开始判断： """版本2：思维链推理型CHAIN_OF_THOUGHT_PROMPT = """ 你是一个严谨的客服质检专家。请按照以下步骤进行推理：【步骤1：分析用户提问】 用户提问："{user_message}"是否清晰明确？请分析：是否有具体需求？是否有明确动作？是否有具体对象？结论：清晰明确 / 不够明确【步骤2：分析客服回复】 客服回复："{assistant_message}"主要内容和意图是什么？是否提供了额外信息或价值？与用户提问的关系是什么？【步骤3：判断是否属于冗余确认】 对比分析：客服是否只是简单重复用户问题？这种确认是否有必要？是否有更好的回复方式？【步骤4：综合判断】 基于以上分析，给出最终判断：最终判断：属于冗余确认 / 不属于冗余确认 理由：{至少100字的详细分析} 置信度：{0.0-1.0}【步骤5：输出】 请输出JSON格式： {{ "judgment": "属于冗余确认" 或 "不属于冗余确认", "reasoning": "完整的推理过程", "confidence": 0.95, "improvement": "改进建议（如果违规）"}} """版本3：多维度评估型MULTI_DIMENSIONAL_PROMPT = """ 作为客服质检专家，请从以下5个维度评估客服回复：【维度1：信息增量（0-10分）】 客服回复相比用户提问增加了多少新信息？0-3分：几乎没有新信息，简单重复4-6分：有少量新信息7-10分：提供了有价值的额外信息【维度2：确认必要性（0-10分）】 这种确认是否必要？0-3分：完全不必要，用户问题已非常清晰4-6分：有一定必要性7-10分：非常必要，需要澄清模糊点【维度3：回复效率（0-10分）】 回复是否简洁高效？0-3分：冗余啰嗦，可以更简洁4-6分：适中7-10分：非常简洁高效【维度4：服务意识（0-10分）】 是否体现主动服务意识？0-3分：被动机械，缺乏服务意识4-6分：基本满足要求7-10分：主动周到，体现专业服务【维度5：用户体验（0-10分）】 对用户体验的影响？0-3分：负面体验，让用户感到不被重视4-6分：中性体验7-10分：正面体验，让用户感到被重视【评估数据】 用户消息：{user_message} 客服回复：{assistant_message} 对话历史：{dialogue_history}【输出要求】 请输出JSON格式的详细评估： {{ "dimension_scores": {{ "information_increment": 分数, "confirmation_necessity": 分数, "reply_efficiency": 分数, "service_awareness": 分数, "user_experience": 分数 }}, "total_score": 总分（0-50）, "is_violation": true/false（总分<25为违规）, "detailed_analysis": "每个维度的详细分析", "recommendation": "具体的改进建议"}} """

从 0 到 1 在 CPU 上训练可推理可演示的小参数中文GPT
type: item
date: 2025-12-09T01:24:00+00:00
description: clearwind-tse/gpt_encode_teacher-cn-mini了解 GPT 的核心原理：分词 → 批处理 → 前向 → 损失 → 反向 → 优化 → 保存 → 推理（完整链路）掌握高效小模型技术：RMSNorm、RoPE、权重共享、短序列、小词表、量化仅用 CPU 训练：控制模型/数据规模、梯度累积、学习率预热与退火、禁用无关耗时特性可用答案保障：目标对齐（忽略前缀）、推理首步约束与后处理、停止词、提示词规范化代码结构src/model.py：GPT 核心（Embedding/自注意力/前馈/RMSNorm/RoPE/权重共享）src/data.py：分词器加载、指令和 LM 数据处理、批处理与目标构造src/train.py：CPU 训练主循环、评估、保存与动态量化、耗时统计src/infer.py：推理 CLI（温度、top-k、top-p、重复惩罚、停止词、输出清理）src/build_tokenizer.py：构建 HF ByteLevel BPE 中文分词器（带解码器，避免乱码）config.yaml：统一管理模型、训练、数据、分词器与保存路径data/*.jsonl：教学数据（{"prompt": "...", "completion": "..."}）使用技术模型结构：Decoder-only Transformer（因果自注意力）归一化：RMSNorm（简洁高效）位置编码：RoPE（相对位置，计算高效）前馈：SiLU（现代 LLM 常用）权重共享：词嵌入与输出层共享，降参数且表示一致训练：AdamW、学习率线性预热+余弦退火、梯度裁剪数据与分词：外置jsonl+HF ByteLevel BPE（显式设置 ByteLevel 解码器，避免乱码）推理：温度/top-k/top-p 采样、重复惩罚、停止词、输出清理、提示规范化量化：导出动态量化权重以加速 CPU 推理如何仅用 CPU 训练小模型+短序列：n_layer=4, n_head=4, n_embd=256, seq_len=128小词表：HF ByteLevel BPE（带解码器）梯度累积：batch_size=16, micro_batch=4（有效批 64）学习率策略：线性预热 10%+余弦退火资源控制：torch.set_num_threads(os.cpu_count())，DataLoader 禁用多进程（macOS 下更稳）训练结束导出量化权重，演示更流畅GPT 训练是如何实现的因果自注意力：下三角 mask 确保只看历史（src/model.py:98）Teacher Forcing：输入拼接“用户/prompt + 助手 + 答案”，仅对答案段计算损失（src/data.py:24–31）目标对齐：忽略区间为len(prefix)-1，确保第一个答案 token 参与训练（src/data.py:28–31）损失函数：CrossEntropyLoss(ignore_index=-100)（src/train.py:50）如何保证“回答可用”分词器解码器：HF BPE 设置 ByteLevel 解码器，彻底消除中文乱码（src/build_tokenizer.py:6–8）目标对齐修复：忽略len(prefix)-1，避免答案错位（src/data.py:28–31）推理约束：首步屏蔽PAD/BOS/UNK，前若干步屏蔽EOS，避免空答（src/infer.py:41–50, 68–73）开头清理：剔除首字符标点与空白（src/infer.py:26–30, 82–83）提示词规范化：去中文空格（src/infer.py:35–37）停止词/重复惩罚：控制尾部冗余与重复（src/infer.py:68–73）训练耗时与评估：日志实时打印eval loss与elapsed，课时内可观测质量（src/train.py:71–82）step by step1. 安装依赖python -m pip install -r requirements.txt2. 构建中文分词器（HF ByteLevel BPE）python -m src.build_tokenizer3. 配置核对config.yaml 中：data.train_path: data/train.jsonldata.val_path: data/val.jsonltokenizer.type: hf_tokenizerstokenizer.path: tokenizer/tokenizer.jsontraining.max_steps: 1500–2000（课堂机器允许的话）4. 训练（仅 CPU）python -m src.train观察日志：每eval_interv…

Graph RAG with Milvus
type: item
date: 2025-05-10T05:03:00+00:00
description: LLM的应用其响应准确性和相关性显的极其重要。检索增强生成（RAG）通过外部知识库增强模型能力，提供更丰富的上下文信息，减轻幻觉和知识不足等问题。然而，仅依赖简单的RAG范式存在局限性，特别是在处理复杂实体关系和多跳问题时，模型往往难以提供准确答案。[...]

你真的懂Token吗？ 🤖💬
type: item
date: 2025-02-01T02:27:00+00:00
description: 🧩 什么是Token？—— 模型的“语言乐高”简单来说，Token就是大模型眼中的“最小语言单位”，就像乐高积木一样，模型用它们拼出整个语言世界！🌍Token可以是：一个英文字母，比如 a一个完整词语，比如 cat 🐱 或 模型一个词的一部分，比如 un + believable甚至是一个标点符号，比如 ? 或换行符 \n模型在处理文本时，会先把句子“切碎”成Token，再把每个Token映射成一个数字ID，比如："This is a cute cat" → [101, 3847, 7292, 372, 471, 1293, 102]（别问我为什么是这些数字，这是模型的“暗号”啦！🔢）🚀 为什么非要Token化？—— 因为模型其实是“数学宅”啊！你可能会问：为什么不直接给模型看文字？ 因为模型本质上是个“数学工具”，它只认识数字，不认识字！🤖Token化的三大理由：语言太灵活：人类语言千变万化，缩写、错拼、方言…对模型来说简直是“天书”。Token化就是把混乱的文本变成整齐的数字序列，让模型好“消化”。拆分更好学：模型通过Token的组合规律学习语言。比如 un + believable，模型知道 un 表示否定，able 常见于形容词，就能举一反三！省资源：共享子词，减少词表大小。比如所有 -ing 结尾的词共享同一个Token，不用每个都存一遍，省钱又省力！💰🛠 Token在大模型里怎么用？—— 三步走：切分→编码→理解Tokenization（切分） 文本 → Token序列，比如加上特殊标记：[CLS] This is a cute cat [SEP]Embedding（嵌入） 每个Token变成一个向量（一堆数字），表示它的“语义特征”，比如："cat" → [0.0384, -0.0374, 0.0183, ...]模型计算 模型看着这些向量，推算出下一个最可能的Token，再转回文字输出给你！🧠➡️🗣️📌 你必须知道的Token冷知识 🧊首Token延迟：生成第一个Token最慢，因为模型要“读懂全文”，后面的Token就快多啦！⚡Token限制：每个模型都有输入输出上限（比如4K、8K、32K），超长内容会被截断哦！计费方式：大多数API按Token数量收费，包括输入和输出。所以聊天时记得“长话短说”更省钱～💸💡 拓展一下：Token化的“小心机”不同的模型有不同的“切词风格”：BERT喜欢用WordPiece（比如 playing → play + ##ing）GPT系列常用Byte Pair Encoding（BPE）中文模型可能按字切，也可能按词切，甚至混合切！所以，同样的句子，在不同模型眼里可能是不同的Token序列！😉🎯 总结一下Token就是模型理解语言的桥梁，把人类的文字变成机器能算的数字，再变回人类能读的文字。它不仅是技术的核心，也直接关系到模型的效果、速度和成本！

Transformer
type: item
date: 2024-10-31T07:05:00+00:00
description: Transformer 是一种神经网络架构。Transformer 最初在2017年的论文《Attention is All You Need》中被提出，并迅速成为深度学习模型的首选架构，广泛应用于文本生成、音频生成、图像识别、蛋白质结构预测等多个领域。核心组件:每个基于Transformer的文本生成模型主要由以下三个关键部分组成1.Embedding（嵌入层）2.Transformer Block（Transformer块）Attention MechanismMLP (Multilayer Perceptron) Layer3.Output Probabilities（输出概率）Embedding（嵌入层）​步骤1：Tokenization（分词）:​ 输入文本被分解成更小的单元，称为tokens（可以是单词或子词）。例如，输入"Data visualization empowers users to" 可能会被分解为["Data", "visual", "##ization", "empowers", "users", "to"]。GPT-2 的词汇表包含50,257个唯一的tokens。​步骤2：Token Embedding（token嵌入）:​每个token被映射到一个高维向量空间中，这个向量捕捉了token的语义信息。例如，GPT-2 Small 模型使用768维的向量来表示每个token。这些嵌入向量存储在一个形状为(vocab_size:词汇表大小, hidden_size:隐藏层维度) 的矩阵中。​步骤3：Positional Encoding（位置编码）:​为了捕捉序列中的位置信息，每个token还会附加一个位置编码。位置编码可以是固定的（如正弦/余弦函数）或可训练的（如GPT-2中直接训练的位置编码）。位置编码确保模型能够区分相同token在不同位置的不同含义。​步骤4：Final Embedding（最终嵌入）:​将token嵌入和位置编码相加，得到最终的嵌入表示。这一步使得模型不仅能够理解token的语义，还能理解它们在序列中的相对位置。Transformer Block（Transformer块）Transformer Block是Transformer架构的核心组件，通常由多个相同的块堆叠而成。每个块包括两个主要部分：Multi-Head Self-Attention（多头自注意力机制）MLP（多层感知机）Multi-Head Self-Attention（多头自注意力机制）Self-Attention使模型可以关注输入的相关部分，能够捕获数据中的复杂关系和依赖关系。步骤1：Query, Key, and Value Matrices（QKV矩阵）每个token的嵌入向量通过线性变换转换为三个向量：Query (Q)、Key (K) 和 Value (V)。这些向量用于计算注意力分数，确定每个token与其他token的相关性。Query (Q) ：搜索引擎栏中键入的搜索文本。这是您想要“查找更多信息”的令牌。Key (K) ：搜索结果窗口中每个网页的标题。它代表了查询可以满足的可能标记。Value (V) ：显示的网页的实际内容。将适当的搜索词（Query）与相关结果（Key）匹配，获得最相关页面的内容（Value）。步骤2：Masked Self-Attention（掩码自注意力）在生成任务中，为了防止模型“窥探”未来的信息，会应用掩码。具体来说，上三角矩阵的值被设置为负无穷大，使得模型只能关注当前及之前的token。​Attention Score​：Query和Key矩阵的点积决定了每个查询与每个密钥的对齐，生成一个反映所有输入令牌之间关系的方形矩阵。​Masking：​将屏蔽应用于注意力矩阵的上三角形，以防止模型访问未来令牌，将这些值设置为负无穷大。该模型需要学习如何在不“窥视”未来的情况下预测下一个token。​Softmax：​屏蔽后，注意力得分通过softmax操作转换为概率，该操作取每个注意力分数的指数。矩阵的每一行总和为一，并表示其左侧所有其他令牌的相关性。步骤3：Attention Output（注意力输出）计算注意力分数后，通过softmax函数将其转换为概率分布，然后与Value矩阵相乘，得到最终的注意力输出。GPT-2 使用12个自注意力头，每个头捕捉不同的token间关系。这些头的输出被拼接在一起并通过一个线性投影层。MLP（多层感知机）经过多头自注意力机制处理后的token表示被传递给MLP层，以进一步增强其表达能力。MLP层通常包括两层线性变换，中间夹着一个激活函数（如GELU）。第一层将输入维度扩展四倍，第二层再将其压缩回原始维度。Output Probab…

基于Embedding的搜索
type: item
date: 2024-01-06T04:41:00+00:00
description: 在数学中，向量（也称为欧几里得向量、几何向量），指具有大小（magnitude）和方向的量。二维平面中，一个向量表示xy坐标轴的坐标点 A(1，2)，在编程领域，一个二维向量对应的就是一个大小为二的float类型的数组。[...]