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个不同的设备故障场景:

  1. 空压机故障
  2. 液压系统故障
  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成本
Logo

欢迎加入DeepSeek 技术社区。在这里,你可以找到志同道合的朋友,共同探索AI技术的奥秘。

更多推荐