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);默认情况下不启用此功能,对于整个本体来说运行起来会很昂贵。