1 # Python + AI 准备工作:
2 # 1、在阿里百炼大模型服务平台注册账号,并登录激活
3 # 2、点击左侧菜单的“密钥管理”,创建APIKey
4 # 3、选择合适的模型,并点击左侧菜单的“模型用量”,开启“免费额度用完即停”,这样等到免费额度用完就停止使用,不会私下扣费
5 # 4、安装OpenAI库,使用:pip install openai,因为国内网络原因,可以使用镜像快速安装,使用:pip install openai -i https://pypi.tuna.tsinghua.edu.cn/simple
6
7 from openai import OpenAI
8
9 client = OpenAI(
10 api_key="这里填写阿里百炼大模型服务平台生成的APIKey",
11 base_url="https://dashscope.aliyuncs.com/compatible-mode/v1"
12 )
13
14 completion = client.chat.completions.create(
15 model="qwen3-max", # 可以按需更换为其它深度思考模型
16 messages=[
17 {"role": "system", "content": "You are a helpful assistant"},
18 {"role": "user", "content": "你是谁?"}
19 ],
20 stream=True
21 )
22
23 for chunk in completion:
24 print(chunk.choices[0].delta.content, end="", flush=True)
1 # 设置环境变量,保护APIKey(以Windows 10系统为例)
2 # 1、“此电脑”右键,找到“属性”,点击找到右侧的“高级系统设置”,点击弹出“系统属性”窗口,找到“高级”选项卡,点击后,即可看到“环境变量”,点击开始设置环境变量
3 # 2、在弹出的窗口中,找到位于下方的“系统变量”
4 # 3、点击新建变量名“OPENAI_API_KEY”,变量值就是阿里百炼平台上创建的APIKey的值,该设置用于OpenAI库
5 # 4、点击新建变量名"DASHSCOPE_API_KEY",变量值就是阿里百炼平台上创建的APIKey的值,该设置用于Langchain库
6 # 5、设置后,一定记得需要重启才能生效
7
8 from openai import OpenAI
9
10 client = OpenAI(
11 base_url="https://dashscope.aliyuncs.com/compatible-mode/v1"
12 )
13
14 completion = client.chat.completions.create(
15 model="qwen3-max", # 可以按需更换为其它深度思考模型
16 messages=[
17 {"role": "system", "content": "You are a helpful assistant"},
18 {"role": "user", "content": "你是谁?"}
19 ],
20 stream=True
21 )
22
23 for chunk in completion:
24 print(chunk.choices[0].delta.content, end="", flush=True)
1 # OpenAI库的基础使用
2 # Step1、实例化OpenAI类对象:使用OpenAI类的构造函数,传入api_key(可省略) 和 base_url两个参数,创建类的实例对象
3 # ① api_key:模型服务商提供的APIKey密钥
4 # ② base_url:模型服务器提供的API接入地址,基于此参数可以切换不同的模型
5 # Step2、调用模型:至少传入model 和 message两个参数,创建ChatCompletion对象
6 # ① model:设置使用的大模型,比如:qwen3-max
7 # ② message:提供给大模型的数据,message的类型为list,可以包含多个字典数据,每个字典包含role(角色) 和 content(内容)2个key
8 # role(角色)分为system角色、assistant角色 和 user角色
9 # system角色:设定助手的整体行为、角色和规则,为对话提供上下文框架,是全局的背景设定,影响后续所有交互
10 # assistant角色:代表AI助手的回答
11 # user角色:代表用户,发送问题、指令或需求
12 # Step3、处理结果:大模型返回的就是ChatCompletion对象,返回形如下文的对象数据
13 # {
14 # "id": "xxx",
15 # "object": "xxxxx",
16 # "created": 123456,
17 # "model": "xxx",
18 # "choices": [
19 # {
20 # "index": 0,
21 # "message": {
22 # "role": "assistant",
23 # "content": "生成的回复内容"
24 # },
25 # "finish_reason": "stop" # stop=正常结束,length=令牌数超限,function_call=触发函数调用
26 # }
27 # ],
28 # "usage": { # 令牌消耗统计
29 # "prompt_tokens": 50,
30 # "completion_tokens": 50,
31 # "total_tokens": 50
32 # }
33 # }
34
35 from openai import OpenAI
36
37 client = OpenAI(
38 base_url="https://dashscope.aliyuncs.com/compatible-mode/v1"
39 )
40
41 response = client.chat.completions.create(
42 model="qwen3-max", # 可以按需更换为其它深度思考模型
43 messages=[
44 {"role": "system", "content": "你是资深Python专家,并且回答简洁不说废话"},
45 {"role": "assistant", "content": "好的,我是资深Python专家,并且回答简洁不说废话,您要问什么问题?"},
46 {"role": "user", "content": "编写Python代码,输出1-10的数字"}
47 ]
48 )
49
50 print(response.choices[0].message.content)
1 # OpenAI库的流式输出
2 # 1、实例化OpenAI类对象:使用OpenAI类的构造函数,传入api_key(可省略) 、 base_url 和 stream三个参数,并设置stream=True,创建类的实例对象
3 # 2、对于大模型的返回结果,使用for循环输出内容
4
5 from openai import OpenAI
6
7 client = OpenAI(
8 base_url="https://dashscope.aliyuncs.com/compatible-mode/v1"
9 )
10
11 response = client.chat.completions.create(
12 model="qwen3-max", # 可以按需更换为其它深度思考模型
13 messages=[
14 {"role": "system", "content": "你是资深Python专家,并且回答简洁不说废话"},
15 {"role": "assistant", "content": "好的,我是资深Python专家,并且回答简洁不说废话,您要问什么问题?"},
16 {"role": "user", "content": "编写Python代码,输出1-10的数字"}
17 ],
18 stream=True
19 )
20
21 for chunk in response:
22 print(
23 chunk.choices[0].delta.content,
24 end="", # 设置每段之间以空字符串分隔
25 flush=True # 设置立即刷新缓冲区
26 )
1 # OpenAI库附带历史消息调用模型
2 # 调用大模型时,在messages这个list对象中,编写历史消息提供给大模型
3
4 from openai import OpenAI
5
6 client = OpenAI(
7 base_url="https://dashscope.aliyuncs.com/compatible-mode/v1"
8 )
9
10 response = client.chat.completions.create(
11 model="qwen3-max", # 可以按需更换为其它深度思考模型
12 messages=[
13 {"role": "system", "content": "你是AI助理,并且回答简洁不说废话"},
14 {"role": "user", "content": "中国有14亿人"},
15 {"role": "assistant", "content": "好的"},
16 {"role": "user", "content": "美国有4亿人"},
17 {"role": "assistant", "content": "好的"},
18 {"role": "user", "content": "两个国家共有多少人?"}
19 ],
20 stream=True
21 )
22
23 for chunk in response:
24 print(
25 chunk.choices[0].delta.content,
26 end="", # 设置每段之间以空字符串分隔
27 flush=True # 设置立即刷新缓冲区
28 )