CurateGPT เป็นเว็บแอปพลิเคชันต้นแบบและเฟรมเวิร์กสำหรับการดำเนินการจัดการตามวัตถุประสงค์ทั่วไปที่มีการแนะนำโดย AI และการดำเนินการที่เกี่ยวข้องกับ การรวบรวมเหนือคอลเลก ชันของออบเจ็กต์
ดูเพิ่มเติมที่แอปบน curategpt.io (หมายเหตุ: บางครั้งอาจใช้งานไม่ได้ และอาจมีเพียงฟังก์ชันย่อยของแอปในเครื่องเท่านั้น)
CurateGPT พร้อมใช้งานบน Pypi และอาจติดตั้งด้วย pip
:
pip install curategpt
คุณจะต้องติดตั้ง Poetry ก่อน
จากนั้นโคลน repo นี้
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 มาพร้อมกับ wrappers สำหรับแหล่งข้อมูลภายในและระยะไกลที่มีอยู่ รวมถึงออนโทโลยี Makefile มีตัวอย่างวิธีการโหลดสิ่งเหล่านี้ คุณสามารถโหลดภววิทยาใด ๆ โดยใช้เป้าหมาย ont-
เช่น:
make ont-cl
สิ่งนี้จะโหลด CL (ผ่าน OAK) ลงในคอลเลกชันที่เรียกว่า ont_cl
โปรดทราบว่าตามค่าเริ่มต้น สิ่งนี้จะโหลดลงในชุดคอลเลกชันที่เก็บไว้ที่ stagedb
ในขณะที่แอปทำงานนอก db
คุณสามารถคัดลอกชุดคอลเลกชันไปยัง 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
(คุณจะต้องทำสิ่งนี้ในเปลือกบทกวี)
หากต้องการโหลด repo 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
จากนั้นเริ่มต้น 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
ทำได้แย่มาก เรายังไม่ได้ตรวจสอบว่าปัญหาอยู่ที่รูปแบบหรือคำแนะนำของเราหรือแนวทางโดยรวม
ยินดีต้อนรับสู่โลกแห่งวิศวกรรม AI!
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) สิ่งนี้ไม่ได้เปิดใช้งานตามค่าเริ่มต้น การดำเนินการนี้จะมีราคาแพงหากรันสำหรับ ontology ทั้งหมด