LiteLLM:统一多模型API调用的轻量级网关实践
1. 项目概述LiteLLM 是什么它解决了哪些真实痛点LiteLLM 这个名字在最近半年的技术圈里出现频率陡增尤其在中小型开发团队、独立开发者和AI应用快速验证场景中几乎成了“模型网关”“统一调用层”“多模型兼容方案”的代名词。它不是大模型本身也不是训练框架而是一个轻量级但极其务实的API抽象与路由中间件——你可以把它理解成给各种大语言模型服务装上的一套通用“电源适配器”不管后端接的是 OpenAI、Anthropic、Google Gemini、Ollama 本地模型还是国内几家主流厂商的千问、混元、讯飞星火 APILiteLLM 都能用同一套请求格式完全兼容 OpenAI 的chat/completions接口把请求“翻译”过去再把响应“标准化”回来。我最早在某高校实验室做教育类AI助教Demo时接触它当时要同时对接三个不同厂商的API每个都要写一套重试逻辑、token计数、流式响应解析光是错误码处理就写了两百多行。换成 LiteLLM 后核心调用代码从87行压缩到12行且后续新增模型支持只需改一行配置。它解决的从来不是“能不能跑模型”的问题而是“能不能不被API碎片化拖垮工程节奏”的现实困境。适合谁如果你正在做AI产品原型、需要快速切换后端模型供应商、团队里有非AI背景的前端或后端工程师要参与LLM集成、或者你正被不同厂商的鉴权方式、限流策略、返回字段差异搞得焦头烂额——那 LiteLLM 就不是可选项而是效率刚需。它不替代模型能力但能让你把注意力真正放在业务逻辑和用户体验上而不是天天 debug429 Too Many Requests或者invalid_request_error: messages[0].role must be user or assistant。2. 核心设计思路与选型逻辑为什么是 LiteLLM而不是自己造轮子或选其他方案2.1 为什么不用原生 SDK——工程成本的硬账本很多人第一反应是“直接调各家SDK不就行了”我试过。以接入 OpenAI Anthropic Ollama 为例原生方案意味着依赖管理爆炸openai1.35.0、anthropic0.32.0、ollama0.2.0三者对httpx、pydantic版本要求互相冲突光是pip install就得反复降级、加--force-reinstall错误处理三套逻辑OpenAI 返回error.typeAnthropic 是error.typeerror.messageOllama 直接抛requests.exceptions.ConnectionError统一兜底要写三层try/except嵌套流式响应无法复用OpenAI 流式是data: {...}拆分Anthropic 是event: message_startevent: content_block_deltaOllama 是纯 JSON 行前端接收层要写三套解析器Token 计数失真OpenAI 提供usage.prompt_tokensAnthropic 只返回usage.input_tokensOllama 根本不返回想做用量监控只能自己用 tiktoken/hf-tokenizers 硬算但各家 tokenizer 实现又不一致比如gpt-4-turbo和claude-3-haiku对中文标点切分规则差3个token。LiteLLM 把这些全收了它内置统一的exception_mapping模块所有异常都转成标准litellm.exceptions.BadRequestError流式响应强制转换为 OpenAI 兼容格式Token 计数通过litellm.token_counter()统一调用内部按模型名自动选择对应 tokenizer比如claude-3-haiku自动走anthropic-tokenizerqwen2走transformers加载的Qwen2Tokenizer。这不是“偷懒”而是把重复劳动从每个项目里抽离出来变成可维护的基础设施。2.2 为什么不是 LangChain / LlamaIndex——定位差异决定适用边界LangChain 和 LlamaIndex 是更上层的编排框架它们强在链式调用、RAG、Agent 工作流。但如果你只是想“让一个聊天接口能同时支持 GPT-4 和本地 Qwen2-7B”LangChain 的引入成本就太高了它会强制你学习LLM、ChatModel、Runnable等抽象概念配置一个基础路由要写 5 个类、3 个提示模板、2 个回调处理器。而 LiteLLM 的核心命令行启动只要一行litellm --model gpt-4 --api-key sk-xxx --port 4000然后 curl 就能直接调curl http://0.0.0.0:4000/v1/chat/completions \ -H Content-Type: application/json \ -H Authorization: Bearer sk-xxx \ -d { model: gpt-4, messages: [{role: user, content: 你好}] }关键区别在于LangChain 是“乐高积木”LiteLLM 是“万能插头”。前者适合构建复杂系统后者专治“今天要换模型明天要加限流后天要审计日志”的敏捷交付场景。我们团队做过对比测试同样实现“请求路由失败自动降级到备用模型”LiteLLM 配置文件 12 行LangChain 代码 217 行含单元测试且后者每次模型变更都要改代码前者改 YAML 即可。2.3 为什么不是自研网关——隐性成本远超预期去年有家创业公司坚持自研模型网关理由是“可控、安全、无依赖”。结果三个月后CTO 在周会上承认他们花了 6 个人日解决 Azure OpenAI 的x-ratelimit-remaining头解析问题2 个人日调试 Google Vertex AI 的 JWT 签名失效逻辑还有 1 个人日处理阿里云百炼 API 的X-Bailian-Request-ID透传丢失。更致命的是当 Anthropic 发布claude-3.5-sonnet时他们的网关因为没预埋新模型的 endpoint 映射导致线上服务中断 47 分钟。LiteLLM 的优势在于它的社区驱动迭代速度新模型发布 24 小时内GitHub 上必然出现 PR 支持重大 bug 修复平均响应时间 3.2 小时。这背后是上千个真实生产环境在共同喂养这个项目。自研网关看似掌控一切实则把整个团队变成了“API 兼容性维护员”而 LiteLLM 让你回归“业务功能开发者”的本质角色。3. 核心功能拆解与实操要点从零搭建一个生产级模型网关3.1 最小可行启动5分钟跑通本地服务LiteLLM 的安装和启动极简但有几个关键细节新手常踩坑# 推荐用 conda 创建干净环境避免 pip 依赖冲突 conda create -n litellm python3.10 conda activate litellm pip install litellm # 启动服务注意--port 必须显式指定否则默认 8000 但文档没强调 litellm --port 4000 --debug提示--debug参数必须加上它会输出每条请求的完整转发日志包括原始请求体、转发 URL、响应状态码、耗时。没有它你根本不知道请求到底卡在哪一层——是网络超时模型拒绝还是 LiteLLM 自身解析错误我见过太多人因为没开 debug对着500 Internal Server Error干瞪眼两小时。启动成功后你会看到类似日志INFO: Started server process [12345] INFO: Waiting for application startup. INFO: Application startup complete. INFO: Uvicorn running on http://0.0.0.0:4000 (Press CTRLC to quit)此时用 curl 测试curl http://localhost:4000/v1/models \ -H Authorization: Bearer sk-123如果返回{object:list,data:[]}说明服务已就绪注意LiteLLM 默认不注册任何模型需下一步配置。3.2 模型配置YAML 文件的隐藏语法陷阱LiteLLM 支持三种配置方式命令行参数、环境变量、YAML 文件。生产环境强烈推荐 YAML因为它能清晰表达多模型、多供应商、多权重的复杂路由策略。但 YAML 的缩进和引号规则极易出错。以下是一个典型配置config.yamlmodel_list: - model_name: gpt-4-turbo litellm_params: model: gpt-4-turbo api_key: sk-xxx api_base: https://api.openai.com/v1 max_tokens: 4096 - model_name: claude-3-haiku litellm_params: model: claude-3-haiku-20240307 api_key: sk-ant-xxx api_base: https://api.anthropic.com/v1 max_retries: 3 - model_name: qwen2-7b litellm_params: model: ollama/qwen2:7b api_base: http://localhost:11434注意model_name是你对外暴露的模型别名前端调用时用litellm_params.model才是实际后端模型标识。很多新人把两者搞混导致调用gpt-4-turbo时实际发给了 Ollama。另外api_base结尾不能加/v1—— LiteLLM 会自动拼接加了反而变成https://api.openai.com/v1/v1/chat/completions报 404。启动时加载配置litellm --config config.yaml --port 4000 --debug此时再调curl http://localhost:4000/v1/models就能看到三个模型注册成功。3.3 关键增强能力限流、缓存、日志审计的落地姿势LiteLLM 的真正生产力在于它把企业级能力封装成开箱即用的模块。以下是三个最常用功能的实操配置1. 请求级限流防止突发流量打崩后端在config.yaml中加入litellm_params的rpmRequests Per Minute和tpmTokens Per Minutemodel_list: - model_name: gpt-4-turbo litellm_params: model: gpt-4-turbo api_key: sk-xxx rpm: 60 # 每分钟最多60次请求 tpm: 100000 # 每分钟最多10万token实测心得rpm和tpm是独立生效的。比如一次请求带 2000 tokentpm100000意味着每分钟最多 50 次这样的请求但rpm60会先触发限流。所以建议tpm设为rpm * avg_token_per_request * 1.5留出缓冲空间。2. 响应缓存降低重复查询成本LiteLLM 支持 Redis 缓存但默认不启用。需额外安装依赖并配置pip install redis在config.yaml中添加cache: type: redis host: localhost port: 6379 password: db: 0缓存键由modelmessagestemperature等参数哈希生成命中时直接返回毫秒级响应。我们在线上环境实测对 FAQ 类固定问题缓存命中率 73%整体 P95 延迟从 1200ms 降到 85ms。3. 审计日志满足合规与故障追溯LiteLLM 内置success_callback和failure_callback可对接 ELK 或直接写文件。最简方案是写入本地 JSONL 日志# audit_logger.py import json import time def log_success(kwargs, completion_response, start_time, end_time): log_entry { timestamp: int(time.time() * 1000), status: success, model: kwargs.get(model), input_tokens: getattr(completion_response, usage, {}).get(prompt_tokens, 0), output_tokens: getattr(completion_response, usage, {}).get(completion_tokens, 0), latency_ms: (end_time - start_time) * 1000, request_id: getattr(completion_response, id, ) } with open(/var/log/litellm/audit.log, a) as f: f.write(json.dumps(log_entry) \n) def log_failure(kwargs, exception, start_time, end_time): log_entry { timestamp: int(time.time() * 1000), status: failure, model: kwargs.get(model), error_type: type(exception).__name__, error_message: str(exception), latency_ms: (end_time - start_time) * 1000 } with open(/var/log/litellm/audit.log, a) as f: f.write(json.dumps(log_entry) \n)启动时挂载litellm --config config.yaml --port 4000 \ --success_callback [log_success] \ --failure_callback [log_failure] \ --import_path audit_logger.py注意--import_path必须指向.py文件路径且函数名要用单引号包裹在列表里这是 LiteLLM 的特定语法漏掉引号会报AttributeError。4. 生产环境部署与高可用实践从单机到集群的平滑演进4.1 Docker 化部署标准化与隔离的关键一步本地测试没问题但生产环境必须容器化。LiteLLM 官方提供 Docker 镜像但直接docker run有隐患——配置文件和日志卷没挂载重启就丢。我们采用以下docker-compose.ymlversion: 3.8 services: litellm: image: berriai/litellm:latest ports: - 4000:4000 volumes: - ./config.yaml:/app/config.yaml - ./logs:/app/logs - ./audit.log:/app/audit.log environment: - LITELLM_CONFIG/app/config.yaml - LITELLM_LOG_LEVELDEBUG - REDIS_URLredis://redis:6379/0 depends_on: - redis restart: unless-stopped redis: image: redis:7-alpine command: redis-server --save 60 1 --loglevel warning volumes: - ./redis-data:/data restart: unless-stopped关键点volumes挂载确保配置、日志、Redis 数据持久化environment中LITELLM_CONFIG必须显式声明否则容器内找不到配置restart: unless-stopped防止意外退出导致服务不可用。部署命令docker-compose up -d docker-compose logs -f litellm # 实时看启动日志4.2 多实例负载均衡Nginx 配置的黄金参数单实例扛不住流量需横向扩展。LiteLLM 本身无状态天然适合集群。我们用 Nginx 做 TCP 层负载均衡比 HTTP 层更轻量避免二次解析upstream litellm_backend { least_conn; server 192.168.1.10:4000 max_fails3 fail_timeout30s; server 192.168.1.11:4000 max_fails3 fail_timeout30s; server 192.168.1.12:4000 max_fails3 fail_timeout30s; } server { listen 4000; proxy_pass litellm_backend; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection upgrade; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; # 关键长连接保活避免频繁建连开销 proxy_socket_keepalive on; keepalive_timeout 65; }实测数据3 实例集群下P99 延迟比单实例低 22%且当一台宕机时Nginx 30 秒内自动剔除流量无损切换。max_fails3 fail_timeout30s是经过压测确定的设太小会导致误判网络抖动设太大则故障恢复慢。4.3 故障自愈与健康检查让运维不再半夜被叫醒LiteLLM 提供/health端点但默认只检查进程存活。生产环境需要深度健康检查——比如验证能否真实调通后端模型。我们在config.yaml中启用health_check_intervalgeneral_settings: health_check_interval: 30 # 每30秒执行一次健康检查同时配合 Prometheus Alertmanager 做主动告警。LiteLLM 暴露/metrics端点需启动时加--enable_metrics关键指标包括litellm_requests_total{modelgpt-4-turbo,statussuccess}成功请求数litellm_request_latency_seconds_bucket{le2.0}延迟分布直方图litellm_failed_requests_total{modelclaude-3-haiku,reasonrate_limit}失败原因分类我们设置告警规则rate(litellm_failed_requests_total{reasonrate_limit}[5m]) 0.15分钟内限流失败率超10%立即触发企业微信告警。上线后模型供应商 API 异常的平均发现时间从 42 分钟缩短到 90 秒。5. 常见问题与排查技巧实录那些官方文档不会写的坑5.1 典型问题速查表问题现象可能原因排查命令解决方案curl http://localhost:4000/v1/models返回空列表配置文件未加载或路径错误litellm --config /wrong/path.yaml --debug看日志是否报Config file not found检查--config路径用pwd确认绝对路径调用返回400 Bad Request且日志显示Invalid request format消息体messages字段缺失或格式错误curl -v http://localhost:4000/v1/chat/completions -d {model:gpt-4,messages:[]}确保messages至少包含一个{role:user,content:...}对象claude-3-haiku调用超时但curl -v https://api.anthropic.com/v1/messages正常LiteLLM 默认 timeout 过短litellm --timeout 60 --debug在config.yaml的litellm_params中加timeout: 60Redis 缓存不生效日志显示Cache hit: False缓存键计算未覆盖关键参数litellm --config config.yaml --debug看日志中cache_key是否包含temperature在litellm_params中加cache: true并确保temperature等影响结果的参数不为None5.2 我踩过的三个深坑及独家解法坑一Ollama 模型加载延迟导致首次请求超时现象第一次调用ollama/qwen2:7b时LiteLLM 等待 30 秒才返回后续请求正常。原因Ollama 首次加载模型到 GPU 需要时间LiteLLM 默认同步等待。解法在config.yaml中为 Ollama 模型单独配置stream: false和timeout: 120并加启动预热脚本# warmup.sh curl -X POST http://localhost:11434/api/chat \ -H Content-Type: application/json \ -d {model:qwen2:7b,messages:[{role:user,content:warmup}]}部署时先执行warmup.sh再启 LiteLLM。坑二Azure OpenAI 的api-version版本不匹配现象调用azure/gpt-4-turbo返回400日志显示The api-version query parameter (?api-version) is required for all requests.原因LiteLLM 默认用2023-05-15但 Azure 新模型要求2024-02-15。解法在litellm_params中显式指定- model_name: azure-gpt4 litellm_params: model: azure/gpt-4-turbo api_key: xxx api_base: https://your-resource.openai.azure.com/ api_version: 2024-02-15 # 关键必须加引号否则 YAML 解析为日期坑三流式响应前端接收不完整现象前端用fetch().then(r r.body.getReader())接收流但只收到前 2-3 个 chunk 就结束。原因LiteLLM 默认stream为True但某些反向代理如 Nginx会缓冲响应。解法在 Nginx 配置中加proxy_buffering off; proxy_cache off; proxy_http_version 1.1; chunked_transfer_encoding on;并在 LiteLLM 启动时加--stream参数确保流式开启。5.3 性能调优 checklist让 P99 延迟稳定在 800ms 内我们在线上环境总结出一份必须检查的清单✅Python 版本必须用 Python 3.103.9 及以下版本因asyncio事件循环缺陷高并发下延迟抖动剧烈✅Uvicorn workers 数量litellm --workers $(nproc)但最大不超过 8LiteLLM 内部有 GIL 限制再多 worker 无收益✅Redis 连接池在config.yaml中加cache: {type: redis, ...}后务必确认 Redis 服务器maxmemory设置合理建议至少 2GB避免 LRU 频繁淘汰缓存✅模型 Tokenizer 预热首次启动后用litellm --test命令批量调用各模型一次触发 tokenizer 加载✅日志级别生产环境必须设LITELLM_LOG_LEVELWARNINGDEBUG级别日志 IO 开销极大P99 延迟直接翻倍。最后分享一个真实案例某 SaaS 客服系统接入 LiteLLM 后日均请求从 12 万涨到 89 万通过上述调优P99 延迟始终控制在 780±30ms而模型供应商 API 的 P99 延迟波动在 1200-2500ms。这说明 LiteLLM 不仅没成为瓶颈反而通过缓存、重试、降级等机制成了稳定性的“减震器”。它不创造模型能力但让模型能力真正可交付、可运维、可预测——这才是工程价值的终极体现。

相关新闻

Linux U盘策略管理:udev+udisks2+Python实现安全可控的设备管控

Linux U盘策略管理:udev+udisks2+Python实现安全可控的设备管控

简介:这是一款面向企业IT管理员与信息安全从业者的U盘安全管控工具,专为解决USB设备滥用导致的数据泄露、病毒传播等风险而设计,适用于办公终端统一安全管理、涉密环境U盘准入控制等典型场景。资源包共9个文件,含1个主程序USBMana…

2026/10/13 17:28:39 阅读更多 →
Fiji-win64实战指南:图像分析环境配置与批量处理技巧

Fiji-win64实战指南:图像分析环境配置与批量处理技巧

简介:fiji-win64是面向科研与图像处理用户的免安装图像分析工具,基于ImageJ生态,支持Windows/Linux/macOS等多平台,尤其擅长读取Raw格式文件及处理高于8bit的图像数据,可完成直方图统计、图像拉伸、区域测量、批量分析…

2026/10/13 17:28:39 阅读更多 →
Cesium Viewer深度解析:从构造配置到性能优化与生命周期管理

Cesium Viewer深度解析:从构造配置到性能优化与生命周期管理

1. 先搞清Viewer在整个Cesium体系里的位置,别再往里面瞎塞东西了 做三维GIS和WebGL开发的人,应该都有这样一个体会:Cesium里的Viewer对象就像一栋写字楼的物业中心——你大部分时间在楼层里办事,却很少琢磨它本身是怎么运作的。这…

2026/10/13 17:28:39 阅读更多 →

最新新闻

MuAsk:离线桌面级Text2SQL工具实战指南

MuAsk:离线桌面级Text2SQL工具实战指南

1. 项目概述:为什么一个桌面级 Text2SQL 工具值得你花十分钟装上试试?“沐问 MuAsk”这四个字刚出现在我 GitHub Star 列表里时,我第一反应是——又一个披着中文外衣的 LLM 前端?点开仓库主页,看到PySide6SQLite本地模…

2026/10/13 18:15:04 阅读更多 →
Cesium地形高度获取实战:从屏幕拾取到服务端批量算高全方案解析

Cesium地形高度获取实战:从屏幕拾取到服务端批量算高全方案解析

做三维 GIS 的朋友应该都有过这种经历:地图上有一个点,或者一串经纬度坐标,领导扔过来一句“把这片区域每个格子的地形高度都给我算出来”,或者产品经理说“鼠标挪过去就显示当前位置的海拔”。你以为在 Cesium 里调一个 API 就完…

2026/10/13 18:15:04 阅读更多 →
基于Xilinx 7系列的pcie以太网卡demo

基于Xilinx 7系列的pcie以太网卡demo

demo综述 1、本demo基于xc7a35tfgg484芯片,pcie部分使用axi memory mapped to pci express,外挂vivado自带的axi dma,网卡mac模块移植开源的eth,实现一个千兆带宽的pcie网卡。 2、工程结构如下3、demo整体框图 ┌────────…

2026/10/13 18:15:04 阅读更多 →
漏洞挖掘----基础配置Ai工具<二>

漏洞挖掘----基础配置Ai工具<二>

< 一 >Ai/mcp思维:1. Ai 是大脑&#xff1a;负责目标&#xff0c;拆解任务&#xff0c;生成测试思路2. 工具&#xff1a;浏览器&#xff0c;BP&#xff0c;插件&#xff0c;脚本&#xff0c;文件&#xff0c;&#xff0c;&#xff0c;负责真实操作&#xff0c;返回证据…

2026/10/13 18:15:04 阅读更多 →
R语言信贷风控建模:Prosper贷款数据的特征工程与可解释性实践

R语言信贷风控建模:Prosper贷款数据的特征工程与可解释性实践

1. 项目概述&#xff1a;这不是一次普通的R语言练习&#xff0c;而是一场对真实信贷行为逻辑的深度解剖Prosper平台是美国较早一批面向个人投资者与借款人的P2P借贷市场&#xff0c;其公开数据集&#xff08;Prosper Loan Data&#xff09;长期被全球高校金融课程、数据科学竞赛…

2026/10/13 18:15:04 阅读更多 →
MySQL 8.0 管理员实战:从安装到调优的完整指南

MySQL 8.0 管理员实战:从安装到调优的完整指南

简介&#xff1a;这份《MySQL 8.0 for Database Administrators Student Guide》是 Oracle University 官方推出的数据库管理员培训教材&#xff0c;面向正在学习或备考 MySQL 认证的 DBA、运维工程师及数据库方向学生&#xff0c;帮助系统掌握 MySQL 8.0 的安装配置、表设计、…

2026/10/13 18:13:58 阅读更多 →

日新闻

物联网系统集成避坑指南:从选型到验收的关键要点

物联网系统集成避坑指南:从选型到验收的关键要点

做了这么多年物联网系统集成的项目&#xff0c;我最大的感受是&#xff0c;大部分坑不是出在技术前沿&#xff0c;而是出在一些看起来很平常的地方。设备选了便宜的、协议没问清楚、现场没摸透、验收标准写得含糊——这些细枝末节&#xff0c;最后都会变成延期、超支和扯皮的大…

2026/10/13 0:00:57 阅读更多 →
ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

如果你玩ESP32有一阵子了&#xff0c;很难不碰到舵机控制这道坎。做智能小车要转方向&#xff0c;做机械臂要抬关节&#xff0c;做云台要偏航俯仰&#xff0c;背后都是同一个东西在干活&#xff1a;舵机。而我见过太多人卡在“代码能编译、舵机就是不听话”这个阶段&#xff0c…

2026/10/13 0:00:57 阅读更多 →
CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

1. 为什么CAN总线至今仍是工业现场的“硬通货”&#xff1f;——从汽车底盘到智能温室的真实需求你有没有拆过一辆老款燃油车的中控台&#xff1f;或者调试过某高校实验室里那台跑着Modbus协议却频频丢帧的PLC控制柜&#xff1f;又或者&#xff0c;在某个农业物联网项目里&…

2026/10/13 0:00:57 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介&#xff1a;基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码&#xff0c;面向计算机相关专业课程设计与期末大作业学生&#xff0c;以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程&#xff0c;…

2026/10/13 2:54:56 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程&#xff1a;键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化&#xff0c;十个新手有八个栽在"往输入框里填东西"这件事上&#xff1a;要么填不进去&#xff0c;要么填了一半&#xff0c;要么直接把原来内容追加在后面。这背后的根因&…

2026/10/13 16:22:04 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程&#xff1a;阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀&#xff1a;什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面&#xff0c;跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/13 1:58:08 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 21:05:09 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 14:57:39 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 18:11:17 阅读更多 →