| import os | |
| os.environ['debug'] = 'true' | |
| import gradio as gr | |
| from GPTagger import * | |
| from langchain.prompts import PromptTemplate | |
| default_prompt = """ | |
| Please understand the instructions above and do extraction in the text below. | |
| TEXT: | |
| \"\"\" | |
| {text} | |
| \"\"\" | |
| """ | |
| def ner( | |
| model: str, | |
| nr_calls: int, | |
| tag_name: str, | |
| tag_max_len: int, | |
| text: str, | |
| prompt: str, | |
| key: str, | |
| ): | |
| os.environ['OPENAI_API_KEY'] = key | |
| ner_pipeline = NerPipeline( | |
| tag_name=tag_name, | |
| nr_calls=nr_calls, | |
| model=model, | |
| tag_max_len=tag_max_len | |
| ) | |
| template = PromptTemplate.from_template(prompt) | |
| extractions = ner_pipeline(text, template, "") | |
| if not extractions: | |
| output = [] | |
| else: | |
| output = [ | |
| {"entity": tag_name.upper(), "start": item.start, "end": item.end} | |
| for item in extractions | |
| ] | |
| return {"text": text, "entities": output} | |
| with gr.Blocks() as demo: | |
| gr.Markdown( | |
| """ | |
| # GPTagger 🏷️ | |
| [GPTagger](https://github.com/hnliu-git/GPTagger) is a powerful text tagger that makes use of the GPT model. This tool allows you to extract tags from a given text by leveraging the capabilities of GPT. | |
| Simply specify the tag you want to extract from the text using prompt, you will get them highlighted in the output. | |
| """ | |
| ) | |
| with gr.Row(): | |
| key = gr.Textbox(label='OpenAI API Key: (We don \'t record your key.)') | |
| with gr.Row(): | |
| tag_name = gr.Textbox(label="Tag Name:", placeholder='Enter the tag you want to extract') | |
| tag_max_len = gr.Slider( | |
| minimum=10, maximum=1000, step=10, label="Max length of a tag", value=50 | |
| ) | |
| with gr.Row(): | |
| model = gr.Dropdown( | |
| ["gpt-3.5-turbo-0613", "gpt-4-0613"], | |
| label="Model Name:", | |
| value="gpt-3.5-turbo-0613", | |
| ) | |
| nr_call = gr.Number(label="nr_of_calls", minimum=1, value=1, precision=0) | |
| with gr.Row(): | |
| prompt = gr.TextArea( | |
| placeholder="Enter your prompt here...", | |
| label="Prompt: (Please include the default prompt at the end)", | |
| value=default_prompt, | |
| ) | |
| text = gr.TextArea(placeholder="Enter your text here...", label="Text") | |
| btn = gr.Button("Submit") | |
| output = gr.HighlightedText() | |
| btn.click( | |
| ner, | |
| inputs=[ | |
| model, | |
| nr_call, | |
| tag_name, | |
| tag_max_len, | |
| text, | |
| prompt, | |
| key | |
| ], | |
| outputs=output, | |
| ) | |
| demo.launch() | |