Tổng quan về API Gemini

Gemini API cung cấp cho bạn quyền truy cập vào các mô hình tạo sinh mới nhất của Google. Sau khi đã quen với các tính năng chung được cung cấp cho bạn thông qua API, hãy thử xem hướng dẫn về 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ác câu lệnh, tuỳ thuộc vào biến thể mô hình mà bạn chọn và xuất câu trả lời bằng văn bản.

Để biết thêm thông tin chi tiết về mô hình, vui lòng tham khảo trang 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 đó sử dụng 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

Một số mô hình Gemini cụ thể chấp nhận cả dữ liệu văn bản và tệp đa phương tiện làm dữ liệu đầu vào. Khả năng này mang đến thêm nhiều khả năng để 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 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 Các mô hình Gemini.

Các câu lệnh sử dụng Gemini API không được có kích thước vượt quá 20 MB. Gemini API cung cấp một File API (API Tệp) để tạm thời lưu trữ các tệp nội dung nghe nhìn để sử dụng trong câu lệnh, 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 API Files và các định dạng tệp được hỗ trợ để nhắc, hãy xem bài viết Lời nhắc bằng tệp nội dung nghe nhìn.

Thiết kế câu lệnh và nhập văn bản

Việc tạo các câu lệnh hoặc kỹ thuật 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ề cách nhắc để được hướng dẫn về cách tiếp cận tính năng 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

Gemini API cho phép bạn sử dụng cả dữ liệu văn bản và hình ảnh để 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 từ các câu lệnh chỉ có văn bản hoặc các câu lệnh đa phương thức bằng mô hình Gemini 1.5. Phần này đưa ra các mã ví dụ cơ bản cho từng mã. Hãy tham khảo tài liệu tham khảo API generateContent để biết ví dụ chi tiết hơn bao gồm tất cả các tham số.

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

Bạn có thể gửi câu lệnh dạng văn bản có hình ảnh đến mô hình Gemini 1.5 để thực hiện một nhiệm vụ liên quan đến thị giác. Ví dụ: thêm chú thích cho hình ảnh hoặc nhận dạng hình ảnh đó trong một hình ảnh.

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

Python

model = genai.GenerativeModel('gemini-1.5-flash')

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-1.5-flash",
    content=[prompt, cookie_picture]
)
print(response.text)

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

Go

vmodel := client.GenerativeModel("gemini-1.5-flash")

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)
}

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

Node.js

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

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());

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

Web

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

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-1.5-flash', 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ềDart (Flutter) để biết ví dụ đầy đủ.

Swift

let model = GenerativeModel(name: "gemini-1.5-flash", 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-1.5-flash",
    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)

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

cURL

curl https://generativelanguage.googleapis.com/v1/models/gemini-1.5-flash: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)'"
                  }
                }
              ]
            }
          ]
         }')

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

Mục nhập chỉ bằng văn bản

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

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

Python

model = genai.GenerativeModel('gemini-1.5-flash')

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

response = model.generate_content(prompt)

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-1.5-flash")
resp, err := model.GenerateContent(ctx, genai.Text("Write a story about a magic backpack."))
if err != nil {
  log.Fatal(err)
}

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

Node.js

const model = genAI.getGenerativeModel({ model: "gemini-1.5-flash" });
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 về Node.js để biết ví dụ đầy đủ.

Web

const model = genAI.getGenerativeModel({ model: "gemini-1.5-flash" });
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-1.5-flash', 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ềDart (Flutter) để biết ví dụ đầy đủ.

Swift

let model = GenerativeModel(name: "gemini-1.5-flash", 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-1.5-flash",
    apiKey = BuildConfig.apiKey
)

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

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

cURL

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

Hãy 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 Gemini API để xây dựng trải nghiệm trò chuyện mang tính tương tác cho người dùng của mình. Việc sử dụng tính năng trò chuyện của API 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 dần xác định câu trả lời hoặc yêu cầu trợ giúp cho các vấn đề gồm nhiều phần. Đây là tính năng lý tưởng cho các ứng dụng yêu cầu giao tiếp liên tục, chẳng hạn như bot trò chuyện, trợ lý 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 cơ bả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-1.5-flash')
  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ạ trò chuyện trong hướng dẫn về Python để biết ví dụ đầy đủ.

Go

model := client.GenerativeModel("gemini-1.5-flash")
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ạ cuộc trò chuyện trong Hướng dẫn bắt đầu để biết toàn bộ ví dụ.

Node.js

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

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ạ trò chuyện trong hướng dẫn về Node.js để biết ví dụ đầy đủ.

Web

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

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-1.5-flash', 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ề Dar nhất (Flutter) để biết ví dụ đầy đủ.

Swift

let model = GenerativeModel(name: "gemini-1.5-flash", 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 Swift để biết ví dụ đầy đủ.

Android

val generativeModel = GenerativeModel(
    modelName = "gemini-1.5-flash",
    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)

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

cURL

curl https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash: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!"

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

Tạo câu trả lời đồng thời

Gemini API cung cấp một cách khác để nhận câu trả lờ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 gia tăng trở lại ứng dụng của bạn ngay khi mô hình tạo. Tính năng này cho phép bạn phản hồi nhanh yêu cầu của người dùng để hiển thị tiến trình và tạo trải nghiệm có tính tương tác cao hơn.

Câu trả lời theo thời gian thực là một lựa chọn để đưa ra câu lệnh dạng tự do và trò chuyện bằng các mô hình Gemini. Các ví dụ về mã sau đây cho thấy cách yêu cầu một phản hồi được truyền trực tuyến cho một lời nhắc đối với 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-1.5-flash",
    prompt=prompt
)

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-1.5-flash")

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
}

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

Node.js

const model = genAI.getGenerativeModel({ model: "gemini-1.5-flash" });
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 về Node.js để biết ví dụ đầy đủ.

Web

const model = genAI.getGenerativeModel({ model: "gemini-1.5-flash" });
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-1.5-flash', 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ềDart (Flutter) để biết ví dụ đầy đủ.

Swift

let model = GenerativeModel(name: "gemini-1.5-flash", 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-1.5-flash",
    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
}

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

cURL

curl https://generativelanguage.googleapis.com/v1/models/gemini-1.5-flash: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

Hãy 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 của mình, bạn nên trả về phản hồi cho lời nhắc ở định dạng dữ liệu có cấu trúc, đặc biệt là khi bạn đang dùng các phản hồi để điền sẵn các giao diện lập trình. Gemini API 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 có thể có JSON đầu ra của mô hình bằng cách đặt tuỳ chọn cấu hình response_mime_type thành application/json và trong lời nhắc, hãy mô tả định dạng JSON bạn muốn trong phản hồi:

Python

model = genai.GenerativeModel('gemini-1.5-flash',
                              generation_config={"response_mime_type": "application/json"})

prompt = """
  List 5 popular cookie recipes.

  Using this JSON schema:

    Recipe = {"recipe_name": str}

  Return a `list[Recipe]`
  """

response = model.generate_content(prompt)
print(response.text)

cURL

curl https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash:generateContent?key=$API_KEY \
    -H 'Content-Type: application/json' \
    -X POST \
    -d '{
      "contents": [
        {
          "parts": [
            {
              "text": "\nList 5 popular cookie recipes.\n\nUsing this JSON schema:\n\n  Recipe = {\"recipe_name\": str}\n\nReturn a `list[Recipe]`\n      "
            }
          ]
        }
      ]
      "generationConfig": {
            "response_mime_type": "application/json",
      }
    }'

Mặc dù các mô hình Flash Gemini 1.5 chỉ chấp nhận nội dung mô tả văn bản của giản đồ JSON mà bạn muốn được trả về, nhưng mô hình Gemini 1.5 Pro cho phép bạn truyền một đối tượng giản đồ (hoặc một đối tượng tương đương với loại Python) và dữ liệu đầu ra của mô hình sẽ tuân thủ nghiêm ngặt giản đồ đó. Quá trình này còn được gọi là tạo có kiểm soát hoặc giải mã có hạn chế.

Ví dụ: để nhận danh sách các đối tượng Recipe, hãy chuyển list[Recipe] vào trường response_schema của đối số generation_config:

Python

import typing_extensions as typing

class Recipe(typing.TypedDict):
  recipe_name: str

model = genai.GenerativeModel(model_name="models/gemini-1.5-pro")

result = model.generate_content(
  "List 5 popular cookie recipes",
  generation_config=genai.GenerationConfig(response_mime_type="application/json",
                                           response_schema = list[Recipe]))

print(result.text)

cURL

  curl https://generativelanguage.googleapis.com/v1beta/models/models/gemini-1.5-pro:generateContent?
      -H 'Content-Type: application/json'
      -X POST \
      -d '{
        "contents": [
          {
            "parts": [
              {
                "text": "List 5 popular cookie recipes"
              }
            ]
          }
        ],
        "generationConfig": {
          "responseMimeType": "application/json",
          "responseSchema": {
            "type": "ARRAY",
            "items": {
              "type": "OBJECT",
              "properties": {
                "recipe_name": {
                  "type": "STRING"
                }
              }
            }
          }
        }
      }'
  ```

Để tìm hiểu thêm, hãy tham khảo phần Bắt đầu nhanh về chế độ JSON trong Cẩm nang về Gemini API.

Nhúng

Dịch vụ nhúng trong Gemini API tạo ra các mục nhúng hiện đại cho từ, cụm từ và câu. Sau đó, các mục nhúng thu được có thể được dùng cho các tác 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 tính năng khác. Xem hướng dẫn về tính năng nhúng để tìm hiểu khái niệm nhúng và một số trường hợp sử dụng chính của dịch vụ nhúng nhằm giúp bạn bắt đầu.

Các bước tiếp theo