0
0
Lập trình
Thaycacac
Thaycacac thaycacac

Hướng Dẫn Xây Dựng CLI Hỗ Trợ AI với Golang và Google Gemini

Đăng vào 4 ngày trước

• 3 phút đọc

Xây Dựng CLI Hỗ Trợ AI với Golang và Google Gemini

Trong bài viết này, tôi muốn chia sẻ một chủ đề thú vị liên quan đến việc xây dựng một Command Line Interface (CLI) hỗ trợ trí tuệ nhân tạo (AI) bằng cách sử dụng ngôn ngữ lập trình Golang và API Google Gemini. Nếu bạn là người đam mê công nghệ và muốn khám phá khả năng của AI trong việc tương tác qua CLI, bài viết này sẽ rất hữu ích cho bạn.

Giới Thiệu Về Golang

Nếu bạn chưa biết về Golang, là một ngôn ngữ lập trình mạnh mẽ được phát triển bởi Google, bạn có thể tìm hiểu thêm qua bài viết "Golang là gì?" để hiểu rõ hơn về lý do tại sao nên chọn ngôn ngữ này cho các dự án của bạn.

Bắt Đầu Xây Dựng CLI

Tác giả Pradumna Saraf đã bắt tay vào việc phát triển một CLI có tên là GenCLI, cho phép người dùng gửi câu hỏi dưới định dạng văn bản hoặc hình ảnh và nhận thông tin chi tiết. Trong hướng dẫn này, chúng ta sẽ làm theo các bước để xây dựng CLI với Golang và Google Gemini.

Điều Kiện Tiên Quyết

  • Bạn cần có kiến thức căn bản về Golang.
  • Đã thử nghiệm với gói Cobra để tạo CLI.

Tạo Dự Án Mới

Đầu tiên, tạo một thư mục cho dự án của bạn và mở nó trong IDE hoặc editor yêu thích. Tôi sẽ sử dụng VS Code và đặt tên thư mục là go-ai. Khởi tạo dự án bằng lệnh sau:

Copy
go mod init github.com/Pradumnasaraf/go-ai

Khi bạn đã thực hiện xong, file go.mod sẽ được tạo ra.

Cài Đặt Gói Cobra

Để tăng tốc quá trình xây dựng CLI, chúng ta sẽ sử dụng gói Cobra. Cài đặt bằng lệnh:

Copy
go install github.com/spf13/cobra-cli@latest

Sau khi cài đặt, kiểm tra bằng cách gõ cobra-cli trong terminal để xem danh sách các lệnh. Tiếp theo, khởi tạo dự án Cobra bằng lệnh:

Copy
cobra-cli init

Kết Nối với Google Gemini API

Để sử dụng API của Google Gemini, trước tiên bạn cần cài đặt gói generative-ai-go:

Copy
go get github.com/google/generative-ai-go

Đừng quên tạo một biến môi trường cho API Key của bạn. Truy cập vào AI Studio để lấy API Key miễn phí trong vòng 30 giây. Thiết lập biến môi trường:

Copy
export GEMINI_API_KEY=<YOUR_API_KEY>

Thêm Lệnh Phụ cho CLI

Thay vì viết logic trực tiếp vào file root.go, hãy thêm một lệnh phụ mới cho CLI:

Copy
cobra-cli add search

Tích Hợp API và Gọi Hàm

Tiếp theo, chúng ta sẽ tích hợp API Google Gemini để phản hồi với người dùng. Đầu tiên, nhập các gói cần thiết:

Copy
import (
    "context"
    "fmt"
    "log"
    "os"
    "strings"

    "github.com/google/generative-ai-go/genai"
    "github.com/spf13/cobra"
    "google.golang.org/api/option"
)

Thêm hàm getResponse để giao tiếp với API và in ra phản hồi:

Copy
func getResponse(args []string) {
    userArgs := strings.Join(args[0:], " ") 

    ctx := context.Background()
    client, err := genai.NewClient(ctx, option.WithAPIKey(os.Getenv("GEMINI_API_KEY")))
    if err != nil {
        log.Fatal(err)
    }
    defer client.Close()
    model := client.GenerativeModel("gemini-1.5-flash")
    resp, err := model.GenerateContent(ctx, genai.Text(userArgs))
    if err != nil {
        log.Fatal(err)
    }
    fmt.Println(resp.Candidates[0].Content.Parts[0])
}

Kiểm Tra và Hoàn Thiện

Chạy lại CLI với lệnh go run main.go search <prompt> để xem phản hồi từ API dựa trên câu hỏi bạn nhập vào. Đảm bảo bạn nhập vào đúng định dạng và có ít nhất một đối số.

Xuất Bản Gói CLI

Cuối cùng, để chia sẻ CLI, hãy đẩy mã nguồn lên GitHub và yêu cầu thêm gói vào trang pkg.go.dev. Khi mọi thứ đã hoàn thành, bạn có thể cài đặt gói CLI bằng cách sử dụng lệnh:

Copy
go install github.com/Pradumnasaraf/go-ai@latest

Kết Luận

Như vậy, bạn đã hoàn thành việc xây dựng một CLI hỗ trợ AI với Golang và Google Gemini. Điều này không chỉ mở ra cánh cửa cho bạn khám phá AI mà còn giúp bạn mài giũa kỹ năng lập trình của mình một cách hiệu quả. Nếu bạn có bất kỳ câu hỏi nào, đừng ngần ngại để lại lời nhắn hoặc phản hồi. Cảm ơn bạn đã theo dõi bài viết này!
source: viblo

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào