Contact
Line : comsiam
Contact
Line : comsiam

Google Gemini สามารถช่วยสร้าง API Documentation จาก Source Code, Route, Controller, Schema, Example Request หรือ API Specification ที่มีอยู่ได้ ตั้งแต่เอกสาร Endpoint แบบง่ายไปจนถึง Documentation ที่ประกอบด้วย Authentication, Parameters, Request Body, Response Schema, Error Code และตัวอย่างการเรียก API
หากโปรเจกต์มีหลายไฟล์ สามารถนำ Code Folder หรือ GitHub Repository เข้า Gemini เพื่อช่วยให้ AI เข้าใจภาพรวมของ Codebase ก่อนสร้าง Documentation ได้ แต่ควรมองเอกสารที่ Gemini สร้างเป็น Draft ที่ต้องตรวจเทียบกับ Source Code และ Runtime จริง ไม่ใช่เอกสารที่ถูกต้องอัตโนมัติ 100%
Workflow ที่เหมาะคือ อ่าน Code → หา Endpoint → ตรวจ Request/Response → สร้าง API Inventory → เขียน Documentation → ตรวจ Code จริง → ทดสอบ API → Publish
API Documentation คือเอกสารที่อธิบายวิธีใช้งาน API ให้ Developer คนอื่นเข้าใจว่า
ตัวอย่าง API
GET /api/products
Documentation ที่ดีไม่ควรบอกเพียงชื่อ Endpoint
แต่ควรตอบได้ว่า
ใช้ทำอะไร
ใครเรียกได้
ส่งอะไร
ได้อะไรกลับมา
ผิดพลาดแบบไหน
Gemini สามารถช่วยงาน Documentation ได้หลายรูปแบบ เช่น
เหมาะทั้งสำหรับสร้างเอกสารใหม่และปรับเอกสารเก่าที่ไม่ตรงกับ Code ปัจจุบัน
คำสั่งนี้กว้างเกินไป
Gemini อาจต้องเดา
หาก Context ไม่พอ AI อาจสร้างรายละเอียดที่ดูสมจริงแต่ไม่มีอยู่ในระบบ
Prompt ที่ดีกว่าคือ
“อ่าน Codebase นี้และสร้าง API Inventory ก่อน โดยยังไม่เขียน Documentation และห้ามสร้าง Endpoint ที่หาไม่พบใน Code”
เมื่อ Inventory ถูกต้องแล้วค่อยสร้างเอกสาร
API Inventory คือรายการ Endpoint ทั้งหมดที่พบ
ตัวอย่าง
| Method | Path | Purpose | Auth |
|---|---|---|---|
| GET | /api/products | รายการสินค้า | No |
| GET | /api/products/{id} | รายละเอียดสินค้า | No |
| POST | /api/products | เพิ่มสินค้า | Admin |
| PUT | /api/products/{id} | แก้สินค้า | Admin |
| DELETE | /api/products/{id} | ลบสินค้า | Admin |
Prompt
“อ่าน Route และ Controller ทั้งหมดแล้วสร้าง API Inventory โดยแสดง Method, Path, Handler, Authentication และ File ที่เกี่ยวข้อง ห้ามเดา Endpoint”
ขั้นตอนนี้ทำให้ตรวจได้ก่อนว่า Gemini อ่าน Code ถูกหรือไม่
หาก API Project อยู่ในเครื่องและมีหลายไฟล์ การส่ง Function แยกทีละไฟล์อาจทำให้ AI ไม่เห็นภาพรวม
สามารถใช้ Code Folder เป็น Context แล้วถาม
“อ่าน Code Folder นี้ก่อนและหา:
ยังไม่สร้าง Documentation”
จากนั้นจึงสร้าง API Map
วิธีนี้เหมาะกับ Project เช่น
src/
├── routes/
├── controllers/
├── services/
├── models/
├── middleware/
└── utils/
Gemini Web App รองรับการ Import GitHub Repository เพื่อถามเกี่ยวกับ Codebase
สามารถใช้ Workflow
GitHub Repository
↓
Gemini
↓
อ่าน Codebase
↓
API Inventory
↓
Documentation Draft
Prompt ตัวอย่าง
“อ่าน Repository นี้และค้นหา API Route ทั้งหมด
ยังไม่สร้าง Documentation
ให้แสดง:
เมื่อรายการถูกต้องค่อยสั่ง
“สร้าง Documentation จาก Inventory นี้”
เรื่องนี้สำคัญมากสำหรับ Documentation
ถ้า Import Repository วันนี้ แล้ว Developer Push Endpoint ใหม่เข้า GitHub ภายหลัง Context เดิมของ Geminiจะไม่ได้รับ Code ใหม่โดยอัตโนมัติ
จึงอาจเกิด
Code ล่าสุด
≠
Documentation ที่ Gemini สร้างจาก Snapshot เก่า
ก่อน Generate Documentation ใหม่ควรตรวจว่า Code ที่ Gemini อ่านเป็น Version ที่ต้องการจริง
สามารถใช้ Prompt นี้ได้
“ช่วยสร้าง API Documentation จาก Source Code ที่ให้มา
ขั้นตอน:
สำหรับแต่ละ Endpoint ให้มี:
กฎ:
Prompt แบบนี้ลด Hallucination ได้มากกว่าการขอ Documentation ทันที
Documentation หลักควรมีหลายส่วน
API นี้ใช้ทำอะไร
Endpoint เริ่มต้นจากที่ใด
ยืนยันตัวตนอย่างไร
รายการ API
ส่งข้อมูลอะไร
ได้ข้อมูลแบบไหน
เกิด Error อะไรได้บ้าง
มีข้อจำกัด Request หรือไม่
แบ่งหน้าข้อมูลอย่างไร
ตัวอย่างใช้งาน
API Version
สิ่งที่เปลี่ยน
ไม่ใช่ API ทุกระบบต้องมีทุกหัวข้อ แต่ควรเลือกตาม Feature จริง
ตัวอย่าง
Products API ใช้สำหรับอ่านและจัดการข้อมูลสินค้าในระบบ
Public Endpoint สามารถอ่านข้อมูลสินค้าได้
Endpoint ที่สร้าง แก้ไข หรือลบสินค้าต้องใช้สิทธิ์ Admin
Overview ควรช่วย Developer เข้าใจ API ภายในไม่กี่วินาที
ไม่ควรเริ่มด้วยประวัติโครงการยาวหลายย่อหน้า
ตัวอย่าง
https://api.example.com/v1
หาก Source Code ไม่ยืนยัน Domain จริง อย่าให้ Gemini สร้าง Domain สมมติแล้วเขียนเหมือนเป็น Production URL
ควรใช้ Placeholder ชัดเจน เช่น
https://YOUR_API_HOST/v1
หรือระบุ Environment
Production: [กำหนดจากระบบจริง]
Staging: [กำหนดจากระบบจริง]
Prompt
“หากหา Base URL จริงไม่พบ ให้ใช้ Placeholder และระบุว่า Developer ต้องเติมค่าเอง”
API อาจใช้
Documentation ควรบอก
ตัวอย่างรูปแบบทั่วไป
Authorization: Bearer YOUR_ACCESS_TOKEN
ตัวอย่างต้องใช้ Placeholder เช่น
YOUR_ACCESS_TOKEN
ไม่ใช่ Credential จาก Production
API บาง Endpoint ต้องเพียง Login
บาง Endpoint ต้องเป็น Admin
ดังนั้น Documentation ควรมี
Authentication: Required
Permission: Admin
ไม่ใช่เขียนเพียง
Requires authentication
แล้วปล่อยให้ Developer เดาสิทธิ์
ตัวอย่าง Endpoint
GET /api/products/{id}
id คือ Path Parameter
Documentation ควรระบุ
| Parameter | Type | Required | Description |
|---|---|---|---|
| id | integer | Yes | รหัสสินค้า |
ตัวอย่าง Request
GET /api/products/123
Gemini สามารถสร้างตารางได้ แต่ Type ต้องตรวจจาก Route Validation, Schema หรือ Database Model จริง
ตัวอย่าง
GET /api/products?page=2&limit=20
Documentation ควรบอก
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| page | integer | No | 1 | หน้าที่ต้องการ |
| limit | integer | No | 20 | จำนวนรายการต่อหน้า |
อย่าให้ Gemini เดา Default
ต้องดูจาก Code
เช่น
const page = Number(req.query.page ?? 1);
จึงยืนยัน Default ได้ว่า 1
ตัวอย่าง API เพิ่มสินค้า
POST /api/products
Request
{
"name": "Wi-Fi Router",
"price": 2500,
"stock": 10
}
Documentation ควรแยก
เช่น
| Field | Type | Required | Description |
|---|---|---|---|
| name | string | Yes | ชื่อสินค้า |
| price | number | Yes | ราคาสินค้า |
| stock | integer | Yes | จำนวนสินค้า |
หาก Code มี Validation เช่น
price > 0
ควรระบุด้วย
สมมติ Schema มีเพียง
name: string
อย่าให้ Gemini เขียนว่า
Maximum length: 100 characters
ถ้าไม่มีหลักฐานใน Code
Prompt ที่ดีคือ
“แสดงเฉพาะ Validation ที่ยืนยันได้จาก Schema หรือ Validation Code”
หากไม่มีให้เขียน
Maximum length: Not specified
ดีกว่าการเดา
ตัวอย่าง
{
"id": 123,
"name": "Wi-Fi Router",
"price": 2500,
"stock": 10
}
Documentation ควรอธิบาย Response Field เช่น
| Field | Type | Description |
|---|---|---|
| id | integer | รหัสสินค้า |
| name | string | ชื่อสินค้า |
| price | number | ราคาสินค้า |
| stock | integer | จำนวนคงเหลือ |
ถ้ามี Wrapper
{
"data": {
"id": 123
}
}
ต้อง Document ตาม Response จริง ไม่ควรย่อให้ดูสวยแต่ผิด Contract
Documentation ที่มีแต่ Success Response ยังไม่พอ
ควรอธิบาย Error เช่น
400 Bad Request
401 Unauthorized
403 Forbidden
404 Not Found
409 Conflict
422 Validation Error
500 Internal Server Error
แต่ Error Code ที่ใช้จริงต้องตรวจจาก Application
อย่าใส่ทุก HTTP Status ที่รู้จักลงไปโดยไม่มีหลักฐาน
สมมติระบบตอบ
{
"error": {
"code": "PRODUCT_NOT_FOUND",
"message": "Product not found"
}
}
Documentation ควรเก็บ Structure นี้ไว้
ไม่ควรเปลี่ยนเป็น
{
"message": "Not found"
}
เพียงเพื่อให้ตัวอย่างสั้น
API Documentation ต้องสะท้อน Contract จริง
หลาย Framework มี Error Handler กลาง
เช่น
Route
↓
Controller
↓
Service
↓
Error
↓
Global Error Handler
ถ้า Gemini อ่านเพียง Controller อาจพลาด Response Error จริง
Prompt
“ค้นหา Global Error Handler ก่อนสร้าง Error Documentation และตรวจว่า Exception ถูกแปลงเป็น HTTP Status อย่างไร”
นี่เป็นขั้นตอนสำคัญมาก
API รายการข้อมูลมักมี Pagination
ตัวอย่าง Response
{
"data": [],
"pagination": {
"page": 1,
"limit": 20,
"total": 250
}
}
Documentation ต้องอธิบาย
pagelimittotalอย่าให้ Gemini สมมติ Maximum เช่น 100 ถ้า Code ไม่ได้กำหนด
ตัวอย่าง
GET /api/products?sort=price&order=desc
Documentation ควรบอกค่า Allowed
เช่น
sort:
name
price
created_at
ถ้า Backend ใช้ Allowlist
แต่หากไม่พบ Allowlist ควร Review Security เพิ่ม เพราะ Dynamic Sort Field สามารถสร้างปัญหาได้ตาม Implementation
ตัวอย่าง
GET /api/products?category=router&min_price=1000
Gemini สามารถช่วยสร้าง Filter Table จาก Query Parsing Code
Prompt
“ค้นหา Query Parameter ที่ถูกอ่านจาก Request จริง แล้วสร้าง Filter Documentation จาก Code เท่านั้น”
ช่วยป้องกันการสร้าง Filter ที่ API ไม่มี
ถ้า API รับ Date ควรระบุ Format เช่นตาม Contract ของระบบ
ตัวอย่าง
2026-09-02
หรือ Date-Time
2026-09-02T10:30:00Z
ต้องดูว่า API ใช้
อย่างไรจริง
อย่าปล่อยให้ Gemini เปลี่ยน Date Format เอง
ตัวอย่าง Status
pending
processing
completed
cancelled
Documentation ควรระบุ Allowed Value ชัด
เช่น
{
"status": "completed"
}
Prompt
“ค้นหา Enum หรือ Allowlist ทั้งหมดที่ใช้ใน Request แล้ว Document Allowed Values”
ช่วยลด Error ของ Developer ที่เรียก API
Field อาจเป็น
ไม่ส่งก็ได้
ส่งได้แต่ค่าเป็น null
ตัวอย่าง
{
"middle_name": null
}
Documentation ควรแยกสองแนวคิดนี้หาก API Contract มีความแตกต่าง
Gemini อาจรวมสองอย่างเข้าด้วยกันหากไม่สั่งตรวจ Schema ให้ละเอียด
ตัวอย่าง
{
"customer": {
"id": 10,
"name": "Somchai"
}
}
Documentation ไม่ควรบอกเพียง
customer: object
ถ้า Developer ต้องใช้ Field ภายใน
ควร Document Nested Schema ต่อ
ตัวอย่าง
{
"data": [
{
"id": 1,
"name": "Router"
},
{
"id": 2,
"name": "Switch"
}
]
}
ควรอธิบายว่า
data = array of Product
และ Product มี Field อะไร
Gemini สามารถช่วยสร้าง Reusable Schema เพื่อลดเอกสารซ้ำ
ถ้า Product ปรากฏ 20 Endpoint ไม่จำเป็นต้องอธิบาย Field ใหม่ทุก Endpoint
สามารถกำหนด Schema กลาง
Product
- id
- name
- price
- stock
แล้ว Endpoint อ้าง Schema นี้
แนวคิดนี้ใช้ได้ทั้ง Documentation ธรรมดาและ OpenAPI
ได้ สามารถให้ Geminiช่วย Draft OpenAPI Specification จาก Source Code หรือ API Inventory ได้
ตัวอย่าง Prompt
“จาก API Inventory ที่ยืนยันแล้ว สร้าง OpenAPI 3.x Specification
กฎ:
นี่เป็นวิธีที่ปลอดภัยกว่าขอ OpenAPI จาก Source Code โดยตรงในครั้งเดียว
ตัวอย่างโครงสร้าง
openapi: 3.0.0
info:
title: Products API
version: 1.0.0
paths:
/products:
get:
summary: List products
responses:
"200":
description: Successful response
นี่เป็นเพียงตัวอย่างโครงสร้าง
สำหรับ Project จริงควรใช้ OpenAPI Version และ Style ที่ Project กำหนดอยู่แล้ว
ถ้ามี Specification เดิม อย่าเปลี่ยน Version เองเพียงเพราะ Gemini แนะนำ
ปัญหาที่อาจพบ เช่น
$ref ผิดดังนั้นหลัง Generate ควรใช้ OpenAPI Validator หรือ Toolchain ของ Project ตรวจอีกครั้ง
Documentation บอกว่า API ตอบ
{
"id": 1,
"name": "Router"
}
แต่ API จริงอาจตอบ
{
"product_id": 1,
"product_name": "Router"
}
นี่คือ Documentation Drift
Contract Test สามารถช่วยตรวจว่า API Behavior ยังตรงกับ Contract ที่ประกาศไว้หรือไม่
Gemini สามารถช่วยสร้าง Draft Test ได้ แต่ Test ต้อง Run กับระบบจริง
เกิดเมื่อ
Code เปลี่ยน
แต่ Documentation ไม่เปลี่ยน
ตัวอย่าง
เดิม
limit default = 20
Developer เปลี่ยนเป็น
limit default = 50
แต่ Documentation ยังเขียน 20
นี่ทำให้ Developer ที่ใช้ API เข้าใจผิด
สามารถส่ง
แล้วถาม
“เปรียบเทียบ API Documentation กับ Code ปัจจุบัน แล้วแสดงเฉพาะจุดที่ไม่ตรงกัน
แบ่งเป็น:
วิธีนี้เหมาะมากกับ Project ที่ Documentation ไม่ได้ Update มานาน
เนื่องจาก Repository ที่นำเข้า Gemini ไม่ Sync อัตโนมัติ หากต้องการตรวจ Documentation Drift หลัง Code ถูก Update ควรตรวจว่า Gemini ได้ Context Version ใหม่ก่อน
ไม่เช่นนั้นอาจกลายเป็นการเปรียบเทียบ
Documentation ใหม่
กับ
Code Snapshot เก่า
ซึ่งทำให้ผล Review ผิดได้
สมมติ API
POST /api/products
ตัวอย่าง
POST /api/products
Content-Type: application/json
Authorization: Bearer YOUR_ACCESS_TOKEN
Body
{
"name": "Wi-Fi Router",
"price": 2500,
"stock": 10
}
ตัวอย่างควร
Prompt
“สร้าง cURL Example จาก Endpoint นี้โดยใช้ Placeholder Credential และห้ามใช้ข้อมูลจริง”
ตัวอย่าง
curl -X GET \
"https://YOUR_API_HOST/api/products" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN"
cURL เหมาะกับ Documentation เพราะ Developer สามารถเข้าใจ HTTP Request ได้ค่อนข้างตรง
สามารถให้ Gemini สร้าง SDK-like Example
เช่น
import requests
response = requests.get(
"https://YOUR_API_HOST/api/products",
headers={
"Authorization": "Bearer YOUR_ACCESS_TOKEN",
},
timeout=10,
)
response.raise_for_status()
print(response.json())
แต่ไม่จำเป็นต้องมีตัวอย่างทุกภาษา
ควรเลือกตามกลุ่มผู้ใช้ API จริง
ตัวอย่าง
const response = await fetch(
"https://YOUR_API_HOST/api/products",
{
headers: {
Authorization: "Bearer YOUR_ACCESS_TOKEN",
},
}
);
if (!response.ok) {
throw new Error(`Request failed: ${response.status}`);
}
const data = await response.json();
ควรบอกด้วยว่าตัวอย่างนี้สำหรับ Environment ใด
เพราะ Secret Management ต่างกัน
Documentation อาจถูก
ดังนั้น Credential ตัวอย่างต้องใช้
YOUR_API_KEY
YOUR_ACCESS_TOKEN
CLIENT_ID
CLIENT_SECRET
แทนค่าจริง
หาก Secret จริงเคยถูกใส่ใน Docs ควรพิจารณา Rotate Credential ด้วย
ก่อน Publish Documentation ต้องตรวจว่า Endpoint ใดเป็น
อย่าให้ Gemini รวมทุก Route แล้ว Publish เป็น Public Documentation โดยอัตโนมัติ
Prompt
“แยก Endpoint เป็น Public, Authenticated, Admin และ Internal ก่อนสร้าง Documentation สำหรับภายนอก”
API Documentation ต้องเพียงพอให้ใช้งาน
แต่ไม่ควรเปิดเผย
การสร้าง Docs จาก Repository ควรมี Human Review ก่อน Publish เสมอ
ตัวอย่าง API มี Field
{
"include_deleted": true
}
ทั้งที่ Code ไม่มี Field นี้
นี่คือ Hallucination ที่อันตรายกับ Documentation
วิธีป้องกันคือ Prompt
“ทุก Parameter และ Field ต้องมีหลักฐานจาก Route, Schema, Type หรือ Validation Code ถ้าไม่มีห้ามเพิ่ม”
API Documentation ที่แม่นควรตรวจหลาย Layer
Route
↓
Middleware
↓
Controller
↓
Validation Schema
↓
Service
↓
Model
↓
Response Serializer
ถ้าอ่านเพียง Route จะรู้เพียง Method และ Path
ถ้าอ่าน Controller อย่างเดียวอาจไม่รู้ Validation
ถ้าอ่าน Model อย่างเดียวอาจไม่รู้ Response Serializer
ดังนั้น API Docs ที่แม่นต้อง Trace Flow
ตัวอย่าง
POST /admin/products
↓
authenticate()
↓
requireAdmin()
↓
controller
Documentation ต้องเขียน
Authentication: Required
Role: Admin
หาก Gemini ไม่อ่าน Middleware อาจเขียน Permission ผิด
Database Model อาจมี
password_hash
internal_note
created_by
แต่ API Serializer ไม่ส่ง Field เหล่านั้นกลับ
หาก Gemini สร้าง Response Schema จาก Database Model โดยตรง อาจทำ Documentation ผิดและอาจเปิดเผย Field ภายใน
ต้องตรวจ Response Serialization จริง
ถ้าระบบมี Rate Limit ควรอธิบาย
แต่ห้ามเดาตัวเลข
หาก Code ไม่ระบุชัด ให้เขียน
Rate limit: Check deployment configuration
แทนการสร้างเลขสมมติ
API บางประเภทใช้เวลานาน
เช่น
ควรบอกว่า API
อย่างไร
Gemini สามารถ Trace Job Queue หรือ Status Endpoint เพื่อช่วยสร้าง Flow Documentation ได้
หากระบบมี Webhook ควร Document
Prompt
“ค้นหา Webhook Handler และสร้าง Event Documentation จาก Code โดยตรวจ Signature Verification และ Retry Behavior”
Webhook ควรคิดเรื่อง Idempotency ด้วย เพราะ Event อาจถูกส่งซ้ำตามระบบ
ระบบอาจใช้
/v1/products
/v2/products
หรือ Version ผ่าน Header
Documentation ต้องระบุ Strategy จริง
อย่าให้ Gemini เพิ่ม /v1 เพียงเพราะเป็นรูปแบบที่นิยม
ถ้า Source ไม่มี Version ควร Document ตามความจริง
API Changelog อาจระบุ
Added
Changed
Deprecated
Removed
Fixed
ตัวอย่าง
Added:
GET /api/products/{id}
Changed:
limit default from 20 to 50
Deprecated:
legacy product search
Gemini สามารถช่วยสรุป Diff ระหว่าง API Version ได้ หากมี Code หรือ Specification สอง Version ให้เทียบ
การ Import GitHub Repository ใน Gemini ไม่ได้ให้ความสามารถอ่าน Commit History, Pull Request หรือ Metadata ในลักษณะเดียวกับ Git Tool เต็มรูปแบบ
ดังนั้นอย่าสั่ง
“สร้าง Changelog จาก Commit History”
หาก Gemini ไม่มีข้อมูล Commit จริง
ควรให้
เป็น Context แทน
README มักเน้น
API Documentation เน้น
ทั้งสองสามารถเชื่อมกันได้ แต่ไม่ควรยัด Endpoint หลายร้อยรายการไว้ใน README จนอ่านยาก
Developer ควรสามารถเรียก API แรกได้เร็ว
ตัวอย่าง Flow
รับ Credential
↓
ตั้ง Base URL
↓
เรียก Health Endpoint
↓
เรียก Endpoint แรก
↓
อ่าน Response
Prompt
“สร้าง Getting Started ที่ช่วย Developer ส่ง Request แรกได้ภายในไม่กี่ขั้น โดยใช้เฉพาะ Endpoint ที่มีอยู่จริง”
นอกจาก Reference Documentation สามารถสร้าง Tutorial
เช่น
“วิธีสร้าง Product ด้วย API”
ขั้นตอน
Tutorial อธิบาย Workflow
ส่วน Reference Documentation อธิบาย Contract
ควรมีทั้งสองแบบเมื่อ API มีความซับซ้อน
ตอบ
Endpoint นี้รับอะไร
ตอบ
จะใช้หลาย Endpoint ร่วมกันเพื่อทำงานนี้อย่างไร
Gemini สามารถช่วยสร้างทั้งสอง แต่ต้องกำหนด Output ให้ชัด
Gemini Canvas รองรับการสร้างและแก้เอกสารและ Code
จึงสามารถใช้สร้าง Draft Documentation แล้วปรับต่อ เช่น
“สร้าง API Reference จาก Inventory นี้”
จากนั้น
“เพิ่ม Authentication Section”
“เพิ่ม Error Table”
“ย่อ Getting Started”
“เพิ่มตัวอย่าง cURL”
หรือเปิด Code/เอกสารที่เกี่ยวข้องเพื่อแก้ตาม Workflow ที่รองรับ
Canvas เหมาะกับการ Iteration มากกว่าขอเอกสารทั้งหมดใหม่ทุกครั้ง
Prompt
“Review API Documentation นี้โดยตรวจ:
เทียบกับ Source Code ที่แนบ และแสดงเฉพาะ Difference”
นี่เป็นขั้นตอนสำคัญก่อน Publish
ถ้า Documentation มี
ควร Run อย่างน้อยตัวอย่างหลักกับ Test Environment
เพราะ Gemini อาจสร้าง
Documentation ที่ Copy แล้ว Run ไม่ได้สร้างประสบการณ์ไม่ดีให้ Developer มาก
ก่อน Publish ควรตรวจ
API ทำอะไรชัด
ถูก Environment
วิธีส่ง Credential ถูก
ครบ
ตรงกับ Code
Type และ Required ถูก
ตรง Validation
ตรง Serializer
ตรง Error Handler
ตรง Code
Run ได้
ไม่มี Credential จริง
ไม่ได้ Publish โดยไม่ตั้งใจ
ถูกต้อง
Update ตาม Release
AI ต้องเดา
ตรวจ Endpoint ยาก
Required Field ผิด
Authentication ผิด
อาจมี Field ไม่ได้ถูกส่งจริง
Error Documentation ผิด
เสี่ยง Credential รั่ว
Docs ไม่ตรง Code ใหม่
Developer Copy แล้วใช้ไม่ได้
Hallucination อาจหลุดสู่เอกสารจริง
แนวทางที่แนะนำคือ
เฉพาะ Context ที่จำเป็น
Route, Controller, Service, Schema
ยังไม่เขียน Docs
Middleware และ Permission
Required, Type, Constraint
Serializer และ Error Handler
Endpoint ทีละกลุ่ม
ใช้ข้อมูลจำลอง
ถ้า Project ต้องการ
ด้วย Tool ที่เหมาะสม
กับ Test Environment
หา Documentation Drift
ลบ Secret และ Internal Detail
หลัง Review
ให้ Documentation อยู่กับ Code
สำหรับ API ที่เกี่ยวข้องกับระบบของ comsiam แนวทางนี้ช่วยลดปัญหาที่เอกสารดูดีแต่ไม่ตรงกับระบบจริง เพราะทุก Endpoint และ Field ถูกย้อนกลับไปตรวจจาก Source Code ได้
“อ่าน Repository นี้และสร้าง API Inventory ก่อน ห้ามสร้าง Documentation”
“จับคู่ Route → Middleware → Controller → Service → Schema สำหรับแต่ละ Endpoint”
“ค้นหา Authentication และ Authorization Requirement ของ Endpoint ทั้งหมด”
“สร้าง Request Field Table จาก Validation Code เท่านั้น ห้ามเดา Constraint”
“สร้าง Response Documentation จาก Serializer หรือ Response Code จริง”
“อ่าน Global Error Handler แล้วสร้าง Error Documentation ที่ตรงกับระบบ”
“สร้าง OpenAPI Draft จาก Inventory ที่ยืนยันแล้ว และใส่ TODO ถ้าข้อมูลไม่ครบ”
“สร้าง cURL Example โดยใช้ Placeholder Credential และข้อมูลจำลอง”
“เปรียบเทียบ Documentation กับ Code ปัจจุบันและแสดงเฉพาะ Difference”
“ตรวจ Docs เทียบ Source อีกครั้ง โดยเน้น Method, Field, Permission, Error และ Secret”
ได้ Gemini สามารถช่วยอ่านข้อความจาก Source Code, Route, Schema และ API Specification แล้วสร้าง Draft API Documentation พร้อมตัวอย่าง Request/Response ได้
ได้ สามารถช่วย Draft OpenAPI Specification จาก API Inventory หรือ Source Code แต่ต้อง Validate Specification และตรวจเทียบกับ API จริงก่อนใช้งาน
สามารถใช้ Code Folder หรือ Import GitHub Repository เพื่อช่วยให้ Gemini เข้าใจ Codebase หลายไฟล์ได้ โดยข้อจำกัดของ Context และฟีเจอร์ขึ้นอยู่กับ Gemini Apps ที่ใช้งาน
ไม่ควรสมมติว่า AI รู้ ต้องให้ Gemini Trace Middleware, Route และ Authentication Code จริงก่อนสร้าง Documentation
ไม่ควรถือว่าถูกต้อง 100% AI สามารถสร้าง Field, Parameter หรือ Error ที่ไม่มีอยู่จริงได้ จึงต้อง Review กับ Source Code และ Test API จริง
ควร Update เมื่อ API Contract เปลี่ยน เช่น Endpoint, Parameter, Response, Authentication, Error หรือ Version และควรตรวจ Documentation Drift เป็นส่วนหนึ่งของ Release Process
วิธีใช้ Gemini สร้าง API Documentation ให้แม่นที่สุดไม่ควรเริ่มจากการขอให้ AI เขียนเอกสารทันที แต่ควรเริ่มจาก Codebase → API Inventory → Route → Middleware → Validation → Response → Error Handler → Documentation
Gemini สามารถช่วยสร้าง Endpoint Reference, Authentication Guide, Request/Response Schema, Error Table, cURL Example และ OpenAPI Draft ได้อย่างรวดเร็ว โดยเฉพาะเมื่อใช้ Code Folder หรือ GitHub Repository เป็น Context
แต่ต้องป้องกัน Hallucination ด้วยกฎสำคัญคือ ทุก Endpoint, Parameter, Field และ Constraint ต้องมีหลักฐานจาก Code หรือ Specification จริง หากหาไม่พบให้ระบุว่าไม่ยืนยันแทนการเดา
หลังสร้าง Documentation ควรนำ Example ไป Run, Validate OpenAPI หากมี และเปรียบเทียบเอกสารกับ Source Code อีกครั้งก่อน Publish รวมถึงตรวจว่าไม่มี API Key, Token, Internal Endpoint หรือข้อมูล Sensitive หลุดเข้าไปในเอกสาร
แนวทางของ comsiam คือใช้ Gemini ลดเวลาการทำ API Inventory และเขียน Documentation Draft ส่วน Source Code และ Runtime จริงยังคงเป็น Source of Truth ที่ใช้ตัดสินว่า API Contract ถูกต้องหรือไม่