CurateGPT ist ein Prototyp einer Webanwendung und eines Frameworks zur Durchführung allgemeiner KI-gesteuerter Kuration und kurationsbezogener Operationen an Objektsammlungen .
Siehe auch die App auf curategpt.io (Hinweis: Diese ist manchmal nicht verfügbar und bietet möglicherweise nur einen Teil der Funktionalität der lokalen App)
CurateGPT ist auf Pypi verfügbar und kann mit pip
installiert werden:
pip install curategpt
Zuerst müssen Sie Poetry installieren.
Dann klonen Sie dieses Repo.
git clone https://github.com/monarch-initiative/curategpt.git
cd curategpt
und installieren Sie die Abhängigkeiten:
poetry install
Um die beste Leistung von CurateGPT zu erzielen, empfehlen wir, einen OpenAI-API-Schlüssel zu erwerben und ihn wie folgt festzulegen:
export OPENAI_API_KEY=
(für Mitglieder von Monarch: Fragen Sie bei Slack, ob Sie den Gruppenschlüssel verwenden möchten)
CurateGPT funktioniert auch mit anderen großen Sprachmodellen – siehe „Modelle auswählen“ weiter unten.
Sie beginnen zunächst mit einer leeren Datenbank. Sie können in diese Datenbank laden, was Sie möchten! Es werden beliebige JSON-, YAML- oder CSV-Dateien akzeptiert. CurateGPT enthält Wrapper für einige vorhandene lokale und Remote-Quellen, einschließlich Ontologien. Das Makefile enthält einige Beispiele, wie diese geladen werden. Sie können jede Ontologie mit dem Ziel ont-
laden, z. B.:
make ont-cl
Dadurch wird CL (über OAK) in eine Sammlung namens ont_cl
geladen
Beachten Sie, dass dies standardmäßig in einen Sammlungssatz geladen wird, der unter stagedb
gespeichert ist, während die App von db
aus funktioniert. Sie können den Sammlungssatz wie folgt in die Datenbank kopieren:
cp -r stagedb/* db/
Anschließend können Sie die Streamlit-App ausführen mit:
make app
CurateGPT basiert auf Vektordatenbankindizes der Datenbanken/Ontologien, die Sie kuratieren möchten.
Die Flaggschiffanwendung ist die Ontologiekuration. Um also einen Index für eine OBO-Ontologie wie CL zu erstellen:
make ont-cl
Hierzu ist ein OpenAI-Schlüssel erforderlich.
(Sie können Indizes mithilfe eines offenen Einbettungsmodells erstellen. Ändern Sie dazu den Befehl, um die Option -m
wegzulassen. Dies wird jedoch nicht empfohlen, da OAI-Einbettungen derzeit am besten zu funktionieren scheinen.)
So laden Sie die Standardontologien:
make all
(dies kann einige Zeit dauern)
So laden Sie verschiedene Datenbanken:
make load-db-hpoa
make load-db-reactome
Sie können eine beliebige JSON-, Yaml- oder CSV-Datei laden:
curategpt view index -c my_foo foo.json
(Sie müssen dies in der Poesie-Shell tun)
So laden Sie ein GitHub-Repo mit Issues:
curategpt -v view index -c gh_uberon -m openai: --view github --init-with "{repo: obophenotype/uberon}"
Folgendes wird außerdem unterstützt:
Derzeit funktioniert dieses Tool am besten mit dem OpenAI gpt-4-Modell (für Unterrichtsaufgaben) und OpenAI ada-text-embedding-002
zum Einbetten.
CurateGPT basiert auf simonw/llm, das über eine Plugin-Architektur zur Verwendung alternativer Modelle verfügt. Theoretisch können Sie jedes dieser Plugins verwenden.
Darüber hinaus können Sie mit litellm einen OpenAI-emulierenden Proxy einrichten.
Der litellm
Proxy kann mit pip
als pip install litellm[proxy]
installiert werden.
Nehmen wir an, Sie möchten Mixtral lokal mit Ollama ausführen. Sie starten Ollama (möglicherweise müssen Sie zuerst ollama serve
ausführen):
ollama run mixtral
Starten Sie dann litellm:
litellm -m ollama/mixtral
Bearbeiten Sie als Nächstes Ihre extra-openai-models.yaml
wie in den LLM-Dokumenten beschrieben:
- model_name: ollama/mixtral
model_id: litellm-mixtral
api_base: "http://0.0.0.0:8000"
Sie können dies jetzt verwenden:
curategpt ask -m litellm-mixtral -c ont_cl "What neurotransmitter is released by the hippocampus?"
Seien Sie jedoch gewarnt, dass viele der Eingabeaufforderungen in curategpt für OpenAI-Modelle entwickelt wurden und bei anderen Modellen möglicherweise nicht optimale Ergebnisse liefern oder ganz fehlschlagen. Beispielsweise scheint ask
mit Mixtral recht gut zu funktionieren, complete
funktioniert jedoch schrecklich. Wir haben noch nicht untersucht, ob das Problem am Modell oder an unseren Eingabeaufforderungen oder am Gesamtansatz liegt.
Willkommen in der Welt der KI-Technik!
curategpt --help
Sie sehen verschiedene Befehle zum Arbeiten mit Indizes, zum Suchen, Extrahieren, Generieren usw.
Diese Funktionen sind im Allgemeinen über die Benutzeroberfläche verfügbar und die Dokumentation dieser Funktionen hat derzeit Priorität.
curategpt ask -c ont_cl "What neurotransmitter is released by the hippocampus?"
kann etwa Folgendes ergeben:
The hippocampus releases gamma-aminobutyric acid (GABA) as a neurotransmitter [1](#ref-1).
...
## 1
id: GammaAminobutyricAcidSecretion_neurotransmission
label: gamma-aminobutyric acid secretion, neurotransmission
definition: The regulated release of gamma-aminobutyric acid by a cell, in which the
gamma-aminobutyric acid acts as a neurotransmitter.
...
curategpt view ask -V pubmed "what neurons express VIP?"
curategpt ask -c gh_obi "what are some new term requests for electrophysiology terms?"
curategpt complete -c ont_cl "mesenchymal stem cell of the apical papilla"
Erträge
id : MesenchymalStemCellOfTheApicalPapilla
definition : A mesenchymal cell that is part of the apical papilla of a tooth and has
the ability to self-renew and differentiate into various cell types such as odontoblasts,
fibroblasts, and osteoblasts.
relationships :
- predicate : PartOf
target : ApicalPapilla
- predicate : subClassOf
target : MesenchymalCell
- predicate : subClassOf
target : StemCell
original_id : CL:0007045
label : mesenchymal stem cell of the apical papilla
Sie können alle Objekte in einer Sammlung vergleichen
curategpt all-by-all --threshold 0.80 -c ont_hp -X ont_mp --ids-only -t csv > ~/tmp/allxall.mp.hp.csv
Dies dauert 1-2 Sekunden, da es sich um einen Vergleich mit vorberechneten Vektoren handelt. Es meldet Top-Treffer oberhalb eines Schwellenwerts.
Die Ergebnisse können variieren. Möglicherweise möchten Sie verschiedene Texte für Einbettungen ausprobieren (der Standardwert ist das gesamte JSON-Objekt; bei Ontologien ist es eine Verkettung von Beschriftungen, Definitionen und Aliasen).
Probe:
HP:5200068,Socially innappropriate questioning,MP:0001361,social withdrawal,0.844015132437909
HP:5200069,Spinning,MP:0001411,spinning,0.9077306606290237
HP:5200071,Delayed Echolalia,MP:0013140,excessive vocalization,0.8153252835818089
HP:5200072,Immediate Echolalia,MP:0001410,head bobbing,0.8348177036912526
HP:5200073,Excessive cleaning,MP:0001412,excessive scratching,0.8699103725005582
HP:5200104,Abnormal play,MP:0020437,abnormal social play behavior,0.8984862078522344
HP:5200105,Reduced imaginative play skills,MP:0001402,decreased locomotor activity,0.85571629684631
HP:5200108,Nonfunctional or atypical use of objects in play,MP:0003908,decreased stereotypic behavior,0.8586700411012859
HP:5200129,Abnormal rituals,MP:0010698,abnormal impulsive behavior control,0.8727804272023427
HP:5200134,Jumping,MP:0001401,jumpy,0.9011393233129765
Beachten Sie, dass CurateGPT über eine separate Komponente zur Verwendung eines LLM zur Bewertung von Kandidatenübereinstimmungen verfügt (siehe auch https://arxiv.org/abs/2310.03666); Dies ist standardmäßig nicht aktiviert. Die Ausführung für eine gesamte Ontologie wäre teuer.