CurateGPT 是一個原型 Web 應用程式和框架,用於對物件集合執行通用人工智慧引導的管理和管理相關操作。
另請參閱 curategpt.io 上的應用程式(注意:該應用程式有時會關閉,並且可能僅具有本機應用程式功能的子集)
CurateGPT 可在 Pypi 上使用,並且可以透過pip
安裝:
pip install curategpt
您首先需要安裝 Poetry。
然後克隆這個儲存庫。
git clone https://github.com/monarch-initiative/curategpt.git
cd curategpt
並安裝相依性:
poetry install
為了從 CurateGPT 獲得最佳效能,我們建議取得 OpenAI API 金鑰並進行設定:
export OPENAI_API_KEY=
(對於 Monarch 成員:如果您想使用群組金鑰,請在 Slack 上詢問)
CurateGPT 也可以與其他大型語言模型搭配使用 - 請參閱下方的「選擇模型」。
您最初從一個空資料庫開始。您可以將任何您喜歡的內容載入到該資料庫中!接受任何 JSON、YAML 或 CSV。 CurateGPT 附帶了一些現有本地和遠端來源(包括本體)的包裝器。 Makefile 包含一些如何載入它們的範例。您可以使用ont-
目標載入任何本體,例如:
make ont-cl
這會將 CL(透過 OAK)載入到名為ont_cl
的集合中
請注意,預設情況下,這會載入到儲存在stagedb
集合集中,而應用程式則會在db
上執行。您可以使用以下命令將集合集複製到資料庫:
cp -r stagedb/* db/
然後,您可以使用以下命令執行 Streamlit 應用程式:
make app
CurateGPT 取決於您想要管理的資料庫/本體的向量資料庫索引。
旗艦應用是本體管理,因此要為像 CL 這樣的 OBO 本體建立索引:
make ont-cl
這需要 OpenAI 金鑰。
(您可以使用開放嵌入模型建立索引,修改命令以去除-m
選項,但不建議這樣做,因為目前 oai 嵌入似乎效果最好)。
載入預設本體:
make all
(這可能需要一些時間)
載入不同的資料庫:
make load-db-hpoa
make load-db-reactome
您可以載入任意 json、yaml 或 csv 檔案:
curategpt view index -c my_foo foo.json
(您需要在詩歌外殼中執行此操作)
要載入問題的 GitHub 儲存庫:
curategpt -v view index -c gh_uberon -m openai: --view github --init-with "{repo: obophenotype/uberon}"
也支援以下內容:
目前,該工具最適合與 OpenAI gpt-4 模型(用於指令任務)和用於嵌入的 OpenAI ada-text-embedding-002
配合使用。
CurateGPT 位於 simonw/llm 之上,它具有用於使用替代模型的插件架構。理論上您可以使用這些插件中的任何一個。
此外,您可以使用 litellm 設定 openai 模擬代理。
litellm
代理程式可以透過pip
安裝pip install litellm[proxy]
。
假設您想使用 ollama 在本機上執行 mixtral。您啟動 ollama(您可能必須先執行ollama serve
):
ollama run mixtral
然後啟動litelm:
litellm -m ollama/mixtral
接下來編輯extra-openai-models.yaml
如 llm 文件中所述:
- model_name: ollama/mixtral
model_id: litellm-mixtral
api_base: "http://0.0.0.0:8000"
您現在可以使用這個:
curategpt ask -m litellm-mixtral -c ont_cl "What neurotransmitter is released by the hippocampus?"
但請注意,curategpt 中的許多提示都是針對 openai 模型設計的,它們可能會給出次優結果,或者在其他模型上完全失敗。舉個例子, ask
似乎與 mixtral 配合得很好,但complete
配合下效果卻很糟糕。我們尚未調查問題是否出在模型、我們的提示或整體方法。
歡迎來到人工智慧工程的世界!
curategpt --help
您將看到用於處理索引、搜尋、提取、生成等的各種命令。
這些功能通常可以透過 UI 來使用,目前的首要任務是記錄這些功能。
curategpt ask -c ont_cl "What neurotransmitter is released by the hippocampus?"
可能會產生類似的結果:
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"
產量
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
您可以比較一個集合中的所有對象
curategpt all-by-all --threshold 0.80 -c ont_hp -X ont_mp --ids-only -t csv > ~/tmp/allxall.mp.hp.csv
這需要 1-2 秒,因為它涉及預先計算的向量的比較。它報告高於閾值的熱門點擊。
結果可能會有所不同。您可能想要嘗試不同的嵌入文字(預設是整個 json 物件;對於本體來說,它是標籤、定義、別名的串聯)。
樣本:
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
請注意,CurateGPT 有一個單獨的組件,用於使用 LLM 來評估候選匹配(另請參閱 https://arxiv.org/abs/2310.03666);預設不啟用此功能,對於整個本體來說運行起來會很昂貴。