Spaces:
Build error
Build error
| import gradio | |
| import logging | |
| import time | |
| from transformers import pipeline | |
| logger = logging.getLogger("gradio_test_001") | |
| logger.setLevel(logging.INFO) | |
| logging.debug("Starting logging for gradio_test_001.") | |
| categories = [ | |
| "Legal", "Specification", "Facts and Figures", | |
| "Publication", "Payment Scheme", | |
| "Alternative Payment Systems", "Crypto Payments", | |
| "Card Payments", "Banking", "Regulations", "Account Payments" | |
| ] | |
| logging.debug("Categories to classify: " + repr(categories)) | |
| # classifier = pipeline("zero-shot-classification", | |
| # model="facebook/bart-large-mnli") | |
| # sequence_to_classify = "one day I will see the world" | |
| # candidate_labels = ['travel', 'cooking', 'dancing'] | |
| # CATEGORIES = ['doc_type.jur', 'doc_type.Spec', 'doc_type.ZDF', 'doc_type.Publ', | |
| # 'doc_type.Scheme', 'content_type.Alt', 'content_type.Krypto', | |
| # 'content_type.Karte', 'content_type.Banking', 'content_type.Reg', | |
| # 'content_type.Konto'] | |
| def transform_output(res: dict) -> list: | |
| return list( | |
| sorted( | |
| zip(res["labels"], res["scores"]), | |
| key=lambda tpl: tpl[1], | |
| reverse=True | |
| ) | |
| ) | |
| def clf_text(txt: str | list[str]): | |
| logger.info("Classify: " + repr(txt)) | |
| t0 = time.time() | |
| res = classifier(txt, categories, multi_label=True) | |
| elapsed = time.time() - t0 | |
| logger.info(f"Done. {elapsed:.02f}s") | |
| logger.info(f"Result(s): " + repr(res)) | |
| if isinstance(res, list): | |
| return [ transform_output(dct) for dct in res ] | |
| else: | |
| return transform_output(res) | |
| # items = sorted(zip(res["labels"], res["scores"]), key=lambda tpl: tpl[1], reverse=True) | |
| # d = dict(zip(res["labels"], res["scores"])) | |
| # output = [f"{lbl}:\t{score}" for lbl, score in items] | |
| # return "\n".join(output) | |
| # return list(items) | |
| # classifier(sequence_to_classify, candidate_labels) | |
| #{'labels': ['travel', 'dancing', 'cooking'], | |
| # 'scores': [0.9938651323318481, 0.0032737774308770895, 0.002861034357920289], | |
| # 'sequence': 'one day I will see the world'} | |
| from transformers import AutoModel | |
| # comment out the flash_attention_2 line if you don't have a compatible GPU | |
| model = AutoModel.from_pretrained( | |
| 'jinaai/jina-reranker-m0', | |
| torch_dtype="auto", | |
| trust_remote_code=True, | |
| # attn_implementation="flash_attention_2" | |
| ) | |
| def clf_jina(txt: str | list[str]): | |
| # construct sentence pairs | |
| # text_pairs = [[query, doc] for doc in documents] | |
| text_pairs = [[cat, txt] for cat in categories] | |
| scores = model.compute_score(text_pairs, max_length=1024, doc_type="text") | |
| return list( | |
| sorted( | |
| zip(categories, scores), | |
| key=lambda tpl: tpl[1], | |
| reverse=True | |
| ) | |
| ) | |
| def my_inference_function(name): | |
| return "Hello " + name + "!" | |
| gradio_interface = gradio.Interface( | |
| # fn = my_inference_function, | |
| # fn = clf_text, | |
| clf_jina, | |
| inputs = "text", | |
| outputs = gradio.JSON() | |
| ) | |
| logger.debug("Launch app.") | |
| gradio_interface.launch() |