目录
[一、LLM 的接入方式](#一、LLM 的接入方式)
[二、API 接入](#二、API 接入)
[API 是什么?](#API 是什么?)
[以 Ollama 为例进行本地部署](#以 Ollama 为例进行本地部署)
[1. 下载 Ollama](#1. 下载 Ollama)
[2. 安装 Ollama](#2. 安装 Ollama)
[3. 验证](#3. 验证)
[4. 拉取模型](#4. 拉取模型)
[5. 测试](#5. 测试)
[四、SDK 接入](#四、SDK 接入)
[以 OpenAI Python SDK 为例](#以 OpenAI Python SDK 为例)
一、LLM 的接入方式
上一篇文章我们演示的都是通过现成的客户端,来进行 AI 行为,如聊天、生图等。如果现在要我们自己写一个 AI 应用来实现相关 AI 行为,则需要我们自行接入 LLM。
常见的原生 LLM(不经过第三方平台或复杂的代理层,直接与大语言模型提供方进行交互的方法)接入方式有三种 :【API 远程调用】、【开源模型本地部署】和【SDK 和官方客户端库】。

介绍三种接入方式
像 DeepSeek 网页、DeepSeek APP对话都属于现成客户端使用 。我们只管输入提问,底层调用模型、网络、鉴权全部由平台帮你封装好了,我们不用写代码,直接拿来用。这是普通用户的用法,不属于原生开发接入方式。
真正做开发写自己的 AI 应用的时候,就会涉及到三种原生接入 LLM 的方式:
- API 远程调用:发 http 请求去调用厂商云端大模型,最常用,LangChain 大部分场景都是走这套
- 开源模型本地部署:把模型文件下载到自己电脑 / 服务器,本地跑,不走外网 API
- SDK 官方客户端库:厂商封装好的代码库,本质内部还是封装 API 请求,不用手写 requests
这里引入了一个新概念 - AI应用,下面我们来了解一下:
第一种:对于普通用户而言,就是直接用别人做好的 AI 产品
像 DeepSeek 网页、DeepSeek 手机 APP对话全部属于这一类。 DeepSeek 官方已经把整套程序全部写完了。我们打开页面,打字提问就行。 不用写一行代码,只是拿来消费、使用 AI。同时我们也不能改造它,也不能把它嵌到你自己写的程序里面。
第二种:而对于开发者而言,自己开发 AI 应用就是自己写代码,做一个属于自己的 AI 程序。
举个例子,比如我们想用 Python 写一个小工具,或者基于 LangChain 做知识库问答机器人。这个时候因为我们的代码本身不会大模型能力,因此我们的程序就需要连上 LLM 大模型,借大模型的脑子来干活。 那 "怎么把我们自己的代码和大模型连到一起",此时就会出现那三种原生接入方式:API 调用、本地部署、SDK 库。
举个生活化例子帮助理解: 第一种就好比,你打开外卖 APP 点外卖,APP 是别人开发好的,你只管吃。 第二种就好比,你自己想开一家餐馆,你需要找食材供应商进货。这里的食材,就等价于 LLM 大模型。API、SDK、本地部署,就是三种进货渠道。
放到 LangChain 身上: LangChain 就是你写的这个 "餐馆业务逻辑",它本身不会聊天,没有思考能力。它必须通过 API/SDK 这类方式,去对接 LLM 大模型,借大模型的能力,才能完成问答、思考。
二、API 接入
API 是什么?
API 全程 Application Programming Interface ,翻译过来就是应用程序编程接口。 API 就是服务商对外开放的 "通信接口"。OpenAI 把大模型跑在他们自己的云端服务器上,因为我们不能直接跑到人家服务器里面操作模型。于是他们开了一扇对外的网络小门,这个小门就叫 API。我们按照它规定格式,把问题、密钥从这个小门递进去; 服务器内部跑大模型运算,再把答案,从这个小门回传给我们。
**API 接入是目前最主流、最便捷的接入方式,**尤其适用于快速开发、集成到现有应用以及不想管理硬件资源的场景。
通过 HTTP 请求(通常是 RESTful API)直接调用模型提供商部署在云端的模型服务。代表厂商有 OpenAI (GPT‑4o),Anthropic (Claude),Google (Gemini),百度文心一言,阿里通义千问,智谱 AI 等。典型流程就是:
- 注册账号并获取 API Key:在模型提供商的平台上注册,获得用于身份验证的密钥。
- 查阅 API 文档:了解请求的端点、参数(如模型名称、提示词、温度、最大生成长度等)和返回的数据格式。
- 构建 HTTP 请求:在你的代码中,使用 HTTP 客户端库(如 Python 的 requests)构建一个包含 API Key(通常在 Header 中)和请求体(JSON 格式,包含你的提示和参数)的请求。
- 发送请求并处理响应:将请求发送到提供商指定的 API 地址,然后解析返回的 JSON 数据,提取生成的文本。
以 OpenAI 为例,官网地址:https://platform.openai.com/(需要魔法上网):
如果没有账号先注册账号,登录成功后,出现 settings 图标,点击 settings,选择 API keys 配置页面。
点击 "Create new secret key" 按钮,新增 API key:
⚠️复制保存 key,这个密钥只显示一次,丢失无法找回。
此时 API Key 就获取成功了。拿到 API‑Key 之后,本质就一件事:给大模型服务商的服务器发 POST 网络请求,把你的问题送过去,等对方返回大模型的回答 JSON。
API接入的使用
这里我们有两种向大模型服务商的服务器发 POST 网络请求的方式 :
第一种方式 : 通过命令行工具 curl
首先 curl 不是一种特殊协议,它是命令行工具。我们在电脑终端敲命令,就能直接构造 HTTP 请求。它底层干的活依旧是发 POST 请求、带请求头、传 JSON 请求体。只是不用写完整代码,一行命令搞定测试,用来快速调试接口。
第二种方式 : Apifox/自己用代码构造 http 请求
这种方式就是需要我们自己手动组装 HTTP,POST 请求,header 带上 API‑Key,body 塞 JSON。Python requests 库写代码、Apifox 软件做的都是这件事。
这种方式就是 HTTP 调用(Apifox 可视化 HTTP 客户端)。底层本质依旧是发一条POST请求,访问 /v1/responses 接口。Body 部分选择 json 格式,把模型名字、用户提问写在 JSON 里面;再去到 Headers 标签页,填上 Authorization: Bearer 你的 API‑Key 做身份校验,点发送,就把请求传给 OpenAI 服务端。
输出结果:
返回一大段 JSON 结构,里面包含 id、状态 status、output 文本内容、token 消耗统计等字段。output.text 就是大模型返回给我们的回答文本;usage 字段统计输入 token、输出 token 数量,用来计费。
三、本地部署
大模型本地部署这种方式就是将开源的大型语言模型(如 Llama、ChatGLM、Qwen 等)部署在我们自己的硬件环境(本地服务器或私有云)中。
核心概念:将下载模型的文件 (权重和配置文件) 使用专门的推理框架在本地服务器或 GPU 上加载并运行模型,然后通过类似 API 的方式进行交互。
典型流程:
- 获取模型:从 Hugging Face(国外)、魔搭社区(国内)等平台下载开源模型的权重。
- 准备环境:配置具有足够显存(如 NVIDIA GPU)的服务器,安装必要的驱动和推理框架。
- 选择推理框架 :使用专为生产环境设计的框架来部署模型,例如:
- vLLM:特别注重高吞吐量的推理服务,性能极佳。
- TGI:Hugging Face 推出的推理框架,功能全面。
- Ollama:非常用户友好,可以一键拉取和运行模型,适合快速入门和本地开发。
- LM Studio:提供图形化界面,让本地运行模型像使用软件一样简单。
- 启动服务并调用 :框架会启动一个本地 API 服务器(如
http://localhost:8000),你可以像调用云端 API 一样向这个本地地址发送请求。
以 Ollama 为例进行本地部署
以 Ollama 为例,下面我们来演示下具体过程:
**Ollama 是一款专为本地部署和运行大型语言模型 (LLM) 设计的开源工具,旨在简化大型语言模型 (LLM) 的安装、运行和管理。**它支持多种开源模型 (如 qwen、deepseek、Llama),并提供简单的 API 接口,方便开发者调用,适合开发者和企业快速搭建私有化 AI 服务。
1. 下载 Ollama
提供 macOS、Linux、Windows 版本下载。
2. 安装 Ollama
下载完成之后,一步一步安装即可。
3. 验证
安装完成后,Ollama 默认会启动。
访问网页:http://127.0.0.1:11434,页面显示 Ollama is running 代表服务正常。
或者使用 cmd 执行命令:
输出版本号即为安装成功。
4. 拉取模型
Ollama 可以管理和部署模型,我们使用之前,需要先拉取模型。
修改模型存储路径 : 模型默认安装在 C 盘个人目录下 C:\Users\XXX\.ollama,可以修改 ollama 的模型存储路径,使得每次下载的模型都在指定的目录下。有以下两种方式:
配置系统环境变量:
- 变量名:
OLLAMA_MODELS- 变量值:
${自定义路径}
通过 Ollama 界面来进行设置:
在设置界面修改
Model location存储文件夹路径。设置完成后重启 Ollama。
下面就开始进行拉取模型:
以 DeepSeek‑R1 为例,DeepSeek‑R1 是一系列开放推理模型,其性能接近 O3 和 Gemini 2.5 Pro 等领先模型。DeepSeek‑R1 有不同的版本,我们需要根据自己机器的配置及需求来选择相应的版本。
版本后缀 1.5b,7b,8b 等,
b是 Billion(十亿)的缩写,代表模型的参数量级。671b 表示 "满血" 版本,其他版本称为 "蒸馏" 版本。参数量越大,模型 "知识量" 越大,处理复杂任务的能力越强,硬件需求也越高。
根据需求及电脑配置,选择合适的模型版本,以 1.5b 为例:
下载完成之后,就会出现命令行,可以通过命令行和 AI 模型对话。
5. 测试
模型拉取之后,可以通过命令行和 AI 模型对话:
同时我们也可以对比下 1.5b 和 70b 的区别:
1.5b:模型体积小,硬件压力低,回答简短,推理能力弱:
70b:对机器配置要求很高,输出内容更长,推理思考能力更强:
同样我们也可以通过 curl 接口调用的方式:
Ollama 在本机跑起来之后,对外暴露一套和 OpenAI 风格一致的 HTTP API。 所以前面学的 Apifox、curl、requests、LangChain 全部可以直接对接这个本地地址,不需要联网调用 OpenAI 云端。这就是本地大模型接入的完整链路。
相关问题:
Q1:Ollama 是不是大语言模型?和 DeepSeek、ChatGPT 的区别?
是的,Ollama 本身不是大模型,它是管理、启动、调度以及部署大模型的工具。DeepSeek、ChatGPT 才是 LLM 大模型本体。Ollama 不具备任何知识,它只负责读取模型权重文件,调用你的 GPU,把模型跑起来,对外吐出 API 接口。类比:大模型是游戏本体,Ollama 是游戏启动器。
Q2:比如 DeepSeek‑V4‑Pro,官方服务厂商云端有一套,我们本地部署就是把它搬到自己电脑/服务器上跑?
逻辑是这样。官方云端就是 DeepSeek 官方自己的高性能服务器在跑模型,对外提供 API 服务。当我们不想调用它的云端 API,就把模型权重下载到自己电脑、私有服务器,在你本机硬件上完成推理计算。但是会有硬性前提:硬件要匹配模型规格,参数量越大,对显存、内存要求越高,小参数量模型 CPU 也能勉强跑,但速度很慢,大参数量必须高性能 NVIDIA GPU。
Q3:两种使用大模型的方式,是不是①调用厂商云端 API;②本地部署,模型实体跑在自己机器?
完全正确。
- 云端 API 模式:大模型运行在厂商服务器。你的代码发 http 请求,计算全部在远端完成,你只接收返回结果,消耗 token 计费。代表:OpenAI、DeepSeek 开放平台 API。
- 本地部署模式 :模型权重完整存放在你的电脑 / 服务器,推理计算全部发生在本机,不访问厂商的服务器,本机就拥有完整 LLM 能力。
Q4:直接从 GitHub 拉取 DeepSeek‑V4‑Pro 权重来部署,属于本地部署吗?和 Ollama 是什么关系?
直接从 GitHub 拉取属于本地部署,但属于原生手动部署,是区别于 Ollama 的另一条路径。 GitHub/HuggingFace 上放的是原始模型权重文件。
- 手动方式:下载权重之后,你自己用 vLLM/TGI 等推理框架,手写配置、写启动命令,自己配置 API 服务,流程繁琐,需要懂很多参数。
- Ollama 方式:它底层依然会下载对应权重,只不过帮你封装好了。你只需要一条
ollama run命令,自动处理权重、启动推理、暴露 11434 端口 API,屏蔽底层复杂细节。简单总结二者关系:Ollama ≠ 模型来源,它只是一个更友好的上层工具。底层数据源依然来自魔搭、HuggingFace、GitHub 上开源的模型权重。我们也完全可以不用 Ollama,直接拿 github 下载的权重,用 vLLM 跑,这也是标准本地部署。
补充一个容易混淆的点:
不是所有版本都开源。DeepSeek‑V4‑Pro 要区分:云端对外服务版本,和真正开源放出权重的版本。有些商用版本只提供云端 API,并不会把权重上传 GitHub,这种就无法本地部署。只有官方明确开源权重的版本,你才可以下载到本地跑。
四、SDK 接入
**SDK 接入方式并非是一种独立的接入方式,而是对第一种 API 接入的封装和简化。**模型提供商通常会发布官方编程语言 SDK,为我们封装好了底层的 HTTP 请求细节,提供一个更符合编程习惯的、语言特定的函数库。
以 OpenAI Python SDK 为例
典型流程(以 OpenAI Python SDK 为例):
安装库:
安装 OpenAI SDK 后,可以创建一个名为 example.py 的文件并将示例代码复制到其中:
相比直接构造 HTTP 请求,代码更简洁、更易读、更易维护。
SDK 和直接调用 API (curl、http 请求) 的底层本质还是发 HTTP 网络请求,SDK 只是把拼接 header、拼接 json 报文、处理返回 json、异常捕获这些重复工作全部封装成了类和函数。让我们不用手动写 curl、不用手动构造请求体,直接调用 client.xxx() 方法就完成交互。
相关问题:
Q1:SDK 接入本质和原始 API 调用是同一种方式吗?只是编程语言层面的封装?
是的,底层完全是同一种方式。SDK 没有创造新的网络协议,内部依旧是组装 HTTP 请求、发网络调用、接收 HTTP 响应、解析返回 JSON。只是把手动拼接 header、拼接请求体、处理异常、解析返回报文这些重复工作全部封装成类与函数。
Q2:Python 里写 SDK,创建 py 文件,初始化 client 对象,调用方法就完成交互,对比手写 HTTP 请求,更容易维护?
没错。手写 HTTP 调用,我们要自己处理 url、headers、json 序列化、捕获网络异常、解析返回的 json 字段。使用 SDK 只需要实例化 client,调用现成方法,业务代码干净,后续接口字段变更,只需要升级 SDK 版本,不需要大面积修改业务代码,维护成本更低。
Q3:所以 SDK 接入并不是独立的全新接入类型,只是 API 接入的上层封装?
对。我们这里只是把它单独拿出来讲解,是开发实践角度的区分;从原理层面,它归属于 API 接入这一大类。
Q4:除 Python 之外,有没有 Java、C、C++ 版本的厂商 SDK?
有。主流大模型厂商基本都会提供多语言 SDK。 Java 一般会提供 Maven 依赖包,直接引入即可使用。C、C++ 官方完整 SDK 相对少一些,大部分厂商优先支持 Python、Java、Go 这类业务开发语言。C/C++ 场景下更多两种做法:一是直接手写 HTTP 请求调用原始 API;二是调用第三方封装好的 C++ HTTP 库自己做简单封装。
Q5:补充 LangChain 的语言情况
LangChain 主体生态以 Python 为主,有 Java 版本 LangChain4j,C++ 没有官方 LangChain,C++ 开发大模型应用大多直接裸调用 HTTP API。
五、问题与思考
接入方式的选择:
对于以上三种接入方式,我们该如何选择?
- 看数据敏感性:如果数据极其敏感,必须留在内部,本地部署是唯一选择。
- 看技术实力和资源:如果团队没有强大的 MLops(机器学习运维)能力,也没有预算购买和维护 GPU 服务器,云端 API 是更实际的选择。
- 看成本和规模:如果应用规模很大,长期来看,本地部署的固定成本可能低于持续的 API 调用费用。反之,小规模应用用 API 更划算。
- 看定制需求:如果只是使用模型的通用能力,云端 API 足够。如果需要用自己的数据微调模型,则需要选择支持微调的 API 或直接本地部署。
实际上,只要是原生 LLM,无论怎么接入都有限制。为什么?
- 输入长度限制 :所有 LLM 都有固定的输入长度(如 4K、8K、128K、400K Token)。我们无法将一本几百页的 PDF 或整个公司知识库直接塞给模型。

- 缺乏私有知识 :模型的训练数据有截止日期,且不包含我们的私人数据(如公司内部文档、个人笔记等)。让它基于这些知识回答问题,非常困难。

- 复杂任务处理能力弱:原生 API 本质是一个 "一问一答" 的接口。对于需要多个步骤的复杂任务(如 "分析这份财报,总结要点,并生成一份 PPT 大纲"),我们需要自己编写复杂的逻辑来拆解任务、多次调用 API 并管理中间状态。
- 输出格式不可控:虽然可以通过提示词要求模型输出 JSON 或特定格式,但它仍可能产生格式错误或不合规的内容,需要我们自己编写后处理代码来校验和清洗。
像 LangChain 这样的框架,正是为了系统性地解决这些问题而诞生的。
相关问题:
Q1:本地部署模型,是不是就没有 token 计费,可以免费随便用?
这个理解大体方向是正确,但要区分两层。**权重本身开源的前提下不会再向模型厂商交 token 调用费,不会像云端 API 那样每一次对话按 token 扣钱。**但不等于完全 "免费"。本地部署要承担硬件成本:GPU 服务器采购、电费、机器运维,这些是实打实开销。模型下载完之后,每一轮推理消耗的是你自己机器的显存、算力,不再经过厂商服务器,自然不存在 token 计费。
注意前提:必须是官方真正开源放出权重的版本。有些模型只开放云端 API,不开放权重,你根本做不了本地部署。
Q2:调用 API、SDK 方式,不管用 curl 直接 http,还是用官方 SDK,都是按 token 数量计费吗?
是的。SDK 只是封装 HTTP,底层依旧访问厂商云端服务。计费逻辑完全一样,统计输入 + 输出 token,按用量扣费。DeepSeek V4 调整的是云端 API 的单价,不管你用 apifox、curl、还是 Python SDK 去调用,全部按照这套 token 价格结算。
Q3:LangChain 是不是主要在 PyCharm 写 Python 代码,通过 SDK 形式来使用?
主流开发方式确实是这样:PyCharm 编写 Python 代码,安装
langchain相关包,写脚本运行。 但是要理清层级关系:LangChain 本身不是某个大模型的 SDK。 LangChain 自己不会直接去和大模型通信,它内部会二选一:
- 内部调用对应大模型厂商的官方 SDK(例如 openai、deepseek 的 python 包);
- 不依赖厂商 SDK,LangChain 自己组装 HTTP 请求直接访问模型接口。
不管对接的是云端 OpenAI/DeepSeek,还是本机 Ollama 本地模型,LangChain 都可以适配。在 PyCharm 写 Python 只是 LangChain 最主流的开发形态;它还有 Java 版本 LangChain4j,并非只有 Python 这一条路。
Q4:补充一个容易踩坑点
本地部署免的是厂商的 token 服务费,不代表所有模型都可以无限制商用。即使下载到本地,要看开源许可证,部分开源模型有商业使用限制,不是下载到本机就可以随便拿来做线上产品。
Q5:现在大模型 API 是不是基本都按 token 计费?
商用 API 主流都是按 token 用量计费,分为输入 token 和输出 token 两部分分开算钱,**输出 token 单价通常比输入更贵。**也有少数产品是按月订阅不限量,但开发者 API 接口几乎全部走 token 计量。不管你直接 http 调用,还是用 SDK,计费规则完全一样。
Q6:token 换算,英文 1token≈4 个字母;汉字 1 个汉字≈1.5token,这个说法对吗?
这是经验估算值,不是精确固定公式,只适合粗略心里估算。
英文:OpenAI 官方经验,1token 大约对应 4 个英文字符,这个比较准。
中文:GPT、Claude 分词器,1 个汉字大概 1.2‑1.5 个 token;
DeepSeek、通义千问这类国产模型对中文做过优化,1 个汉字大概 0.6‑1 个 token,会更省 token。
注意:标点、空格、代码符号全部都要算 token,实际数值以模型接口返回的 usage 字段为准,估算只能做参考。
Q7:我自己的 VS Code 的 Claude Code 显示消耗近 2 亿 token,你手动输入的文字远远没有这么多,所以我的推测:计费包含模型内部深度思考的 token,是不是正确?
完全正确,这就是消耗巨大的核心原因Claude。Claude 开启 extended thinking(深度思考)模式,模型内部思考推理产生的 thinking_tokens,全部计入输出 token,正常扣费,即便思考过程不完全展示给你看。 除此之外还有另外几个消耗大头:
- 每一轮对话,全部历史上下文都会作为输入送进去,对话越久,输入 token 会持续膨胀;
- Claude Code 内置大量系统提示词、工具定义,每次请求都会带上,这部分也统计输入 token;
- 它是 Agent 循环,不是只调用一次大模型,修复代码、检索文件会自动发起很多次内部模型调用,每一次调用都单独消耗 token。
所以肉眼看到的只有的提问和最终返回代码,但是后台发生大量思考、多轮内部调用,token 总量会远大于肉眼可见文字。
Q8:思考 token 是怎么计费?算不算输出?
推理类模型(Claude 思考模式、DeepSeek‑R1、OpenAI o 系列)内部思考产生的 token 统一归类为输出 token,使用输出 token 的单价扣费,没有特殊折扣。哪怕思考内容不全部展示出来,算力实实在在消耗,就要计费。
点击 "Create new secret key" 按钮,新增 API key:
⚠️复制保存 key,这个密钥只显示一次,丢失无法找回。





访问网页:


下载完成之后,就会出现命令行,可以通过命令行和 AI 模型对话。





相比直接构造 HTTP 请求,代码更简洁、更易读、更易维护。