Spaces:
Runtime error
Runtime error
import gradio as gr | |
from tridentmodel import classification | |
import pandas as pd | |
import torch | |
import torch.nn as nn | |
import transformers | |
from transformers import AutoTokenizer, AutoConfig, LlamaForCausalLM, LlamaTokenizer, GenerationConfig | |
tokenizer = LlamaTokenizer.from_pretrained("Claimed/capybara") | |
model = LlamaForCausalLM.from_pretrained( | |
"Claimed/capybara") | |
#model = model.to('cuda') | |
def add_text(history, text): | |
history = history + [(text, None)] | |
return history, "" | |
def add_file(history, file): | |
history = history + [((file.name,), None)] | |
return history | |
def bot(history): | |
response = "**That's cool!**" | |
history[-1][1] = response | |
return history | |
""" | |
Place holder alpaca model trained example: | |
Required: | |
!pip install -q datasets loralib sentencepiece | |
!pip install -q git+https://github.com/zphang/transformers@c3dc391 | |
!pip install bitsandbytes | |
""" | |
''' | |
tokenizer = LLaMATokenizer.from_pretrained("chavinlo/alpaca-native") | |
model = LLaMAForCausalLM.from_pretrained( | |
"chavinlo/alpaca-native", | |
load_in_8bit=True, | |
device_map="auto", | |
) | |
''' | |
########## LOADING PRE-COMPUTED EMBEDDINGS ########## | |
class_embeddings = pd.read_csv('Embeddings/MainClassEmbeddings.csv') | |
""" | |
abstract = """ | |
#Described herein are strength characteristics and biodegradation of articles produced using one or more “green” sustainable polymers and one or more carbohydrate-based polymers. A compatibilizer can optionally be included in the article. In some cases, the article can include a film, a bag, a bottle, a cap or lid therefore, a sheet, a box or other container, a plate, a cup, utensils, or the like. | |
""" | |
abstract= classification.clean_data(abstract, type='String') | |
abstract_embedding = classification.sentence_embedder(abstract, 'Model_bert') | |
Number = 10 | |
broad_scope_predictions = classification.broad_scope_class_predictor(class_embeddings, abstract_embedding, Number, Sensitivity='High') | |
print(broad_scope_class_predictor) | |
""" | |
def classifier(userin): | |
clean_in = classification.clean_data(userin, type='String') | |
in_emb = classification.sentence_embedder(clean_in, 'Model_bert') | |
Number = 10 | |
broad_scope_predictions = classification.broad_scope_class_predictor(class_embeddings, in_emb, Number, Sensitivity='High') | |
return broad_scope_predictions[1] | |
def generateresponse(history): | |
""" | |
Model definition here: | |
""" | |
''' | |
global model | |
global tokenizer | |
PROMPT = f"""Below is an instruction that describes a task. Write a response that appropriately completes the request. | |
### Instruction: | |
{user} | |
### Response:""" | |
inputs = tokenizer( | |
PROMPT, | |
return_tensors="pt", | |
) | |
input_ids = inputs["input_ids"].cuda() | |
generation_config = GenerationConfig( | |
temperature=0.6, | |
top_p=0.95, | |
repetition_penalty=1.15, | |
) | |
print("Generating...") | |
generation_output = model.generate( | |
input_ids=input_ids, | |
generation_config=generation_config, | |
return_dict_in_generate=True, | |
output_scores=True, | |
max_new_tokens=256, | |
) | |
output = [] | |
for s in generation_output.sequences: | |
outputs.append(tokenizer.decode(s)) | |
print(tokenizer.decode(s)) | |
output = (outputs[0].split('### Response:'))[1] | |
''' | |
user = history[-1][0] | |
response = f"You asked: {user}" | |
history[-1][1] = response | |
print(history) | |
return history | |
theme = gr.themes.Base( | |
primary_hue="indigo", | |
).set( | |
prose_text_size='*text_sm' | |
) | |
with gr.Blocks(title='Claimed', theme=theme) as demo: | |
gr.Markdown(""" | |
# CLAIMED - A GENERATIVE TOOLKIT FOR PATENT ATTORNEYS | |
The patenting process can by incredibly time-consuming and expensive. We're on a mission to change that. | |
Welcome to our demo! We've trained Meta's Llama on over 200k entries, with a focus on tasks related to the intellectual property domain. | |
Please note that this is for research purposes and shouldn't be used commercially. | |
None of the outputs of this model, taken in part or in its entirety, constitutes legal advice. If you are seeking protection for you intellectual property, consult a registered patent/trademark attorney. | |
""") | |
with gr.Tab("Claim Drafter"): | |
gr.Markdown(""" | |
Use this tool to turn your idea into a patent claim. | |
""") | |
with gr.Row(scale=1, min_width=600): | |
text1 = gr.Textbox(label="Input", | |
placeholder='Type in your idea here!') | |
text2 = gr.Textbox(label="Output") | |
with gr.Tab("Description Generator"): | |
gr.Markdown(""" | |
Use this tool to expand your patent claim into a description. | |
You can also use this tool to generate abstracts and give you ideas about the benefit of an invention by changing the settings in the dropdown menu. | |
""") | |
with gr.Row(scale=1, min_width=600): | |
text1 = gr.Textbox(label="Input", | |
placeholder='Type in your idea here!') | |
text2 = gr.Textbox(label="Output") | |
with gr.Tab("Knowledge Graph"): | |
gr.Markdown(""" | |
Use this tool to | |
""") | |
with gr.Row(scale=1, min_width=600): | |
text1 = gr.Textbox(label="Input", | |
placeholder='Type in your idea here!') | |
text2 = gr.Textbox(label="Output") | |
with gr.Tab("Prosecution Ideator"): | |
gr.Markdown(""" | |
Below is our | |
Example input: A device to help the visually impaired using proprioception. | |
Output: | |
""") | |
with gr.Row(scale=1, min_width=600): | |
text1 = gr.Textbox(label="Input", | |
placeholder='Type in your idea here!') | |
text2 = gr.Textbox(label="Output") | |
with gr.Tab("Claimed Infill"): | |
gr.Markdown(""" | |
Below is our | |
Example input: A device to help the visually impaired using proprioception. | |
Output: | |
""") | |
with gr.Row(scale=1, min_width=600): | |
text1 = gr.Textbox(label="Input", | |
placeholder='Type in your idea here!') | |
text2 = gr.Textbox(label="Output") | |
with gr.Tab("CPC Classifier"): | |
gr.Markdown(""" | |
Use this tool to classify your invention according to Cooperative Patent Classification system. | |
""") | |
with gr.Row(scale=1, min_width=600): | |
userin = gr.Textbox(label="Input", | |
placeholder='Type in your Claim/Description/Abstract Here') | |
output = gr.Textbox(label="Output") | |
with gr.Row(): | |
classify_btn = gr.Button("Classify") | |
classify_btn.click(fn=classifier, inputs=userin, outputs=output) | |
gr.Markdown(""" | |
# THE CHATBOT | |
Do you want a bit more freedom over the outputs you generate? No worries, you can use a chatbot version of our model below. You can ask it anything. | |
If you're concerned about a particular output, hit the flag button and we will use that information to improve the model. | |
""") | |
chatbot = gr.Chatbot([], elem_id="Claimed Assistant").style(height=200) | |
with gr.Row(): | |
with gr.Column(scale=0.85): | |
txt = gr.Textbox( | |
show_label=False, | |
placeholder="Enter text and submit", | |
).style(container=False) | |
with gr.Column(scale=0.15, min_width=0): | |
btn = gr.Button("Submit") | |
txt.submit(add_text, [chatbot, txt], [chatbot, txt]).then( | |
generateresponse, chatbot, chatbot | |
) | |
gr.Markdown(""" | |
# HAVE AN IDEA? GET IT CLAIMED | |
In the future, we are looking to expand our model's capabilities further to assist in a range of IP related tasks. | |
If you are interested in using a more powerful model that we have trained, or if you have any suggestions of features you would like to see us add, please get in touch! | |
As far as data is concerned, you have nothing to worry about! We don't store any of your inputs to use for further training, we're not OpenAI. | |
""") | |
demo.launch() |