กลับไปที่บล็อก

เริ่มต้นใช้งานคู่มือ

เก็บ API key อย่างปลอดภัย: ตัวแปรสภาพแวดล้อม, .gitignore, แก้ไขการรั่วไหล

เก็บคีย์ CheapTokens ของคุณออกจากโค้ดและ git: ตั้งตัวแปรสภาพแวดล้อม เพิ่ม .env ลงใน .gitignore และรู้ว่าต้องทำอะไรหากคีย์รั่วไหล

โดย CheapTokens Teamเผยแพร่เมื่อ ใช้เวลาอ่าน 6 นาที

เทอร์มินัลที่มีการ export ตัวแปรสภาพแวดล้อมและบรรทัด .gitignore สำหรับ API key
ในหน้านี้
  1. ทำไมคีย์ไม่ควรอยู่ในโค้ดของคุณ
  2. ขั้นตอนที่ 1: ใส่คีย์ในตัวแปรสภาพแวดล้อม
  3. ขั้นตอนที่ 2: ใช้ไฟล์ .env โดยไม่คอมมิตมัน
  4. หากคีย์รั่วไหล: ต้องทำอะไร ตามลำดับ
  5. ทดสอบตัวเอง

เก็บคีย์ไว้ในตัวแปรสภาพแวดล้อม ไม่ใช่ในโค้ดของคุณ และเก็บไฟล์ .env ใด ๆ ออกจาก git ด้วยบรรทัดใน .gitignore หากคีย์หลุดไปอยู่ในที่สาธารณะแล้ว ให้จัดการกับคีย์ก่อนแล้วค่อยเก็บกวาดทีหลัง การล้างประวัติ git ขณะที่คีย์ยังอยู่ในโค้ดและเครื่องมือของคุณไม่ได้แก้ปัญหาอะไร

นั่นคือแนวคิดทั้งหมด คู่มือนี้เป็นฉบับลงมือทำ (พื้นฐานอยู่ใน What is an API key): สามคำสั่ง หนึ่งคำขอที่ใช้งานได้ และแผนสั้น ๆ สำหรับวันที่แย่

ทำไมคีย์ไม่ควรอยู่ในโค้ดของคุณ#

API key คือรหัสผ่านที่ใช้จ่ายเงินของคุณ ใครก็ตามที่ถือมันไว้สามารถส่งคำขอโดยใช้ยอดเงินของคุณได้ และบริการก็แยกพวกเขาออกจากคุณไม่ได้

วิธีที่มันมักผิดพลาดนั้นน่าเบื่อ คุณวางคีย์ลงในสคริปต์เพื่อให้คำขอแรกทำงานได้ สคริปต์ทำงานได้ คุณ git push และ repository ก็เป็นสาธารณะ หรือคุณส่งไฟล์ config ให้เพื่อนร่วมงาน หรือคุณแคปหน้าจอข้อผิดพลาดที่มีคีย์ปรากฏอยู่ที่มุม ผลลัพธ์ก็เหมือนกันทุกครั้ง

GitHub รู้จักรูปแบบนี้ดี การสแกนความลับของ GitHub (เอกสาร GitHub ตรวจสอบเมื่อ 29 ตุลาคม 2026) จะค้นหาข้อมูลรับรองที่ฝังตายตัวในประวัติ Git ทั้งหมดบนทุกสาขา และยังค้นหาใน issues, pull requests, discussions, wikis และ secret gists และแจ้งเตือนเมื่อพบ ซึ่งหมายความว่าการลบบรรทัดในคอมมิตถัดไปไม่เปลี่ยนอะไรเลย: คอมมิตเก่ายังคงมีมันอยู่

นี่คือสคริปต์เดียวกันก่อนและหลัง

เปรียบเทียบ

สคริปต์เดียวกัน ย้ายคีย์ออกจากโค้ด

คีย์ในโค้ด

python
from openai import OpenAI

client = OpenAI(
    base_url="https://api.cheaptokens.dev/v1",
    api_key="<your-key>",  # pasted here: ends up in git
)

คีย์จากสภาพแวดล้อม

python
import os
from openai import OpenAI

client = OpenAI(
    base_url="https://api.cheaptokens.dev/v1",
    api_key=os.environ["CHEAPTOKENS_API_KEY"],
)

เวอร์ชันที่สองสามารถส่งไปยัง GitHub แชท หรือ code review ได้ตามสภาพ คีย์อาศัยอยู่บนเครื่องของคุณ นอกไฟล์

ขั้นตอนที่ 1: ใส่คีย์ในตัวแปรสภาพแวดล้อม#

ตัวแปรสภาพแวดล้อมคือค่าที่มีชื่อ ซึ่งเทอร์มินัลของคุณส่งให้ทุกโปรแกรมที่มันเริ่ม สคริปต์ขอ CHEAPTOKENS_API_KEY ตามชื่อและไม่เคยเห็นว่ามันมาจากไหน

บน macOS และ Linux:

bash
export CHEAPTOKENS_API_KEY="<your-key>"

บน Windows PowerShell:

powershell
setx CHEAPTOKENS_API_KEY "<your-key>"

มีสองรายละเอียดที่ทำให้คนพลาด export อยู่ได้เพียงในหน้าต่างเทอร์มินัลนั้น ดังนั้นเพื่อให้คงอยู่ ให้เพิ่มบรรทัดลงใน shell profile ของคุณ (~/.zshrc หรือ ~/.bashrc) และ setx ไม่เปลี่ยนหน้าต่างที่คุณพิมพ์มัน: เปิดเทอร์มินัลใหม่ก่อนทดสอบ

ตอนนี้เป็นคำขอเต็ม มันใช้ endpoint ที่เข้ากันได้กับ OpenAI คือ https://api.cheaptokens.dev/v1 และ DeepSeek-V4-Flash พร้อม id เต็ม (deepseek-ai/DeepSeek-V4-Flash-0731; เอา id จาก เอกสาร CheapTokens เนื่องจากชื่อแตกต่างกันระหว่างผู้ให้บริการ):

python
import os
from openai import OpenAI

client = OpenAI(
    base_url="https://api.cheaptokens.dev/v1",
    api_key=os.environ["CHEAPTOKENS_API_KEY"],
)

resp = client.chat.completions.create(
    model="deepseek-ai/DeepSeek-V4-Flash-0731",
    messages=[{"role": "user", "content": "Say hi in five words."}],
)
print(resp.choices[0].message.content)
print(resp.usage)

คำทักทายสั้น ๆ คือคำขอประมาณ 20 โทเคนเข้าและ 20 ออก ซึ่งในราคาปัจจุบันคือ $0.0000023 (รายการเต็มอยู่ในหน้าราคา) หากคุณยังไม่ได้ส่งคำขอแรก Your first API request with CheapTokens อธิบายตั้งแต่เริ่มต้น

คำตอบของโมเดลกลับมาใน choices[0].message.content และ usage แสดงโทเคนที่นับได้ คีย์ไม่เคยปรากฏในไฟล์

เทอร์มินัลแสดงคำสั่ง .env และ .gitignore
สามคำสั่งที่เก็บคีย์ออกจาก git

ขั้นตอนที่ 2: ใช้ไฟล์ .env โดยไม่คอมมิตมัน#

การพิมพ์ export ในทุกหน้าต่างใหม่นั้นน่าเบื่อ ไฟล์ .env เก็บค่าไว้ในที่เดียว ข้าง ๆ โปรเจกต์:

text
CHEAPTOKENS_API_KEY=<your-key>

Python อ่านมันด้วย python-dotenv (pip install python-dotenv):

python
from dotenv import load_dotenv
load_dotenv()  # fills os.environ from .env

ไฟล์จะปลอดภัยก็ต่อเมื่อ git ไม่เคยเห็นมัน เพิ่มมันลงใน .gitignore ก่อนคอมมิตแรก:

bash
echo ".env" >> .gitignore
git check-ignore -v .env

หากทุกอย่างถูกต้อง คำสั่งที่สองจะพิมพ์อะไรประมาณ .gitignore:1:.env .env: git บอกคุณว่ากฎใดกำลังละเว้นไฟล์ หากพิมพ์อะไรไม่ออก กฎนั้นไม่ทำงาน บน Windows ให้สร้าง .gitignore ในเอดิเตอร์โดยมีบรรทัด .env หรือใช้ Add-Content .gitignore .env: >> ของ PowerShell สามารถเขียนเป็น UTF-16 ซึ่ง git อาจละเว้น

กับดักหนึ่ง: .gitignore มีผลเฉพาะไฟล์ที่ git ยังไม่ติดตาม หาก .env ถูกคอมมิตไปแล้วครั้งหนึ่ง ให้รัน git rm --cached .env เพื่อให้ git หยุดติดตามมัน และถือว่าคีย์ข้างในถูกเปิดเผย (รายละเอียดเพิ่มเติมด้านล่าง) นิสัยที่ดีคือคอมมิต .env.example ที่มีชื่อตัวแปรและ placeholder แทนค่า เพื่อให้เพื่อนร่วมทีมรู้ว่าต้องตั้งอะไร

หากคีย์รั่วไหล: ต้องทำอะไร ตามลำดับ#

บางทีคีย์อาจไปอยู่ใน repo สาธารณะ บางทีมันอาจอยู่ในแคปหน้าจอ หรือบางทีคุณอาจวาง config ทั้งหมดลงในกระทู้ฟอรัม ลำดับสำคัญกว่าความเร็วของขั้นตอนใดขั้นตอนหนึ่ง

คำแนะนำของ GitHub เอง (หน้าเดียวกัน ตรวจสอบเมื่อ 29 ตุลาคม 2026) คือให้หมุนเวียนข้อมูลรับรองทันที การเขียนประวัติ Git ใหม่เป็นทางเลือกและมักไม่จำเป็นเมื่อข้อมูลรับรองถูกเพิกถอนแล้ว คนมักทำกลับกัน: ใช้เวลาหนึ่งชั่วโมงล้างประวัติขณะที่คีย์ยังใช้งานได้ อย่าทำ

เลือกกรณีของคุณ

เกิดอะไรขึ้นกับคีย์ของคุณ? เลือกกรณีที่ใกล้ที่สุด

คีย์อยู่ในคอมมิตที่เป็นสาธารณะแล้ว

ลบคีย์ออกจากโค้ดก่อน เปลี่ยนไปใช้ตัวแปรสภาพแวดล้อม เพิ่ม .env ลงใน .gitignore และดูยอดเงินของคุณสำหรับคำขอที่คุณไม่ได้ส่ง การล้างประวัติเป็นของแถมทีหลัง ไม่ใช่ส่วนที่เร่งด่วน

คีย์อยู่ในแคปหน้าจอหรือไฟล์ที่แชร์

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

คีย์เดียวกันถูกใช้ในหลายเครื่องมือ

ไล่ดูทุกที่ที่เคยเก็บคีย์: shell profile ของคุณ ไฟล์ .env เครื่องมือเอดิเตอร์และเทอร์มินัล และชี้แต่ละอันไปที่ตัวแปรสภาพแวดล้อม เพื่อให้มีที่เดียวให้เปลี่ยน หากเครื่องมืออ่านตัวแปรไม่ได้ คู่มือแก้ปัญหา 401/404 แสดงว่าข้อผิดพลาดมีหน้าตาอย่างไร

สามขั้นตอนหลังการรั่วไหล: นำคีย์ออกจากโค้ด อัปเดตทุกเครื่องมือ ส่งคำขอทดสอบ
นำคีย์ออกจากโค้ดก่อน จากนั้นทุกเครื่องมือ แล้วจึงส่งคำขอทดสอบ

หลังการเก็บกวาด ให้ส่งคำขอทดสอบเล็ก ๆ หนึ่งครั้งเหมือนในขั้นตอนที่ 1 และตรวจสอบยอดเงินของคุณ หากมันตอบกลับและยอดเงินกับจำนวนคำขอเป็นปกติ การเก็บกวาดก็เสร็จสิ้น ให้จับตาดูยอดเงินในอีกสองสามวันข้างหน้า คีย์ที่เคยเป็นสาธารณะควรถือว่าถูกเปิดเผยแม้หลังจากคุณลบมันออกจากโค้ดแล้ว ดังนั้นให้เฝ้าดูยอดเงินและจำนวนคำขอสำหรับสิ่งใดก็ตามที่คุณไม่ได้ส่ง และอย่าใช้คีย์นั้นซ้ำในที่ใหม่ สำหรับสถานที่ที่คีย์มักอาศัยอยู่ ดู Where to plug in your own API key

ทดสอบตัวเอง#

ลองด้วยตัวเองลองดู: ยกเลิกการตั้งค่าตัวแปรแล้วรันสคริปต์ คุณเห็นอะไร?แสดงคำตอบ

Python หยุดด้วย KeyError: 'CHEAPTOKENS_API_KEY' ก่อนที่คำขอใด ๆ จะออกจากเครื่องของคุณ นั่นคือความล้มเหลวที่ดี: สคริปต์ปฏิเสธที่จะรันโดยไม่มีคีย์แทนที่จะใช้คีย์ที่วางไว้อย่างเงียบ ๆ หากคุณเห็น 401 แทน ตัวแปรถูกตั้งค่าแล้วแต่คีย์ผิด ให้ตรวจสอบคีย์และที่อยู่กับคู่มือ 401/404