CurateGPT adalah prototipe aplikasi web dan kerangka kerja untuk melakukan kurasi tujuan umum yang dipandu AI dan operasi terkait kurasi pada kumpulan objek.
Lihat juga aplikasinya di curategpt.io (catatan: ini terkadang tidak aktif, dan mungkin hanya memiliki sebagian fungsi aplikasi lokal)
CurateGPT tersedia di Pypi dan dapat diinstal dengan pip
:
pip install curategpt
Pertama-tama Anda harus menginstal Puisi.
Kemudian kloning repo ini.
git clone https://github.com/monarch-initiative/curategpt.git
cd curategpt
dan instal dependensi:
poetry install
Untuk mendapatkan performa terbaik dari CurateGPT, kami menyarankan untuk mendapatkan kunci API OpenAI, dan mengaturnya:
export OPENAI_API_KEY=
(untuk anggota Monarch: tanyakan di Slack apakah Anda ingin menggunakan kunci grup)
CurateGPT juga akan bekerja dengan model bahasa besar lainnya - lihat "Memilih model" di bawah.
Anda awalnya memulai dengan database kosong. Anda dapat memuat apa pun yang Anda suka ke dalam database ini! JSON, YAML, atau CSV apa pun diterima. CurateGPT hadir dengan wrapper untuk beberapa sumber lokal dan jarak jauh yang ada, termasuk ontologi. Makefile berisi beberapa contoh cara memuatnya. Anda dapat memuat ontologi apa pun menggunakan target ont-
, misalnya:
make ont-cl
Ini memuat CL (melalui OAK) ke dalam koleksi yang disebut ont_cl
Perhatikan bahwa secara default ini dimuat ke dalam kumpulan koleksi yang disimpan di stagedb
, sedangkan aplikasi bekerja di luar db
. Anda dapat menyalin kumpulan koleksi ke db dengan:
cp -r stagedb/* db/
Anda kemudian dapat menjalankan aplikasi streamlit dengan:
make app
CurateGPT bergantung pada indeks basis data vektor dari basis data/ontologi yang ingin Anda kurasi.
Aplikasi andalannya adalah kurasi ontologi, jadi untuk membangun indeks ontologi OBO seperti CL:
make ont-cl
Ini memerlukan kunci OpenAI.
(Anda dapat membuat indeks menggunakan model penyematan terbuka, memodifikasi perintah untuk mengabaikan opsi -m
, tetapi hal ini tidak disarankan karena saat ini penyematan oai tampaknya berfungsi paling baik).
Untuk memuat ontologi default:
make all
(ini mungkin memerlukan waktu)
Untuk memuat database yang berbeda:
make load-db-hpoa
make load-db-reactome
Anda dapat memuat file json, yaml, atau csv sembarang:
curategpt view index -c my_foo foo.json
(Anda perlu melakukan ini di cangkang puisi)
Untuk memuat repo masalah GitHub:
curategpt -v view index -c gh_uberon -m openai: --view github --init-with "{repo: obophenotype/uberon}"
Berikut ini juga didukung:
Saat ini alat ini berfungsi paling baik dengan model OpenAI gpt-4 (untuk tugas instruksi) dan OpenAI ada-text-embedding-002
untuk penyematan.
CurateGPT berlapis di atas simonw/llm yang memiliki arsitektur plugin untuk menggunakan model alternatif. Secara teori Anda dapat menggunakan salah satu plugin ini.
Selain itu, Anda dapat mengatur proxy yang meniru openai menggunakan litellm.
Proksi litellm
dapat diinstal dengan pip
sebagai pip install litellm[proxy]
.
Katakanlah Anda ingin menjalankan mixtral secara lokal menggunakan ollama. Anda memulai ollama (Anda mungkin harus menjalankan ollama serve
terlebih dahulu):
ollama run mixtral
Kemudian mulai litelm:
litellm -m ollama/mixtral
Selanjutnya edit extra-openai-models.yaml
Anda seperti yang dirinci dalam dokumen llm:
- model_name: ollama/mixtral
model_id: litellm-mixtral
api_base: "http://0.0.0.0:8000"
Anda sekarang dapat menggunakan ini:
curategpt ask -m litellm-mixtral -c ont_cl "What neurotransmitter is released by the hippocampus?"
Namun berhati-hatilah karena banyak perintah di curategpt direkayasa untuk model openai, dan mungkin memberikan hasil yang kurang optimal atau gagal total pada model lain. Sebagai contoh, ask
tampaknya bekerja cukup baik dengan mixtral, tetapi complete
bekerja dengan buruk. Kami belum menyelidiki apakah masalahnya terletak pada model atau petunjuk kami atau pendekatan keseluruhannya.
Selamat datang di dunia teknik AI!
curategpt --help
Anda akan melihat berbagai perintah untuk bekerja dengan indeks, mencari, mengekstraksi, menghasilkan, dll.
Fungsi-fungsi ini umumnya tersedia melalui UI, dan prioritas saat ini adalah mendokumentasikannya.
curategpt ask -c ont_cl "What neurotransmitter is released by the hippocampus?"
mungkin menghasilkan sesuatu seperti:
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"
hasil
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
Anda dapat membandingkan semua objek dalam satu koleksi
curategpt all-by-all --threshold 0.80 -c ont_hp -X ont_mp --ids-only -t csv > ~/tmp/allxall.mp.hp.csv
Ini membutuhkan waktu 1-2 detik, karena melibatkan perbandingan vektor yang telah dihitung sebelumnya. Ini melaporkan hit teratas di atas ambang batas.
Hasil mungkin berbeda-beda. Anda mungkin ingin mencoba teks yang berbeda untuk penyematan (defaultnya adalah seluruh objek json; untuk ontologi, ini adalah rangkaian label, definisi, alias).
mencicipi:
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
Perhatikan bahwa CurateGPT memiliki komponen terpisah untuk menggunakan LLM guna mengevaluasi kecocokan kandidat (lihat juga https://arxiv.org/abs/2310.03666); ini tidak diaktifkan secara default, ini akan mahal untuk dijalankan secara keseluruhan ontologi.