import pandas as pd from openai import OpenAI import os from tqdm import tqdm # 请求用户选择操作模式 print("请选择操作模式:\n1. 翻译功能\n2. 室内提示词\n3. 室内提示词16:9\n4. 用户自定义输入") mode = int(input("请输入操作模式的数字(1-4): ")) # 不同模式对应的指令 instructions = { 1: "请根据输入数据的语言执行相反的翻译(如果输入是英语,则翻译成中文;如果输入是中文,则翻译成英语),只返回翻译后的结果,不要包含原文。", 2: "你是stable diffusion的提示词生成器,专注于室内设计领域(家庭装修)(如客厅,卧室等)。我会给你一个引导词,如'{0}',请根据这个引导词创造1条英文的stable diffusion提示语,用于创造惊艳的stable diffusion图像,提示语尽量长30英文词左右,提示语前不要有数字,每条提示语用换行符隔开,提示语尽量用完整的自然语言句子。请只要返还1条提示语,不要有其他的回答,除逗号句号外不要有特殊符号。一行一句,行与行之间不要有空行。提示语前面都加上'Interior design,'", 3: "你是stable diffusion的提示词生成器,专注于室内设计领域(家庭装修)(如客厅,卧室等)。我会给你一个引导词,如'{0}',请根据这个引导词创造1条英文的stable diffusion提示语,用于创造惊艳的stable diffusion图像,提示语尽量长30英文词左右,提示语前不要有数字,每条提示语用换行符隔开,提示语尽量用完整的自然语言句子。请只要返还1条提示语,不要有其他的回答,除逗号句号外不要有特殊符号。一行一句,行与行之间不要有空行。提示语前面都加上'Interior design,'提示语后面都加上' --ar 16:9'" } # 用户自定义输入 if mode == 4: custom_instruction = input("请输入您的自定义指令: ") instructions[4] = custom_instruction # 请求用户输入 Excel 文件的路径 excel_file = input("请输入Excel文件的完整路径: ") # 检查文件路径是否有效 if not os.path.isfile(excel_file): print("指定的文件不存在,请检查文件路径。") exit() # 请求用户输入读取列和输出列 input_col = int(input("请输入读取数据的列号(从1开始计数): ")) output_col = int(input("请输入输出数据的列号(从1开始计数): ")) # 设置 OpenAI 客户端 client = OpenAI( base_url="https://oneapi.xty.app/v1", api_key="sk-q4zbysbGwSqCL3tJD15f7f296a464e2f9126149cB960763c" # 使用指定的 API 密钥 ) # 尝试读取 Excel 文件 try: df = pd.read_excel(excel_file) # 确保DataFrame有足够的列 while len(df.columns) < max(input_col, output_col): df[f'Column {len(df.columns) + 1}'] = None except Exception as e: print("无法读取文件: ", e) exit() # 检查 DataFrame 是否为空 if df.empty: print("Excel 文件是空的。") exit() # 使用 tqdm 创建进度条并处理数据 print_count = 0 # 设置打印计数器 for index, row in tqdm(df.iterrows(), total=df.shape[0], desc="处理进度"): # 验证数据格式和完整性 if pd.isna(row.iloc[input_col - 1]): print(f"跳过空行: {index}") continue user_input = row.iloc[input_col - 1] instruction = instructions[mode].format(user_input) # 获取模型的回答 try: completion = client.chat.completions.create( model="gpt-4-1106-preview", messages=[{"role": "system", "content": instruction}] ) gpt_response = completion.choices[0].message.content df.at[index, df.columns[output_col - 1]] = gpt_response except Exception as e: print(f"处理第 {index} 行时出错: {e}") # 打印前5条读取结果与返还结果 if print_count < 5: print(f"第 {index + 1} 行读取结果: {user_input}") print(f"第 {index + 1} 行返还结果: {gpt_response}\n") print_count += 1 # 将更新后的 DataFrame 保存回 Excel 文件 try: with pd.ExcelWriter(excel_file, engine='openpyxl', mode='a', if_sheet_exists='replace') as writer: df.to_excel(writer, index=False) print("Excel文件已成功更新!") except Exception as e: print("无法保存文件: ", e)
标签:提示,index,df,存档,print,GPT,input,col From: https://www.cnblogs.com/zly324/p/18014236