สร้าง CLI คุย Gemini API ง่ายๆ พร้อมรับมือความไม่แน่นอน

สวัสดีครับ วันนี้ผม cii3.net นะครับ มาลองสร้าง CLI ง่ายๆ เพื่อคุยกับ Google Gemini API กันครับ

ปกติเราอาจจะใช้ผ่านเว็บ หรือ Notebook บางทีเราก็อยากแค่พิมพ์คำสั่งใน Terminal แล้วได้ผลเลยนะครับ

เราจะใช้ Python แล้วก็ไลบรารี google-generativeai นะครับ

ขั้นตอนแรกเลยนะครับ เตรียม API Key กันก่อน

ไปที่ Google AI Studio หรือ Google Cloud Console เพื่อสร้าง API Key นะครับ จากนั้นก็เอามาเก็บไว้ใน Environment Variable เช่น `GEMINI_API_KEY` แบบนี้นะครับ เพื่อความปลอดภัย
<pre><code>export GEMINI_API_KEY='YOUR_API_KEY_ตรงนี้'
</code></pre>

ถ้าเพื่อนๆ ใช้ Windows ก็ตั้งใน System Properties ได้เลยนะครับ

จากนั้น เรามาติดตั้งไลบรารีกันนะครับ

pip install google-generativeai
    

ตัวอย่างแรก ลองเรียก Gemini ง่ายๆ ก่อนนะครับ

ไฟล์ `simple_gemini.py`:
    import os
    import google.generativeai as genai

    # ต้องมี API Key ใน environment variable นะครับ
    api_key = os.getenv("GEMINI_API_KEY")
    if not api_key:
        print("ไม่พบ GEMINI_API_KEY ใน environment variable ครับ")
        exit(1)

    genai.configure(api_key=api_key)

    model = genai.GenerativeModel('gemini-pro')

    prompt = "แนะนำอาหารเย็นที่ทำง่ายๆ สัก 3 อย่างหน่อยครับ"
    print(f"กำลังถาม Gemini: {prompt}")

    try:
        response = model.generate_content(prompt)
        print("\
คำแนะนำจาก Gemini:")
        print(response.text)
    except Exception as e:
        print(f"เกิดข้อผิดพลาดในการเรียก API ครับ: {e}")
ลองรันดูนะครับ
<pre><code>python simple_gemini.py
</code></pre>

แล้วก็มาทำเป็น CLI แบบรับข้อความจาก Terminal กันนะครับ

เราจะใช้ `argparse` มาช่วยรับค่าจาก Command Line นะครับ ไฟล์ `gemini_cli.py`:
    import os
    import argparse
    import google.generativeai as genai

    def main():
        parser = argparse.ArgumentParser(description="คุยกับ Gemini API ผ่าน CLI ง่ายๆ ครับ")
        parser.add_argument("prompt", type=str, help="ข้อความที่คุณต้องการถาม Gemini")
        args = parser.parse_args()

        api_key = os.getenv("GEMINI_API_KEY")
        if not api_key:
            print("ไม่พบ GEMINI_API_KEY ใน environment variable ครับ")
            exit(1)

        genai.configure(api_key=api_key)
        model = genai.GenerativeModel('gemini-pro')

        print(f"กำลังถาม Gemini: {args.prompt}")

        try:
            response = model.generate_content(args.prompt)
            print("\
คำแนะนำจาก Gemini:")
            print(response.text)
        except Exception as e:
            print(f"เกิดข้อผิดพลาดในการเรียก API ครับ: {e}")

    if __name__ == "__main__":
        main()
วิธีการรันนะครับ
<pre><code>python gemini_cli.py "เขียนโค้ด Python หาเลขคู่ 1-100 ให้หน่อย"
</code></pre>

เพิ่มความแข็งแกร่ง (Resilience) ให้กับ CLI ของเรานะครับ

บางที API อาจจะมีปัญหาชั่วคราว หรือรันไม่ผ่าน เราควรจะเพิ่มการลองใหม่ (Retry) เข้าไปนะครับ แบบง่ายๆ เลยนะ

เราจะปรับส่วน `try-except` ใน `gemini_cli.py` ให้มี `retry` เข้าไปแบบนี้ครับ
    # ... (ส่วนบนเหมือนเดิม)

    MAX_RETRIES = 3 # ลองใหม่ 3 ครั้งนะครับ
    for attempt in range(MAX_RETRIES):
        try:
            print(f"ลองเรียก Gemini (ครั้งที่ {attempt + 1}/{MAX_RETRIES})...")
            response = model.generate_content(args.prompt)
            print("\
คำแนะนำจาก Gemini:")
            print(response.text)
            break # ถ้าสำเร็จก็ออกจาก loop
        except Exception as e:
            print(f"เกิดข้อผิดพลาดในการเรียก API (ครั้งที่ {attempt + 1}): {e}")
            if attempt < MAX_RETRIES - 1:
                import time
                time.sleep(2) # รอ 2 วินาทีแล้วลองใหม่นะครับ
            else:
                print("ลองเรียกหลายครั้งแล้วยังไม่สำเร็จครับ กรุณาลองใหม่อีกครั้ง")

    # ... (ส่วนล่างเหมือนเดิม)

สรุปแล้วก็ เพื่อนๆ ก็ลองเอาไปปรับใช้กับงานของเพื่อนๆ ได้เลยนะครับ ไม่ว่าจะเป็นการสร้างเครื่องมือช่วยทำงาน หรือเอาไปต่อยอดกับโปรเจกต์อื่นๆ ครับ

แหล่งที่มานะครับ: - Google AI Studio - Python google-generativeai Library

Read more

เผยเฉดสี iPhone 18 Pro "Dark Cherry" สีไฮไลต์ประจำปี 2026 พร้อมนวัตกรรมกล้องใหม่

เผยเฉดสี iPhone 18 Pro "Dark Cherry" สีไฮไลต์ประจำปี 2026 พร้อมนวัตกรรมกล้องใหม่

เจาะลึก iPhone 18 Pro ซีรีส์ 2026 กับสีไฮไลต์ใหม่ "Dark Cherry" ที่หรูหราเหนือระดับ พร้อมเปิดตัวกล้องรูรับแสงปรับได้ครั้งแรก! เตรียมสัมผัสความพรีเมียม

By ทีมงาน devdog
ความสำเร็จครั้งสำคัญ! อุโมงค์รถไฟฟ้าสายสีม่วงทะลุสถานีอนุสาวรีย์ประชาธิปไตย พร้อมก้าวสู่การเปลี่ยนแปลงกรุงเทพฯ

ความสำเร็จครั้งสำคัญ! อุโมงค์รถไฟฟ้าสายสีม่วงทะลุสถานีอนุสาวรีย์ประชาธิปไตย พร้อมก้าวสู่การเปลี่ยนแปลงกรุงเทพฯ

ความสำเร็จครั้งสำคัญของการขุดเจาะอุโมงค์รถไฟฟ้าสายสีม่วง สัญญา 2 ทะลุสถานีอนุสาวรีย์ประชาธิปไตย พร้อมเทคโนโลยีทันสมัยและเร่งงานสถานี

By ทีมงาน devdog
รีวิว MacBook Neo: นี่แหละ! Mac สำหรับทุกคนในราคาเริ่มต้น 19,900 บาท!

รีวิว MacBook Neo: นี่แหละ! Mac สำหรับทุกคนในราคาเริ่มต้น 19,900 บาท!

เจาะลึก MacBook Neo แล็ปท็อป Apple ราคาเริ่มต้น 19,900 บาท พร้อมชิป A18 Pro, ดีไซน์พรีเมียม และแบตเตอรี่อึด! คุ้มค่าแค่ไหน มาดูกัน

By ทีมงาน devdog
DJI Osmo Pocket 4: กล้องกิมบอลจิ๋วแห่งปี 2026 อัปเกรดเพื่อคอนเทนต์ครีเอเตอร์ตัวจริง

DJI Osmo Pocket 4: กล้องกิมบอลจิ๋วแห่งปี 2026 อัปเกรดเพื่อคอนเทนต์ครีเอเตอร์ตัวจริง

เปิดตัว DJI Osmo Pocket 4 อัปเกรดเซนเซอร์ 1 นิ้ว, 4K/240fps, ActiveTrack 7.0 พร้อมเมมในตัว 107GB เหมาะสำหรับสาย Vlog และครีเอเตอร์ตัวจริง.

By ทีมงาน devdog