每天分享一个AI大模型趣味程序解读。
你有没有过这样的经历——明明只是三四行 Python 代码,复制、粘贴、运行,结果不是报错,就是一脸懵:“它到底在干嘛?”“completion 是什么?”“choices[0] 又是谁?”
今天,我就带你用讲故事的方式,把一段调用大模型的代码彻底拆开、嚼碎、讲明白。
一、这段代码,本质上在做什么?
先给你一个一句话结论:这段代码的目标只有一个——向阿里的通义千问大模型提问,并把模型回答打印出来。
但真正的价值,在于它背后那一整套**“大模型对话机制”**。
我们一步一步来,滴水石穿。
二、completion 是谁?它其实是“一次完整的对话结果包”
completion = client.chat.completions.create(...)
这行代码,你可以把它理解成一句人话:
“我向大模型发起了一次正式对话,请你把完整的回应打包给我。”
所以 completion 不是答案本身,它是一个结构化对象,里面包含了很多信息,比如:
模型有没有成功回答
一共生成了几条候选回复
每条回复的角色、内容、元数据
就像你点了一份外卖,completion 是整个外卖袋子,而不是那一口饭。
三、messages:这是你和大模型的“聊天记录本”
messages = [ {'role': 'system', 'content': '你是阿里公司的高级AI工程师...'}, {'role': 'user', 'content': '请介绍一下...'}]
这里是新手最容易忽略、但最重要的地方之一。
我用一个比喻你立刻懂:
messages 是一个列表(list)
列表里的每一项,都是一次“说话”
每一次说话,必须有两个字段:
三种常见 role:
system:定规则、定人设👉 相当于“你现在是专家,请认真回答”
user:真正的问题
assistant:模型自己的历史回答(进阶玩法)
所以这不是“参数”,这是一段被结构化的大模型对话历史。
四、choices[0]:为什么要加 [0]?
completion.choices[0].message.content
这一行,是95% 初学者第一次看就头大的地方。
我们继续讲人话。
choices 是一个 列表
因为:大模型一次可以生成多个候选答案
[0] 的意思是:👉 “我要第一个答案”
所以整句话拆开是:
completion:这次对话的结果包
.choices:模型给出的多个回答
[0]:第一个回答
.message:这一条回答本身
.content:回答的文字内容
你真正想要的,其实只有最后这一步。
五、小白手敲代码,最容易踩的 3 个大坑
这里我必须说重点,这是血泪经验总结。
第一坑:中文冒号 vs 英文冒号
❌ 错误示例:
✅ 正确写法:
记住一句话:代码世界里,只认英文符号。
第二坑:)、}、] 傻傻分不清
messages 是列表,里面是字典,外面包着函数。
一层错,层层报错。
第三坑:缩进和排版乱
Python 不认“差不多”,只认缩进。
多一个空格、少一个空格,程序都会毫不留情地拒绝你。
六、为什么我强烈建议你“看懂”,而不是“照抄”
因为今天你调用的是 Qwen-plus,明天可能是 Qwen3-Max、DeepSeek、GPT-4。
API 会变,模型会换,但这个对话结构是通用底层逻辑。
你一旦吃透这段代码,等于拿到了所有大模型 API 的通行证。
七、结尾:为什么你一定要学会这类代码?
因为未来不是“会不会写代码”的问题,而是:
你能不能把 AI,当成一个真正的生产力伙伴。
而这几行代码,就是你和大模型之间的第一座桥。
感谢大家聆听和观看,以下是关联代码:
completion=client.chat.completions.create(
model='qwen-plus',
messages=[
{'role': 'system','content': '你是阿里公司的高级AI工程师,使用严谨科学认真仔细的态度回答用户问题'}, # 系统提示词
{'role': 'user','content': '请介绍一下阿里的Qwen3-max与Qwen-plus两个大模型在推理能力上的区别?'} # 用户提示词
]
)
result=completion.choices[0].message.content
print(result)