用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)