微调入门:什么是 Fine-tuning,什么时候需要它
前言网上很多文章上来就教你跑微调代码,但很少讲清楚一个根本问题:你需不需要微调。 这篇文章先回答”什么时候需要微调”,再讲清楚微调的核心概念和方法,最后给出一个决策框架。 一、微调 vs RAG:什么时候选哪个 RAG(检索增强) 微调(Fine-tuning) 解决的问题 让模型知道它不知道的事实 让模型学会它不会的行为 典型场景 “公司年假怎么请?” “用公司客服特有的语气回复用户” 数据需求 文档(PDF、TXT、网页等) 几百到几万条”输入-输出”示例对 成本 低,不需要 GPU 训练 中到高,需要 GPU 维护 文档更新即生效 需要重新训练 延迟 多了检索步骤,略慢 没有检索步骤,快 举例 产品手册问答、制度查询 特定风格的文案生成、领域分类、结构化提取 简单判断标准: 12345678你的任务需要模型知道很多事实类信息? → 用 RAG你的任务需要模型以特定的格式/风格/逻辑去推理和生成? → 考虑微调两个都要? → RAG + 微调 结合使用 二、全量微调 vs LoRA vs QLoRA全量微调(Full Fin...
Claude Code 扩展机制:理解 MCP、Skills 与 Agent 协作
前言Claude Code 不是一个孤立的命令行工具——它通过 MCP、Skills 和 Agent 三层机制,可以接入外部数据源、复用工作流程、编排多智能体协作。 这篇文章从概念到配置,把这三种机制说清楚。 一、MCP(Model Context Protocol,模型上下文协议)MCP 是什么MCP 是 Anthropic 提出的一套开放协议,让 AI 模型能安全地访问外部工具和数据源。你可以把它理解为”AI 的 USB 接口”——只要实现了 MCP 协议,任何工具和数据源都能被 Claude 调用。 在没有 MCP 之前,让 AI 查数据库或调 API 需要自己写代码封装 Function Calling。有了 MCP,第三方直接提供现成的 MCP Server,配置一下就能用。 MCP 的架构123456Claude Code(客户端) │ ├── MCP Server A ── 连接数据库,执行 SQL 查询 ├── MCP Server B ── 连接 GitHub API,管理 Issue 和 PR ├── MCP Server C ── ...
Claude Code + CCSwitch 使用教程:从安装到实践
前言Claude Code 是 Anthropic 推出的命令行 AI 编程助手,直接在终端里运行。和 Copilot 的补全模式不同,Claude Code 是对话式的——你告诉它要做什么,它读你的代码、写修改、跑命令,像一个在终端里随时待命的结对程序员。 CCSwitch 是社区开发的一个配置管理工具,用来解决 Claude Code 的多账号切换、Token 管理、模型选择等问题。 一、Claude Code 安装前提条件 Node.js >= 18 一个 Anthropic API Key(console.anthropic.com 申请)或者 Claude 订阅账号的 Token 安装1npm install -g @anthropic-ai/claude-code 验证: 1claude --version 初始化配置123456# 方式一:用 API Key(按量计费)export ANTHROPIC_API_KEY=sk-ant-xxxxxxxx# 方式二:用 Claude 订阅账号的 OAuth Tokenclaude login# 这会...
AI Agent 入门:让大模型自己干活
前言到目前为止我们讲的大模型用法——不管是普通对话还是 RAG——本质上都是”你问一句,它答一句”。 Agent(智能体)让模型更进一步:给一个目标,它自己规划步骤、调用工具、检查结果、修正错误,直到把事办成。就像你交代下属一个任务,不需要把每个细节都告诉他怎么做。 一、Agent 和普通 Chat 的区别12345678910普通 Chat:你: "今天北京天气怎么样?"模型: "抱歉,我无法获取实时天气信息。"Agent:你: "帮我查一下北京今天的天气,如果下雨就提醒我带伞"Agent 做了三件事:1. 调用天气 API: get_weather("北京") → "多云转小雨,15-22°C"2. 分析结果:有小雨3. "今天北京多云转小雨,15-22°C,出门记得带伞。" Agent 本质上是 LLM + 工具 + 循环 的组合。LLM 负责思考规划,工具负责执行实际操作,循环负责检查修正。 二、ReAct 模式这是目前 Agent 最主流的实现模...
基于 RAG 架构构建企业内网文档问答机器人
前言前面那篇 RAG 入门讲了基本原理和最小 Demo。这篇从实际部署的角度,做一个能真正给团队用的文档问答机器人。 完整的流程包括:多种格式文档导入 → 智能切片 → 向量化存储 → 检索优化 → 大模型回答 → Web 界面。 一、项目架构12345678docs/ (PDF/Word/Markdown/TXT) → 文档加载器 → 文本切片器 → Embedding 模型 → ChromaDB 向量库 → 检索器 (混合检索: 向量+BM25) → LLM (DeepSeek/通义千问) → Gradio Web UI 二、环境与依赖123pip install langchain langchain-community langchain-openaipip install chromadb pypdf docx2txt unstructured rank-bm25pip install gradio # Web UI 三、文档加载(支持多种格式)12345678910111213141516171819202122232...
RAG 入门:给大模型接上你的知识库
前言大模型的知识截止于训练数据的时间点,而且不知道你公司内部的产品文档、技术手册、规章制度。 RAG(Retrieval-Augmented Generation,检索增强生成)解决了这个问题:先把你的文档”喂”给系统,用户提问时,系统先检索最相关的文档片段,再把片段和问题一起发给大模型。这样模型就能基于你的私有知识来回答了。 这篇文章用最小的代码量,跑通一个完整的 RAG 流程。 一、RAG 的核心流程12345文档 → 切片 → Embedding → 向量数据库 ↓ (用户提问时)用户提问 → 向量化 → 相似度检索 → Top-K 文档片段 ↓ 拼进 Prompt → 发给 LLM → 返回答案 四个关键步骤: 加载文档:读入 PDF、TXT、Markdown、网页等 文本切片:大文档切成小段落(chunk) 向量化存储:把每个 chunk 转成向量,存入向量数据库 检索 + 生成:查询...
Function Calling 进阶:让 AI 调用你的函数
前言前面的 OpenAI API 文章演示了基本的对话。这篇讲 API 中最重要也最容易被低估的功能:Function Calling——让模型不仅能”说话”,还能”做事”。 Function Calling 不是让模型执行你的代码,而是让模型决定什么时候该调用哪个函数,以及用什么参数。模型返回函数名和参数,你的代码负责执行,然后把结果返回给模型。 一、基本机制1234567用户: "今天北京天气怎么样?"1. 你的代码发送请求,同时告诉模型有哪些工具可用2. 模型分析用户意图,返回: {"function": "get_weather", "arguments": {"city": "北京"}}3. 你的代码执行 get_weather("北京"),拿到结果 "晴,22°C"4. 你的代码把结果发给模型5. 模型生成最终回复: "北京今天晴朗,气温22°C,适合户外活动...
用一套代码适配与调用多模型 API
前言OpenAI 的 API 格式已经成为事实标准。国内的主流模型平台——DeepSeek、通义千问、豆包、硅基流动、零一万物——全都兼容这套格式。 这意味着写一次代码,换个 base_url 就能切模型。这篇文章讲清楚各平台的接入方式,以及如何封装一个统一的调用工具。 一、主流平台接入速查OpenAI12345from openai import OpenAIclient = OpenAI( api_key="sk-xxxxxxxx", base_url="https://api.openai.com/v1" # 这是默认值,可省略) DeepSeekplatform.deepseek.com 注册充值,费用极低(约 OpenAI 的 1/10)。 1234client = OpenAI( api_key="sk-xxxxxxxx", base_url="https://api.deepseek.com") 可用模型:deepseek-chat(V3 通用)...
Node.js 异步编程模型与核心模块应用
前言Node.js 的出现打破了传统的“一个连接一个线程”的网络服务模型,依托 V8 引擎与 libuv 库,开创了单线程异步非阻塞 I/O 的开发模式。 许多开发者常被“单线程”和“异步”的概念绕晕,在面对复杂的业务流程时容易陷入代码失控。这篇文章剥离底层概念,从事件循环架构出发,讲透 Node.js 异步编程的演进逻辑与高频核心模块的实际应用。 一、 单线程事件循环与非阻塞 I/O 的本质在传统的后端服务(如 Java 的 Tomcat 线程池模型)中,每一个并发网络请求都需要分配一个独立的系统线程去处理。如果该请求涉及到读取磁盘文件或查询数据库,线程就会进入 阻塞状态 ,直到数据返回。这种模式对系统内存的消耗极大(每个线程通常需要分配 1MB 的栈空间)。 1.1 单线程与多线程的协作Node.js 采取了完全不同的策略: JavaScript 代码在单个主线程上运行,但底层的 I/O 操作并不是单线程的。 12345678910111213141516┌────────────────────────────────────────────...
OpenAI API 入门:从申请 Key 到第一个 Chat 应用
前言用 ChatGPT 的网页版聊天很简单,但如果想把 AI 能力集成到自己的应用里——比如做个客服机器人、自动写周报的工具、代码审查助手——就需要通过 API。 OpenAI 的 API 是目前最成熟的大模型接口,而且很多国产模型(DeepSeek、通义千问、豆包)都兼容它的格式,学一次到处能用。 一、申请 API Key 打开 platform.openai.com 注册账号(需要海外手机号验证,可以用虚拟号平台) 进入 Dashboard → API Keys → Create new secret key 复制 Key(只显示一次,保存好) 充值:OpenAI 是预付费制,在 Billing 页面绑定信用卡或使用充值额度。个人开发者先充 5-10 美元足够玩很久了。 如果 OpenAI 用不了怎么办? 国内的替代方案(都兼容 OpenAI API 格式,只改 base_url 和 key): 平台 base_url 获取 Key DeepSeek https://api.deepseek.com platform.deepseek.com 通义千问 h...