用一套代码适配与调用多模型 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 操作并不是单线程的。 flowchart TB subgraph MainThread["Node.js 主线程 (V8 Java...
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...
Open WebUI + Ollama:搭建私人 ChatGPT
前言Ollama 能让你在本地跑模型,但命令行聊天的体验毕竟有限。Open WebUI 是一个开源的 ChatGPT 风格前端,配合 Ollama 可以实现: 和 ChatGPT 几乎一样的聊天界面 多模型随时切换对比 上传文档建知识库(RAG),让 AI 基于你的文件回答 多用户管理(给团队用) 对话记录搜索 这套组合部署在内网服务器上,就是团队自己的私有 AI 平台。 Open WebUI + Ollama 内网私有化全景架构 flowchart LR subgraph Users["局域网办公终端"] PC["团队成员 PC / 移动端浏览器"] end subgraph Gateway["接入与安全网关"] Nginx["Nginx 反向代理 (企业域名 / SSL / 访问流控)"] end subgraph FrontendService["应用交互层 (Dock...
Ollama 入门:一行命令跑起本地大模型
前言想在自己电脑上跑大模型,但看到”CUDA””量化””显存”这些词就头疼?Ollama 把这个门槛降到了最低——安装、下载模型、开始对话,三步搞定,不需要配置任何环境。 它在后台自动处理了模型量化、GPU 加速、内存管理这些脏活累活,对用户来说就是在终端里敲几行命令。 一、安装macOS:下载 Ollama.app,拖到 Applications 即可。 Linux: 1curl -fsSL https://ollama.com/install.sh | sh Windows:从 ollama.com/download 下载安装包,双击安装。 验证安装: 12ollama --version# ollama version is 0.9.0 Ollama 底层架构与混合计算调度 flowchart TB subgraph ClientLayer["客户端接入层"] CLI["ollama CLI 终端交互"] SDK["OpenAI 兼容 API / Py...
Flask Web 应用的模块化开发与生产环境部署
前言Flask 是一个轻量级 Web 框架,但微框架(Micro-framework)不意味着只能写玩具应用。很多开发者在面临中大型项目时,因为缺乏工程化架构规范,导致代码耦合严重、循环导入报错频发。 这篇文章以工程实践为主线,讲透 Flask 从模块化分层设计到生产环境高可用部署的完整链路。 一、 模块化架构设计:工厂模式与蓝图在单文件 Flask 应用中,我们通常直接创建全局 app 并将路由和数据库实例绑定其上。但随着业务扩张,这种做法会引发严重的 循环导入(Circular Imports) 灾难。例如,数据库模型类需要导入全局 db,而全局 db 的初始化又需要 app,这就形成了循环依赖的死结。 彻底解决这一问题的标准方案是采用 工厂模式(Application Factory) 配合 蓝图(Blueprint) 。 1.1 项目目录结构规划一个标准且解耦的 Flask 项目结构应当如下设计: 123456789101112131415my_flask_project/│├── app/│ ├── __init__.py # 应用工厂函数,初始...
本地 AI 开发环境搭建:Python、CUDA 与 PyTorch 配置实践
前言搞 AI 开发,第一道门槛往往是环境——CUDA 装不上、PyTorch 版本不对、显存不够报 OOM、各种依赖冲突。 这篇文章把安装步骤和常见坑一次性说清楚。 AI 全栈开发环境分层依赖架构 flowchart TB subgraph AppLayer["模型算法与应用框架层"] App1["大模型推理与微调 (Transformers / vLLM / PEFT)"] App2["智能体与向量检索 (LangChain / ChromaDB)"] App3["计算机视觉框架 (Ultralytics YOLO / OpenCV)"] end subgraph FrameworkLayer["核心深度学习框架层"] Torch["PyTorch (内建封装对应 CUDA Runtime 与 cuDNN)"] ...
使用 DdddOcr 识别常见字符与行为验证码
前言在进行网络爬虫数据采集、自动化测试(如 Selenium/Playwright)或者自动化脚本编写时,验证码(CAPTCHA) 往往是开发者面临的第一道、也是最头疼的屏障。 传统应对验证码的方案通常有两种: 接入第三方付费打码平台:按次收费,不仅产生持续的资金成本,且存在网络延迟和接口失效风险。 自己训练深度学习模型(CNN+CTC):需要采集数万张标注样本,配置 PyTorch 环境进行繁琐的训练,技术门槛极高。 直到开源项目 sml2h3/ddddocr(中文名:带带弟弟 OCR)的出现,彻底改变了这一切。它是一个离线运行、完全免费、零配置的通用验证码识别 SDK。你不需要懂得任何神经网络知识,只需一行代码,就能实现极高准确率的验证码识别。 本文将带你全面了解 ddddocr,并展示如何在真实的 Python 爬虫项目中实际运用它。 DdddOcr 底层推理架构与多模式识别机制 flowchart LR subgraph InputTier["输入层"] Img["验证码图像数据 (二进...
Python 核心语法与项目环境管理
前言写 Python 的人很多,但能写出符合工程规范、避开底层设计缺陷代码的人并不多。许多人在开始一个 Python 项目时,要么全局乱装依赖导致系统环境崩溃,要么写出诸如“默认参数为可变列表”的低级 Bug。 这篇文章从实际工程角度出发,讲清楚最基础但也最核心的环境管理规范,并剖析开发中高频使用的数据结构与语法避坑实践。 一、 虚拟环境管理与项目隔离在实际开发中,严禁在系统全局环境直接使用 pip install 安装依赖。这会导致不同项目间的库版本冲突,甚至可能破坏操作系统的包管理系统(例如 Ubuntu 或银河麒麟中依赖特定版本 Python 库的系统级工具)。 目前最通用且标准的方式是使用 Python 内置的 venv 模块进行项目环境隔离。 flowchart TB subgraph Global["系统全局环境 (System Environment)"] SysPython["系统 Python 内核 (/usr/bin/python3)"] ...
局域网自建 NTP 服务与多端平滑同步配置实践
前言:被低估的内网“时钟漂移”灾难在进行空气隔离(Air-gapped)的内网服务器集群部署时,工程师们往往把目光投向数据库主从、负载均衡或高可用底座,而常常忽略了一个看似微不足道却致命的基础服务—— 时间同步(NTP) 。 服务器主板上的石英晶体振荡器受环境温度、电压波动和硬件老化的影响,每天都会产生毫秒级甚至秒级的物理误差。这种现象被称为 “时钟漂移(Clock Drift)” 。在联网环境下,系统会自动向公网 NTP 服务(如阿里源、腾讯源)同步;但在完全物理隔离的私有化内网中,时钟漂移会无限制累积。 一旦多台服务器间的时间差超过临界值,将会引发灾难性的生产事故: 分布式 ID 生成器失效 :基于雪花算法(Snowflake)生成的 ID,一旦遭遇时钟回拨(Time Backwards),会直接抛出异常导致全局主键生成中断,业务服务大面积瘫痪。 数据库事务与日志混乱 :在 MySQL 主从、双主架构中,时钟不一致会导致数据一致性检查失效、Binlog 写入顺序倒流,极易诱发严重的事务冲突和脏数据。 分布式锁与 Token 提前失效 :Redis 分布式锁、JWT 授权凭证...