สร้าง 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