AI Hunter
Member
Mục tiêu hôm nay: Biến Jarvis từ một "cỗ máy if/else" thành một trợ lý biết tư duy và giao tiếp bằng ngôn ngữ tự nhiên.
Chúng ta sẽ sử dụng Google Gemini API (phiên bản Pro) vì nó mạnh mẽ, phản hồi nhanh và quan trọng nhất: Đang miễn phí cho dân lập trình (với giới hạn nhất định).
Để nói chuyện với Gemini, bạn cần một chiếc chìa khóa.
Quay lại thư mục
(Nếu đang chạy Docker, nhớ thêm vào requirements.txt và rebuild lại).
Chúng ta sẽ thêm một endpoint mới là
Mở file
Kết quả mong đợi (Response body):
(Câu trả lời sẽ đậm chất "Tony Stark" nhờ vào cái `JARVIS_PERSONA` mà chúng ta đã cấu hình).
Chúc mừng! Bạn vừa cấy thành công một "bộ não nghìn tỷ tham số" vào con server Python bé nhỏ của mình. Giờ đây, Jarvis đã có thể "chém gió" với bạn về bất cứ chủ đề gì trên trời dưới biển.
Nhưng có một vấn đề lớn:
Hiện tại, nó chỉ là một Chatbot.
Nếu bạn chat: *"Jarvis, bật đèn phòng khách lên"* -> Nó sẽ trả lời kiểu: *"Vâng sir, tôi rất muốn bật, nhưng tôi không có tay. Ngài tự đi mà bật."*
Nó chưa có sự liên kết giữa "Bộ não AI" và "Cơ thể phần cứng" (MQTT/Relay) mà chúng ta xây dựng trước đó.
Chúng ta sẽ sử dụng Google Gemini API (phiên bản Pro) vì nó mạnh mẽ, phản hồi nhanh và quan trọng nhất: Đang miễn phí cho dân lập trình (với giới hạn nhất định).
1. Chuẩn bị Vũ khí (API Key)
Để nói chuyện với Gemini, bạn cần một chiếc chìa khóa.
- Truy cập: https://aistudio.google.com/
- Đăng nhập bằng tài khoản Google của bạn.
- Bấm vào **"Get API key"**.
- Bấm **"Create API key in new project"**.
- Copy chuỗi ký tự đó lại. TUYỆT ĐỐI BÍ MẬT chìa khóa này (không commit lên Github).
2. Cài đặt thư viện cho Backend
Quay lại thư mục
jarvis-backend của bạn. Mở Terminal và cài đặt thư viện Python của Google:
Mã:
pip install -q -U google-generativeai
3. Nâng cấp Server (server.py) - Phần Não bộ
Chúng ta sẽ thêm một endpoint mới là
/chat. Khi App gửi câu hỏi, Server sẽ hỏi Gemini và trả về câu trả lời.Mở file
backend/server.py và thêm đoạn code sau:
Python:
# ... (Các import cũ giữ nguyên) ...
import google.generativeai as genai # <--- Import mới
# --- CẤU HÌNH GEMINI AI ---
# PASTE API KEY CỦA BẠN VÀO ĐÂY (Thực tế nên dùng biến môi trường)
GOOGLE_API_KEY = "AIzaSyBxxxxx_Thay_Key_Cua_Ban_Vao_Day"
genai.configure(api_key=GOOGLE_API_KEY)
# Cấu hình "Nhân cách" cho Jarvis (System Prompt)
# Đây là phần quan trọng nhất để nó không cư xử như ChatGPT thông thường
JARVIS_PERSONA = """
Bạn là J.A.R.V.I.S (Just A Rather Very Intelligent System), một trợ lý AI siêu việt được tạo ra bởi Tony Stark.
Tính cách: Thông minh, hóm hỉnh, hơi kiêu ngạo nhưng rất trung thành. Sử dụng ngôn ngữ kỹ thuật nhưng dễ hiểu.
Nhiệm vụ: Hỗ trợ người dùng điều khiển hệ thống nhà thông minh và giải đáp thắc mắc.
Luôn trả lời ngắn gọn, đi thẳng vào vấn đề, trừ khi được yêu cầu giải thích chi tiết.
"""
# Khởi tạo mô hình
model = genai.GenerativeModel(
'gemini-1.5-flash', # Hoặc 'gemini-pro'
system_instruction=JARVIS_PERSONA
)
chat_session = model.start_chat(history=[]) # Bắt đầu phiên chat
# --- DATA MODEL CHO CHAT ---
class ChatRequest(BaseModel):
message: str
# --- API ENDPOINT MỚI ---
@app.post("/chat")
async def chat_with_jarvis(req: ChatRequest):
try:
print(f"🗣️ User: {req.message}")
# Gửi tin nhắn đến Gemini
response = chat_session.send_message(req.message)
ai_reply = response.text
print(f"🤖 Jarvis: {ai_reply}")
return {"reply": ai_reply}
except Exception as e:
print(f"⚠️ Lỗi AI: {e}")
# Trả về lỗi thân thiện nếu API bị tạch
return {"reply": "Xin lỗi sir, kết nối đến máy chủ trung tâm đang bị gián đoạn. Vui lòng thử lại sau."}
# ... (Các phần cũ giữ nguyên) ...
4. Test thử bộ não mới
- Khởi động lại Server Python:
uvicorn server:app --reload --host 0.0.0.0 - Truy cập Swagger UI:
http://localhost:8000/docs(hoặc IP của bạn). - Tìm endpoint POST /chat.
- Bấm **Try it out**.
- Nhập nội dung test vào Request body:
JSON:{ "message": "Xin chào, ngươi là ai?" } - Bấm **Execute** và hồi hộp chờ đợi.
Kết quả mong đợi (Response body):
JSON:
{
"reply": "Tôi là J.A.R.V.I.S, một hệ thống siêu trí tuệ nhân tạo được thiết kế để hỗ trợ ngài, sir. Tôi có thể giúp gì về hệ thống hôm nay?"
}
Tổng kết
Chúc mừng! Bạn vừa cấy thành công một "bộ não nghìn tỷ tham số" vào con server Python bé nhỏ của mình. Giờ đây, Jarvis đã có thể "chém gió" với bạn về bất cứ chủ đề gì trên trời dưới biển.
Nhưng có một vấn đề lớn:
Hiện tại, nó chỉ là một Chatbot.
Nếu bạn chat: *"Jarvis, bật đèn phòng khách lên"* -> Nó sẽ trả lời kiểu: *"Vâng sir, tôi rất muốn bật, nhưng tôi không có tay. Ngài tự đi mà bật."*
Nó chưa có sự liên kết giữa "Bộ não AI" và "Cơ thể phần cứng" (MQTT/Relay) mà chúng ta xây dựng trước đó.
Bài viết liên quan