หมายเหตุ: หากต้องการเรียกใช้ Gemini API Endpoints ในเครื่อง ขั้นแรกให้ตั้งค่าบัญชี Google Vertex ai ของคุณ https://cloud.google.com/sdk/docs/initializing
แอปพลิเคชัน Travel Assistant นี้ออกแบบมาเพื่อทดสอบสถาปัตยกรรมที่ปรับขนาดได้ของแอปพลิเคชัน Generative AI ที่สมบูรณ์
เราได้สำรวจการเรียกใช้ฟังก์ชัน Gemini Pro อย่างกว้างขวาง และเปิดฟีเจอร์ ai dev day บริการนี้ได้รับการพัฒนาโดยใช้เฟรมเวิร์ก FastAPI และฟรอนต์เอนด์ขับเคลื่อนด้วย NextJS 14 รวมถึงสตรีมไลท์สำหรับผู้พัฒนา Python ล้วนๆ
แผนที่ที่ขับเคลื่อนด้วย AI นั้นขับเคลื่อนด้วย "Google Maps javascript API" สำหรับ NextJS และ "Plotly with MapBox" สำหรับ streamlit
ในวิดีโอนี้ ฉันได้อธิบายเกี่ยวกับสถาปัตยกรรมโดยรวมและไปป์ไลน์ API สตรีมมิ่ง Gemini Pro และสถาปัตยกรรมการเรียกฟังก์ชัน
gemmini => แบ็กเอนด์ fastapi => ส่วนหน้า nextjs (การตอบสนองแบบสตรีมเต็มรูปแบบ)
โคลนที่เก็บไปยังเครื่องของคุณ:
เปลี่ยนชื่อ .env.template เป็น .env และเพิ่มคีย์ API และ URL ฐานข้อมูลของคุณที่นั่น สร้างปัญหาหรือส่งข้อความถึงฉันหากคุณประสบปัญหาใด ๆ ในขณะที่ตั้งค่าแอปพลิเคชัน
ติดตั้งแพ็คเกจ Python ที่จำเป็น:
backend -> src
pip install -r requirements.txt
เริ่มต้นเซิร์ฟเวอร์ FastAPI โดยการรัน:
uvicorn main:app
ทดสอบแบ็กเอนด์โดยตรงโดยส่งคำขอ POST ต่อไปนี้ใน PostMan หรือซอฟต์แวร์ทดสอบ API ใดๆ
http://localhost:8000/travel_assistant?prompt="Share 2 places to visit in UAE"
ตรวจสอบให้แน่ใจว่าบริการส่วนหน้าและส่วนหลังทำงานพร้อมกันเพื่อให้แอปพลิเคชันทำงานได้อย่างถูกต้อง
app.py
streamlit run app.py
เข้าถึงส่วนหน้าได้ที่: http://localhost:8501/
ไปที่ nextjs dir รัน pnpm install และ pnpm dev
ดึงอิมเมจของนักเทียบท่าแล้ววิ่งไปที่นั่น
ขณะที่บริการส่วนหน้าและส่วนหลังทำงานอยู่ ให้เข้าถึงแอปพลิเคชัน Streamlit บนเว็บเบราว์เซอร์ของคุณและโต้ตอบกับฟีเจอร์ของผู้ช่วยการเดินทาง
มาสร้างอิมเมจนักเทียบท่าก่อนแล้วรันฟรอนต์เอนด์โดยใช้คอนเทนเนอร์ที่รันจากอิมเมจนี้
ต่อไปเราจะพุชรูปภาพและใช้งานแบ็กเอนด์ของเราใน Google Run
docker build -t travel_ai_service .
สำหรับผู้ใช้ Mac M2 ให้ใช้คำสั่งนี้แทน: docker buildx build --platform linux/amd64 -t <Image Name> .
ภาพนักเทียบท่า
docker run --env-file .env -d --name 2bd90a3c026f -p 80:80 travel_ai_assistant
docker tag travel_ai_assistant mjunaidca/travel_ai_assistant:latest
docker push mjunaidca/travel_ai_assistant:latest
ผ่านทางคลิ
gcloud run deploy ai-travel-assistant --image mjunaidca/travel_ai_assistant:latest
จากนั้นไปที่ Google Cloud แล้วคลิกที่ "แก้ไข & ปรับใช้การแก้ไขใหม่"
เพิ่มตัวแปรสภาพแวดล้อมของคุณและเปลี่ยนพอร์ตจาก 8080 เป็น 80 (นี่คือสิ่งที่เรากำหนดค่าใน dockerfile)
หรือคุณสามารถไปที่ Google Run ได้โดยตรงแล้วคลิกสร้างบริการ กรอกรายละเอียดเพื่อปรับใช้อิมเมจนักเทียบท่าของคุณ
ขั้นแรกให้ผ่าน URL ในเบราว์เซอร์แล้วคุณจะเห็นข้อความ ""ด้านบนที่นี่"" ถัดไปแทนที่ด้วย streamlit
รับคีย์ API บริการโครงการ Google Cloud ของคุณ ดาวน์โหลดในรูปแบบ json และจัดเก็บไว้ในไดเร็กทอรีแบ็กเอนด์
เราส่งต่อพวกมันที่รันไทม์หลังจากสร้างอิมเมจเพื่อรันคอนเทนเนอร์ในเครื่อง
รวมไว้ใน .gitignore และ .dockerignore เสมอ ,ฉันเคยเปิด docker hub ออกมาโดยไม่ได้ตั้งใจมาก่อน ***
docker build -t travel_ai_service .
สำหรับผู้ใช้ Mac M2 ให้ใช้คำสั่งนี้แทน:
docker buildx build --platform linux/amd64 -t mjunaidca/travel_ai_assistant:v1 .
ภาพนักเทียบท่า
docker run --env-file .env -d --name travel_ai_assistant -p 80:80 -v /Users/mjs/Documents/GitHub/genai_fastapi/travel_ai_service/backend/travel-ai-gauth.json:/app/travel-ai-gauth.json -e GOOGLE_APPLICATION_CREDENTIALS=/app/travel-ai-gauth.json mjunaidca/travel_ai_assistant:v1```
4. Test Locally and then Push it on Docker Hub
Is API Working?
http://localhost:80
Are Gemini Endpoints Working?
http://localhost/gemini_streaming_travel_ai/?query=%22hello%22
http://localhost/gemini_streaming_travel_ai/mapstate
For OpenAi it's Post request using postman
http://localhost:80/travel_assistant/?prompt="Share 2 places to visit in UAE"
นักเทียบท่าผลักดัน mjunaidca/travel_ai_assistant:v1
5. Deply your service on Google Cloud
Through Cli
gcloud run ปรับใช้ ai-travel-assistant --image mjunaidca/travel_ai_assistant:latest
จากนั้นไปที่ Google Cloud แล้วคลิกที่ "แก้ไข & ปรับใช้การแก้ไขใหม่"
เพิ่มตัวแปรสภาพแวดล้อมของคุณและเปลี่ยนพอร์ตจาก 8080 เป็น 80 (นี่คือสิ่งที่เรากำหนดค่าใน dockerfile)
หรือคุณสามารถไปที่ Google Run ได้โดยตรงแล้วคลิกสร้างบริการ กรอกรายละเอียดเพื่อปรับใช้อิมเมจนักเทียบท่าของคุณ
ขั้นแรกให้ผ่าน URL ในเบราว์เซอร์แล้วคุณจะเห็นข้อความ ""ด้านบนที่นี่"" ถัดไปแทนที่ด้วย streamlit
ทำไมไม่ Vercel: การหมดเวลา inocation เริ่มต้นของ Vercel คือ 10.01 วินาที การใช้ Edge เราสามารถเพิ่มเป็น 25 วินาที และยิ่งไปกว่านั้นหากใช้การสตรีม เราก็สามารถเพิ่มเวลาเป็นอนันต์ได้
เวลาตอบสนองโดยเฉลี่ยที่มีการเรียกใช้ฟังก์ชันอยู่ที่ 30-40 วินาที ดังนั้นแผนของฉันคือเชื่อมต่อและใช้งานสิ่งนี้บน Google Cloud เช่นกัน
docker buildx build --platform linux/amd64 -t nextjs_travel_ai .
docker images
docker run --env-file .env -d --name 4f04288c45a8 -p 3000:8000 nextjs_travel_ai
verify the containor is running and no error occured
docker ps
docker tag nextjs_travel_ai mjunaidca/nextjs_travel_ai:latest
docker push mjunaidca/nextjs_travel_ai:latest
gcloud run deploy nextjs-travel-ai --image mjunaidca/nextjs_travel_ai:latest
ยินดีมีส่วนร่วมในโครงการนี้ เพื่อสนับสนุน:
git checkout -b feature-branch
)git commit -am 'Add some feature'
)git push origin feature-branch
)โครงการนี้ได้รับอนุญาตภายใต้ใบอนุญาต MIT - ดูรายละเอียดในไฟล์ LICENSE.md
หากมีคำถามหรือความคิดเห็นเพิ่มเติม โปรดติดต่อผู้ดูแลโครงการ
เพลิดเพลินกับการสำรวจโลกด้วยแอปพลิเคชัน Travel Assistant!
เพลิดเพลินไปกับประสบการณ์ผู้ช่วยการเดินทางเสมือนจริงของคุณ!