Spaces:
Running
Running
| import gradio as gr | |
| from utils.chatgpt import ChatGPTAPI | |
| from utils.read_pdf import read_pdf | |
| from utils.read_web import read_web | |
| from utils.truncate import truncate_string | |
| def file2str(filepath: str) -> str: | |
| if not filepath: | |
| return '' | |
| if filepath.endswith('.pdf'): | |
| content_list = read_pdf(filepath) | |
| text = '\n'.join(content_list) | |
| elif filepath.endswith('.txt'): | |
| with open(filepath, 'r') as f: | |
| text = f.readlines() | |
| else: | |
| raise Exception('File type not supported') | |
| text = truncate_string(text, max_length=1024) | |
| return text | |
| def process(api_key: str = '', prompt: str = '', file=None, url='') -> str: | |
| chatgpt = ChatGPTAPI(api_key, max_input_length=1024) | |
| file_text = file2str(file.name) if file else '' | |
| web_txt = read_web(url) | |
| web_txt = truncate_string(web_txt, max_length=1024) | |
| content = prompt + '\n' + file_text + '\n' + web_txt | |
| response = chatgpt(content) | |
| return response | |
| prompt_input = gr.components.Textbox( | |
| value='用中文总结下面的文章', | |
| lines=2, | |
| type="text" | |
| ) | |
| app = gr.Interface( | |
| fn=process, | |
| inputs=["text", prompt_input, "file", "text"], | |
| outputs="text" | |
| ) | |
| app.launch() | |