news 2026/6/1 19:07:40

Python 开发 - OpenAI 兼容阿里云百炼平台 API

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Python 开发 - OpenAI 兼容阿里云百炼平台 API

OpenAI 兼容阿里云百炼平台 API

1、具体实现
  1. 配置阿里云百炼平台的 API 密钥:https://bailian.console.aliyun.com/?tab=api#/api

  2. 安装 openai 库和 python-dotenv 库

pipinstallopenai
pipinstallpython-dotenv
  1. 创建并编辑.env文件,这里选择阿里云百炼平台 -> 模型服务 -> 模型广场 -> 通义千问3-Max
# API 密钥 API_KEY="【你的 API 密钥】" # 基础 URL BASE_URL="https://dashscope.aliyuncs.com/compatible-mode/v1" # 模型 Code MODEL="qwen3-max"
  1. 编写测试代码
fromopenaiimportOpenAIfromdotenvimportload_dotenvimportos 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)forchunkincompletion:print(chunk.choices[0].delta.content,end="",flush=True)
# 输出结果 你好!我是通义千问(Qwen),由通义实验室研发的超大规模语言模型。我可以回答问题、创作文字,比如写故事、写公文、写邮件、写剧本、逻辑推理、编程等等,还能表达观点,玩游戏等。如果你有任何问题或需要帮助,欢迎随时告诉我!
2、解读
  1. 导入 openai 库、dotenv 库、操作系统接口模块
fromopenaiimportOpenAIfromdotenvimportload_dotenvimportos
  1. 加载并读取.env文件中的环境变量
load_dotenv()api_key=os.getenv("API_KEY")base_url=os.getenv("BASE_URL")model=os.getenv("MODEL")
  1. 创建 OpenAI 客户端实例
参数说明
api_keyAPI 密钥
base_url基础 URL
client=OpenAI(api_key=api_key,base_url=base_url)
  1. 创建聊天完成请求
参数说明
model模型 Code
messages对话消息列表
stream是否启用流式响应
completion=client.chat.completions.create(model=model,messages=[{"role":"system","content":"You are a helpful assistant."},{"role":"user","content":"你是谁?"}],stream=True)
  1. 处理流式响应
forchunkincompletion:print(chunk.choices[0].delta.content,end="",flush=True)

补充学习

1、不启用流式响应
fromopenaiimportOpenAIfromdotenvimportload_dotenvimportos 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.contentprint(response)
2、print 函数参数
参数说明
end指定 print 函数结束后要添加的字符
flush指定是否强制立即刷新输出缓冲区
  1. 默认情况,print 函数后自动换行
print("Hello")print("World")
# 输出结果 Hello World
# 等同于print("Hello",end="\n")print("World")
# 输出结果 Hello World
  1. 换行 2 次
print("Hello",end="\n\n")print("World")
# 输出结果 Hello World
  1. 不换行
print("Hello",end="")print("World")
# 输出结果 HelloWorld
  1. 自定义分隔符
print("Hello",end=" ")print("World")
# 输出结果 Hello World
print("Hello",end="---")print("World")
# 输出结果 Hello---World

关于 messages

1、基本介绍
messages=[{"role":"system","content":"You are a helpful assistant."},{"role":"user","content":"你是谁?"}]
字段说明
role对话的角色
content对话的内容
角色说明
system系统角色,设置模型的身份和行为准则
user用户角色,表示用户的输入
assistant助手角色,表示模型的输出
2、演示
(1)客服
messages=[{"role":"system","content":"你是公司的客服,态度友好专业"},{"role":"user","content":"我的产品坏了怎么办?"}]
# 输出结果 您好!很抱歉听到您的产品出现了问题。为了更好地帮您解决,请您提供以下信息: 1. **产品名称和型号**(如果有的话) 2. **购买时间及渠道**(例如:官网、某电商平台、线下门店等) 3. **具体出现了什么问题**(可以简单描述故障现象) 4. **是否还在保修期内** 我们会根据您提供的信息,尽快为您安排维修、更换或退款等售后服务。如果您手边有产品照片或故障视频,也可以一并提供,有助于我们更快判断问题哦! 期待您的回复,祝您今天愉快!😊
(2)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)英语老师
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! 😊
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/31 23:31:20

AI工程宝典:产品运营的智能升级指南

AI工程宝典:产品运营的智能升级指南 【免费下载链接】aie-book [WIP] Resources for AI engineers. Also contains supporting materials for the book AI Engineering (Chip Huyen, 2025) 项目地址: https://gitcode.com/GitHub_Trending/ai/aie-book 还在为…

作者头像 李华
网站建设 2026/5/29 19:15:15

GeoJSON.io 终极指南:快速创建和编辑地理数据的免费在线工具

GeoJSON.io 终极指南:快速创建和编辑地理数据的免费在线工具 【免费下载链接】geojson.io A quick, simple tool for creating, viewing, and sharing spatial data 项目地址: https://gitcode.com/gh_mirrors/ge/geojson.io GeoJSON.io 是一款功能强大的免费…

作者头像 李华
网站建设 2026/6/1 15:13:59

0基础,想学习网络安全,看这一篇就够了

前言 肯定有很多人都听说过网络安全工程师这个职业,虽然比不上现在的前后端那么大红大紫,但也是一个不可小觑的技术职业,但你是否知道,网络安全工程师只是一个大的类,根据所作的工作内容不同可分为多个分支&#xff0…

作者头像 李华
网站建设 2026/5/29 19:27:42

Go项目配置管理终极指南:环境变量与配置文件的完美融合

Go项目配置管理终极指南:环境变量与配置文件的完美融合 【免费下载链接】go-clean-template Clean Architecture template for Golang services 项目地址: https://gitcode.com/gh_mirrors/go/go-clean-template 在Go项目开发中,你是否曾为不同环…

作者头像 李华
网站建设 2026/5/30 23:10:32

属于程序员的副业,从 0 到月入 2000,我靠挖“洞”致富!

【网络安全就业方向】网络安全专业的学生毕业后可以从事什么样的工作? 前言 2025年的今天,慎重进入网安行业吧,目前来说信息安全方向的就业对于学历的容忍度比软件开发要大得多,还有很多高中被挖过来的大佬。 理由很简单&#…

作者头像 李华