import openai import numpy as np import pandas as pd from sentence_transformers import SentenceTransformer, CrossEncoder import re import gradio as gr import json import ast from llm import OpenAILLM from qa import QuestionAnswerer df = pd.read_csv("/Users/mariusvach/Code/python/leitlinien_chatbot/carotis_chatbot/carotid_embeddings_sentence_transformers_061123.csv") df["embeddings"] = df.embeddings.apply(ast.literal_eval) qa = QuestionAnswerer(df, SentenceTransformer('thenlper/gte-base'), OpenAILLM('gpt-3.5-turbo-16k'), CrossEncoder('cross-encoder/ms-marco-TinyBERT-L-2-v2')) def gradio_answer(input): return qa.answer_question(input, n=5, ) desc_string = """ In dieser Demo kannst du einer KI Fragen zum Inhalt der ['S3-Leitlinie Diagnostik, Therapie und Nachsorge der extracraniellen Carotisstenose'](https://register.awmf.org/de/leitlinien/detail/004-028) stellen. Ein paar Beispiel-Fragen findest du unten. ## Wie funktioniert das? 1. Die Frage wird durch ein neuronalen Netzwerk in eine Vektor-Repräsentation ('Embedding') umgewandelt. 2. Die Ähnlichkeit des 'Frage-Vektors' wird mit den genauso erzeugten Vektoren von Textpassagen der Leitlinie verglichen. 3. Ein ‚Large Language Model (LLM)‘ beantwortet nun mit Hilfe der ähnlichsten Textpassagen die gestellte Frage. Diese Technik heißt [‚Retrieval-augmented Generation (RAG)'](https://research.ibm.com/blog/retrieval-augmented-generation-RAG). Hierdurch kann verhindert werden, dass LLMs Fakten einfach erfinden. """ demo = gr.Interface( fn=gradio_answer, inputs=gr.Textbox(lines=1, placeholder="Frage hier...", label="Frage"), outputs=gr.Textbox(lines=4, placeholder="Antwort hier...", label="Antwort"), title="🧠 Q&A S3 Leitlinie Carotisstenose", description=desc_string, examples=[ "Welche Sensitivität hatte die Transcranielle Doppler-Sonographie (TCD) bei der Detektion eines perioperativen Schlaganfalls?", "Ist eine ambulante Therapie der Carotisstenose mittels CEA oder CAS möglich und sinnvoll?", "Wie viele zerebrale Ischämien in Deutschland werden durch >50%ige Stenosen oder Verschlüsse der extracraniellen A. carotis verursacht?", "Welche Symptome können durch Stenosen der A. carotis verursacht werden?" ] ) demo.launch()