用chatgpt的api接口实现对文字材料批量处理 - ZhouXuyan/notes GitHub Wiki

一、准备工作

1、一个科学上网工具
2、一个有效的ChatGpt账号
3、电脑部署适合的python环境,建议使用anaconda

二、代码部分

1、引入依赖包

import openai  
import json  
import os  
import pandas as pd  
from openai.error import RateLimitError

2、参数配置,包括vpn端口和api密钥

#根据梯子的配置填端口号
os.environ["HTTP_PROXY"]="127.0.0.1:****"
os.environ["HTTPS_PROXY"]="127.0.0.1:****"
#API_KEY,去openai官网登录账号获取
openai_api_key="sk-*******************************I4Rp"

3、配置key

def get_api_key():
    return openai_api_key

openai.api_key=get_api_key()

4、加载原始文件至dataframe

csv = 'C:\\Users\\Administrator\\Desktop\\gpt_test.csv'
file_input=pd.read_csv(open(csv,'r',encoding='UTF-8'),error_bad_lines=False)
file_input.head()

5、遍历dataframe顺序上传,接收chatgpt的回答

#循环列表,顺序对话
for i in range(file_input.shape[0]):
    try:
        q = "下面这段话是一个运营商客服接听的用户来电,Role1代表客服,Role2代表用户。分析以下这段话,以dic数据格式告诉我如下信息: {“场景” : 这段话的具体场景, “主题”:这段话中包含的主题}"+file_input['asr_text'].tolist()[i]
        rsp = openai.ChatCompletion.create(
            model="gpt-3.5-turbo",
            messages=[
                {"role": "system", "content": "一个有十年经验的运营商公司的电话客服"},
                {"role": "user", "content": q}
            ]
        )
        #接收结果保存为字典格式
        tt=rsp.get("choices")[0]["message"]["content"].strip()
        temp=json.loads(tt)  

        df=pd.DataFrame.from_dict(temp, orient='index').T
        #将结果写入DataFrame表
        if i != 0:
            df_result = df_result.append(df, ignore_index=True)
        else:
            df_result = df   
    except RateLimitError as e:
        print(f"连接超时。当前执行到第{i+1}条。等待 {e.retry_after}秒后重试")
        time.sleep(e.retry_after)
        continue

6、检查效果

df_result.head()

7、调整格式输出

df_result['contact_id']=file_input['contact_id']
df_result['asr_text']=file_input['asr_text']
df_result = df_result.iloc[:, [2, 3, 0,1]]
df_result.to_csv('C:\\Users\\Administrator\\Desktop\\example.csv', index=False)