大模型应用-筑基期【09:Python调用OpenAI API入门】
·
W4 · 知识点09:Python调用OpenAI API入门
学习目标:为设备维修养护系统完成第一次API调用——实现故障描述智能分析功能。
一、开始前的准备
# 1. 安装Python库
pip install openai
# 2. 获取API Key(从OpenAI / DeepSeek / 通义千问 任选一个)
# 推荐使用DeepSeek(国内访问无障碍,价格便宜)
# 3. 设置环境变量
# Windows PowerShell:
$env:OPENAI_API_KEY="sk-你的密钥"
$env:OPENAI_BASE_URL="https://api.deepseek.com/v1" # 如果用DeepSeek
二、第一次API调用:设备故障分析
from openai import OpenAI
client = OpenAI() # 自动读取环境变量中的API Key和Base URL
# 你的设备维修系统第一个AI功能:故障描述分析
response = client.chat.completions.create(
model="deepseek-chat", # 或 "gpt-4o-mini"
messages=[
{
"role": "system",
"content": """你是一位资深设备维修工程师,有15年工业设备维护经验。
请根据用户提供的故障描述,给出专业的诊断分析和维修建议。
回答要简洁实用,直接给出可操作的结论。"""
},
{
"role": "user",
"content": """设备:2号空压机(型号GA55)
故障:运行约3小时后排气温度从正常的85°C逐渐升至102°C,
冷却水出口温度偏高,机器无明显异响。已累计运行1800小时未做保养。"""
}
],
temperature=0.3, # 故障诊断用低温度,确保结果稳定
max_tokens=500,
)
# 提取回复
analysis = response.choices[0].message.content
print(analysis)
# 查看Token用量
usage = response.usage
print(f"\n--- Token统计 ---")
print(f"输入: {usage.prompt_tokens} | 输出: {usage.completion_tokens} | 总计: {usage.total_tokens}")
三、理解Messages结构(设备维修版)
messages = [
# system: 设定AI的角色和行为规则
{"role": "system", "content": "你是设备维修养护系统的AI诊断助手。"},
# user: 维修人员提交的故障描述
{"role": "user", "content": "空压机排气温度过高,怎么回事?"},
# assistant: AI的诊断结果(用于多轮对话)
{"role": "assistant", "content": "排气温度过高可能由以下原因导致:1. 冷却器堵塞..."},
# user: 维修人员追问
{"role": "user", "content": "冷却器怎么清洗?需要什么工具?"},
]
四、多轮诊断对话
模拟维修工程师"问诊"的过程——通过多轮对话逐步缩小故障范围:
from openai import OpenAI
client = OpenAI()
class FaultDiagnosisChat:
"""设备故障诊断对话系统"""
def __init__(self):
self.conversation = [
{"role": "system", "content": """你是设备维修养护系统的AI诊断助手。
你的目标是通过对话帮助维修人员定位设备故障。
工作方式:
1. 先询问关键信息(设备类型、故障现象、运行时长等)
2. 根据信息逐步缩小故障范围
3. 给出诊断结论和维修建议
每次回复控制在150字以内,简洁实用。"""}
]
def ask(self, user_message):
self.conversation.append({"role": "user", "content": user_message})
response = client.chat.completions.create(
model="deepseek-chat",
messages=self.conversation,
temperature=0.3,
max_tokens=300,
)
reply = response.choices[0].message.content
self.conversation.append({"role": "assistant", "content": reply})
return reply
# 模拟一次完整的故障诊断对话
chat = FaultDiagnosisChat()
print("=== 设备故障诊断助手 ===\n")
# 第一轮:提交故障信息
print("维修人员: 3号注塑机合模力不足,产品飞边严重")
print(f"AI: {chat.ask('3号注塑机合模力不足,产品飞边严重')}\n")
# 第二轮:回答AI的追问
print("维修人员: 液压油温度正常,大概45度左右")
print(f"AI: {chat.ask('液压油温度正常,大概45度左右')}\n")
# 第三轮:补充信息
print("维修人员: 上周刚换过液压油")
print(f"AI: {chat.ask('上周刚换过液压油')}\n")
# 第四轮:获取最终诊断
print("维修人员: 好的,那我先检查一下合模机构的密封件")
print(f"AI: {chat.ask('好的,那我先检查一下合模机构的密封件')}\n")
五、兼容不同模型(适配你的项目选型)
# 方案A: DeepSeek(推荐国内使用,便宜好用)
client = OpenAI(
api_key="sk-你的deepseek密钥",
base_url="https://api.deepseek.com/v1"
)
# 方案B: 通义千问(阿里云生态)
client = OpenAI(
api_key="sk-你的通义千问密钥",
base_url="https://dashscope.aliyuncs.com/compatible-mode/v1"
)
# 方案C: 本地Ollama(完全免费,适合开发调试)
client = OpenAI(
api_key="ollama",
base_url="http://localhost:11434/v1"
)
# 前提: 安装Ollama并运行 ollama pull qwen2.5
# 建议: 开发时用Ollama(免费),测试时用DeepSeek(便宜),生产时按需选择
六、动手练习
练习1:Hello World——故障分析
运行上面的故障分析代码,确保能成功获得AI的诊断回复。
练习2:多轮诊断对话
基于FaultDiagnosisChat,模拟3个不同的设备故障场景:
- 空压机故障
- 液压系统故障
- 电气控制系统故障
观察AI是否能通过多轮对话逐步定位问题。
练习3:成本估算
# 假设你的设备维修系统每天处理50条故障诊断请求
# 每条请求约300个输入Token + 200个输出Token
# DeepSeek价格: 输入 ¥1/百万Token, 输出 ¥2/百万Token
# 计算每日、每月、每年的API成本
daily_requests = 50
input_tokens_per_request = 300
output_tokens_per_request = 200
# 请编写代码计算...
七、本知识点检验标准
- 成功调用API完成一次设备故障分析
- 理解system/user/assistant三种角色在维修对话中的作用
- 能实现多轮诊断对话,AI能"记住"前面的故障信息
- 能估算系统的月度API成本
更多推荐


所有评论(0)