[ blog · tutorial ]11 min read

เชื่อม ClinicalTrials.gov v2 + openFDA + ChEMBL เข้าเป็น endpoint สืบค้นข้อมูลยาที่สะอาดด้านลิขสิทธิ์

Sarah Choyเผยแพร่ 3 พฤษภาคม 2569อ่าน 11 นาที
เชื่อม ClinicalTrials.gov v2 + openFDA + ChEMBL เข้าเป็น endpoint สืบค้นข้อมูลยาที่สะอาดด้านลิขสิทธิ์

งาน R&D ยา สตาร์ทอัพด้าน AI การแพทย์ และทีมเฝ้าระวังความปลอดภัยของยา ต่างต้องการสิ่งเดียวกัน: endpoint เดียวที่ดึงข้อมูลการทดลอง ฉลาก เหตุการณ์ไม่พึงประสงค์ และฤทธิ์ทางชีวภาพ มาอย่างสะอาดด้านลิขสิทธิ์ นี่คือสถาปัตยกรรมที่ใช้งานได้จริง พร้อมกับดักที่เคยเล่นงานทีมงานในโปรดักชัน

สรุปสั้น

  • ClinicalTrials.gov v2 (REST + JSON) เข้ามาแทนที่ v1 รุ่นเก่าในปี 2024 — สคีมาสะอาดขึ้น แต่การแบ่งหน้า ฟิลด์ทางเลือก และการเลื่อนตามประวัติยังเล่นงานผู้ที่เพิ่งเริ่มเชื่อมต่อ
  • openFDA ครอบคลุมฉลากยา (SPL), รายงานเหตุการณ์ไม่พึงประสงค์ FAERS และข้อมูลการเรียกคืน โดยไม่มีค่าใช้จ่าย; จำกัดที่ 240 คำขอ/นาที เมื่อไม่ยืนยันตัวตน และ 120,000/วัน เมื่อใช้ key
  • ChEMBL ให้ข้อมูลฤทธิ์ทางชีวภาพ (IC50, Ki, Kd, EC50), เป้าหมาย และการทดสอบ — มิติเชิงโครงสร้าง / เชิงกลไก ที่ฐานข้อมูลอื่นขาดไป
  • ลิขสิทธิ์เชิงพาณิชย์ของ DrugBank คือกับดัก: การใช้เชิงวิชาการได้รับอนุญาต; แต่ผลิตภัณฑ์ใด ๆ แม้แต่ SaaS เล็ก ๆ ก็เข้าข่ายเงื่อนไขลิขสิทธิ์เชิงพาณิชย์ที่นักพัฒนาส่วนใหญ่ไม่อ่านจนกว่าจะได้รับหนังสือแจ้ง
  • API Pick Clinical Search ห่อ ClinicalTrials, openFDA, ChEMBL และเภสัชวิทยาของ DrugBank ไว้ใน endpoint POST เดียว — 30 เครดิตต่อการเรียก สะอาดด้านลิขสิทธิ์ คิดเงินเมื่อสำเร็จเท่านั้น

รูปร่างของปัญหา

ผู้ใช้สามกลุ่ม ด้วยเหตุผลที่ต่างกัน ต่างลงเอยด้วยความต้องการไปป์ไลน์ข้อมูลยาที่แทบจะเหมือนกัน:

  • ทีม R&D ยาชีวเภสัชและทีมนำยากลับมาใช้ใหม่ ต้องการข้อมูลฤทธิ์ทางชีวภาพ (ChEMBL), ประวัติการทดลอง (ClinicalTrials.gov) และสัญญาณเหตุการณ์ไม่พึงประสงค์ (FAERS) ที่เชื่อมโยงเข้าด้วยกันเพื่อประเมินตัวยาที่เป็นตัวเลือก
  • สตาร์ทอัพด้าน AI การแพทย์ ที่สร้างแชตบอตหรือชั้นสนับสนุนการตัดสินใจทางคลินิก ต้องการฉลากยา (SPL ของ openFDA) และข้อมูลการทดลองที่เชื่อมโยงกัน เพื่อยึดคำตอบของ LLM ไว้กับแหล่งข้อมูลกำกับดูแล
  • ทีมเฝ้าระวังความปลอดภัยของยา ต้องการ FAERS บวกกับฟิลด์ที่มีโครงสร้างของฉลากยา บวกกับข้อมูลกลไกจาก ChEMBL/DrugBank เพื่อประเมินความน่าเชื่อถือของสัญญาณ

ผู้ใช้แต่ละกลุ่มเหล่านี้ลงเอยด้วยการเชื่อมฐานข้อมูลสี่แหล่งเข้าด้วยกัน: ClinicalTrials.gov, openFDA, ChEMBL และ DrugBank แต่ละฐานข้อมูลมีสคีมา rate limit และเงื่อนไขลิขสิทธิ์ของตัวเอง DrugBank คือตัวที่กัด — ข้อกำหนดการใช้เชิงพาณิชย์ของมันเล่นงานทีมที่ผสานมันเข้าในช่วงพัฒนาโดยไม่อ่านลิขสิทธิ์ และการส่งหนังสือแจ้งไปยังผู้ก่อตั้ง SaaS รายเล็กเป็นเรื่องที่เกิดขึ้นจริง

นี่คือสถาปัตยกรรมที่เราแนะนำ รวมถึงเส้นทางทางเลือกที่สะอาดด้านลิขสิทธิ์ซึ่งเลี่ยงกับดัก DrugBank

แหล่งข้อมูลทั้งสี่ อย่างละหนึ่งย่อหน้า

ClinicalTrials.gov v2

US National Library of Medicine ทะเบียนอ้างอิงหลักสำหรับการทดลองทางคลินิกที่ลงทะเบียนในสหรัฐฯ และเป็นมาตรฐานสากลโดยพฤตินัย v2 เปิดตัวในปี 2024 — REST + JSON แทนที่ CSV/XML ของ v1 รุ่นเก่า ฟรี มี rate limit (10 คำขอ/วินาที) เอกสารอยู่ที่ clinicaltrials.gov/data-api/api จุดแข็ง: น่าเชื่อถือ ครอบคลุม ไม่มีปัญหาลิขสิทธิ์ จุดอ่อน: ฟิลด์ทางเลือกเบาบางในการศึกษาที่เก่ากว่า มีแรงเสียดทานในการย้ายสคีมาสำหรับทีมที่ยังใช้ v1

openFDA

API สาธารณะที่ดำเนินการโดย FDA ครอบคลุมฉลากยา (SPL — Structured Product Labels), FAERS (Adverse Event Reporting System), ข้อมูลการเรียกคืน และรายการเทียบเคียงสำหรับอาหาร/อุปกรณ์ ฟรี จำกัดที่ 240 คำขอ/นาที เมื่อไม่ยืนยันตัวตน และ 120,000 คำขอ/วัน เมื่อใช้ API key จุดแข็ง: แหล่งข้อมูลกำกับดูแลที่น่าเชื่อถือ ข้อมูลมีโครงสร้าง ครอบคลุมกว้าง จุดอ่อน: การแยกวิเคราะห์ SPL ต้องเข้าใจแบบแผนของ HL7; การกำจัดข้อมูลซ้ำของ FAERS เป็นปัญหาของผู้ใช้เอง

ChEMBL

EBI / EMBL-EBI ฐานข้อมูลฤทธิ์ทางชีวภาพที่ผ่านการคัดสรร — การวัด IC50, Ki, Kd, EC50 ทั่วสารประกอบ เป้าหมาย และการทดสอบ ฟรี REST + JSON ไม่มีความปวดหัวเรื่อง rate limit ที่ปริมาณปานกลาง จุดแข็ง: ข้อมูลเชิงโครงสร้างและเชิงกลไกที่ไม่มีแหล่งอื่นครอบคลุม จุดอ่อน: เน้นระดับงานวิจัย; การจับคู่เชิงการรักษา/เชิงคลินิกเป็นเพียงบางส่วน

DrugBank

มีจุดกำเนิดจาก University of Alberta ปัจจุบันเป็นเชิงพาณิชย์ การจับคู่ยา-เป้าหมาย เภสัชวิทยา อันตรกิริยาระหว่างยา และเภสัชพหุคูณ การใช้เชิงวิชาการฟรี; การใช้เชิงพาณิชย์ต้องมีลิขสิทธิ์แบบเสียเงิน ลิขสิทธิ์นี้ใช้กับผลิตภัณฑ์เชิงพาณิชย์ใด ๆ รวมถึงเครื่องมือ SaaS ฟรี — อ่านเงื่อนไขก่อนผสานเข้า

การค้นหาเชิงความหมายทั่ว ClinicalTrials.gov, ฉลากยา FDA, ฤทธิ์ทางชีวภาพของ ChEMBL และเมทาดาทาเภสัชวิทยาของ DrugBank ที่เราขอสิทธิ์ใช้งานมา JSON เข้า / JSON ออก 30 เครดิตต่อการเรียก (~$0.03) คิดเงินเมื่อสำเร็จเท่านั้น ผลลัพธ์สอดคล้องกับเงื่อนไขข้อมูลกำกับดูแลและเชิงโครงสร้าง; ไม่มีกับดักลิขสิทธิ์เชิงพาณิชย์สำหรับผู้ใช้ปลายทาง

เทียบกันแบบเคียงข้าง

ภาพรวม ณ เวลาที่เขียน ตรวจสอบ rate limit และเงื่อนไขลิขสิทธิ์ปัจจุบันก่อนการผสานเชิงพาณิชย์
ClinicalTrials.gov v2openFDAChEMBLDrugBankAPI Pick Clinical
ความครอบคลุมทะเบียนการทดลองฉลาก + FAERS + การเรียกคืนฤทธิ์ทางชีวภาพ เป้าหมาย การทดสอบยา + เป้าหมาย + อันตรกิริยาทั้งสี่ เชิงความหมาย
รูปแบบREST + JSONREST + JSONREST + JSONREST + JSON / SQL dumpJSON, ข้อความย่อที่จัดรูปไว้ล่วงหน้า
Rate limit10 คำขอ/วินาที240/นาที ไม่ยืนยันตัวตน, 120k/วัน เมื่อใช้ keyใจกว้างขึ้นอยู่กับระดับลิขสิทธิ์ต่อการเรียก (ไม่จำกัดต่อผู้ใช้)
ลิขสิทธิ์สาธารณสมบัติสาธารณสมบัติCC-BY-SAวิชาการฟรี / พาณิชย์เสียเงินAPI Pick TOS
เหมาะที่สุดกับโปรโตคอลการทดลอง แยกแยะผู้สนับสนุนฉลากกำกับดูแล สัญญาณ AEเชิงกลไก / เชิงโครงสร้างอันตรกิริยาระหว่างยา เภสัชพหุคูณการสืบค้นโดย AI agent เหนือทั้งหมด

โค้ดที่ใช้งานได้: แต่ละแหล่ง

ClinicalTrials.gov v2

import requests

# Trials for a specific condition + intervention
r = requests.get(
    "https://clinicaltrials.gov/api/v2/studies",
    params={
        "query.cond": "non-small cell lung cancer",
        "query.intr": "pembrolizumab",
        "filter.overallStatus": "RECRUITING",
        "pageSize": 25,
        "format": "json",
    },
)
studies = r.json()["studies"]
for s in studies[:3]:
    proto = s["protocolSection"]
    nct = proto["identificationModule"]["nctId"]
    title = proto["identificationModule"]["briefTitle"]
    sponsor = proto["sponsorCollaboratorsModule"]["leadSponsor"]["name"]
    print(f"{nct}: {title} (sponsor: {sponsor})")

openFDA: ฉลากยา + สัญญาณ FAERS

import requests
from collections import Counter

# Drug label lookup
r = requests.get(
    "https://api.fda.gov/drug/label.json",
    params={"search": "openfda.brand_name:Lipitor", "limit": 1},
).json()
label = r["results"][0]
print("Indications:", label.get("indications_and_usage", ["—"])[0][:200])

# FAERS — most reported adverse events for atorvastatin
r = requests.get(
    "https://api.fda.gov/drug/event.json",
    params={
        "search": 'patient.drug.medicinalproduct:"ATORVASTATIN CALCIUM"',
        "count": "patient.reaction.reactionmeddrapt.exact",
        "limit": 10,
    },
).json()
print("Top reported reactions:")
for r_ in r["results"]:
    print(f"  {r_['term']}: {r_['count']}")

ChEMBL: ฤทธิ์ทางชีวภาพของเป้าหมาย

import requests

# Target search → activity for a specific target
r = requests.get(
    "https://www.ebi.ac.uk/chembl/api/data/activity.json",
    params={
        "target_chembl_id": "CHEMBL204",      # PD-L1
        "standard_type": "IC50",
        "limit": 25,
    },
).json()
for a in r["activities"][:5]:
    cid = a["molecule_chembl_id"]
    val = a["standard_value"]
    unit = a["standard_units"]
    print(f"{cid}: IC50 = {val} {unit}")
import requests

r = requests.post(
    "https://www.apipick.com/api/search/clinical",
    headers={"x-api-key": "pk_yourkey"},
    json={"query": "PD-L1 inhibitors in NSCLC trials and adverse events"},
)
for hit in r.json()["results"][:5]:
    print(hit["title"], "→", hit["url"], f"(source: {hit.get('source')})")
# Returns ranked semantic matches across trials + labels + bioactivity.
# 30 credits per call, only on HTTP 200.

สามรูปแบบที่พบในโปรดักชัน

1. การคัดกรองเพื่อนำยากลับมาใช้ใหม่

เลือกยาที่ได้รับอนุมัติแล้ว ดึงกลไกของมัน (เป้าหมายจาก ChEMBL), ข้อบ่งใช้ปัจจุบัน (ฉลากจาก openFDA) และการทดลองใด ๆ ที่ทดสอบมันในข้อบ่งใช้ใหม่ (ClinicalTrials.gov) เทียบไขว้กับ FAERS เพื่อหาสัญญาณด้านความปลอดภัยในข้อบ่งใช้ใหม่ agent ประกอบทั้งสี่ชิ้นเข้าด้วยกันและดึงตัวเลือกที่ควรค่าแก่เวลาของเภสัชกรผู้เชี่ยวชาญขึ้นมา

2. การคัดแยกสัญญาณเฝ้าระวังความปลอดภัยของยา

cron รายชั่วโมงดึงรายงาน FAERS ใหม่สำหรับรายการยาที่เฝ้าติดตาม คำนวณ Reporting Odds Ratio เทียบกับส่วนที่เหลือของฐานข้อมูล ทำเครื่องหมายสัญญาณใด ๆ ที่ ROR > 2 โดยมี CI 95% ที่ไม่รวมค่า 1 จับคู่กับ ClinicalTrials.gov เพื่อตรวจว่าข้อบ่งใช้นั้นเป็นแบบตรงฉลาก (on-label) หรือนอกฉลาก (off-label) ผลลัพธ์: รายการที่จัดลำดับความสำคัญไว้สำหรับการตรวจทานยามเช้าของทีม — เทียบเคียงได้กับ รูปแบบสรุปข่าวยามเช้า สำหรับข่าวสาร

3. การยึดโยงผู้ช่วยการแพทย์ AI

สำหรับทุกคำตอบเกี่ยวกับยาที่ผู้ช่วยให้ไว้ ให้ดึงฉลาก openFDA และใช้เป็นความจริงพื้นฐานที่น่าเชื่อถือ อ้างอิงส่วนของฉลาก FDA อย่างชัดเจน ปฏิเสธที่จะตอบคำถามเกี่ยวกับขนาดยาเมื่อดึงฉลากไม่ได้ นี่คือรูปแบบการยึดโยงด้วยการอ้างอิงจาก บทความเรื่องคำพิพากษาของสหราชอาณาจักร นำมาปรับใช้กับการแพทย์ — โดยมีเดิมพันที่สูงยิ่งกว่า

กับดัก DrugBank

คุ้มค่าที่จะเน้นย้ำอีกครั้ง ลิขสิทธิ์เชิงวิชาการของ DrugBank เป็นที่รู้กันดี แต่เงื่อนไขจะเปลี่ยนไปในทันทีที่คุณเก็บเงินจากใครก็ตามสำหรับสิ่งใดก็ตามที่ใช้ข้อมูลนั้น — รวมถึงผลิตภัณฑ์ฟรีที่คุณตั้งใจจะเปลี่ยนผู้ใช้ให้กลายเป็นแบบเสียเงินในภายหลัง ผู้ก่อตั้ง SaaS รายเล็กหลายรายค้นพบเรื่องนี้อย่างเจ็บปวดหลังจากหนังสือแจ้งตกลงในกล่องจดหมายของพวกเขา

สองเส้นทางที่สะอาด:

  • จ่ายค่าลิขสิทธิ์เชิงพาณิชย์ ราคามาตรฐานไม่โปร่งใส; เตรียมตัวเจรจา สำหรับผลิตภัณฑ์ที่โตเต็มที่และมีเงินทุน นี่คือคำตอบที่ถูกต้อง เพราะข้อมูลอันตรกิริยาระหว่างยาของ DrugBank นั้นหาที่เทียบได้ยาก
  • ใช้ทางเลือกที่สะอาดด้านลิขสิทธิ์ในช่วงต้น ChEMBL ครอบคลุมข้อมูลเชิงกลไกส่วนใหญ่ RxNorm + DailyMed (NIH) ครอบคลุมการทำให้ชื่อยาเป็นมาตรฐานและฉลาก FAERS ครอบคลุมเหตุการณ์ไม่พึงประสงค์ การรวมกันนี้พลาดข้อมูลเฉพาะของ DrugBank บางส่วน (ตารางอันตรกิริยาที่ละเอียด เภสัชพหุคูณ) แต่ก็เพียงพอสำหรับผลิตภัณฑ์ช่วงต้นส่วนใหญ่ API Pick Clinical Search ห่อชุดย่อยที่สะอาดด้านลิขสิทธิ์ไว้ให้คุณ

จุดที่สิ่งนี้ขยายเป็นทั่วไป

รูปแบบ 'เชื่อมฐานข้อมูลสาธารณะสี่แหล่งเข้าด้วยกันพร้อมการจัดการ rate limit และวินัยด้านลิขสิทธิ์' ปรากฏในหลายอุตสาหกรรมที่ถูกกำกับดูแล — เอกสารยื่นทางการเงิน (SEC + บทถอดความผลประกอบการ + สถิติหุ้น), สิทธิบัตร (USPTO + EPO + WIPO + JPO + KIPO + CNIPA), กฎหมาย (Find Case Law + legislation.gov.uk + รายการเทียบเคียงในต่างประเทศ) เวอร์ชันข้อมูลยานั้นผิดปกติเป็นหลักเพราะฐานด้านลิขสิทธิ์เป็นที่ถกเถียงกันมากกว่า แกนอื่น ๆ ทุกแกน — ความหลากหลายของสคีมา rate limit การกำจัดข้อมูลซ้ำ การจับคู่ตัวระบุข้ามแหล่ง — ล้วนขยายเป็นทั่วไปได้

สำหรับการสืบค้นในการเรียกครั้งเดียวทั่วแหล่งข้อมูลยาที่สะอาดด้านลิขสิทธิ์ API Pick Clinical Search จัดการงานเชื่อมต่อให้ สำหรับการผสานที่ลึกกว่า (การแยกวิเคราะห์ SPL แบบเต็ม การคำนวณสัญญาณ FAERS ต้นไม้เป้าหมายของ ChEMBL) คุณยังคงต้องไปที่แต่ละแหล่งโดยตรง เลือกระดับการนามธรรมที่เหมาะสมสำหรับแต่ละส่วนของไปป์ไลน์

คำถามที่พบบ่อย

อะไรที่เปลี่ยนไปใน ClinicalTrials.gov v2 จนทำให้ไปป์ไลน์พัง?

สามอย่าง (1) โครงสร้าง endpoint — v2 เป็น REST + JSON แทนที่ CSV/XML ของ v1 (2) ชื่อฟิลด์ — ตัวห่อ protocolSection ใหม่ และการเปลี่ยนจาก snake_case เป็น camelCase คือการรีแฟกเตอร์ที่พบบ่อยที่สุด (3) การเติมข้อมูลฟิลด์ทางเลือก — หลายฟิลด์ที่ระบุว่า 'มีให้ใช้' กลับถูกเติมข้อมูลอย่างเบาบาง โดยเฉพาะการศึกษาที่เก่ากว่า การย้ายระบบมักใช้เวลา 2-3 วัน บวกกับอีกหนึ่งสัปดาห์ในการแก้บั๊กเมื่อการศึกษาแบบกรณีขอบเริ่มโผล่ขึ้นมา

เรื่องการอนุญาตใช้สิทธิของ DrugBank เป็นอย่างไร?

DrugBank ฟรีสำหรับการวิจัยเชิงวิชาการและส่วนบุคคล การใช้เชิงพาณิชย์ใด ๆ — รวมถึงผลิตภัณฑ์ SaaS ฟรี, MVP ของสตาร์ทอัพ หรือเครื่องมือที่ใช้ในงานที่ปรึกษาแบบมีค่าใช้จ่าย — ล้วนเข้าข่ายเงื่อนไขลิขสิทธิ์เชิงพาณิชย์ของ DrugBank โพสต์ของ Thinklab เรื่อง 'Sounding the alarm on DrugBank's new license' เมื่อไม่กี่ปีก่อน ยังคงเป็นบทวิเคราะห์หลักในเรื่องนี้ นักพัฒนาจำนวนมากผสาน DrugBank เข้าในช่วงพัฒนาโดยไม่ตระหนักว่าเมื่อไรที่พวกเขาปล่อยผลิตภัณฑ์ ลิขสิทธิ์ก็มีผลทันที อ่านเงื่อนไขก่อนผสานเข้า หรือเลือกใช้ทางเลือกที่สะอาดด้านลิขสิทธิ์

จะทำการตรวจจับสัญญาณเฝ้าระวังความปลอดภัยของยาเบื้องต้นได้อย่างไร?

ใช้มาตรวัดความไม่สมส่วนมาตรฐาน — Reporting Odds Ratio (ROR), Proportional Reporting Ratio (PRR), BCPNN แบบเบย์ — บนฐานข้อมูลเหตุการณ์ไม่พึงประสงค์ FAERS ไลบรารีโอเพนซอร์สอย่าง vigipy นำวิธีเหล่านี้ไปใช้ กับดักคือการกำจัดข้อมูลซ้ำของ FAERS: รายงานจำนวนมากเป็นการยื่นซ้ำของเคสเดียวกันจากหลายฝ่าย; ไลบรารีอย่าง VigiMatch ของ WHO จัดการเรื่องนี้ได้ แต่คุณต้องจ่ายเงิน สำหรับกรณีใช้งาน AI การแพทย์ส่วนใหญ่ endpoint FAERS ของ openFDA บวกกับการคำนวณ ROR อย่างง่าย ก็เพียงพอในการดึงสัญญาณที่ควรค่าแก่การตรวจสอบขึ้นมา

API Pick Clinical Search สอดคล้องกับ HIPAA หรือไม่?

แหล่งข้อมูลที่เราห่อไว้ (ClinicalTrials.gov, openFDA, ChEMBL, เมทาดาทาเภสัชวิทยาของ DrugBank) ไม่มีข้อมูลสุขภาพที่ได้รับการคุ้มครอง — ครอบคลุมโปรโตคอลการทดลอง ฉลากยา ข้อมูลรวมของเหตุการณ์ไม่พึงประสงค์ และข้อมูลเชิงโครงสร้าง/ฤทธิ์ทางชีวภาพ การปฏิบัติตาม HIPAA ใช้กับ PHI ซึ่งไม่ปรากฏในดัชนีของเรา หากคุณกำลังสร้างผลิตภัณฑ์ปลายน้ำที่จัดการ PHI จริง ๆ (เช่น การสนับสนุนการตัดสินใจทางคลินิกบนเวชระเบียนผู้ป่วย) คุณจะต้องจัดการส่วนนั้นแยกต่างหาก ข้อมูลที่ไหลผ่าน endpoint ของเราสอดคล้องกับข้อมูลกำกับดูแลสาธารณะ

ผลลัพธ์จากสิ่งนี้ใช้สำหรับการตัดสินใจทางคลินิกได้หรือไม่?

ไม่ได้ ผลลัพธ์จาก API สืบค้นใด ๆ เป็นเพียงข้อมูลประกอบ; ไม่ถือเป็นคำแนะนำทางการแพทย์หรือการสนับสนุนการตัดสินใจทางคลินิก ใช้ข้อมูลเพื่อสนับสนุนบุคลากรที่มีคุณสมบัติ — เภสัชกร แพทย์ ผู้เชี่ยวชาญด้านกำกับดูแล — ไม่ใช่เพื่อแทนที่พวกเขา ข้อนี้ใช้กับ API Pick Clinical Search และกับ API อื่น ๆ ในแวดวงนี้

API ที่ใช้ในบทความนี้

Sarah Choy
เขียนโดย
Sarah Choy
CEO, API Pick

Sarah Choy เป็น CEO ของ API Pick เธอเขียนเกี่ยวกับการสร้าง API พร้อมใช้งานจริงสำหรับ AI agent และเวิร์กโฟลว์ LLM