import numpy as np import os import re import datetime import time import openai, tenacity import argparse import configparser import json import tiktoken from get_paper_from_pdf import Paper import gradio # 定义Response类 class Response: # 初始化方法,设置属性 def __init__(self, api, comment, language): self.api = api self.comment = comment self.language = language self.max_token_num = 4096 self.encoding = tiktoken.get_encoding("gpt2") @tenacity.retry(wait=tenacity.wait_exponential(multiplier=1, min=4, max=10), stop=tenacity.stop_after_attempt(5), reraise=True) def chat_response(self, comment): openai.api_key = self.api response_prompt_token = 1000 text_token = len(self.encoding.encode(comment)) input_text_index = int(len(comment)*(self.max_token_num-response_prompt_token)/text_token) input_text = "This is the review comments:" + comment[:input_text_index] messages=[ {"role": "system", "content": """You are the author, you submitted a paper, and the reviewers gave the review comments. Please reply with what we have done, not what we will do. You need to extract questions from the review comments one by one, and then respond point-to-point to the reviewers’ concerns. Must be output in {}. Follow the format of the output later: - Response to reviewers #1 reviewer Concern #1: xxxx Author response: xxxxx Concern #2: xxxx Author response: xxxxx ... #2 reviewer Concern #1: xxxx Author response: xxxxx Concern #2: xxxx Author response: xxxxx ... #3 reviewer Concern #1: xxxx Author response: xxxxx Concern #2: xxxx Author response: xxxxx ... """.format(self.language) }, {"role": "user", "content": input_text}, ] response = openai.ChatCompletion.create( model="gpt-3.5-turbo", messages=messages, ) result = '' for choice in response.choices: result += choice.message.content print("********"*10) print(result) print("********"*10) print("prompt_token_used:", response.usage.prompt_tokens) print("completion_token_used:", response.usage.completion_tokens) print("total_token_used:", response.usage.total_tokens) print("response_time:", response.response_ms/1000.0, 's') return result, response.usage.total_tokens def main(api, comment, language): start_time = time.time() if not api or not comment: return "请输入API-key以及审稿意见!" else: Response1 = Response(api, comment, language) # 开始判断是路径还是文件: response, total_token_used = Response1.chat_response(comment) time_used = time.time() - start_time output2 ="使用token数:"+ str(total_token_used)+"\n花费时间:"+ str(round(time_used, 2)) +"秒" return response, output2 ######################################################################################################## # 标题 title = "🤖ChatResponse🤖" # 描述 description = '''