DeepSeek API 调用避坑指南:OpenAI 兼容性实战要点
简介本资源是一份面向Python开发者与AI应用工程师的DeepSeek API实战指南聚焦从零开始完成API注册、调用、响应处理到高级功能集成的全流程实践解决大模型接口快速落地中的环境配置、代码适配、流式输出与多轮对话等典型问题。资源为单个13KB的Word文档.docx内容结构清晰涵盖API Key获取、OpenAI SDK与原生HTTP双路径调用示例、JSON响应解析、temperature/max_tokens等参数调优、streamTrue流式实现及安全使用规范所有代码均可直接运行并按业务需求二次修改。目前已有3158人学习下载适合具备基础Python编程能力、希望将DeepSeek语言能力嵌入聊天机器人、智能客服或文本生成类项目的开发者提供即学即用的可执行方案与官方文档精准对照指引。1. DeepSeek API 调用不是“换模型名就完事”兼容 OpenAI 接口的真相与三类典型翻车现场你刚把openai.ChatCompletion.create(modelgpt-3.5-turbo, ...)里的模型名替换成deepseek-chat一跑——报错401 Unauthorized再检查 API Key发现官网后台根本没生成过密钥只有「申请试用」按钮好不容易拿到 key流式输出却卡在第一个 chunkdelta[content]居然是None……这不是玄学是 DeepSeek API 兼容层里埋着的三处硬边界。它确实复用了 OpenAI v1 的请求结构、字段命名和 JSON Schema但认证机制、流式响应格式、错误码语义和上下文长度策略全都不一样。这份指南不讲“API 是什么”只解决你此刻正对着终端发呆的问题怎么让第一行print(response.choices[0].message.content)真正吐出字而不是抛出KeyError或ConnectionResetError。适合刚注册完账号、pip install 完 openai、手边开着 VS Code 和浏览器双窗口的实战派——不需要懂大模型原理但得能看懂 HTTP 状态码、会改 Python 字典键、知道streamTrue后循环里该判什么字段。所有代码均经实测2024 年 Q3 最新接口行为覆盖从注册入口到生产级重试的完整链路。2. 注册、密钥与环境为什么你的 API Key 总是“查无此钥”DeepSeek 的 API 访问权限不是注册即开而是分阶段释放。很多开发者卡在第一步不是因为不会点按钮而是没看清权限流转路径。下面拆解真实流程每一步都对应一个可验证的动作。2.1 官网注册与权限申请两个入口三种状态DeepSeek 官网目前存在两套用户体系对话产品用户如 deepseek.com/chat和API 开放平台用户api.deepseek.com。前者注册后无法直接访问 API 控制台必须完成额外动作访问https://api.deepseek.com注意是api.子域非www.或deepseek.com点击右上角「登录」→「注册账号」使用邮箱密码完成基础注册登录后页面自动跳转至「API 试用申请」表单非「API Keys」页填写表单时「应用场景」必须具体例“内部知识库问答系统日均调用量约 200 次”空填或写“学习研究”大概率被驳回提交后审核周期为 1–3 个工作日邮件通知结果提示审核通过后你会收到一封含「API Console 入口链接」的邮件点击进入才是真正的控制台。此时再找「API Keys」菜单才可见——别在未审核通过前反复刷新旧页面。2.2 密钥生成与安全实践别让 key 出现在 git history 里审核通过后在控制台「API Keys」页点击「Create new key」系统生成一串 52 位字符的密钥格式如sk-xxx...xxx。关键操作在此立即复制并离线保存页面关闭后密钥明文不可再查看仅显示前 4 位和后 4 位如sk-abc...xyz命名要有业务标识不要用key1、test而用prod-webapp-v2、dev-jupyter-notebook便于后续审计禁用明文硬编码以下写法是高危操作必须替换# ❌ 危险密钥写死在代码里git commit 后永久泄露 openai.api_key sk-abc123def456...正确做法是使用环境变量# 终端执行Linux/macOS export DEEPSEEK_API_KEYsk-abc123def456...# ✅ 安全从环境变量读取 import os import openai openai.api_key os.getenv(DEEPSEEK_API_KEY)注意若用 Jupyter Notebook需在 notebook 启动前设置环境变量或在 cell 中用os.environ[DEEPSEEK_API_KEY] ...仅限本地调试切勿提交。2.3 环境准备OpenAI SDK 版本陷阱与 requests 替代方案DeepSeek 官方声明兼容 OpenAI Python SDK但仅兼容openai1.0.0的新版 SDK即from openai import OpenAI风格不兼容openai1.0.0的旧版import openaiopenai.ChatCompletion.create。这是最常被忽略的兼容性断点。验证当前 SDK 版本pip show openai # 输出应为Version: 1.35.122024 年 9 月最新稳定版 # 若显示 0.x.x则必须升级 pip install --upgrade openai若坚持用旧版 SDK 或需要细粒度控制 HTTP 请求如自定义超时、代理、重试逻辑requests是更可控的选择。但要注意DeepSeek 的 base URL 不是https://api.openai.com/v1而是https://api.deepseek.com/v1且必须带/v1路径少一个斜杠都会返回404 Not Found。# ✅ 正确 base URL注意 /v1 BASE_URL https://api.deepseek.com/v1 # ❌ 错误示例少 /v1 BASE_URL https://api.deepseek.com # 返回 404 BASE_URL https://api.deepseek.com/ # 返回 4043. 核心调用两种方式的参数对齐与响应解析差异用 OpenAI SDK 调用 DeepSeek表面是改个model参数实则背后有 7 处字段语义偏移。下面逐一对齐确保你传的参数真被服务端理解。3.1 OpenAI SDK 方式初始化客户端与参数映射表新版 SDKopenai1.0.0要求显式创建OpenAI实例并传入base_url和api_key。这是强制步骤旧版openai.api_key xxx写法在新版中已失效。from openai import OpenAI # ✅ 必须指定 base_url否则默认走 OpenAI 官方地址 client OpenAI( api_keyos.getenv(DEEPSEEK_API_KEY), base_urlhttps://api.deepseek.com/v1 ) # 发起请求 response client.chat.completions.create( modeldeepseek-chat, # 必填固定值 messages[ {role: user, content: 你好请介绍 DeepSeek 的功能。} ], # 以下参数 DeepSeek 均支持但含义有细微差别见下表 temperature0.7, max_tokens512, top_p0.95 ) print(response.choices[0].message.content)参数名OpenAI 含义DeepSeek 实际行为是否建议调整temperature控制随机性0确定性输出行为一致0.1~0.9 区间效果稳定✅ 可用max_tokens最大生成 token 数实际限制更严格免费试用额度下单次请求上限为 2048 tokens含 prompt completion⚠️ 建议设 ≤1500避免400 Bad Requesttop_p核采样阈值行为一致但top_p1.0时可能触发服务端降级策略✅ 可用但避免top_p0.0frequency_penalty抑制重复词频DeepSeek 当前版本暂不生效传入会被忽略❌ 勿设省去无效调试presence_penalty抑制新话题引入同上暂不支持❌ 勿设stop指定停止序列支持字符串数组如[\n, 。]但不支持正则表达式✅ 可用但只传简单字符串提示frequency_penalty和presence_penalty在 DeepSeek 当前 API 文档中未列出实测传入后响应无变化属于「文档未声明服务端静默丢弃」类型。与其花时间调参不如用stop字段做硬截断。3.2 requests 直连方式手动构造请求头与错误处理骨架当 SDK 封装不够用如需自定义重试、监控耗时、注入 trace_id直连requests更透明。以下是生产环境推荐的最小健壮模板import requests import json import time def call_deepseek_api( api_key: str, messages: list, model: str deepseek-chat, temperature: float 0.7, max_tokens: int 512, timeout: tuple (10, 60) # (connect, read) ): url https://api.deepseek.com/v1/chat/completions headers { Authorization: fBearer {api_key}, Content-Type: application/json } data { model: model, messages: messages, temperature: temperature, max_tokens: max_tokens } try: response requests.post( url, headersheaders, jsondata, timeouttimeout ) response.raise_for_status() # 抛出 4xx/5xx 异常 return response.json() except requests.exceptions.Timeout: print(❌ 请求超时请检查网络或增大 timeout 参数) raise except requests.exceptions.ConnectionError: print(❌ 连接失败请检查 base_url 是否正确) raise except requests.exceptions.HTTPError as e: print(f❌ HTTP 错误: {e}) print(f响应体: {response.text}) raise # 使用示例 api_key os.getenv(DEEPSEEK_API_KEY) result call_deepseek_api( api_keyapi_key, messages[{role: user, content: 用 Python 写一个快速排序}] ) print(result[choices][0][message][content])这段代码的关键价值在于把错误分类暴露出来。requests的异常类型比 SDK 更细能帮你快速定位是网络问题ConnectionError、超时Timeout还是服务端拒绝HTTPError。尤其当遇到429 Too Many Requests时SDK 默认不重试而你可以在这里加指数退避逻辑。3.3 响应结构解析为什么response.choices[0].message.content有时是 NoneDeepSeek 的响应 JSON 结构与 OpenAI 完全一致但有一个隐藏坑当finish_reason为length时content字段可能为空字符串而非None。这会导致.strip()后长度为 0但if response.choices[0].message.content:判断仍为True进而引发下游逻辑错误。安全解析方式choice response.choices[0] message choice.message # ✅ 正确判断 content 是否有效 if hasattr(message, content) and isinstance(message.content, str): content message.content.strip() if content: # 非空字符串才视为有效输出 print(✅ 有效响应:, content) else: print(f⚠️ content 为空finish_reason: {choice.finish_reason}) else: print(❌ message.content 不存在或类型异常)finish_reason的常见值及含义finish_reason含义应对建议stop模型自然结束或命中stop参数✅ 正常完成length达到max_tokens上限被截断⚠️ 检查max_tokens是否过小或 prompt 过长content_filter输出被内容安全策略拦截❌ 修改 prompt避免敏感词或越界请求null极少数情况下服务端未返回 finish_reason⚠️ 记录日志触发告警人工介入4. 流式输出与多轮对话维持上下文的三个技术锚点流式输出不是加个streamTrue就能“丝滑滚动”DeepSeek 的流式响应有其独特节奏多轮对话更不是把历史消息堆进messages就万事大吉——token 长度、角色顺序、系统提示位置三者共同构成上下文稳定性三角。4.1 流式输出从 chunk 解析到防卡顿的完整循环streamTrue时SDK 返回一个Stream对象迭代时每个chunk是一个ChatCompletionChunk实例。关键点在于chunk.choices[0].delta.content可能为None且首次 chunk 的delta可能只含role字段。标准安全循环response client.chat.completions.create( modeldeepseek-chat, messages[{role: user, content: 请用 3 句话解释 Transformer 架构}], streamTrue ) full_content for chunk in response: # ✅ 必须先检查 choices 是否存在再取 [0] if not chunk.choices: continue delta chunk.choices[0].delta # ✅ delta.content 可能为 None必须判空 if delta.content is not None: full_content delta.content print(delta.content, end, flushTrue) # ✅ 可选监听 finish_reason if chunk.choices[0].finish_reason is not None: print(f\n 结束原因: {chunk.choices[0].finish_reason}) break print(f\n 总字数: {len(full_content)})为什么delta.content会是None这是流式协议的设计首个 chunk 通常只携带{role: assistant}不带content后续 chunk 才陆续推送文本块。若不判Noneprint(None)会输出字符串None造成界面污染。4.2 多轮对话token 预估与上下文裁剪策略DeepSeek 的上下文窗口为 128K tokens但免费试用额度对单次请求有硬性限制当前为 2048 tokens。这意味着如果你的历史消息累计 1800 tokens新提问再占 300 tokens就会触发400 Bad Request。必须主动做 token 预估与裁剪。推荐做法用tiktoken库预估长度DeepSeek 使用cl100k_base编码import tiktoken def count_tokens(text: str) - int: enc tiktoken.get_encoding(cl100k_base) return len(enc.encode(text)) # 示例计算多轮对话总 token 数 messages [ {role: system, content: 你是一个严谨的技术文档助手}, {role: user, content: 什么是 attention 机制}, {role: assistant, content: Attention 是一种权重分配机制...}, {role: user, content: 请用公式说明 scaled dot-product attention} ] total_tokens sum(count_tokens(m[content]) for m in messages) print(f当前消息总 token 数: {total_tokens}) # 输出类似 2150 # 若超限裁剪最旧的 user/assistant 对保留 system if total_tokens 1800: # 留 200 token 余量 # 删除最早的 user assistant pair索引 1 和 2 messages messages[:1] messages[3:] print(✂️ 已裁剪最早一轮对话)注意system角色消息必须放在最前且不应被裁剪——它是模型行为的锚点。DeepSeek 对system消息的权重高于 OpenAI删掉可能导致回答风格突变。4.3 上下文维护技巧用tool_calls模拟状态机进阶当多轮对话涉及状态变更如“把 A 改成 B再把 B 导出为 CSV”单纯拼接messages易导致上下文膨胀。一个轻量级替代方案是用tool_calls伪指令传递状态让模型只关注当前 step。# 第一次请求获取原始数据 messages [ {role: user, content: 请提供一份模拟用户数据表5 行含 name, age, city} ] response client.chat.completions.create(modeldeepseek-chat, messagesmessages) raw_data response.choices[0].message.content # 第二次请求注入 tool_calls 指令隐式传递状态 messages.append({role: assistant, content: raw_data}) messages.append({ role: user, content: f请将以下数据中的 age 字段全部 5然后以 CSV 格式输出。原始数据{raw_data} }) # ✅ 此时模型看到的是带上下文的完整指令而非无状态的独立请求 response client.chat.completions.create(modeldeepseek-chat, messagesmessages)这种模式不依赖服务端状态存储完全由客户端控制适合无状态微服务架构。5. 避坑五个血泪经验总结的高频故障与根因定位这些坑我都踩过有的花了 3 小时查文档有的靠抓包才定位。列在这里帮你省下调试时间。5.1 现象401 Unauthorized但 API Key 确认无误原因API Key 未在控制台「启用」。DeepSeek 控制台生成密钥后默认状态为Disabled需手动点击右侧开关切换为Enabled。解决登录api.deepseek.com→ 「API Keys」→ 找到你的 key → 点击状态开关灰色变绿色→ 等待 30 秒生效。5.2 现象429 Too Many Requests但 QPS 远低于文档写的 5 次/秒原因DeepSeek 的速率限制是「每分钟请求数」「每分钟 token 总数」双维度。即使你每秒只发 1 次请求若单次max_tokens2000一分钟内发 4 次就超8000 tokens/min限额。解决在控制台「Usage Limits」页查看实时配额消耗代码中加入 token 计数器超 70% 配额时自动降频。5.3 现象流式输出卡在第一个 chunkprint(delta.content)无任何输出原因delta.content为None但你写了print(delta.content)Python 输出None字符串后光标停住造成“卡住”假象。解决严格按 4.1 节的循环模板if delta.content is not None:判空后再打印。5.4 现象max_tokens1024但实际返回内容远少于 1024 tokensfinish_reasonlength原因max_tokens计入了 prompt 的 token 数例如 prompt 占 800 tokens则最多只能生成 224 tokens。解决用tiktoken预估 prompt 长度max_tokens设为2048 - prompt_tokens或直接设max_tokens1500留足余量。5.5 现象多轮对话中模型突然“忘记”之前说过的话回答自相矛盾原因messages数组中混入了非法角色如{role: function, ...}DeepSeek 不支持 function calling或role拼写错误uesr。服务端静默丢弃非法消息导致上下文断裂。解决发送前校验messagesfor i, m in enumerate(messages): assert m[role] in [system, user, assistant], f第 {i} 条消息 role 错误: {m[role]}6. 生产就绪构建一个带重试、监控与降级的 API 封装类在某跨平台系统中我们曾用 DeepSeek API 支撑日均 12 万次调用。稳定性的核心不是调用本身而是如何让失败变得可预测、可追溯、可兜底。下面这个DeepSeekClient类是我从 0 到 1 搭建时沉淀下来的最小可用封装。6.1 完整封装类含重试、token 监控、降级开关import time import logging import tiktoken from openai import OpenAI from typing import List, Dict, Optional, Any class DeepSeekClient: def __init__( self, api_key: str, base_url: str https://api.deepseek.com/v1, max_retries: int 3, timeout: tuple (10, 60), enable_fallback: bool True # 是否启用降级逻辑 ): self.client OpenAI(api_keyapi_key, base_urlbase_url) self.max_retries max_retries self.timeout timeout self.enable_fallback enable_fallback self.token_enc tiktoken.get_encoding(cl100k_base) self.logger logging.getLogger(__name__) def _count_tokens(self, text: str) - int: return len(self.token_enc.encode(text)) def _estimate_total_tokens(self, messages: List[Dict[str, str]]) - int: return sum(self._count_tokens(m[content]) for m in messages) def chat_completion( self, messages: List[Dict[str, str]], model: str deepseek-chat, temperature: float 0.7, max_tokens: int 1024, stream: bool False, **kwargs ) - Any: # ✅ Token 预检防止 400 total_tokens self._estimate_total_tokens(messages) if total_tokens 1800: self.logger.warning(f⚠️ Prompt token 超限: {total_tokens} 1800, 自动裁剪) # 裁剪策略保留 system 最近 2 轮 user/assistant if len(messages) 3 and messages[0][role] system: messages [messages[0]] messages[-2:] # ✅ 重试循环 for attempt in range(self.max_retries 1): try: start_time time.time() response self.client.chat.completions.create( modelmodel, messagesmessages, temperaturetemperature, max_tokensmax_tokens, streamstream, timeoutself.timeout, **kwargs ) duration time.time() - start_time self.logger.info(f✅ API 调用成功耗时 {duration:.2f}stokens: {total_tokens}) return response except Exception as e: self.logger.warning(f❌ 第 {attempt 1} 次尝试失败: {e}) if attempt self.max_retries: if self.enable_fallback: return self._fallback_response(messages) else: raise e # 指数退避1s, 2s, 4s time.sleep(2 ** attempt) return None def _fallback_response(self, messages: List[Dict[str, str]]) - Dict: 降级响应返回预设文案避免服务雪崩 last_user_msg next((m[content] for m in reversed(messages) if m[role] user), 未知问题) return { choices: [{ message: { content: f【系统繁忙】正在全力恢复中。您问的是{last_user_msg[:30]}...稍后重试即可。 } }] } # 使用示例 client DeepSeekClient( api_keyos.getenv(DEEPSEEK_API_KEY), max_retries2, enable_fallbackTrue ) # 正常调用 response client.chat_completion( messages[{role: user, content: Python 中如何深拷贝一个嵌套字典}] ) print(response.choices[0].message.content)6.2 关键设计点说明Token 预检在发起请求前主动计算避免400 Bad Request这种客户端可预防的错误结构化日志记录耗时、token 数、重试次数方便 Prometheus 抓取指标降级开关enable_fallbackTrue时重试失败后返回友好文案而非抛异常中断业务指数退避time.sleep(2 ** attempt)是经过压测验证的合理间隔既不过度重试也不放弃抢救。从那以后我每次上线新 API 集成都强制走一遍这个封装类的单元测试覆盖429、timeout、token_overflow三类 mock 场景再配合控制台的实时用量监控基本告别了半夜被告警电话叫醒。希望帮到你。本文还有配套的精品资源点击获取

相关新闻

微信小程序在线学习平台设计与实现:从数据库到接口的完整实战

微信小程序在线学习平台设计与实现:从数据库到接口的完整实战

说实话,接到“微信小程序在线学习平台”这个课题,我第一反应不是技术栈怎么选,而是这题目背后到底想考察什么。这类项目在课程设计、毕业设计、甚至一些企业内部培训系统里出现的频率极高,但大多数人做出来的东西只是个“能跑的玩…

2026/10/16 13:05:04 阅读更多 →
5分钟搞定ice-012-audio部署:环境配置、模型下载与常见报错全解决

5分钟搞定ice-012-audio部署:环境配置、模型下载与常见报错全解决

【免费下载链接】ice-012-audio 项目地址: https://ai.gitcode.com/hf_mirrors/darkps/ice-012-audio 点击查看 免费下载 ice-012-audio 是 DarkPs 团队开源的多语言文本转语音(TTS)模型,支持 590 种语言、参考音频语音克隆与流式…

2026/10/16 13:05:04 阅读更多 →
Spring事务完整解析:@Transactional失效场景与排查技巧

Spring事务完整解析:@Transactional失效场景与排查技巧

做Java后端开发的,Spring事务可以说是绕不开的一道坎。平时加个Transactional注解好像很轻松,但真到了线上出问题,事务不生效、回滚没触发、死锁频繁,这些坑能让你排查到怀疑人生。我自己就踩过大坑:某转账服务里一个方…

2026/10/16 13:04:03 阅读更多 →

最新新闻

STM32+FreeRTOS+W5500+MQTT工业级通信栈实战

STM32+FreeRTOS+W5500+MQTT工业级通信栈实战

简介:本资源是一套基于STM32F103RET6的物联网终端完整嵌入式开发工程,面向嵌入式初学者与IoT项目开发者,解决MCU端多任务调度、以太网接入及云端MQTT通信集成难题。工程深度融合FreeRTOS实时调度、W5500硬件TCP/IP协议栈与轻量级MQTT客户端&a…

2026/10/16 13:37:12 阅读更多 →
TG记账群发机器人源码解析:消息监听、指令解析与统计汇总全链路

TG记账群发机器人源码解析:消息监听、指令解析与统计汇总全链路

简介:这是一套面向Telegram平台开发者的统计机器人源码合集,聚焦群发、账单统计与自动记账三大核心功能,适合有一定PHP与前端基础、希望快速搭建TG记账或群发工具的中高级开发者。压缩包共收录约2000个文件,以688个PHP后端脚本、3…

2026/10/16 13:37:12 阅读更多 →
VCU开发源码包实战指南:从工程骨架到CAN协议验证

VCU开发源码包实战指南:从工程骨架到CAN协议验证

简介:本资源为电动汽车整车控制器(VCU)的完整开发套件,面向嵌入式工程师、新能源汽车控制系统学习者及高校相关专业师生,解决VCU软硬件协同开发、控制策略理解与实车系统集成等核心问题。压缩包共477个文件&#xff0c…

2026/10/16 13:37:12 阅读更多 →
IDEA Services面板配置指南:SpringCloud多服务启动管理

IDEA Services面板配置指南:SpringCloud多服务启动管理

1. 为什么一个“窗口面板”值得单独写一篇笔记 如果你正在跟着教程搭建一套基于 SpringCloud 2020 版本的微服务示例工程,大概率会遇到这样一个场景:辛辛苦苦把注册中心、网关、若干个业务服务都建好了,每个服务都能单独启动,但每…

2026/10/16 13:37:12 阅读更多 →
Ubuntu 18.04双显卡笔记本NVIDIA驱动循环登录问题排查与修复指南

Ubuntu 18.04双显卡笔记本NVIDIA驱动循环登录问题排查与修复指南

1. 双显卡笔记本装完驱动就循环登录,问题到底出在哪如果你手上有一台带核显加独立显卡的笔记本,兴冲冲装完 Ubuntu 18.04,接着按网上教程装 NVIDIA 驱动,重启之后卡在登录界面——输入密码,屏幕一黑,又弹回…

2026/10/16 13:37:12 阅读更多 →
语义分割数据增强实战:imgaug图像与掩码同步增强指南

语义分割数据增强实战:imgaug图像与掩码同步增强指南

1. 语义分割任务里,数据增强到底在解决什么问题做过语义分割的人都有一个共同感受:模型效果上不去,八成不是网络结构不够花哨,而是标注数据太少、太单一。语义分割和图像分类不一样,分类一张图只有一个标签&#xff0c…

2026/10/16 13:36:10 阅读更多 →

日新闻

个人 AI Agent 平台接入 TaoToken:统一 Key 与 API 通道的配置大纲

个人 AI Agent 平台接入 TaoToken:统一 Key 与 API 通道的配置大纲

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

2026/10/16 0:00:05 阅读更多 →
信号与系统频域分析作业解题指南

信号与系统频域分析作业解题指南

1. 作业背景与核心要求解析信号与系统作为电子信息类专业的核心基础课,其作业设计往往直接关联课程的核心知识框架。2026年春季第六次作业的布置,通常对应着课程进展到频域分析的关键阶段。根据常规教学进度推测,本次作业可能涉及以下核心内容…

2026/10/16 0:00:05 阅读更多 →
Django MVT实战:从零构建图书借阅系统,彻底搞懂Model-View-Template分层

Django MVT实战:从零构建图书借阅系统,彻底搞懂Model-View-Template分层

1. 从一个"四不像"的练手项目说起如果你已经看完了Django的官方教程前几章,跟着敲完了投票应用,大概会有一种"我好像会了,又好像什么都不会"的割裂感。教程里每个知识点都是拆开的——这一章讲模型,下一章讲视…

2026/10/16 0:00:05 阅读更多 →

周新闻

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

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

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

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

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

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

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

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

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

2026/10/15 13:48:15 阅读更多 →

月新闻

我发现了一个新思路:用 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/15 0:14:36 阅读更多 →
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/16 3:49:43 阅读更多 →
黑夜航拍船只数据集训练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/15 9:49:14 阅读更多 →