You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python循环调用ChatGPT写入DataFrame:如何保存进度与处理异常?

改进后的批量调用ChatGPT API代码
import pandas as pd
import time
import openai
from openai.error import APIError, RateLimitError, ConnectionError, Timeout

# 初始化OpenAI API密钥(根据实际情况配置)
# openai.api_key = "your-api-key"

# 读取数据:优先加载已保存的进度文件,无则读取原始数据
try:
    df2500 = pd.read_csv('chatGPT-SG-part1-2500.csv')
    if 'summarized' not in df2500.columns:
        df2500['summarized'] = pd.NA
except FileNotFoundError:
    df2500 = pd.read_csv('your-original-data.csv')  # 替换为你的原始数据路径
    df2500['summarized'] = pd.NA

# 只处理未完成的行(summarized为空的条目)
for idx, row in df2500[df2500['summarized'].isna()].iterrows():
    phrase = row['phrase']
    try:
        # 调用ChatGPT API
        response = openai.ChatCompletion.create(
            model="gpt-3.5-turbo",
            temperature=0.3,
            messages=[{"role": "user", "content": phrase}],  # 建议用user角色匹配用户输入场景
            max_tokens=2500
        )
        # 提取并保存结果
        result = response['choices'][0]['message']['content'].strip()
        df2500.at[idx, 'summarized'] = result
        print(f"完成第{idx+1}条数据处理")
    except (APIError, RateLimitError, ConnectionError, Timeout) as e:
        print(f"第{idx+1}条数据处理失败: {str(e)}")
        df2500.at[idx, 'summarized'] = f"Error: {str(e)}"
    except Exception as e:
        print(f"第{idx+1}条数据发生未知错误: {str(e)}")
        df2500.at[idx, 'summarized'] = f"Unknown Error: {str(e)}"
    
    # 每次处理完立即保存进度
    df2500.to_csv('chatGPT-SG-part1-2500.csv', index=False)
    time.sleep(5)

print("所有数据处理完成")

核心改进说明

1. 实时保存已处理数据

  • 启动时优先读取已生成的CSV文件,若之前程序中断,可直接从上次进度继续,无需重复处理已完成条目
  • 每处理完一行(无论成功或失败),立即调用to_csv保存DataFrame,确保已处理数据随时可恢复
  • 通过筛选summarized为空的行,避免重复调用API浪费资源

2. 捕获错误并持续循环

  • 用try-except块包裹API调用,针对性捕获OpenAI常见异常(服务器错误、速率限制、网络故障、超时等)
  • 遇到错误时记录错误信息到结果列,打印提示后直接进入下一次循环,不中断整体流程
  • 额外捕获通用Exception处理未预见的错误,避免程序意外终止

额外优化

  • 将消息角色从system改为user,更符合ChatGPT的交互逻辑(system多用于定义助手行为,用户输入用user角色更合理)

内容的提问来源于stack exchange,提问作者gyinshen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 18:12:59