Secrets และ Environment Variables โดยไม่ต้องวาง Key ลงในแชท
แอปจริงส่วนใหญ่ต้องมี secret อย่างน้อยหนึ่งตัว เช่น key ของผู้ให้บริการชำระเงิน key ของบริการอีเมล หรือ key ของ AI API ใน Mythex คุณไม่ต้องวาง key เหล่านั้นลงในพรอมต์ เมื่อ Agent ต้องใช้ มันจะแสดงการ์ด secrets request ในแชท คุณพิมพ์ค่าลงในการ์ด แล้วค่านั้นจะถูกเก็บเป็น project secret ที่แอปของคุณอ่านได้ โดย key จะไม่ไปอยู่ในบทสนทนา
ฟีเจอร์นี้ทำอะไร
ทุกโปรเจกต์ใน Mythex เก็บ environment variables ได้ คือค่าที่มีชื่อ เช่น STRIPE_SECRET_KEY ซึ่งแอปของคุณอ่านตอนรัน แทนที่จะฝังค่าเหล่านั้นไว้ในโค้ด Secrets คือ environment variables ที่ค่าของมันต้องเก็บเป็นความลับ
ค่าเดียวกันนี้พร้อมใช้งานในสองที่:
- Sandbox ที่ Agent สร้างและรันแอปของคุณระหว่างที่คุณทำงาน
- การ deploy ที่เผยแพร่แล้ว ที่ผู้เข้าชมใช้งาน
มีสามวิธีในการเพิ่มค่าเหล่านี้:
- การ์ด secrets request ซึ่ง Agent แสดงในแชทเมื่อต้องการ key เพื่อทำงานให้เสร็จ
- Project settings → Secrets ซึ่งคุณเพิ่มหรือแก้ไขค่าได้ทุกเมื่อ
/secretsในแชท เพื่อเพิ่มหรืออัปเดต secrets ตามคำขอ
ทำไมวิธีนี้ถึงช่วยได้
วิธีที่ตรงที่สุดในการให้ key แก่ AI agent คือวางมันลงในข้อความ ซึ่งใช้ได้ แต่ key จะกลายเป็นส่วนหนึ่งของประวัติแชท อยู่ในรูปข้อความธรรมดาปะปนกับทุกอย่างที่คุณพูด
การ์ด secrets จะทำให้ค่าไม่ไปอยู่ในบทสนทนา คุณกรอกค่าในช่องของการ์ด ไม่ใช่กล่องข้อความ และค่านั้นจะถูกเก็บเป็น project secret Agent ก็ทำงานต่อโดยมี key พร้อมใช้งานใน sandbox
การเก็บ key ไว้ใน project settings แทนการเขียนไว้ในโค้ดยังมีประโยชน์อื่นอีก:
- Key ไม่หลุดเข้า source control โค้ดอ้างอิง key ด้วยชื่อ ส่วนค่าอยู่ใน project settings
- Agent และแอปที่รันอยู่เห็นการตั้งค่าชุดเดียวกัน ไม่มีสำเนาที่ค่อยๆ ล้าสมัย
- เปลี่ยน key ได้โดยไม่ต้องเขียนโค้ดใหม่ แก้ค่าใน settings โค้ดยังอ่านด้วยชื่อเดิม
ถ้า environment variables เป็นเรื่องใหม่สำหรับคุณ คู่มือของเรื่อง environment variables และ secrets คืออะไร จะอธิบายแนวคิดนี้ตั้งแต่ต้น
วิธีใช้การ์ด secrets
- ขอฟีเจอร์ เช่น "ส่งอีเมลต้อนรับเมื่อมีคนสมัคร"
- เมื่อ Agent ต้องการ key การ์ด secrets request จะปรากฏในแชท โดยแสดงค่าที่ต้องใช้
- กรอกค่าลงในช่องของการ์ด ไม่ใช่กล่องข้อความ
- ยืนยัน ค่าจะถูกเก็บเป็น project secret
- Agent ทำงานต่อ โดยมี key พร้อมใช้งานใน sandbox
วิธีเพิ่ม secrets ด้วยตัวคุณเอง
- เปิด project settings แล้วเลือก Secrets
- เพิ่ม key เช่น
STRIPE_SECRET_KEY,OPENAI_API_KEYหรือข้อมูลรับรองของบริการของคุณเอง - ขอให้ Agent อ่านค่าเหล่านั้นด้วยวิธีมาตรฐานของเฟรมเวิร์กของคุณ เช่นจาก
process.envในแอป Node - Republish หากแอปที่เผยแพร่แล้วต้องใช้ค่าใหม่
คุณยังพิมพ์ /secrets ในแชทเพื่อเพิ่มหรืออัปเดตค่าได้ด้วย
เปลี่ยน secret ของแอปที่เผยแพร่แล้ว
แอปที่เผยแพร่แล้วจะรับ secrets ตอนที่เผยแพร่ หลังจากคุณเพิ่มหรือเปลี่ยนค่า ให้ เผยแพร่อีกครั้ง เพื่อให้การ deploy ที่ใช้งานจริงได้ค่าใหม่ จนกว่าจะทำอย่างนั้น ผู้เข้าชมยังใช้แอปด้วยการตั้งค่าเดิม
เคล็ดลับความปลอดภัย
- อย่า commit secrets เข้า repository เก็บไว้ใน project settings
- ใช้ key ที่ใช้ได้เฉพาะฝั่งเซิร์ฟเวอร์สำหรับงานที่มีสิทธิ์สูง key ที่สามารถเรียกเก็บเงินบัตรหรือส่งอีเมลควรอยู่ในโค้ดที่รันบนเซิร์ฟเวอร์ ไม่ใช่สิ่งที่เบราว์เซอร์ของผู้เข้าชมดาวน์โหลดได้
- หาก key เคยปรากฏในประวัติแชท ให้เปลี่ยน key สร้าง key ใหม่ที่ผู้ให้บริการ ยกเลิก key เก่า แล้วอัปเดตค่าใน project settings ให้ถือว่า key ใดก็ตามที่ถูกวางลงในแชทเป็นสิ่งที่รั่วไหลแล้ว
ข้อจำกัด
- การ์ดจะช่วยได้ก็ต่อเมื่อคุณใช้มัน ถ้าคุณวาง key ลงในกล่องข้อความอยู่ดี มันจะอยู่ในประวัติแชท ให้เปลี่ยน key ที่ผู้ให้บริการ แล้วอัปเดตค่าที่เก็บไว้
- แอปที่เผยแพร่แล้วต้อง republish เพื่อรับ secrets ใหม่หรือที่เปลี่ยนแปลง
- การเก็บ key อย่างปลอดภัยไม่ได้ทำให้ทุกการใช้งาน key ปลอดภัยโดยอัตโนมัติ ตำแหน่งที่ใช้ key ยังสำคัญ ควรเก็บ key ที่มีสิทธิ์สูงไว้ฝั่งเซิร์ฟเวอร์ของแอป
หากต้องการอ่านเพิ่มเติมเรื่องการทำให้แอปปลอดภัยก่อนแชร์ ดู เช็คลิสต์ความปลอดภัยสำหรับแอปที่สร้างด้วย AI
เอกสารมีรายละเอียดครบถ้วน: Environment variables และ secrets และ Secrets ในแชท