|
import logging |
|
import tiktoken |
|
import gradio as gr |
|
from langchain.text_splitter import CharacterTextSplitter |
|
from utils import fetch_chat |
|
from typing import List |
|
|
|
|
|
class Editor(): |
|
|
|
def __init__(self, model: str = "gpt-3.5-turbo"): |
|
self.encoder = tiktoken.encoding_for_model(model) |
|
self.model = model |
|
with open("./sample/sample_abstract.tex", "r") as f: |
|
self.sample_content = f.read() |
|
|
|
def split_chunk(self, text, chunk_size: int = 2000) -> List[str]: |
|
text_splitter = CharacterTextSplitter.from_tiktoken_encoder( |
|
chunk_size=100, chunk_overlap=0 |
|
) |
|
text_list = text_splitter.split_text(text) |
|
return text_list |
|
|
|
def generate(self, text: str, openai_key: str): |
|
|
|
logging.info("start editing") |
|
|
|
try: |
|
prompt = f""" |
|
I am a computer science student. |
|
I am writing my research paper. |
|
You are my editor. |
|
Your goal is to improve my paper quality at your best. |
|
Please edit the following paragraph and return the modified paragraph. |
|
If the paragraph is written in latex, return the modified paragraph in latex. |
|
|
|
``` |
|
{text} |
|
``` |
|
""" |
|
return fetch_chat(prompt, openai_key, model=self.model) |
|
except Exception as e: |
|
raise gr.Error(str(e)) |