解决方案

Python调用chatGPT接口

首先你需要openAI的账号,在官网申请一个key
网址是:Account API Keys – OpenAI API

这个key只能调用GPT3,不是chatGPT

使用方法是,在代码中插入你申请的KEY,
然后运行以下Python代码,在运行的窗口里,发送你想对AI说的话
注意啊,是在运行的窗口里敲入你想对AI说的话,不是代码中输入
然后每一次的问答都是独立的,无法连续对话

调用GPT3.5

你需要给Python安装openai库,如果你已经安装,请升级到0.27
pip install openai==v0.27.0

import openai
import datetime
import pyperclip
import pandas as pd
openai.api_key = "这里填写API KEY"

#chatGPT3.5支持连续对话

print('输入1复制上次回答内容')
print('输入0导出本次所有对话内容')

#创建一个DataFrame用于存储每次翻译结果
df = pd.DataFrame(columns=['发送的内容', '收到的回复'])

conversation=[{"role": "system", "content": "You are a helpful assistant."}]

while True:
    prompt = (input("请输入您的内容:"))


    if prompt=='1':
        pyperclip.copy(result.replace('\n', ''))  # 复制到剪切板并删除换行符
        print("已复制到剪切板!")
        continue

    #如果输入0则将过去的所的内容导出
    if prompt =='0':
        # 获取当前日期和时间
        now = datetime.datetime.now()
        date_time = now.strftime("%Y-%m-%d_%H-%M-%S")
        date_time=date_time.replace(':', '-')
        # 定义文件名
        filename = "对话导出" + date_time + ".xlsx"
        # 将DataFrame导出为Excel文件
        df.to_excel(filename, sheet_name='Sheet1', index=False)
        print("Excel文件已保存为: ", filename)
        continue




    conversation.append({"role": "user","content": prompt})
    response = openai.ChatCompletion.create(
        model="gpt-3.5-turbo",
        messages = conversation,
        temperature=1,
        max_tokens=1024,
        top_p=0.9
    )
    conversation.append({"role": "assistant", "content": response['choices'][0]['message']['content']})
    print("\n" + response['choices'][0]['message']['content'] + "\n")

    result=response['choices'][0]['message']['content']

    # 创建一个列表,存储本次原文与译句
    qa = []
    q = prompt # 发送的内容
    a = response['choices'][0]['message']['content']  # 收到的回答
    qa.append(q)
    qa.append(a)

    # 向DataFrame中添加本次QA
    df.loc[len(df)] = qa


调用GPT3

import openai
import datetime
import pyperclip
import pandas as pd



# OpenAI API
openai.api_key="key"

# 使用text-davinci-002或003
model_engine="text-davinci-003"

print('输入1复制上次回答内容')
print('输入0导出本次所有对话内容')

#创建一个DataFrame用于存储每次翻译结果
df = pd.DataFrame(columns=['发送的内容', '收到的回复'])


# 想要询问的话
while True:
    content=input("发送的内容:")

    #输入1复制上一次的翻译结果
    if content=='1':
        pyperclip.copy(Response.replace('\n', ''))  # 复制到剪切板并删除换行符
        print("已复制到剪切板!")
        continue

    #如果输入0则将过去的所的翻译导出
    if content =='0':
        # 获取当前日期和时间
        now = datetime.datetime.now()
        date_time = now.strftime("%Y-%m-%d_%H-%M-%S")
        date_time=date_time.replace(':', '-')



        # 定义文件名
        filename = "对话导出" + date_time + ".xlsx"

        # 将DataFrame导出为Excel文件
        df.to_excel(filename, sheet_name='Sheet1', index=False)

        print("Excel文件已保存为: ", filename)
        continue

    # 删除输入内容的所有换行
    content = content.replace("\n", "")

    #print(content)
    prompt =''+content


    completion = openai.Completion.create(
        engine=model_engine,
        prompt=prompt,max_tokens=1024,
        n=1,
        stop=None,
        temperature=0.5)

    Response = completion.choices[0].text

    #删除开头的问号
    if Response[0] == '?':
        Response = Response[1:]

    #删除翻译结果中的换行符
    Response=Response.replace('\n', '')

    #删除开头的问号
    if Response[0] == '?':
        Response = Response[1:]

    #创建一个列表,存储本次原文与译句
    qa=[]
    q=content   #发送的内容
    a=Response  #收到的回答
    qa.append(q)
    qa.append(a)

    #向DataFrame中添加本次翻译结果
    df.loc[len(df)] = qa

    print(Response)


——————————————————–

逐句翻译成意大利语:

import openai
import datetime
import pyperclip
import pandas as pd



# OpenAI API
openai.api_key="KEY"

# 使用text-davinci-002或003
model_engine="text-davinci-003"

print('输入1复制上次翻译结果')
print('输入0导出历史翻译结果')

#创建一个DataFrame用于存储每次翻译结果
df = pd.DataFrame(columns=['中文', '意大利语'])


# 想要询问的话
while True:
    content=input("发送的内容:")

    #输入1复制上一次的翻译结果
    if content=='1':
        pyperclip.copy(Response.replace('\n', ''))  # 复制到剪切板并删除换行符
        print("已复制到剪切板!")
        continue

    #如果输入0则将过去的所的翻译导出
    if content =='0':
        # 获取当前日期和时间
        now = datetime.datetime.now()
        date_time = now.strftime("%Y-%m-%d_%H-%M-%S")
        date_time=date_time.replace(':', '-')



        # 定义文件名
        filename = "批量翻译导出" + date_time + ".xlsx"

        # 将DataFrame导出为Excel文件
        df.to_excel(filename, sheet_name='Sheet1', index=False)

        print("Excel文件已保存为: ", filename)
        continue

    # 删除输入内容的所有换行
    content = content.replace("\n", "")

    #print(content)
    prompt ='翻译成意大利语:'+content

    #prompt=prompt.replace("\n", "")
    #print(prompt)


    #print(prompt)

    completion = openai.Completion.create(
        engine=model_engine,
        prompt=prompt,max_tokens=1024,
        n=1,
        stop=None,
        temperature=0.5)

    Response = completion.choices[0].text

    #删除开头的问号
    if Response[0] == '?':
        Response = Response[1:]

    #删除翻译结果中的换行符
    Response=Response.replace('\n', '')

    #删除开头的问号
    if Response[0] == '?':
        Response = Response[1:]

    #创建一个列表,存储本次原文与译句
    qa=[]
    q=content   #输入的原文
    a=Response  #本次翻译结果
    qa.append(q)
    qa.append(a)

    #向DataFrame中添加本次翻译结果
    df.loc[len(df)] = qa

    print(Response)


将整篇文章翻译成意大利语:

import openai
import datetime
import pyperclip
import pandas as pd

# OpenAI API
openai.api_key="key"

'''
读取1.txt
进行分段并导出 分段.txt
读取分段.txt并删除空行
逐段翻译,最终合成一篇文章,导出为 翻译结果.txt
'''


# 使用text-davinci-002或003
model_engine="text-davinci-003"

#读取1.txt并且分段,如果有一个段落的字数超过700,就在该段落第二个中文句号后面换行,最后输出 分段.txt文件
with open('1.txt', 'r', encoding='utf-8') as f1, open('分段.txt', 'w', encoding='utf-8') as f2:
    for line in f1:
        line = line.strip()
        while len(line) > 700:
            idx = 700
            while idx > 0 and line[idx] != '。':
                idx -= 1
            if idx == 0:
                idx = 300
            f2.write(line[:idx+1] + '\n')
            line = line[idx+1:]
        f2.write(line + '\n')

paragraphs = []


#删除空行
# 读取文件内容
with open("分段.txt", "r", encoding="utf-8") as file:
    content = file.read()
# 删除空行
content = "\n".join([line for line in content.split("\n") if line.strip()])
# 保存内容到文件
with open("分段.txt", "w", encoding="utf-8") as file:
    file.write(content)





# 生成空列表
my_list = []

# 打开并读取文件
with open("分段.txt", "r",encoding='utf-8') as file:
    # 逐行读取并添加到列表
    for line in file:
        my_list.append(line.strip())

# 打印列表
#print(my_list)




output=''

for i in my_list:
    print(i)
    prompt = '将下面的所有内容翻译成意大利语:' +str(i)
    #print(prompt)

    completion = openai.Completion.create(
        engine=model_engine,
        prompt=prompt,max_tokens=1024,
        n=1,
        stop=None,
        temperature=0.5)

    Response = completion.choices[0].text

    #删除开头的问号
    if Response[0] == '?':
        Response = Response[1:]

    #删除翻译结果中的换行符
    Response=Response.replace('\n', '')

    #删除开头的问号
    if Response[0] == '?':
        Response = Response[1:]

    output=output+ "\n"+Response

    print(Response)

#文章翻译完成后导出文件

# 获取当前日期和时间
now = datetime.datetime.now()
date_time = now.strftime("%Y-%m-%d_%H-%M-%S")
date_time = date_time.replace(':', '-')
#设置文件名
filename='文章翻译结果'+date_time

#将最终翻译结果生成文件
with open(filename+".txt", "w", encoding="utf-8") as file:
    file.write(output)
print('任务已完成')



发表回复