Tổng quan về API Gemini

API Gemini cho phép bạn truy cập vào các mô hình tạo sinh mới nhất của Google. Khi bạn đã quen với các tính năng chung có sẵn cho bạn thông qua API, hãy thử xem hướng dẫn dành cho ngôn ngữ bạn chọn để bắt đầu phát triển.

Mô hình

Gemini là một loạt mô hình AI tạo sinh đa phương thức do Google phát triển. Các mô hình Gemini có thể chấp nhận văn bản và hình ảnh trong câu lệnh, tuỳ thuộc vào biến thể mô hình mà bạn chọn và phản hồi bằng văn bản đầu ra.

Để biết thêm thông tin chi tiết về mô hình, hãy tham khảo trang Các mô hình Gemini. Bạn cũng có thể sử dụng phương thức list_models để liệt kê tất cả mô hình có sẵn, sau đó là phương thức get_model để lấy siêu dữ liệu cho một mô hình cụ thể.

Thiết kế và dữ liệu lời nhắc

Các mô hình Gemini cụ thể chấp nhận cả dữ liệu văn bản và tệp nội dung nghe nhìn làm dữ liệu đầu vào. Khả năng này tạo ra thêm nhiều khả năng cho việc tạo nội dung, phân tích dữ liệu và giải quyết vấn đề. Có một số giới hạn và yêu cầu cần xem xét, bao gồm cả giới hạn chung về mã thông báo đầu vào cho mô hình mà bạn đang sử dụng. Để biết thông tin về hạn mức mã thông báo cho các mô hình cụ thể, hãy xem bài viết Mô hình Gemini.

Những câu lệnh sử dụng API Gemini không được vượt quá kích thước 20 MB. API Gemini cung cấp một File API (API Tệp) nhằm lưu trữ tạm thời các tệp nội dung nghe nhìn nhằm sử dụng trong việc nhắc, cho phép bạn cung cấp dữ liệu lời nhắc vượt quá giới hạn 20 MB. Để biết thêm thông tin về cách sử dụng Files API và các định dạng tệp được hỗ trợ để nhắc, hãy xem phần Nhắc nhở bằng tệp nội dung nghe nhìn.

Thiết kế lời nhắc và nhập văn bản

Việc tạo câu lệnh hoặc thiết kế câu lệnh hiệu quả là sự kết hợp giữa nghệ thuật và khoa học. Hãy xem phần giới thiệu về yêu cầu nhắc để được hướng dẫn về cách tiếp cận với yêu cầu nhắc và hướng dẫn về lời nhắc 101 để tìm hiểu về các phương pháp nhắc.

Sáng tạo nội dung

API Gemini cho phép bạn sử dụng cả dữ liệu văn bản và hình ảnh để đưa ra lời nhắc, tuỳ thuộc vào biến thể mô hình mà bạn sử dụng. Ví dụ: bạn có thể tạo văn bản bằng lời nhắc văn bản với mô hình gemini-pro, đồng thời sử dụng cả dữ liệu văn bản và hình ảnh để đưa ra lời nhắc cho mô hình gemini-pro-vision. Phần này cung cấp các ví dụ đơn giản về mã cho từng phương thức. Tham khảo API generateContent để xem ví dụ chi tiết hơn về tất cả các tham số.

Nhập văn bản và hình ảnh

Bạn có thể gửi lời nhắc dạng văn bản có hình ảnh đến mô hình gemini-pro-vision để thực hiện một tác vụ liên quan đến thị giác. Ví dụ: thêm chú thích cho hình ảnh hoặc xác định nội dung trong hình ảnh.

Các mã ví dụ sau đây minh hoạ cách triển khai đơn giản của lời nhắc dạng văn bản và hình ảnh cho từng ngôn ngữ được hỗ trợ:

Python

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

cookie_picture = [{
    'mime_type': 'image/png',
    'data': pathlib.Path('cookie.png').read_bytes()
}]
prompt = "Do these look store-bought or homemade?"

response = model.generate_content(
    model="gemini-pro-vision",
    content=[prompt, cookie_picture]
)
print(response.text)

Hãy xem hướng dẫn về Python để xem đoạn mã hoàn chỉnh.

Go

vmodel := client.GenerativeModel("gemini-pro-vision")

data, err := os.ReadFile(filepath.Join("path-to-image", imageFile))
if err != nil {
  log.Fatal(err)
}
resp, err := vmodel.GenerateContent(ctx, genai.Text("Do these look store-bought or homemade?"), genai.ImageData("jpeg", data))
if err != nil {
  log.Fatal(err)
}

Hãy xem hướng dẫn Bắt đầu để biết ví dụ đầy đủ.

Node.js

const model = genAI.getGenerativeModel({ model: "gemini-pro-vision" });

const prompt = "Do these look store-bought or homemade?";
const image = {
  inlineData: {
    data: Buffer.from(fs.readFileSync("cookie.png")).toString("base64"),
    mimeType: "image/png",
  },
};

const result = await model.generateContent([prompt, image]);
console.log(result.response.text());

Xem hướng dẫn về Node.js để biết ví dụ đầy đủ.

Web

const model = genAI.getGenerativeModel({ model: "gemini-pro-vision" });

const prompt = "Do these look store-bought or homemade?";
const image = {
  inlineData: {
    data: base64EncodedImage /* see JavaScript quickstart for details */,
    mimeType: "image/png",
  },
};

const result = await model.generateContent([prompt, image]);
console.log(result.response.text());

Hãy xem hướng dẫn trên web để biết ví dụ đầy đủ.

Phi tiêu (Flutter)

final model = GenerativeModel(model: 'gemini-pro-vision', apiKey: apiKey);
final prompt = 'Do these look store-bought or homemade?';
final imageBytes = await File('cookie.png').readAsBytes();
final content = [
  Content.multi([
    TextPart(prompt),
    DataPart('image/png', imageBytes),
  ])
];

final response = await model.generateContent(content);
print(response.text);

Hãy xem hướng dẫn về DAO (Flutter) để biết ví dụ đầy đủ.

Swift

let model = GenerativeModel(name: "gemini-pro-vision", apiKey: "API_KEY")
let cookieImage = UIImage(...)
let prompt = "Do these look store-bought or homemade?"

let response = try await model.generateContent(prompt, cookieImage)

Hãy xem hướng dẫn về Swift để biết ví dụ đầy đủ.

Android

val generativeModel = GenerativeModel(
    modelName = "gemini-pro-vision",
    apiKey = BuildConfig.apiKey
)

val cookieImage: Bitmap = // ...
val inputContent = content() {
  image(cookieImage)
  text("Do these look store-bought or homemade?")
}

val response = generativeModel.generateContent(inputContent)
print(response.text)

Xem hướng dẫn dành cho Android để biết ví dụ đầy đủ.

cURL

curl https://generativelanguage.googleapis.com/v1/models/gemini-pro-vision:generateContent?key=${API_KEY} \
    -H 'Content-Type: application/json' \
    -X POST \
    -d @<(echo'{
          "contents":[
            { "parts":[
                {"text": "Do these look store-bought or homemade?"},
                { "inlineData": {
                    "mimeType": "image/png",
                    "data": "'$(base64 -w0 cookie.png)'"
                  }
                }
              ]
            }
          ]
         }')

Xem hướng dẫn về API REST để biết thêm thông tin chi tiết.

Phương thức nhập chỉ có văn bản

API Gemini cũng có thể xử lý dữ liệu nhập chỉ bằng văn bản. Tính năng này cho phép bạn thực hiện các tác vụ xử lý ngôn ngữ tự nhiên (NLP), chẳng hạn như hoàn thành và tóm tắt văn bản.

Các mã ví dụ sau đây minh hoạ cách triển khai đơn giản của lời nhắc chỉ bằng văn bản cho từng ngôn ngữ được hỗ trợ:

Python

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

prompt = "Write a story about a magic backpack."

response = model.generate_content(prompt)

Hãy xem hướng dẫn về Python để biết ví dụ đầy đủ.

Go

ctx := context.Background()
client, err := genai.NewClient(ctx, option.WithAPIKey(os.Getenv("API_KEY")))
if err != nil {
  log.Fatal(err)
}
defer client.Close()

model := client.GenerativeModel("gemini-pro")
resp, err := model.GenerateContent(ctx, genai.Text("Write a story about a magic backpack."))
if err != nil {
  log.Fatal(err)
}

Hãy xem hướng dẫn Bắt đầu để biết ví dụ đầy đủ.

Node.js

const model = genAI.getGenerativeModel({ model: "gemini-pro" });
const prompt = "Write a story about a magic backpack.";

const result = await model.generateContent(prompt);
console.log(result.response.text());

Xem hướng dẫn về Node.js để biết ví dụ đầy đủ.

Web

const model = genAI.getGenerativeModel({ model: "gemini-pro" });
const prompt = "Write a story about a magic backpack.";

const result = await model.generateContent(prompt);
console.log(result.response.text());

Hãy xem hướng dẫn trên web để biết ví dụ đầy đủ.

Phi tiêu (Flutter)

final model = GenerativeModel(model: 'gemini-pro', apiKey: apiKey);
final prompt = 'Write a story about a magic backpack.';
final content = [Content.text(prompt)];
final response = await model.generateContent(content);
print(response.text);

Hãy xem hướng dẫn về DAO (Flutter) để biết ví dụ đầy đủ.

Swift

let model = GenerativeModel(name: "gemini-pro", apiKey: "API_KEY")
let prompt = "Write a story about a magic backpack."

let response = try await model.generateContent(prompt)

Hãy xem hướng dẫn về Swift để biết ví dụ đầy đủ.

Android

val generativeModel = GenerativeModel(
    modelName = "gemini-pro",
    apiKey = BuildConfig.apiKey
)

val prompt = "Write a story about a magic backpack."
val response = generativeModel.generateContent(prompt)
print(response.text)

Xem hướng dẫn dành cho Android để biết ví dụ đầy đủ.

cURL

curl https://generativelanguage.googleapis.com/v1/models/gemini-pro:generateContent?key=$API_KEY \
    -H 'Content-Type: application/json' \
    -X POST \
    -d '{ "contents":[
      { "parts":[{"text": "Write a story about a magic backpack"}]}
    ]
}'

Xem hướng dẫn về API REST để biết thêm thông tin chi tiết.

Cuộc trò chuyện nhiều lượt (trò chuyện)

Bạn có thể sử dụng API Gemini để xây dựng trải nghiệm trò chuyện tương tác cho người dùng. Việc sử dụng tính năng trò chuyện của API này cho phép bạn thu thập nhiều vòng câu hỏi và câu trả lời, cho phép người dùng từng bước tìm câu trả lời hoặc yêu cầu trợ giúp về các bài toán gồm nhiều phần. Đây là tính năng lý tưởng cho những ứng dụng yêu cầu giao tiếp liên tục, chẳng hạn như bot trò chuyện, gia sư tương tác hoặc trợ lý hỗ trợ khách hàng.

Các mã ví dụ sau đây minh hoạ cách triển khai đơn giản của hoạt động tương tác trò chuyện cho từng ngôn ngữ được hỗ trợ:

Python

  model = genai.GenerativeModel('gemini-pro')
  chat = model.start_chat(history=[])

  response = chat.send_message(
      "Pretend you\'re a snowman and stay in character for each response.")
  print(response.text)

  response = chat.send_message(
      "What\'s your favorite season of the year?")
  print(response.text)

Hãy xem bản minh hoạ tính năng trò chuyện trong hướng dẫn về Python để biết ví dụ đầy đủ.

Go

model := client.GenerativeModel("gemini-pro")
cs := model.StartChat()
cs.History = []*genai.Content{
  &genai.Content{
    Parts: []genai.Part{
      genai.Text("Pretend you're a snowman and stay in character for each response."),
    },
    Role: "user",
  },
  &genai.Content{
    Parts: []genai.Part{
      genai.Text("Hello! It's cold! Isn't that great?"),
    },
    Role: "model",
  },
}

resp, err := cs.SendMessage(ctx, genai.Text("What's your favorite season of the year?"))
if err != nil {
  log.Fatal(err)
}

Hãy xem bản minh hoạ tính năng trò chuyện trong hướng dẫn Sử dụng để biết ví dụ đầy đủ.

Node.js

const model = genAI.getGenerativeModel({ model: "gemini-pro"});

const chat = model.startChat({
  history: [
    {
      role: "user",
      parts: "Pretend you're a snowman and stay in character for each response.",
    },
    {
      role: "model",
      parts: "Hello! It's cold! Isn't that great?",
    },
  ],
  generationConfig: {
    maxOutputTokens: 100,
  },
});

const msg = "What's your favorite season of the year?";
const result = await chat.sendMessage(msg);
console.log(result.response.text());

Hãy xem bản minh hoạ tính năng trò chuyện trong hướng dẫn về Node.js để biết ví dụ đầy đủ.

Web

const model = genAI.getGenerativeModel({ model: "gemini-pro"});

const chat = model.startChat({
  history: [
    {
      role: "user",
      parts: "Pretend you're a snowman and stay in character for each response.",
    },
    {
      role: "model",
      parts: "Hello! It's so cold! Isn't that great?",
    },
  ],
  generationConfig: {
    maxOutputTokens: 100,
  },
});

const msg = "What's your favorite season of the year?";
const result = await chat.sendMessage(msg);
console.log(result.response.text());

Hãy xem bản minh hoạ tính năng trò chuyện trong hướng dẫn trên web để biết ví dụ đầy đủ.

Phi tiêu (Flutter)

final model = GenerativeModel(model: 'gemini-pro', apiKey: apiKey);
final chat = model.startChat(history: [
  Content.text(
      "Pretend you're a snowman and stay in character for each response."),
  Content.model([TextPart("Hello! It's cold! Isn't that great?")]),
]);
final content = Content.text("What's your favorite season of the year?");
final response = await chat.sendMessage(content);
print(response.text);

Hãy xem bản minh hoạ tính năng trò chuyện trong hướng dẫn về DAO (Flutter) để biết ví dụ đầy đủ.

Swift

let model = GenerativeModel(name: "gemini-pro", apiKey: "API_KEY")
let chat = model.startChat()

var message = "Pretend you're a snowman and stay in character for each response."
var response = try await chat.sendMessage(message)

message = "What\'s your favorite season of the year?"
response = try await chat.sendMessage(message)

Hãy xem bản minh hoạ cuộc trò chuyện trong hướng dẫn về Swift để biết ví dụ đầy đủ.

Android

val generativeModel = GenerativeModel(
    modelName = "gemini-pro",
    apiKey = BuildConfig.apiKey
)

val chat = generativeModel.startChat()
val response = chat.sendMessage("Pretend you're a snowman and stay in
        character for each response.")
print(response.text)

Xem hướng dẫn dành cho Android để biết ví dụ đầy đủ.

cURL

curl https://generativelanguage.googleapis.com/v1beta/models/gemini-pro:generateContent?key=$API_KEY \
    -H 'Content-Type: application/json' \
    -X POST \
    -d '{
      "contents": [
        {"role":"user",
         "parts":[{
           "text": "Pretend you're a snowman and stay in character for each
        {"role": "model",
            response."}]},
         "parts":[{
           "text": "Hello! It's so cold! Isn't that great?"}]},
        {"role": "user",
         "parts":[{
           "text": "What\'s your favorite season of the year?"}]},
       ]
    }' 2> /dev/null | grep "text"
# response example:
"text": "Winter, of course!"

Xem hướng dẫn về API REST để biết thêm thông tin chi tiết.

Câu trả lời được truyền trực tuyến

API Gemini cung cấp thêm một cách để nhận phản hồi từ các mô hình AI tạo sinh: dưới dạng luồng dữ liệu. Phản hồi được truyền trực tuyến sẽ gửi các phần dữ liệu tăng dần trở lại ứng dụng của bạn do mô hình tạo ra. Tính năng này cho phép bạn phản hồi nhanh một yêu cầu của người dùng để hiện tiến trình và tạo ra trải nghiệm có tính tương tác cao hơn.

Câu trả lời theo luồng là một lựa chọn để đặt câu lệnh và trò chuyện tuỳ ý bằng các mô hình Gemini. Các mã ví dụ sau đây minh hoạ cách yêu cầu một phản hồi được truyền trực tuyến cho lời nhắc cho từng ngôn ngữ được hỗ trợ:

Python

prompt = "Write a story about a magic backpack."

response = genai.stream_generate_content(
    model="models/gemini-pro",
    prompt=prompt
)

Hãy xem hướng dẫn về Python để xem đoạn mã hoàn chỉnh.

Go

ctx := context.Background()
client, err := genai.NewClient(ctx, option.WithAPIKey(os.Getenv("API_KEY")))
if err != nil {
  log.Fatal(err)
}
defer client.Close()

model := client.GenerativeModel("gemini-pro")

iter := model.GenerateContentStream(ctx, genai.Text("Write a story about a magic backpack."))
for {
  resp, err := iter.Next()
  if err == iterator.Done {
    break
  }
  if err != nil {
    log.Fatal(err)
  }

  // print resp
}

Hãy xem hướng dẫn Bắt đầu để biết ví dụ đầy đủ.

Node.js

const model = genAI.getGenerativeModel({ model: "gemini-pro" });
const prompt = "Write a story about a magic backpack.";

const result = await model.generateContentStream([prompt]);
// print text as it comes in
for await (const chunk of result.stream) {
  const chunkText = chunk.text();
  console.log(chunkText);
}

Xem hướng dẫn về Node.js để biết ví dụ đầy đủ.

Web

const model = genAI.getGenerativeModel({ model: "gemini-pro" });
const prompt = "Write a story about a magic backpack.";

const result = await model.generateContentStream([prompt]);
// print text as it comes in
for await (const chunk of result.stream) {
  const chunkText = chunk.text();
  console.log(chunkText);
}

Hãy xem hướng dẫn trên web để biết ví dụ đầy đủ.

Phi tiêu (Flutter)

final model = GenerativeModel(model: 'gemini-pro', apiKey: apiKey);
final prompt = 'Write a story about a magic backpack.';
final content = [Content.text(prompt)];
final response = model.generateContentStream(content);
await for (final chunk in response) {
  print(chunk.text);
}

Hãy xem hướng dẫn về DAO (Flutter) để biết ví dụ đầy đủ.

Swift

let model = GenerativeModel(name: "gemini-pro", apiKey: "API_KEY")
let prompt = "Write a story about a magic backpack."

let stream = model.generateContentStream(prompt)
for try await chunk in stream {
  print(chunk.text ?? "No content")
}

Hãy xem hướng dẫn về Swift để biết ví dụ đầy đủ.

Android

val generativeModel = GenerativeModel(
    modelName = "gemini-pro",
    apiKey = BuildConfig.apiKey
)

val inputContent = content {
  text("Write a story about a magic backpack.")
}

var fullResponse = ""
generativeModel.generateContentStream(inputContent).collect { chunk ->
  print(chunk.text)
  fullResponse += chunk.text
}

Xem hướng dẫn dành cho Android để biết ví dụ đầy đủ.

cURL

curl https://generativelanguage.googleapis.com/v1/models/gemini-pro:streamGenerateContent?key=${API_KEY} \
    -H 'Content-Type: application/json' \
    --no-buffer \
    -d '{ "contents":[
            {"role": "user",
              "parts":[{"text": "Write a story about a magic backpack."}]
            }
          ]
        }' > response.json

Xem hướng dẫn về API REST để biết thêm thông tin chi tiết.

Phản hồi ở định dạng JSON

Tuỳ thuộc vào ứng dụng, bạn nên trả về phản hồi cho một lời nhắc ở định dạng dữ liệu có cấu trúc, đặc biệt là nếu bạn sử dụng phản hồi để điền sẵn giao diện lập trình. API Gemini cung cấp một tham số cấu hình để yêu cầu phản hồi ở định dạng JSON.

Bạn sử dụng tính năng đầu ra này bằng cách đặt tuỳ chọn cấu hình response_mime_type thành application/json và đưa thông số kỹ thuật về định dạng JSON vào nội dung yêu cầu. Mã ví dụ sau đây biểu thị cách yêu cầu phản hồi JSON cho lời nhắc:

cURL

curl https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-pro-latest:generateContent?key=$API_KEY \
    -H 'Content-Type: application/json' \
    -X POST \
    -d '{ "contents":[{
            "parts":[{"text": "List 5 popular cookie recipes using this JSON schema: \{ \"type\": \"object\", \"properties\": \{ \"recipe_name\": \{ \"type\": \"string\" \},\}\}"}] }],
          "generationConfig": {
            "response_mime_type": "application/json",
          } }'

Nhúng

Dịch vụ nhúng trong API Gemini tạo ra các tính năng nhúng hiện đại cho từ, cụm từ và câu. Sau đó, các hoạt động nhúng thu được có thể được dùng cho các nhiệm vụ NLP, chẳng hạn như tìm kiếm ngữ nghĩa, phân loại văn bản và phân cụm, cùng nhiều hoạt động khác. Vui lòng xem hướng dẫn về tính năng nhúng để tìm hiểu về tính năng nhúng và một số trường hợp sử dụng chính của dịch vụ nhúng. Nhờ đó, bạn có thể bắt đầu.

Các bước tiếp theo