尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
大模型API调用实战②-零基础保姆级教程
第 4 章读懂响应对象新手第一坑4.1 SDK 返回的是对象不是字典resp.json()拿到的是字典用data[choices][0]取值。SDK 不一样——它把 JSON 转成了 Python 对象必须用点号访问属性print(response[choices]) # ❌ TypeError对象不能用方括号 print(response.choices[0].message.content) # ✅ 点号访问属性完整解剖一次响应r response print(r.id) # 本次请求的唯一ID排查问题时给平台客服用 print(r.model) # 实际使用的模型 print(r.choices[0].message.role) # assistant print(r.choices[0].message.content) # 回答正文 print(r.choices[0].finish_reason) # 结束原因下节详解 print(r.usage.prompt_tokens) # 输入消耗 token print(r.usage.completion_tokens) # 输出消耗 token print(r.usage.total_tokens) # 合计 —— 你的账单来源 # 需要字典/JSON 时落日志、存数据库 d r.model_dump() # 对象 → 字典 print(d[usage][total_tokens]) # 变回字典后就能用方括号了model_dump()来自Pydantic——SDK 的响应对象全是 Pydantic 模型。现在先记住这对搭档对象用点号落盘先 dump。4.2 finish_reason每次调用都该看一眼的字段值含义你的代码该做什么stop正常说完了正常处理length撞到 max_tokens 被截断内容不完整提高上限或续写别把半句话给用户tool_calls模型申请调用工具进入 Function Calling 流程第 11 章主线剧情content_filter触发内容安全拦截给用户兜底话术记录日志养成职业习惯生产代码里永远if r.choices[0].finish_reason length: ...做检查——被截断的 JSON 是解析事故的头号来源。第 5 章多轮对话 —— 亲手证明API 是失忆的5.1 失忆实验必做API 无状态现在亲眼见证r1 client.chat.completions.create(modeldeepseek-chat, messages[{role: user, content: 我叫王小明请记住我的名字。}]) print(第1轮:, r1.choices[0].message.content) # 它会热情答应记住 r2 client.chat.completions.create(modeldeepseek-chat, messages[{role: user, content: 我叫什么名字}]) print(第2轮:, r2.choices[0].message.content) # 它根本不知道你是谁两次调用是两个完全独立的宇宙。所谓记忆 你的代码把历史拼进 messages 重发。修复版messages [{role: system, content: 你是一个友好的助手。}] def chat(user_input: str) - str: messages.append({role: user, content: user_input}) r client.chat.completions.create(modeldeepseek-chat, messagesmessages) answer r.choices[0].message.content messages.append({role: assistant, content: answer}) # 回答也要入史 return answer print(chat(我叫王小明请记住。)) print(chat(我叫什么名字)) # 这次它记得了 —— 因为历史在 messages 里 print(f当前历史 {len(messages)} 条本轮输入token会随历史增长)两个必须刻进肌肉的细节①assistant 的回答也要 append 进历史漏了它下一轮模型会看到用户连问两句没人理的诡异剧本②历史越长每轮越贵5.2 封装成类class ChatSession: def __init__(self, client, model: str, system_prompt: str): self.client client self.model model self.messages: list[dict] [{role: system, content: system_prompt}] def ask(self, user_input: str, **kwargs) - str: **kwargs 透传 temperature 等参数01教程10.4的知识落地 self.messages.append({role: user, content: user_input}) r self.client.chat.completions.create( modelself.model, messagesself.messages, **kwargs) answer r.choices[0].message.content self.messages.append({role: assistant, content: answer}) return answer session ChatSession(client, deepseek-chat, 你是一个毒舌但专业的编程导师。) print(session.ask(Python 的列表和元组有什么区别)) print(session.ask(那我刚才问的是什么话题)) # 验证记忆第 6 章参数实验室 —— 用真模型验证理论建一个param_lab.py做完下面四个实验并记录观察结论这是把知识变成手感的过程别跳PROMPT 给一款AI学习APP起一个名字只输出名字本身。 # 实验1temperature —— 同题各问5次 for t in [0.0, 1.3]: print(f\n--- temperature{t} ---) for _ in range(5): r client.chat.completions.create(modeldeepseek-chat, messages[{role: user, content: PROMPT}], temperaturet) print(r.choices[0].message.content) # 预期观察0.0 几乎5次同名1.3 五花八门偶尔还会不听话加解释# 实验2max_tokens 截断 finish_reason 检查 r client.chat.completions.create(modeldeepseek-chat, messages[{role: user, content: 详细介绍一下Python的历史}], max_tokens30) print(r.choices[0].message.content) # 话说一半戛然而止 print(r.choices[0].finish_reason) # length —— 第4章的表格应验# 实验3stop 停止词 —— 第2批埋的伏笔手写ReAct的关键 r client.chat.completions.create(modeldeepseek-chat, messages[{role: user, content: 从1数到10每个数字一行}], stop[5]) print(r.choices[0].message.content) # 数到4就停 —— 碰到5立刻刹车# 实验4体验推理模型第2批第8章的新物种 r client.chat.completions.create(modeldeepseek-reasoner, messages[{role: user, content: 9.11 和 9.9 哪个大请给出理由}]) print(【思考过程】, r.choices[0].message.reasoning_content[:300], ...) print(【最终回答】, r.choices[0].message.content) # 观察reasoning_content 是它的草稿对比 deepseek-chat 答同一题的差异与耗时
RELATED

相关推荐

零基础学ESP32:继电器——用小电流控制大电流,打开智能家居的大门!

零基础学ESP32:继电器——用小电流控制大电流,打开智能家居的大门!

前面我们学了点亮LED、控制电机旋转——这些都是直接控制“小电流”设备。但在实际生活中,很多电器(比如电灯、风扇、电机)需要的是220V高压交流电,ESP32的GPIO引脚(3.3V,最大电流几十毫安)根本…

📅 2026/10/29 15:42:01
多智能体框架如何实现DFT计算自动化:从参数选择到错误诊断

多智能体框架如何实现DFT计算自动化:从参数选择到错误诊断

1. 从“炼丹”到“自动化”:DFT计算的范式转变如果你在计算材料学、计算化学或者凝聚态物理领域摸爬滚打过,一定对“密度泛函理论”这个词又爱又恨。爱它,是因为它几乎是目前处理复杂多体电子系统最实用、最强大的第一性原理计算工具&#xf…

📅 2026/10/29 15:41:58
终端AI写作神器1667:TUI界面实现沉浸式小说创作

终端AI写作神器1667:TUI界面实现沉浸式小说创作

如果你是一位小说作者,或者对创意写作感兴趣,最近是否感觉被 AI 写作工具“包围”了?网页端、桌面端、移动端,各种 AI 写作助手层出不穷,它们功能强大,但似乎总在“打扰”你:弹窗、联网、复杂的…

📅 2026/9/8 15:45:48
MORE NEWS

更多资讯

📰

YOLOv11改进:高精度脐橙检测与分级系统实践

1. 项目背景与核心价值在农业自动化领域,脐橙的自动化检测与分级一直是困扰果农和加工企业的技术难题。传统人工分拣方式存在效率低、成本高、标准不统一等问题,而基于计算机视觉的目标检测技术为解决这一痛点提供了新的可能。我们团队基于最新的YOLOv11…

📰

Looped架构实战:LLM长文本长度泛化优势与部署陷阱

循环架构这几年在长文本场景里被反复提起,但真正把它跑通、跑稳的人并不多。我前后在两个推理服务里落地过基于循环块的模型结构,踩过的坑从显存爆炸到精度漂移都有。这篇就把“Looped架构在LLM长度泛化上的实战优势”和“部署时最容易翻车的陷阱”一次讲…

📰

从靠人到靠系统:构建无懈可击的研发质量体系

前阵子带团队做一次版本交付,Release 前夜 Code Review 到凌晨两点,我盯着屏幕上那一行缩进错误,突然意识到一个扎心的事实:所谓"无懈可击"(impeccable)的交付,根本不是靠某个人"…

📰

G.711 over RTP工程实践:编码、RTP头与抖动缓冲

简介:围绕G.711音频编码在RTP实时传输中的封装实现,这份资料面向学习VoIP、实时音频流与网络协议栈的开发者及通信方向学生,帮助理解G.711的μ-law/A-law编码数据如何按RTP头结构打包,并通过UDP发送后由VLC接收播放。压缩包共4个文…

📰

营销技能实战进阶:洞察、策略到转化的完整方法论

营销技能这个话题,随便一搜能弹出几百万条结果,但真去问那些入行三五年的人,他们多半会告诉你:学校里教的那套和实操完全是两回事。过去八九年我一直在做营销相关的工作,从最初的文案策划到后来带团队做增长&#xff0…

📰

企业级Java系统AI化转型实战与框架选型

1. 企业级Java系统AI化转型背景与挑战在数字化转型浪潮下,传统Java企业级系统正面临智能化升级的迫切需求。我经历过三个大型银行核心系统的AI化改造项目,深刻体会到这种转型绝非简单的API调用。企业级系统特有的高并发、高可用要求,与AI模型…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬