一、通义千问大模型接入


阿里云地址:大模型服务平台百炼控制台


二、代码调用云端大模型


如果安装依赖过慢,可选用国内镜像源

或者通过uv添加

点击模型,找到示例代码
python
from openai import OpenAI
import os
client = OpenAI(
# 如果没有配置环境变量,请用阿里云百炼API Key替换:api_key="sk-xxx"
api_key=os.getenv("DASHSCOPE_API_KEY", "x7ARU8kktQ8aahn-w58Q_HJ5aeQqYMRCt36IeI"),
base_url="https://llm-wenndyj9zsqatxni.cn-beijing.maas.aliyuncs.com/compatible-mode/v1",
)
messages = [{"role": "user", "content": "你是谁"}]
completion = client.chat.completions.create(
model="qwen3.7-max", # 您可以按需更换为其它深度思考模型
messages=messages,
extra_body={"enable_thinking": True},
stream=True
)
is_answering = False # 是否进入回复阶段
print("\n" + "=" * 20 + "思考过程" + "=" * 20)
for chunk in completion:
if not chunk.choices:
continue
delta = chunk.choices[0].delta
if hasattr(delta, "reasoning_content") and delta.reasoning_content is not None:
if not is_answering:
print(delta.reasoning_content, end="", flush=True)
if hasattr(delta, "content") and delta.content:
if not is_answering:
print("\n" + "=" * 20 + "完整回复" + "=" * 20)
is_answering = True
print(delta.content, end="", flush=True)


三、使用环境变量保护APIKEY


python
client = OpenAI(
# 如果没有配置环境变量,请用阿里云百炼API Key替换:api_key="sk-xxx"
api_key=os.getenv("DASHSCOPE_API_KEY"),
base_url="https://llm-wenndyj9zsqatxni.cn-beijing.maas.aliyuncs.com/compatible-mode/v1",
)


四、Ollama简介




五、win&mac部署Ollama并运行蒸馏模型





六、代码调用Ollama本地模型

七、OpenAI基础使用-01、OpenAI库的基础使用



解释 assistant 和 system 区别
一句话先分清核心本质,再拆开对比,一看就懂
核心本质区别
- system(系统指令) :给 AI 定永久规矩、人设、底线 ,是后台强制规则,不会出现在聊天界面,全程约束 AI 所有回答;
- assistant(助手记录) :只是AI 之前说过的话的存档,属于聊天历史,只用来让 AI 记住刚才聊了啥,没有强制约束力。
举生活类比(最好理解)
把 AI 想象成一个线下门店店员:
-
system = 店长贴在后台的员工守则写死:你必须是 Python 编程专家、只写代码、回答简洁、不许闲聊。守则贴后台,顾客看不见,但店员每一次接待顾客都必须遵守。→ 不管顾客问多少次,这条规则永远生效。
-
assistant = 店员和顾客刚刚的聊天记录店员上一句说:我是 Python 专家,有什么能帮您?只是存档,没有任何约束作用;只是让店员记得刚才自己说了这句话,对话能接上。如果删掉这段记录,店员就忘了刚才打过招呼,但他依旧会遵守后台的店长守则(system)。
-
user = 顾客现在的提问顾客:写 for 循环输出 1 到 5。
分维度详细对比
1. 作用完全不同
system
- 作用:全局约束、定义 AI 身份、回答格式、行为限制
- 举例:
content="你只能回答Python代码,语言专业简洁" - 约束力:永久生效,每一轮对话都会遵守
- 删掉它:AI 失去身份约束,回答会变得杂乱、不符合你的要求
assistant
- 作用:保存 AI 上一轮的回复,维持多轮对话上下文
- 举例:
content="我是一个Python编程专家。请问有什么可以帮助您的吗?" - 约束力:无任何强制规则,只是聊天历史
- 删掉它:AI 忘记刚才自己说过什么,但依旧遵守 system 设定的身份
2. 使用时机不同
- system:整个对话从头到尾只写 1 条,放在 messages 最开头全程不变,不用每次提问重复写。
- assistant:每一轮对话新增 1 条 用户提问 → AI 生成回答 → 把这条回答包装成
assistant字典塞进 messages 列表,下一轮提问带上,保证对话连贯。
3. 能不能省略
- system:可以省略,只是 AI 没有固定人设,回答不受控制;
- assistant:单轮提问(只问一次,不用上下文)完全不需要;多轮连续聊天必须加
拿截图代码举实例对比
python
运行
messages=[
# system:强制规则,AI永久记住自己是Python专家
{"role": "system", "content": "你是一个Python编程专家。"},
# assistant:AI之前说的话,只是聊天记录,没有规则
{"role": "assistant", "content": "我是一个Python编程专家。请问有什么可以帮助您的吗?"},
# user:用户当前问题
{"role": "user", "content": "for循环输出1到5的数字"}
]
测试 1:删掉 assistant 这条,只剩 system+user
messages 只剩 system 规则和用户提问结果:AI 依旧以 Python 专家身份写代码,只是不会提到 "刚才打过招呼" 这件事,规则完全不变。
测试 2:删掉 system 这条,只剩 assistant+user
messages 只剩打招呼记录和用户提问结果:AI 没有强制身份约束,可能随便闲聊、不写专业代码,哪怕之前说了自己是编程专家,也不受约束。
最简总结
- system = 规矩(管 AI 怎么说话,永久生效)
- assistant = 聊天存档(只记 AI 之前说了啥,没有约束力,只为上下文连贯)

python
from openai import OpenAI
import os
from main import client
# 1.获取client对象, OpenAI类对象
client = OpenAI(
api_key=os.getenv("DASHSCOPE_API_KEY"),
base_url="https://llm-wenndyj9zsqatxni.cn-beijing.maas.aliyuncs.com/compatible-mode/v1"
)
# 2.调用模型
response = client.chat.completions.create(
model = "qwen3.7-max",
messages=[
{"role": "system", "content": "你是一个Python编程资深专家"},
{"role": "assistant", "content": "好的,我是编程专家,并且话不多,你要问什么?"} ,
{"role": "user", "content": "学习LangChain需要多长时间?"} ,
]
)
# 3.处理结果
print(response.choices[0].message.content)


八、OpenAI基础使用-02、OpenAI库流式输出

python
from openai import OpenAI
import os
from main import client
# 1.获取client对象, OpenAI类对象
client = OpenAI(
api_key=os.getenv("DASHSCOPE_API_KEY"),
base_url="https://llm-wenndyj9zsqatxni.cn-beijing.maas.aliyuncs.com/compatible-mode/v1"
)
# 2.调用模型
response = client.chat.completions.create(
model = "qwen3.7-max",
messages=[
{"role": "system", "content": "你是一个Python编程资深专家,并且话非常多"},
{"role": "assistant", "content": "好的,我是编程专家,并且话非常多,你要问什么?"} ,
{"role": "user", "content": "输出1-10的数字,使用Python代码"} ,
],
stream = True # 开启了流式输出的功能
)
# 3.处理结果
for chunk in response:
if not chunk.choices: # 最后一个chunk(含usage统计)的choices为空
continue
content = chunk.choices[0].delta.content
if content: # delta.content 可能为 None
print(content, end="", flush=True)
九、OpenAI基础使用-03、OpenAI库附带历史消息调用模型

python
from openai import OpenAI
import os
from main import client
# 1.获取client对象, OpenAI类对象
client = OpenAI(
api_key=os.getenv("DASHSCOPE_API_KEY"),
base_url="https://llm-wenndyj9zsqatxni.cn-beijing.maas.aliyuncs.com/compatible-mode/v1"
)
# 2.调用模型
response = client.chat.completions.create(
model = "qwen3.7-max",
messages=[
{"role": "system", "content": "你是一个AI助理,回答很简介"},
{"role": "user", "content": "小名有2只宠物狗"} ,
{"role": "assistant", "content": "好的"} ,
{"role": "user", "content": "小红有3只宠物狗"} ,
{"role": "assistant", "content": "好的"} ,
{"role": "user", "content": "总共有几只宠物"} ,
],
stream = True # 开启了流式输出的功能
)
# 3.处理结果
for chunk in response:
if not chunk.choices: # 最后一个chunk(含usage统计)的choices为空
continue
content = chunk.choices[0].delta.content
if content: # delta.content 可能为 None
print(content, end="", flush=True)


