Spaces:
Runtime error
Runtime error
File size: 2,225 Bytes
c6c79f7 e22d4b7 c6c79f7 e22d4b7 c6c79f7 627653b e22d4b7 c6c79f7 e22d4b7 c6c79f7 e22d4b7 c6c79f7 d02f3a9 e22d4b7 d02f3a9 e22d4b7 d02f3a9 e22d4b7 d02f3a9 e22d4b7 d02f3a9 e22d4b7 d02f3a9 c6c79f7 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
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("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() |