选云端 API,还是本地部署?
很多人一开始会纠结这两个方向,其实没有绝对的好坏,核心看你的使用场景、数据敏感度和硬件条件,我自己日常是两种搭配着用。
云端 API 调用
简单说,就是通过大模型服务商提供的标准化接口,把你的请求发送到云端的模型服务,拿到返回的结果。对于前端同学来说,这个逻辑和我们日常调用后端接口完全没区别,理解成本几乎为零。我自己日常用得最多的就是这种方式,核心优势很明显:不用关心模型部署、算力硬件这些底层的东西,开箱即用;主流商用模型的推理能力、响应速度都很有保障;现在几乎所有服务商都兼容 OpenAI 的标准协议,一套代码可以无缝切换不同平台,不用重复写逻辑。
适用的场景也很明确:日常开发提效、做产品 Demo、处理非敏感数据,或者你就是想快速上手,不想折腾环境,选这个准没错。
本地私有化部署
就是把大模型下载到你自己的电脑上,完全在本地运行,请求和数据都不会出域。核心优势就是隐私性拉满,处理公司内部的敏感数据、不能外传的内容,只能用这种方式;没有接口调用的频次限制,也不用额外花钱,除了电费没别的成本;也可以根据自己的需求微调模型,可控性很高。
当然门槛也有,主要是硬件:入门级的小模型 16G 内存就能跑,想要流畅运行主流的 7B、13B 参数模型,优先选 Mac M 系列芯片,或者英伟达 3060 及以上的显卡。工具我一直用 Ollama,是目前本地模型管理最省心的工具,一键安装,一行命令就能拉取模型,不用折腾复杂的环境配置,最关键的是它同样兼容 OpenAI 标准协议,和云端调用的代码几乎可以完全复用。
两种方式我都用兼容 OpenAI 标准协议的写法,核心逻辑完全一致,用到的 import 导入、pip 包管理、函数调用这些,全是上一篇讲过的基础语法,没有超纲内容。
前置准备
先在终端执行一行命令,安装依赖库:
方式一:云端 API 调用(国内可直接访问)
这里我用 DeepSeek 来举例,国内网络不用翻墙就能用,注册就送免费额度,不用绑信用卡,对新手很友好。如果想用 OpenAI、通义千问、豆包这些其他平台,只需要改base_url、api_key和model这三个参数,核心逻辑完全不用动。
完整代码如下:
# 导入openai模块,和上一篇学的import导入语法完全一致from openai import OpenAI# 初始化客户端,填入你的API Key# API Key可以在DeepSeek开放平台的「API Key管理」里创建获取client = OpenAI( base_url="https://api.deepseek.com/v1", api_key="这里替换成你自己的API Key")# 发起调用请求,传入模型名称和你的指令response = client.chat.completions.create( model="deepseek-chat", messages=[{"role": "user", "content": "用Python写一个带详细注释的冒泡排序算法"}])# 打印返回结果,就是上一篇学的print输出函数print(response.choices[0].message.content)
几个新手容易踩的坑这里提一下:
- API Key 一定要替换对,不要带多余的空格,也不要把你的 Key 泄露给别人,国内普通网络就能直接访问,开了反而可能连不上如果提示找不到 openai 模块,检查一下 pip install 是不是执行成功,有没有装错 Python 环境
python --version // 检查 Python 是否安装
方式二:本地部署调用(Ollama)
先去 Ollama 官网一键安装对应系统的版本,安装完成后,打开终端执行ollama pull llama3,拉取最常用的 llama3 模型,保持 Ollama 在后台运行,就可以用下面的代码调用了。
你会发现,代码和云端调用几乎一模一样,只改了base_url和api_key,核心逻辑完全复用:
from openai import OpenAI# 初始化本地客户端,api_key随便填就行,本地调用不需要真实密钥client = OpenAI( base_url="http://localhost:11434/v1", api_key="ollama")# 发起调用,model参数填你本地已经拉取的模型名称response = client.chat.completions.create( model="llama3", messages=[{"role": "user", "content": "用Python写一个带详细注释的冒泡排序算法"}])print(response.choices[0].message.content)
如果运行报错,先检查 Ollama 是不是在后台正常运行,模型是不是已经 pull 成功,端口 11434 有没有被占用。
一个小技巧,让 AI 的输出更符合你的需求
很多人跑通代码之后,会觉得 AI 给的结果不对、太泛,其实核心问题是你的指令写得太模糊了。我自己日常写 prompt,不会搞什么复杂的公式,就抓住一个核心:把你的需求说具体,给 AI 明确的边界。
举个例子,很多人会这么写:
帮我写个 Python 爬虫
这种指令 AI 只能给你一个泛泛的模板,大概率跑不通,也不符合你的需求。
换个写法,把需求说具体:
你是资深 Python 开发工程师,帮我写一个爬取豆瓣电影 TOP250 的爬虫脚本,只用 requests 和 BeautifulSoup 库,代码要带详细注释,兼容 Python3.8 以上版本,添加异常处理和请求头伪装,避免被反爬。最后先输出完整代码,再附上运行步骤。
你把这段内容替换到上面代码的content里,AI 给的结果会精准很多,基本不用改就能直接用。核心就是把「你是谁、要做什么、有什么限制、要什么样的输出」说清楚,不用搞花里胡哨的东西,日常开发完全够用。
最后
以上就是两种 Python 调用大模型最常用的实现方式,核心都是基于 OpenAI 的标准协议,代码复用性很高,大家可以根据自己的场景选择。对于刚入门的同学,我更推荐先从云端 API 入手,不用折腾环境,先跑通流程,拿到正反馈,再去玩本地部署也完全不迟。