当前位置: 首页 > news >正文

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! 😊
http://www.cnnetsun.cn/news/22035.html

相关文章:

  • 西南民族大学软件工程25级研究生赴华清远见成都中心开启元宇宙实训之旅
  • Obsidian图像工具包:终极图片管理与编辑指南
  • 自主高性价比、高精度车规级姿态感知、倾角感知模组-应用消费级无人机、自动驾驶、机器人、智能制造、基础设施、智能穿戴等
  • ComfyUI智能修复技术:图像处理的革命性突破
  • 碳硅协同:人工智能作为碳基生命合作伙伴的终极形态分析
  • 小公司效率低、管理乱?一张《四维照妖镜》,照出你的“效率黑洞”
  • 拒绝无意义刷屏,打造高效率热点追踪,极空间部署『TrendRadar』
  • 3步精通JSON对比工具:从新手到高手的实战指南
  • lombok的几个核心注解是什么?
  • Qwen3-VL-30B-A3B-Thinking-FP8多模态大模型实战指南:从技术突破到产业落地
  • 庄散资金主买卖差、散买卖差
  • AI办公工具选型指南:从文档到PPT,这些工具如何提升效率?
  • Web 漏洞扫描入门没头绪?2025 十大工具(详细拆解),零基础也能从入门到精通!
  • Morisawa BIZ UDGothic 终极字体配置指南:提升文档专业度的免费利器
  • Markn:轻量级Markdown查看器的终极指南——提升文档阅读体验
  • 小白必看!大模型入门指南
  • 一篇图文彻底搞懂什么是AI Agent
  • Kubernetes备份工具API实战指南:从入门到精通
  • 18、Linux数据搜索、提取与归档全解析
  • 19、Linux 文件操作与编辑全解析
  • 日薪2000+的 “ 护网行动 ” 到底是什么?
  • 百度网盘秒传技术终极指南:零基础掌握极速文件传输
  • 2026年金融/咨询行业求职风向标:顶级简历模板权威榜单
  • 5大关键技巧彻底掌握AgentWeb:从基础配置到企业级实战
  • 轻松搞定视频下载:Seal让你的手机变身多媒体收藏库
  • FluidNC:ESP32运动控制的革命性解决方案
  • dify 导入工作流,会有些插件报错
  • 基于百度地图打造“美食地图”与3D路线规划
  • 【硬件新人指南】从零入门硬件行业:技能树、学习路径与职业规划
  • 《无人驾驶航空器飞行管理暂行条例》核心内容梳理