OpenAI 兼容阿里云百炼平台 API
1、具体实现
配置阿里云百炼平台的 API 密钥:https://bailian.console.aliyun.com/?tab=api#/api
安装 openai 库和 python-dotenv 库
shell
复制代码
pip install openai
shell
复制代码
pip install python-dotenv
创建并编辑 .env 文件,这里选择 阿里云百炼平台 -> 模型服务 -> 模型广场 -> 通义千问3-Max
env
复制代码
# API 密钥
API_KEY="【你的 API 密钥】"
# 基础 URL
BASE_URL="https://dashscope.aliyuncs.com/compatible-mode/v1"
# 模型 Code
MODEL="qwen3-max"
编写测试代码
python
复制代码
from openai import OpenAI
from dotenv import load_dotenv
import os
load_dotenv()
api_key = os.getenv("API_KEY")
base_url = os.getenv("BASE_URL")
model = os.getenv("MODEL")
client = OpenAI(
api_key=api_key,
base_url=base_url
)
completion = client.chat.completions.create(
model=model,
messages=[
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "你是谁?"}
],
stream=True
)
for chunk in completion:
print(chunk.choices[0].delta.content, end="", flush=True)
复制代码
# 输出结果
你好!我是通义千问(Qwen),由通义实验室研发的超大规模语言模型。我可以回答问题、创作文字,比如写故事、写公文、写邮件、写剧本、逻辑推理、编程等等,还能表达观点,玩游戏等。如果你有任何问题或需要帮助,欢迎随时告诉我!
2、解读
导入 openai 库、dotenv 库、操作系统接口模块
python
复制代码
from openai import OpenAI
from dotenv import load_dotenv
import os
加载并读取 .env 文件中的环境变量
python
复制代码
load_dotenv()
api_key = os.getenv("API_KEY")
base_url = os.getenv("BASE_URL")
model = os.getenv("MODEL")
创建 OpenAI 客户端实例
参数
说明
api_key
API 密钥
base_url
基础 URL
python
复制代码
client = OpenAI(
api_key=api_key,
base_url=base_url
)
创建聊天完成请求
参数
说明
model
模型 Code
messages
对话消息列表
stream
是否启用流式响应
python
复制代码
completion = client.chat.completions.create(
model=model,
messages=[
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "你是谁?"}
],
stream=True
)
处理流式响应
python
复制代码
for chunk in completion:
print(chunk.choices[0].delta.content, end="", flush=True)
补充学习
1、不启用流式响应
python
复制代码
from openai import OpenAI
from dotenv import load_dotenv
import os
load_dotenv()
api_key = os.getenv("API_KEY")
base_url = os.getenv("BASE_URL")
model = os.getenv("MODEL")
client = OpenAI(
api_key=api_key,
base_url=base_url
)
completion = client.chat.completions.create(
model=model,
messages=[
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "你是谁?"}
]
)
response = completion.choices[0].message.content
print(response)
2、print 函数参数
参数
说明
end
指定 print 函数结束后要添加的字符
flush
指定是否强制立即刷新输出缓冲区
默认情况,print 函数后自动换行
python
复制代码
print("Hello")
print("World")
复制代码
# 输出结果
Hello
World
python
复制代码
# 等同于
print("Hello", end="\n")
print("World")
复制代码
# 输出结果
Hello
World
换行 2 次
python
复制代码
print("Hello", end="\n\n")
print("World")
复制代码
# 输出结果
Hello
World
不换行
python
复制代码
print("Hello", end="")
print("World")
复制代码
# 输出结果
HelloWorld
自定义分隔符
python
复制代码
print("Hello", end=" ")
print("World")
复制代码
# 输出结果
Hello World
python
复制代码
print("Hello", end="---")
print("World")
复制代码
# 输出结果
Hello---World
关于 messages
1、基本介绍
python
复制代码
messages=[
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "你是谁?"}
]
字段
说明
role
对话的角色
content
对话的内容
角色
说明
system
系统角色,设置模型的身份和行为准则
user
用户角色,表示用户的输入
assistant
助手角色,表示模型的输出
2、演示
(1)客服
python
复制代码
messages=[
{"role": "system", "content": "你是公司的客服,态度友好专业"},
{"role": "user", "content": "我的产品坏了怎么办?"}
]
复制代码
# 输出结果
您好!很抱歉听到您的产品出现了问题。为了更好地帮您解决,请您提供以下信息:
1. **产品名称和型号**(如果有的话)
2. **购买时间及渠道**(例如:官网、某电商平台、线下门店等)
3. **具体出现了什么问题**(可以简单描述故障现象)
4. **是否还在保修期内**
我们会根据您提供的信息,尽快为您安排维修、更换或退款等售后服务。如果您手边有产品照片或故障视频,也可以一并提供,有助于我们更快判断问题哦!
期待您的回复,祝您今天愉快!😊
(2)Python 专家
python
复制代码
messages=[
{"role": "system", "content": "你是一个 Python 专家,给出详细代码和解释"},
{"role": "user", "content": "如何用 Python 读取 CSV 文件?"}
]
复制代码
# 输出结果
在 Python 中读取 CSV 文件有多种方法,最常用的是使用内置的 `csv` 模块和第三方库 `pandas`。下面详细介绍这两种方法:
## 方法一:使用内置的 `csv` 模块
### 1. 基本读取(返回列表)
```python
import csv
# 读取 CSV 文件
with open('data.csv', 'r', encoding='utf-8') as file:
csv_reader = csv.reader(file)
# 读取所有行
for row in csv_reader:
print(row) # 每行是一个列表
```
### 2. 使用 DictReader(返回字典)
```python
import csv
with open('data.csv', 'r', encoding='utf-8') as file:
csv_reader = csv.DictReader(file)
for row in csv_reader:
# row 是一个字典,键是列名
print(row)
# 可以通过列名访问值
print(f"Name: {row['name']}, Age: {row['age']}")
```
### 3. 完整示例
假设有一个 `students.csv` 文件:
```csv
name,age,city
Alice,25,New York
Bob,30,Los Angeles
Charlie,35,Chicago
```
```python
import csv
# 读取并处理数据
students = []
with open('students.csv', 'r', encoding='utf-8') as file:
csv_reader = csv.DictReader(file)
for row in csv_reader:
students.append({
'name': row['name'],
'age': int(row['age']), # 转换为整数
'city': row['city']
})
print(students)
# 输出: [{'name': 'Alice', 'age': 25, 'city': 'New York'}, ...]
```
## 方法二:使用 pandas 库(推荐用于数据分析)
首先需要安装 pandas:
```bash
pip install pandas
```
### 1. 基本读取
```python
import pandas as pd
# 读取 CSV 文件
df = pd.read_csv('data.csv')
# 显示前几行
print(df.head())
# 显示基本信息
print(df.info())
```
### 2. 常用参数
```python
import pandas as pd
# 读取 CSV 文件的各种选项
df = pd.read_csv(
'data.csv',
encoding='utf-8', # 指定编码
sep=',', # 指定分隔符(默认是逗号)
header=0, # 指定标题行(默认是第0行)
index_col=0, # 指定索引列
usecols=['name', 'age'], # 只读取指定列
nrows=100, # 只读取前100行
skiprows=1, # 跳过前1行
na_values=['NULL', 'N/A'] # 指定哪些值应该被视为 NaN
)
```
### 3. 完整示例
```python
import pandas as pd
# 读取 CSV 文件
df = pd.read_csv('students.csv')
# 查看数据
print("数据形状:", df.shape)
print("\n前5行:")
print(df.head())
# 访问特定列
names = df['name']
ages = df['age']
# 条件筛选
adults = df[df['age'] > 25]
# 统计信息
print("\n年龄统计:")
print(df['age'].describe())
```
## 处理常见问题
### 1. 编码问题
```python
# 如果遇到编码错误,尝试不同的编码
encodings = ['utf-8', 'gbk', 'latin-1', 'cp1252']
for encoding in encodings:
try:
df = pd.read_csv('data.csv', encoding=encoding)
print(f"成功使用 {encoding} 编码")
break
except UnicodeDecodeError:
continue
```
### 2. 处理大文件(分块读取)
```python
# 对于大文件,可以分块读取
chunk_size = 1000
chunks = []
for chunk in pd.read_csv('large_file.csv', chunksize=chunk_size):
# 处理每个块
processed_chunk = chunk[chunk['age'] > 18] # 示例处理
chunks.append(processed_chunk)
# 合并所有块
result_df = pd.concat(chunks, ignore_index=True)
```
### 3. 自定义分隔符
```python
# 如果 CSV 使用分号分隔
df = pd.read_csv('data.csv', sep=';')
# 或者使用 csv 模块
with open('data.csv', 'r') as file:
csv_reader = csv.reader(file, delimiter=';')
for row in csv_reader:
print(row)
```
## 选择建议
- **简单任务**:使用内置的 `csv` 模块
- **数据分析、处理**:使用 `pandas`
- **内存限制**:对于大文件,考虑分块读取或使用 `csv` 模块逐行处理
- **性能要求高**:`pandas` 通常更快,特别是对于数值计算
这两种方法都能有效读取 CSV 文件,选择哪种取决于你的具体需求和项目复杂度。
(3)英语老师
python
复制代码
messages=[
{"role": "system", "content": "你是一个英语老师,纠正我的语法错误"},
{"role": "user", "content": "I goes to school yesterday."}
]
复制代码
# 输出结果
Great effort! However, there's a small grammar mistake in your sentence.
The correct sentence should be:
**"I went to school yesterday."**
### Explanation:
- The verb **"go"** is irregular.
- Since you're talking about something that happened **yesterday** (past time), you need the **past tense** form of "go," which is **"went."**
- "I goes" is incorrect because "goes" is used with third-person singular subjects like **he, she,** or **it** (e.g., "She goes to school every day").
Let me know if you'd like more examples! 😊