ซ่อน API Key อย่างปลอดภัยด้วย .env ไฟล์
🤔 ทำไมต้องใช้ Environment Variable?
ในการเขียนโค้ดเชื่อมต่อกับโมเดล AI เช่น GPT ผ่าน API เราจำเป็นต้องระบุ API Key เพื่อยืนยันตัวตนของเรา ซึ่งถ้าเราเขียน Key นี้ลงในโค้ดโดยตรง:
- คนอื่นที่ดูโค้ดจะเห็น Key ทันที
- มีความเสี่ยง ถูกขโมย Key ไปใช้ จนเกิดค่าใช้จ่าย
ดังนั้นจึงต้องใช้สิ่งที่เรียกว่า Environment Variable เพื่อแยกข้อมูลสำคัญออกจากโค้ด และป้องกันไม่ให้เผยแพร่โดยไม่ได้ตั้งใจ (เช่น เวลานำโค้ดขึ้น GitHub)
📦 .env คืออะไร?
.env คือไฟล์ที่ใช้เก็บ “ตัวแปรสภาพแวดล้อม (Environment Variables)” เช่น:
API_KEYDATABASE_URLUSERNAME / PASSWORD- ค่าต่าง ๆ ที่ไม่ควรปรากฏในโค้ด
โดยไฟล์ .env มักจะถูกระบุใน .gitignore ทำให้ ไม่ถูกอัปโหลดไปยัง GitHub
🛠️ ขั้นตอนการใช้งาน .env กับ Python และ LangChain
1. ติดตั้ง Library python-dotenv
bashCopyEditpip install python-dotenv
2. สร้างไฟล์ .env
ภายในโปรเจกต์ สร้างไฟล์ชื่อ .env แล้วใส่ข้อมูล API Key ของคุณ:
OPENAI_API_KEY=your-api-key-here
💡 คำว่า
OPENAI_API_KEYต้องเป็นชื่อที่ LangChain รองรับ หรือเราจะใช้เองก็ได้ถ้าเขียนโค้ดให้เรียกใช้ถูกต้อง
3. โหลดตัวแปรจาก .env มาใช้ใน Python
ที่ด้านบนของไฟล์ Python ให้ใส่:
from dotenv import load_dotenv
import os
load_dotenv() # โหลดค่าทั้งหมดจากไฟล์ .env
api_key = os.getenv("OPENAI_API_KEY")
ตอนสร้าง Chat Model:
from langchain_openai import ChatOpenAI
llm = ChatOpenAI(
openai_api_key=api_key,
model="gpt-4o"
)
✅ ประโยชน์ของการใช้ Environment Variable
| เหตุผล | อธิบาย |
|---|---|
| 🔐 ปลอดภัย | ไม่ต้องเผยแพร่ข้อมูลลับในโค้ด |
| 🌐 แชร์โค้ดได้ | คนอื่นสามารถใช้โค้ดร่วมกันได้โดยไม่เห็น Key |
| ⚙️ ยืดหยุ่น | เปลี่ยนค่า Config โดยไม่ต้องแก้โค้ด |
⚠️ ปัญหาที่มักเจอ
หากไม่ได้เรียก load_dotenv() หรือพิมพ์ชื่อผิด เช่น OPENAI_API_KEY => OPNAI_APIKEY
ระบบจะหา Key ไม่เจอ และแสดง Error เช่น:
Environment variable not found: OPENAI_API_KEY
วิธีแก้:
- ตรวจสอบ
.envว่ามีค่าครบหรือไม่ - ตรวจสอบว่าระบุ
load_dotenv()ก่อนใช้งานจริง
🧪 ทดสอบเรียก GPT ด้วย .env
response = llm.invoke("ใครคือนายกรัฐมนตรีของประเทศไทย?")
print(response.content)
หากทุกอย่างถูกต้อง โมเดลจะให้คำตอบ เช่น:
"นายเศรษฐา ทวีสิน"
📌 สรุป: บทเรียนสำคัญจากตอนนี้
- ห้ามฝัง
API Keyลงในโค้ดโดยตรง - ใช้
.envเพื่อเก็บข้อมูลสำคัญ - ติดตั้งและใช้
python-dotenvเพื่อโหลดค่ามาใช้ - ตรวจสอบ Key เสมอเพื่อป้องกัน Error
Leave a Reply