CurateGPT — это прототип веб-приложения и платформы для выполнения общего назначения под управлением искусственного интеллекта и связанных с курированием операций над коллекциями объектов.
См. также приложение на 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 зависит от векторных индексов баз данных/онтологий, которые вы хотите курировать.
Флагманским приложением является курирование онтологии, поэтому для создания индекса для онтологии OBO, такой как CL:
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, который имеет архитектуру плагинов для использования альтернативных моделей. Теоретически вы можете использовать любой из этих плагинов.
Кроме того, вы можете настроить прокси-сервер, эмулирующий openai, с помощью Litellm.
Прокси-сервер litellm
можно установить с помощью pip
: pip install litellm[proxy]
.
Допустим, вы хотите запустить mixtral локально, используя ollama. Вы запускаете ollama (возможно, вам придется сначала запустить ollama serve
):
ollama run mixtral
Затем запустите litellm:
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
Вы увидите различные команды для работы с индексами, поиска, извлечения, генерации и т. д.
Эти функции обычно доступны через пользовательский интерфейс, и в настоящее время приоритетом является их документирование.
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); по умолчанию это не включено, его запуск для всей онтологии будет дорогостоящим.